SJF 스케줄링
SJF 스케줄링은 준비 큐에 있는 프로세스 중에서 실행 시간이 가장 짧은 작업부터 CPU를 할당하는 비선점형 방식입니다.
작은 작업을 먼저 실행하기 때문에 FCFS 스케줄링 보다 시스템의 효율성이 좋아지지만 프로세스의 종료 시간을 정확하게 예측하기 어려운 단점이 있습니다.
어려운 이유는 만약 프로세스가 사용자의 입력을 기다린다면 언제 입력할지 할 수 없기 때문입니다.
또한 공평하지 못하다는 단점이 있습니다. 만약 프로세스 p1, p2, p3, pn가 주기적으로 준비큐에 도달한다면 만약 p2가 그 뒤로 오는 프로세스보다 실행시간이 길다면 가장 나중에 실행되기 때문입니다.
SRT 스케줄링
SJF 스케줄링과 RR 스케줄링을 혼합한 방식입니다. CPU에 할당받을 프로세스를 선택할때 남아 있는 작업 시간이 가장 적은 프로세스를 선택합니다.
SJF 스케줄링과 SRT 스케줄링의 평균 대기 시간을 비교하면 SRT 스케줄링의 평균 대기 시간이 짧습니다만 SRT 스케줄링은 현재 실행 중인 프로세스와 큐에 남아 있는 프로세스의 남은 시간을 주기적으로 계산하고 남은 시간이 더 적은 프로세스와 문맥교환을 해야 하므로 SJF 스케줄링에 비해 추가 작업이 필요합니다.
그리고 SRT 스케줄링은 SJF와 마찬가지로 운영체제가 프로세스의 종료 시간을 예측하기 어렵기 때문에 아사 현상이 일어납니다.