TIL/OS 3

5. Scheduling (FCFS, SJF, RR, Priority Scheduling)

일반적으로, Single processor 시스템에서는 오직 하나의 프로세스만 실행 가능합니다. 즉, CPU에서 실행되고 있는 프로세스가 완전히 종료(terminated) 될 때까지 Ready queue에 있는 타 프로세스는 실행할 수 없다는 것입니다. 만약 위 상황에서, IO Request 등 기존 프로세스 실행을 잠시 멈춰야 할 때에는 Ready queue에 있는 타 프로세스는 기존 프로세스가 종료되지 않았으므로 실행 불가합니다. (becomes idle) 따라서, OS는 CPU는 보다 효율적으로 사용하기 위해 Ready queue에 있는 프로세스 중 하나를 선택한 뒤, 그 프로세스를 실행시키는데 이를 CPU Scheduling이라 하고, Ready queue 중 다음으로 실행할 프로세스를 고르는 과..

TIL/OS 2023.08.10

4. Thread

Thread : CPU에서 업무를 수행하는 가장 작은 단위 우리는 지금까지 스레드 없이 프로세스에 대해서만 설명을 이어나갔습니다. 프로세스에게는 Code, Data, Stack으로 이루어진 PCB가 있고, fork()를 이용해 같은 내용의 PCB를 가지는 자식 프로세스를 만들고, exec()를 이용해 PCB의 내용을 바꾸어갔습니다. 하지만, 프로세스를 사용하면서 개발자들은 "프로세스는 비용을 많이 잡아먹는다!" 라고 느끼게 됩니다. 그 이유는 만약 같은 일을 하는 프로세스를 여러 개 열어야 하는 경우, 그 만큼의 PCB가 필요하고, 이는 메인 메모리 공간의 낭비로 이어집니다. 그리고 이를 위해서는 큰 용량을 가진 PCB의 복제가 필요하고, 이는 시간의 낭비로도 이어지게 됩니다. 그렇기 때문에, 개발자들은..

TIL/OS 2023.07.25

3. Process

Process 현재 메모리에 있거나 CPU에서 실행 중인 프로그램 - 즉, HDD나 SSD에 있는 프로그램은 프로세스라 부를 수 없음 Memory Address Space 프로세스는 각각 자신의 데이터(코드, 변수, 인자 등)을 저장하기 위한 address space를 가지고 있음 Text(code) : 프로세스의 코드 저장 Data : 정적 데이터 저장(전역변수 등) - 위 예시에서는 전역변수인 x, y 해당 Stack : local data 저장(local variable, function parameter, return address, ...) - 위 예시에서는 int * values, int i 해당 Heap : c language의 malloc, JAVA / JS의 object 등 저장됨 OS ..

TIL/OS 2023.05.05