본문 바로가기

공부 기록/영상 후기

CPU 스케줄러는 프로세스를 어떻게 스케줄링 하는 걸까요? 선점/비선점의 차이는 뭘까요? 디스패처는 또 뭐죠?

https://youtu.be/LgEY4ghpTJI

CPU Scheduler : CPU가 항상 일을 할 수 있도록 실행될 프로세스를 선택하는 역할

Dispatcher : 선택된 프로세스를 실제로 CPU에서 실행될 수 있도록 만드는 역할(선택된 프로세스에게 CPU를 할당). Context switching. 커널 모드에서 유저 모드로의 전환. 적절한 위치로 선택된 프로세스를 이동

- 여러 문서에서는 스케줄러가 둘의 역할을 다 하는 것처럼 설명하기도 함

  

스케줄링의 선점 방식

비선점(Nonpreemptive) 스케줄링 : 프로세스가 자발적으로 running 상태에서 빠져나간다(running -> terminated, waiting, ready). 운영체제가 적극적 또는 강제적으로 개입하지 않는다. => 신사적, 협력적(cooperative), 느린 응답성

선점(preemptive) 스케줄링 : 비선점 스케줄링 방식 + 적극적 또는 강제적으로 스케줄링에 개입한다. => 적극적, 강제적, 빠른 응답성, 데이터 일관성 문제

  

스케줄링 알고리즘

FCFS(first-come, first-served) : 먼저 도착한 순서대로 처리. 큐 방식

SJF(shortest-job-first) : 프로세스의 다음 CPU burst가 가장 짧은 프로세스부터 실행

SRTF(shortest-remaining-time-first) : 남은 CPU burst가 가장 짧은 프로세스부터 실행

Priority : 우선순위가 높은 프로세스부터 실행

RR(round-robin) : time slice로 나눠진 CPU time을 번갈아가며 실행

Multilevel queue : 프로세스들을 그룹화해서 그룹마다 큐를 두는 방식