우선순위 스케줄링
각 프로세스에 우선순위를 부여하고, 우선순위가 높은 프로세스를 먼저 실행하는 스케줄링 알고리즘입니다.
동작 방식
준비 큐에서 우선순위가 가장 높은 프로세스 선택
→ 숫자가 낮을수록 높은 우선순위 (일반적으로)
예시
| 프로세스 | 실행 시간 | 우선순위 |
| P1 | 7ms | 3 |
| P2 | 4ms | 1 |
| P3 | 2ms | 2 |
P2[────]P3[──]P1[───────]
0 4ms 6ms 13ms
우선순위: P2(1) → P3(2) → P1(3) 순으로 실행
선점 vs 비선점
| 비선점 | 선점 |
| 동작 | 실행 중 CPU 유지 | 더 높은 우선순위 도착 시 CPU 빼앗김 |
| 응답성 | 낮음 | 높음 |
[선점 예시]
P1(우선순위 3) 실행 중
→ P2(우선순위 1) 도착
→ P2가 즉시 CPU 선점
우선순위 결정 기준
| 기준 | 설명 |
| 내부 요소 | 실행 시간, 메모리 요구량, I/O 빈도 |
| 외부 요소 | 사용자 지정, 프로세스 중요도 |
기아(Starvation) 문제
낮은 우선순위 프로세스는 영원히 실행되지 못할 수 있음
해결: 에이징(Aging)
→ 대기 시간이 길어질수록 우선순위를 점진적으로 높임
→ 언젠가는 반드시 실행됨을 보장 O
다른 알고리즘과 비교
| FCFS | SJF | Round Robin | 우선순위 |
| 기준 | 도착 순서 | 실행 시간 | 시간 할당량 | 우선순위 |
| 선점 | X | X | O | 선택 가능 |
| 기아 | X | O | X | O |
| 응답성 | 낮음 | 낮음 | 높음 | 높음 |
현대 OS는 우선순위 스케줄링과 Round Robin을 결합한 방식을 사용합니다. 같은 우선순위 내에서는 Round Robin으로 공평하게 배분하고, 우선순위가 다르면 높은 것을 먼저 처리합니다.