본문 바로가기

Computer Science/OS

(7)
2-5. Virtualization: Multiprocessor Scheduling 복수의 CPU core가 하나의 칩 안에 들어가 있는 multicore processor의 대두로 multiprocessor scheduling이 필요해졌다.전통적인 응용 프로그램은 하나의 CPU만을 사용해, CPU 추가해도 빨라지지 않는다.→ thread를 사용해 다시 작성 필요.Cache가 있는 single CPU 구조Cache: 작고, 빠른 memory.자주 사용하는 data의 복사본 저장.write-back cache: 일단 cache update, 일정 시간/조건에 따라 내리기.write-through cache: update 한 순간 update (즉시).temporal locality: 한번 access한 것은 또 금방 access할 확률 크다. (반복문)spatial locality: 어떤..
2-5. Virtualization: Multi-Level Feedback Queue 스케줄링(Scheduling)은 CPU를 어떤 프로세스에 할당할지 결정하는 중요한 기술이다.그중에서도 Multi-Level Feedback Queue(MLFQ)는 현대 운영체제에서 널리 사용되는 스케줄링 방식이다. "모두를 만족시키는 스케줄러를 만들 수는 없을까?"라는 물음에서 시작된, MLFQ의 여정을 함께 살펴보자.간단한 스케줄러들, 그리고 그들의 한계 🤔FIFO (First In, First Out)장점: 단순하다!단점: "convoy effect"가 발생.예를 들어, 앞에 있는 작업이 엄청 느리면 뒤의 작업이 전부 대기 상태로 전환된다.→ 결과적으로 CPU와 I/O 자원 이용률이 낮아짐.SJF (Shortest Job First)장점: 평균 대기 시간, 평균 완료 시간이 줄어든다.단점: "작업 ..
2-4. Virtualization: Scheduler(FIFO, SJF, STCF, RR)와 성능 지표 운영체제에서 CPU 사용률(CPU Utilization)을 극대화하려면 멀티프로그래밍이 필수다.그러나, 하나의 CPU 코어는 동시에 하나의 프로세스만 실행할 수 있다.이 때문에 CPU 스케줄링이 필요하다. 스케줄링 알고리즘은 프로세스의 실행을 효율적으로 관리해 시스템 성능을 최적화하고,각종 성능 지표(CPU Utilization, Response Time 등)를 개선하는 데 초점이 맞춰져 있다.CPU 스케줄링과 프로세스 실행 과정CPU-I/O Burst Cycle프로세스 실행은 CPU 실행(CPU Execution)과 I/O 대기(I/O Wait)가 반복되는 사이클로 이루어진다.CPU burst는 일반적으로 짧은 CPU burst가 많은 I/O bound 작업과 긴 CPU burst가 적은 작업으로 구..
2-3. Virtualization: Limited Direct Execution OS는 프로그램 코드를 메모리에 Load한다. (process의 address space에)프로그램의 run-time Stack이 할당된다. (지역 변수, 함수 인자, return 주소)main(argc, argv)로 stack initHeap 설정 (Dynamically allocated area; malloc())I/O 설정 (STDIN, STDOUT, STDERR 등)main(): 프로그램 시작실행 중인 프로그램에 limit가 없다면, OS는 그 어떤 것에도 제어권을 갖지 않고, 그저 library가 될 것이다.Direct Execution의 문제프로세스가 해서는 안될 instruction (I/O to disk, CPU/Memory 접근)CPU로 제어권을 다시 가져오기 힘듦. (ex. 무한루프)#..
2-2. Virtualization: 파일 디스크립터와 입출력 관리 I/O redirection이란 file, command, program, script의 출력 결과를 다른 file, ...의 입력으로 전달하는 것을 말한다.shell이 fork()하고 exec("wc", "wc w3.c")를 수행한다.→ exec(...)하기 전, shell이 STDOUT(1)을 닫고 open("newfile.txt")한다.File Descriptor & File Descriptor TableFile Descriptor는 파일, 디렉토리, 또는 기기를 나타내는 정수값이다.각 프로세스는 File Descriptor Table을 가지고 있는데, STDIN(0), STDOUT(1), STDERR(2)는 기본으로 열려 있다.각 System Call 정리:open(): 새로운 file descr..
2-1. Virtualization: 프로세스 관리와 자료구조, Process API 프로세스 가상화Process(프로세스)는 실행 중인 프로그램으로 정의한다.Program이 디스크 상에 존재하는 명령어와 정적 데이터의 묶음이라면(Passive),Process는 program counter가 있는 동적인 존재이다(Active).실행 가능한 파일을 memory에 load하여 program이 process가 된다.→ 하나의 프로그램이 여러 프로세스를 생성할 수 있다.Process는 Code section / Data section / Stack / Heap / Program counter로 이루어진다.OS는 Virtualization으로 CPU가 여러 개인 듯한 illusion(착각;환영)을 만들어낸다. (Time Sharing; 시분할)Process의 Machine StateAddress ..
1. 운영체제 개요 프로그램은 매우 단순한 일을 한다:명령어를 메모리에서 Fetch하고,Decode하고 (무슨 명령어인지 파악),Data를 얻고 (연산),Execute한다.OS는 여러 프로그램을 쉽게 실행하게끔 하고, 프로그램 간의 메모리 공유, 장치와 상호작용할 수 있게 한다.System Call을 사용해 OS에 원하는 작업을 수행시킬 수 있다.OS는 Virtualization을 통해 다음을 가능하게끔 한다:CPU 공유Memory 공유Disk 공유CPU 가상화A program that loops and prints (cpu.c)#include #include #include #include #include #include "common.h" // Contains Spin() functionint main(int argc..