Doteraz sme procesy plánovali podľa času ich príchodu (v plánovaní FCFS). Plánovací algoritmus SJF však naplánuje procesy podľa času zhluku.
V plánovaní SJF sa ako ďalší naplánuje proces s najnižším časom zhluku zo zoznamu dostupných procesov vo fronte pripravenosti.
Je však veľmi ťažké predpovedať čas impulzu potrebný na proces, preto je tento algoritmus veľmi ťažko implementovateľný do systému.
Výhody SJF
- Maximálna priepustnosť
- Minimálna priemerná doba čakania a obrátky
Nevýhody SJF
- Môže trpieť problémom hladovania
- Nie je to implementovateľné, pretože presný čas burstu pre proces nemôže byť známy vopred.
Existujú rôzne dostupné techniky, pomocou ktorých je možné určiť čas spustenia CPU procesu. Podrobne ich rozoberieme neskôr.
narodil sa Freddie Mercury
Príklad
V nasledujúcom príklade je päť úloh pomenovaných ako P1, P2, P3, P4 a P5. Ich čas príchodu a čas burstu sú uvedené v tabuľke nižšie.
čiastočná závislosť
PID | Čas príchodu | Burst Time | Čas dokončenia | Turn Around Time | Čas čakania |
---|---|---|---|---|---|
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 | dvadsaťjeden | 12 | 4 |
Keďže žiadny proces nepríde v čase 0, teda; v ňom zostane prázdne miesto Ganttov diagram od času 0 do 1 (čas, keď príde prvý proces).
Podľa algoritmu OS naplánuje proces, ktorý má najnižší čas burstu spomedzi dostupných procesov vo fronte pripravenosti.
Doteraz máme vo fronte pripravený iba jeden proces, takže plánovač to naplánuje procesoru bez ohľadu na čas jeho spustenia.
Toto sa vykoná do 8 jednotiek času. Dovtedy máme vo fronte pripravené tri ďalšie procesy, takže plánovač vyberie proces s najnižším časom zhluku.
Spomedzi procesov uvedených v tabuľke sa P3 vykoná ako ďalší, pretože má najnižší čas burstu spomedzi všetkých dostupných procesov.
programovanie v poli c
Takže takto bude postup pokračovať najskôr najkratšia práca (SJF) plánovací algoritmus.
Priemerný čas čakania = 27/5