CPU 스케줄링
여러 프로세스가 CPU를 사용하려 할 때, 어떤 프로세스에게 CPU를 할당할지 결정하는 OS의 관리 기법입니다.
왜 필요한가?
CPU는 한 번에 하나의 프로세스만 실행 가능
→ 여러 프로세스가 CPU를 요청할 때 순서를 결정해야 함
→ CPU 효율 극대화 + 공정한 자원 배분
스케줄링 기준 지표
| 지표 | 설명 | 방향 |
| CPU 이용률 | CPU가 일하는 비율 | 높을수록 좋음 |
| 처리량 (Throughput) | 단위 시간당 완료된 프로세스 수 | 높을수록 좋음 |
| 대기 시간 | 프로세스가 준비 큐에서 기다린 시간 | 낮을수록 좋음 |
| 반환 시간 | 프로세스 시작 ~ 완료까지 총 시간 | 낮을수록 좋음 |
| 응답 시간 | 요청 후 첫 응답까지 시간 | 낮을수록 좋음 |
스케줄링 알고리즘
비선점형 스케줄링(Non-Preemptive) - 실행 중 CPU 빼앗기 불가
| 알고리즘 | 설명 | 단점 |
| FCFS | 먼저 온 순서대로 처리 | 긴 작업이 앞에 오면 전체 대기 증가 |
| SJF | 실행 시간 짧은 것 먼저 | 긴 작업 기아(Starvation) 발생 |
선점형 스케줄링 (Preemptive) - 실행 중 CPU 빼앗기 가능
| 알고리즘 | 설명 | 단점 |
| Round Robin | 시간 할당량(Time Quantum)마다 교체 | Time Quantum 설정이 중요 |
| SRTF | 남은 시간 가장 짧은 것 먼저 | 기아 발생 가능 |
| Priority | 우선순위 높은 것 먼저 | 기아 발생 가능 |
| MLQ | 여러 우선순위 큐로 분리 | 큐 간 이동 불가 |
| MLFQ | MLQ + 큐 간 이동 가능 | 구현 복잡 |
핵심 알고리즘 비교
FCFS: P1(24ms) → P2(3ms) → P3(3ms) 평균 대기: 17ms
SJF: P2(3ms) → P3(3ms) → P1(24ms) 평균 대기: 3ms ← 최적
RR: P1(2ms) → P2(2ms) → P3(2ms) → P1(2ms) ... 응답성 좋음
선점 vs 비선점
| 선점 | 비선점 |
| CPU 강제 회수 | O | X |
| 응답성 | 좋음 | 나쁠 수 있음 |
| 문맥 교환 비용 | 높음 | 낮음 |
| 실시간 시스템 | 적합 | 부적합 |
현대 OS는 대부분 선점형 스케줄링을 사용하며, 특히 Round Robin 기반에 우선순위를 결합한 방식을 채택합니다.