Do sada smo procese raspoređivali prema vremenu dolaska (u FCFS rasporedu). Međutim, algoritam za raspoređivanje SJF raspoređuje procese prema njihovom vremenu praska.
U SJF raspoređivanju, proces s najnižim vremenom pražnjenja, među popisom dostupnih procesa u redu čekanja, bit će zakazan sljedeći.
Međutim, vrlo je teško predvidjeti vrijeme praska potrebno za proces stoga je ovaj algoritam vrlo teško implementirati u sustav.
Prednosti SJF-a
- Maksimalna propusnost
- Minimalno prosječno vrijeme čekanja i obrade
Nedostaci SJF
- Može patiti od problema gladovanja
- Nije ga moguće provesti jer se točno vrijeme praska za proces ne može znati unaprijed.
Dostupne su različite tehnike pomoću kojih se može odrediti vrijeme pražnjenja CPU-a procesa. O njima ćemo kasnije detaljnije razgovarati.
Primjer
U sljedećem primjeru postoji pet poslova s imenima P1, P2, P3, P4 i P5. Njihovo vrijeme dolaska i vrijeme pucanja navedeni su u tablici u nastavku.
10 od 100
PID | Vrijeme dolaska | Vrijeme pucanja | Vrijeme završetka | Vrijeme obrade | Vrijeme čekanja |
---|---|---|---|---|---|
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 | dvadeset i jedan | 12 | 4 |
Budući da nijedan proces ne dolazi u vrijeme 0; bit će prazan utor u gantogram od vremena 0 do 1 (vrijeme u kojem dolazi prvi proces).
Prema algoritmu, OS raspoređuje proces koji ima najniže vrijeme praska među dostupnim procesima u redu čekanja.
Do sada imamo samo jedan proces u redu čekanja, stoga će planer to rasporediti procesoru bez obzira na vrijeme praska.
Ovo će se izvršavati do 8 vremenskih jedinica. Do tada imamo još tri procesa u spremnom redu stoga će planer odabrati proces s najnižim vremenom praska.
instanceof u Javi
Među procesima navedenim u tablici, P3 će se izvršiti sljedeći budući da ima najniže vrijeme praska među svim dostupnim procesima.
Tako će se postupak dalje odvijati prvi najkraći posao (SJF) algoritam raspoređivanja.
Prosječno vrijeme čekanja = 27/5