CPU 스케줄링 알고리즘의 목표와 대표 방식을 설명해주세요.
답변 포인트
응답 시간, 처리량, 공정성를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.
정답 및 해설
빠른 요약
CPU 스케줄링은 응답 시간, 처리량, 공정성의 균형을 맞춥니다. FCFS, SJF, Round Robin 등은 각기 대기 시간과 응답성에서 장단점이 있습니다.
CPU 스케줄링은 여러 프로세스나 스레드 중 어떤 작업에 CPU를 할당할지 결정하는 운영체제의 정책입니다. 목표는 단순히 “빨리 실행”이 아니라 처리량, 응답성, 공정성, 데드라인, 컨텍스트 스위칭 비용 사이의 균형입니다.
스케줄링의 주요 목표
| 목표 | 의미 | 예시 |
|---|---|---|
| CPU 이용률 | CPU가 놀지 않게 유지 | 서버 배치 작업 |
| 처리량 | 단위 시간당 완료 작업 수 증가 | 빌드 서버, 워커 |
| 응답 시간 | 사용자 요청에 빠르게 반응 | 웹 서버, UI |
| 대기 시간 | 큐에서 오래 기다리지 않게 함 | 다중 사용자 시스템 |
| 공정성 | 특정 작업이 굶지 않게 함 | 공유 서버 |
| 데드라인 | 정해진 시간 안에 완료 | 실시간 제어 |
대표 알고리즘
FCFS(First-Come, First-Served)
먼저 온 작업을 먼저 실행합니다. 구현은 쉽지만 긴 작업이 앞에 있으면 짧은 작업들이 오래 기다리는 convoy effect가 발생합니다.
SJF / SRTF
실행 시간이 짧은 작업을 우선합니다. 평균 대기 시간이 줄어들지만 실제 실행 시간을 미리 알기 어렵고, 긴 작업이 계속 밀릴 수 있습니다.
Round Robin
각 작업에 time quantum을 주고 번갈아 실행합니다. 응답성이 좋아 대화형 시스템에 적합하지만, quantum이 너무 작으면 컨텍스트 스위칭 비용이 커지고 너무 크면 FCFS처럼 됩니다.
P1(8ms), P2(4ms), P3(3ms), quantum=2ms
P1 -> P2 -> P3 -> P1 -> P2 -> P3 -> P1 -> P1 ...Priority Scheduling
우선순위가 높은 작업을 먼저 실행합니다. 운영체제 커널 작업이나 실시간 작업에 유용하지만, 낮은 우선순위 작업이 굶지 않도록 aging 기법이 필요합니다.
Multilevel Feedback Queue
작업의 행동에 따라 큐를 이동시킵니다. 짧고 I/O 중심인 작업은 높은 우선순위를 유지하고, CPU를 오래 쓰는 작업은 낮은 큐로 내려갑니다. 범용 OS에서 많이 쓰이는 아이디어입니다.
실무 관점
애플리케이션 개발자는 OS 스케줄러를 직접 구현하지 않지만 영향을 자주 받습니다.
- CPU-bound 작업을 웹 요청 스레드에서 오래 실행하면 전체 응답성이 떨어집니다.
- 스레드를 많이 만든다고 CPU가 늘어나지 않습니다. 오히려 컨텍스트 스위칭이 증가합니다.
- 컨테이너의 CPU quota가 낮으면 스케줄링 지연이 p99 latency로 나타납니다.
- 우선순위 조정(
nice, cgroup cpu.shares)은 배치와 온라인 트래픽을 분리할 때 유용합니다.
면접 답변 포인트
“스케줄링은 CPU를 누구에게 언제 줄지 결정하는 정책이며, 알고리즘마다 평균 대기 시간, 응답성, 공정성, 기아 가능성의 trade-off가 다릅니다. Round Robin은 응답성, SJF는 평균 대기 시간, Priority는 중요도 반영, MLFQ는 실제 시스템의 혼합 워크로드에 대응하기 위한 방식입니다.”라고 정리하면 좋습니다.