CPU 스케줄링은 준비 상태의 작업 중 다음에 CPU를 사용할 대상을 정하는 정책입니다. 처리량·응답 시간·공정성 중 어떤 목표를 중시하느냐에 따라 알고리즘이 달라집니다.
| 알고리즘 | 선택 기준 | 특징과 한계 |
|---|---|---|
| FCFS | 먼저 도착한 순서대로 실행 (큐 방식) | 단순한 비선점 방식이지만 긴 작업 뒤에 짧은 작업이 밀리는 Convoy Effect 발생 |
| SJF / SRTF | 다음 CPU 실행 시간이 짧은 작업 우선 / 남은 시간이 짧은 작업 우선 | 각각 비선점 / 선점 방식이며, 실행 시간 예측이 필요하고 긴 작업의 기아 가능 |
| Priority | 높은 우선순위 작업부터 실행 | 선점·비선점 모두 가능하며 낮은 우선순위 작업의 기아 가능 |
| Round Robin | 정해진 타임 퀀텀(time-slice)만큼 번갈아 실행 | 응답성과 공정성에 유리하지만 퀀텀이 작으면 문맥 교환 증가 |
| MLFQ (Multilevel Queue) | 프로세스들을 그룹화하여 그룹마다 큐를 두는 방식 | 짧고 대화형인 작업을 우대하며, 우선순위 조정 정책이 중요 |
알고리즘을 선택할 때는 선점 여부, 기아 가능성, 응답 시간과 문맥 교환 비용의 균형을 함께 고려해야 합니다.
선점형과 비선점형의 차이는 무엇인가요?
선점형은 운영체제가 실행 중인 작업의 CPU를 회수해 다른 작업에 배정할 수 있습니다. 비선점형은 작업이 종료되거나 대기 상태로 들어가는 등 CPU를 내놓을 때까지 실행을 유지합니다.
Round Robin의 타임 퀀텀이 너무 크거나 작으면 어떻게 되나요?
너무 크면 FCFS와 비슷해져 다른 작업의 응답이 늦어지고, 너무 작으면 문맥 교환 비용이 커집니다. 따라서 타임 퀀텀은 문맥 교환 비용을 충분히 상쇄하면서 목표 응답 시간을 만족하도록 잡고, 실제 CPU Burst 분포·문맥 교환 비율·응답 시간을 측정해 조정해야 합니다. 모든 환경에 통하는 고정값은 없습니다.
기아 상태는 어떻게 완화하나요?
오래 기다린 작업의 우선순위를 높이는 Aging을 사용할 수 있습니다. MLFQ에서는 주기적으로 작업들의 우선순위를 올리는 Priority Boost로 낮은 큐의 작업에도 실행 기회를 줍니다.
SJF의 대표적인 한계는 무엇인가요?
다음 CPU Burst 시간을 정확히 알기 어렵다는 점이 가장 큰 한계입니다. 과거 실행 시간을 이용해 추정할 수 있지만 오차가 생기며, 짧은 작업이 계속 들어오면 긴 작업이 무한정 밀리는 기아가 발생할 수 있습니다. 또한 비선점형 SJF에서는 긴 작업이 이미 실행 중이면 새로 도착한 짧은 작업이 기다려야 합니다.