SRTF
실행 중인 프로세스의 남은 실행 시간보다 짧은 프로세스가 도착하면 CPU를 빼앗는 선점형 스케줄링 알고리즘으로, SJF의 선점 버전입니다.
동작 방식
P1(7ms) 실행 중, P2(4ms) 도착
P1 남은 시간(5ms) > P2 실행 시간(4ms)
→ P2가 CPU 선점
P1[──]P2[────]P1[─────]
0 2 6 11ms
예시
| 프로세스 | 도착 시간 | 실행 시간 |
| P1 | 0ms | 7ms |
| P2 | 2ms | 4ms |
| P3 | 4ms | 1ms |
0ms: P1 실행
2ms: P2 도착(4ms) < P1 남은 시간(5ms) → P2 선점
4ms: P3 도착(1ms) < P2 남은 시간(2ms) → P3 선점
5ms: P3 완료 → P2 재실행
7ms: P2 완료 → P1 재실행
12ms: P1 완료
SJF vs SRTF
| SJF | SRTF |
| 선점 여부 | X 비선점 | O 선점 |
| 기준 | 전체 실행 시간 | 남은 실행 시간 |
| 평균 대기 시간 | 최적에 가까움 | 최적 |
| 문맥 교환 | 적음 | 많음 |
| 기아 발생 | O | O |
장단점
| 장점 | 단점 |
| 평균 대기 시간 최소화 | 실행 시간 예측 어려움 |
| 짧은 작업 빠르게 처리 | 긴 작업 기아 발생 가능 |
| SJF보다 응답성 좋음 | 문맥 교환 비용 증가 |
SRTF는 이론적으로 평균 대기 시간이 최적이지만, 실행 시간을 미리 알기 어렵고 문맥 교환 비용이 크기 때문에 실제 OS보다는 이론/성능 분석의 기준점으로 주로 활용됩니다.