우선순위 스케줄링

각 프로세스에 우선순위를 부여하고, 우선순위가 높은 프로세스를 먼저 실행하는 스케줄링 알고리즘입니다.

동작 방식

준비 큐에서 우선순위가 가장 높은 프로세스 선택
→ 숫자가 낮을수록 높은 우선순위 (일반적으로)

예시

프로세스실행 시간우선순위
P17ms3
P24ms1
P32ms2
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

다른 알고리즘과 비교

FCFSSJFRound Robin우선순위
기준도착 순서실행 시간시간 할당량우선순위
선점XXO선택 가능
기아XOXO
응답성낮음낮음높음높음

현대 OS는 우선순위 스케줄링과 Round Robin을 결합한 방식을 사용합니다. 같은 우선순위 내에서는 Round Robin으로 공평하게 배분하고, 우선순위가 다르면 높은 것을 먼저 처리합니다.

CSLOG에서 보기