- CPU 스케줄링이란 언제 어떤 프로세스에 CPU를 할당할 지 결정하는 작업이다.
- 비선점형 스케줄링
- 어떤 프로세스가 CPU를 점유하고 있다면, 이를 뺏을 수 없는 방식
- Context switching이 상대적으로 적지만 프로세스 배치에 따라 효율성 차이가 많이 날 수 있다.
- FCFS, SJF, 우선순위(Priority)
- 선점형 스케줄링
- 어떤 프로세스가 CPU를 점유하고 있더라도 운영체제가 강제로 뺏을 수 있는 방식
- 현대 운영체제가 사용하고 있는 방식으로, 효율적인 운영이 가능하지만 잦은 Context switching으로 오버헤드가 커질 수 있다.
- 라운드로빈, SRF, 다단계 큐
비선점형 스케줄
- FCFS (First Come, First Served)
- 가장 먼저 요청한 프로세스에 CPU를 할당해주는 방식
- 특정 오래 걸리는 프로세스 때문에 OS가 전체적으로 느려질 수 있다.

- SJF(Shortest Job First)
- 실행 시간이 짧은 프로세스를 먼저 실행시킴
- 실행 시간이 긴 프로세스가 무기한으로 대기하게 될 수 있다.

- 우선순위(Priority)
- 각각의 프로세스에 우선순위를 부여하는 알고리즘
- 오래된 프로세스에 우선순위를 높게 설정하는 식의 전략을 사용할 수 있다.

선점형 스케줄링
- 라운드 로빈
- 각각의 프로세스에 동일한 할당 시간을 부여하여 해당 시간 동안만 CPU를 이용하게 한다.
- 현대 운영체제가 사용하는 방식

- SRF
- SJF와 다르게, 중간에 더 짧은 프로세스가 들어오면 Context Switching을 진행하여 더 짧은 프로세스로 교환하는 방식

- 다단계 큐
- 우선순위에 따른 준비 큐가 여러 개의 큐들로 나뉘고, 각각의 큐는 각자의 스케줄링 알고리즘을 가지고 있는 방식

Share article