📌 CPU 스케줄링이란?
- CPU가 어떤 프로세스를 먼저 실행할지를 결정하는 운영체제의 핵심 기능
- 프로세스가 실행되기 위해서는 CPU를 점유해야 함
- 모든 프로세스가 동시에 실행될 수 없기 때문에, 공정하고 효율적인 스케줄링 방식이 필요함
1️⃣ FCFS (First-Come, First-Served)
✅ 정의
- 먼저 도착한 프로세스부터 순차적으로 CPU를 할당
🔍 특징
📉 단점
- Convoy Effect 발생 가능
→ 긴 작업이 먼저 오면 뒤의 짧은 작업들이 오랫동안 대기하게 됨
💡 예시
프로세스 |
도착 시간 |
실행 시간 |
P1 |
0 |
10 |
P2 |
1 |
2 |
P3 |
2 |
1 |
→ 실행 순서: P1 → P2 → P3
→ 평균 대기 시간 증가
2️⃣ SJF (Shortest Job First)
✅ 정의
🔍 특징
- 이론상 가장 효율적인 스케줄링 (평균 대기 시간 최소화)
- 선점형(Preemptive) or 비선점형(Non-preemptive) 가능
📉 단점
- 실행 시간을 미리 예측해야 함 (실제 시스템에서는 어려움)
- 짧은 작업 위주로 돌아가면서 긴 작업이 계속 밀릴 수도 있음 (Starvation)
3️⃣ Priority Scheduling
✅ 정의
- 각 프로세스에 우선순위(Priority) 부여 → 높은 순위부터 실행
🔍 특징
- 우선순위는 숫자가 낮을수록 높다고 가정
- 비선점형, 선점형 모두 가능
📉 단점
- 낮은 우선순위는 계속 밀림 → Starvation
- 이를 방지하려면 Aging 기법 적용 필요
→ 대기 시간이 길어질수록 우선순위 자동 상승
4️⃣ RR (Round Robin)
✅ 정의
- 각 프로세스에 동일한 시간(Time Quantum)을 할당해 돌아가며 실행
🔍 특징
- 선점형 방식, 공정함
- 짧은 시간 단위로 컨텍스트 스위칭이 자주 발생함
📉 단점
- 타임 슬라이스가 너무 크면 FCFS와 비슷해짐
- 너무 작으면 오버헤드 증가 (스위칭 비용)
💡 예시
- Quantum = 2ms
- P1(5), P2(4), P3(2)
→ 순서: P1(2) → P2(2) → P3(2) → P1(3) → P2(2)
⚖️ 각 알고리즘 비교 요약
알고리즘 |
선점 여부 |
장점 |
단점 |
FCFS |
❌ |
구현 쉬움 |
Convoy 현상 |
SJF |
⭕/❌ |
평균 대기시간 최소 |
Starvation, 예측 어려움 |
Priority |
⭕/❌ |
유연한 우선순위 지정 |
Starvation 가능 |
RR |
⭕ |
공정성 보장 |
컨텍스트 스위칭 오버헤드 |
✍️ 회고
- CPU 스케줄링은 단순한 알고리즘 선택이 아닌, 시스템 특성과 목적에 따라 달라지는 전략
- “가장 효율적”인 알고리즘은 상황에 따라 다르며,
선점형/비선점형의 차이도 매우 중요
- 실제 운영체제는 이 알고리즘들을 적절히 조합해서 사용함