SJF

실행 시간이 가장 짧은 프로세스를 먼저 실행하는 비선점형 스케줄링 알고리즘입니다.

동작 방식

준비 큐에서 실행 시간이 가장 짧은 프로세스 선택
→ 완료될 때까지 CPU 점유 (비선점)

예시

프로세스도착 시간실행 시간
P10ms7ms
P22ms4ms
P34ms1ms
[FCFS 방식]
P1[───────]P2[────]P3[─]
 0    7ms   11ms  12ms
평균 대기: (0 + 7 + 11) / 3 = 6ms

[SJF 방식]
P1 도착 시 혼자이므로 바로 실행
P1[───────]P3[─]P2[────]
 0    7ms   8ms  12ms
평균 대기: (0 + 7 + 1) / 3 = 2.6ms ← 더 짧음

장단점

장점단점
평균 대기 시간 최소화실행 시간 예측 어려움
처리량 높음긴 작업 기아(Starvation) 발생

기아(Starvation) 문제

짧은 작업이 계속 들어오면
→ 긴 작업은 영원히 실행되지 못함

해결: 에이징(Aging)
→ 오래 기다린 프로세스 우선순위를 점진적으로 높임

FCFS vs SJF vs SRTF

FCFSSJFSRTF
선점 여부XXO
기준도착 순서전체 실행 시간남은 실행 시간
평균 대기 시간보통최적에 가까움최적
기아 발생XOO

SJF는 평균 대기 시간을 최소화하지만 실행 시간을 미리 알기 어렵다는 현실적 한계가 있어, 과거 실행 시간을 기반으로 예측값을 사용하는 방식으로 보완합니다.

CSLOG에서 보기