Iki šiol procesus planuodavome pagal jų atvykimo laiką (FCFS tvarkaraštyje). Tačiau SJF planavimo algoritmas suplanuoja procesus pagal jų serijos laiką.
Naudojant SJF planavimą, toliau bus suplanuotas procesas, kurio serijos trukmė yra mažiausia iš galimų procesų sąrašo parengties eilėje.
Tačiau labai sunku numatyti proceso trukmę, todėl šį algoritmą labai sunku įdiegti sistemoje.
SJF privalumai
- Maksimalus pralaidumas
- Minimalus vidutinis laukimo ir apyvartos laikas
SJF trūkumai
- Gali kentėti nuo bado problemos
- Jis neįgyvendinamas, nes tikslus proceso eigos laikas negali būti žinomas iš anksto.
Yra įvairių metodų, kuriais remiantis galima nustatyti proceso procesoriaus sprogimo laiką. Vėliau juos išsamiai aptarsime.
Pavyzdys
Toliau pateiktame pavyzdyje yra penkios užduotys, pavadintos P1, P2, P3, P4 ir P5. Jų atvykimo laikas ir serijos laikas nurodyti toliau esančioje lentelėje.
PID | Atvykimo laikas | Burst Time | Užbaigimo laikas | Apsisukimo laikas | Laukimo laikas |
---|---|---|---|---|---|
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 | dvidešimt vienas | 12 | 4 |
Kadangi joks procesas neatvyksta 0 laiku, vadinasi; bus tuščia vieta Ganto diagramos nuo 0 iki 1 (laikas, kai ateina pirmasis procesas).
Pagal algoritmą OS suplanuoja procesą, kurio serijos laikas yra mažiausia tarp galimų procesų parengties eilėje.
Iki šiol paruoštoje eilėje turime tik vieną procesą, todėl planuotojas suplanuos tai procesoriui, nesvarbu, koks yra jo serijos laikas.
Tai bus vykdoma iki 8 laiko vienetų. Iki tol paruoštoje eilėje turime dar tris procesus, todėl planuotojas pasirinks procesą su mažiausiu serijos laiku.
Iš lentelėje pateiktų procesų toliau bus vykdomas P3, nes jis turi mažiausią serijos laiką tarp visų galimų procesų.
skirtumas tarp meilės ir patinka
Taigi procedūra vyks taip trumpiausias darbas pirmiausia (SJF) planavimo algoritmas.
Vidutinis laukimo laikas = 27/5