Eddig a folyamatokat érkezési idejük szerint ütemeztük (FCFS ütemezésben). Az SJF ütemező algoritmus azonban ütemezi a folyamatokat a burst idejük szerint.
Az SJF ütemezésben a készenléti sorban lévő elérhető folyamatok listája közül a legalacsonyabb burst idővel rendelkező folyamat ütemezése lesz a következő.
Azonban nagyon nehéz megjósolni egy folyamathoz szükséges burst időt, ezért ezt az algoritmust nagyon nehéz megvalósítani a rendszerben.
Az SJF előnyei
- Maximális áteresztőképesség
- Minimális átlagos várakozási és átfutási idő
Az SJF hátrányai
- Az éhezéstől szenvedhet
- Nem valósítható meg, mert egy folyamat pontos sorozatfelvételi ideje nem ismert előre.
Különféle technikák állnak rendelkezésre, amelyekkel a folyamat CPU burst ideje meghatározható. Később részletesen tárgyaljuk őket.
Példa
A következő példában öt P1, P2, P3, P4 és P5 job található. Érkezési idejüket és sorozatfelvételi idejüket az alábbi táblázat tartalmazza.
PID | Érkezési idő | Burst Time | Befejezési idő | Átfutási idő | Várakozási idő |
---|---|---|---|---|---|
1 | 1 | 7 | 8 | 7 | 0 |
2 | 3 | 3 | 13 | 10 | 7 |
3 | 6 | 2 | 10 | 4 | 2 |
4 | 7 | 10 | 31 | 24 | 14 |
5 | 9 | 8 | huszonegy | 12 | 4 |
Mivel a folyamat nem érkezik meg a 0 időpontban, ezért; lesz egy üres hely a Gantt-diagram 0-tól 1-ig (az első folyamat megérkezésének időpontja).
Az algoritmus szerint az operációs rendszer azt a folyamatot ütemezi, amelyik a legalacsonyabb burst idővel rendelkezik a készenléti sorban lévő folyamatok közül.
Eddig csak egy folyamat van a készenléti sorban, ezért az ütemező ütemezi ezt a processzorhoz, függetlenül attól, hogy mennyi a burst ideje.
Ez 8 időegységig lesz végrehajtva. Addig még három folyamat érkezett a készenléti sorban, így az ütemező a legalacsonyabb burst idővel rendelkező folyamatot választja.
A táblázatban megadott folyamatok közül a P3 kerül végrehajtásra legközelebb, mivel ennek van a legalacsonyabb burst ideje az összes elérhető folyamat közül.
Tehát az eljárás így fog folytatódni a legrövidebb munka először (SJF) ütemező algoritmus.
Átl. várakozási idő = 27/5