A legrövidebb munka először (SJF): Megelőző, nem megelőző példa

Mi a legrövidebb munka első ütemezése?

Először a legrövidebb munka (SJF) egy olyan algoritmus, amelyben a legkisebb végrehajtási idejű folyamatot választjuk a következő végrehajtáshoz. Ez az ütemezési módszer lehet preemptív vagy nem megelőző. Jelentősen csökkenti a végrehajtásra váró többi folyamat átlagos várakozási idejét. Az SJF teljes formája a Shortest Job First.

Alapvetően kétféle SJF módszer létezik:

  • Nem megelőző SJF
  • Megelőző SJF

Az SJF ütemezés jellemzői

  • Az egyes munkákhoz a befejezéshez szükséges időegységként van társítva.
  • Ez az algoritmus-módszer hasznos a kötegelt típusú feldolgozáshoz, ahol a feladatok befejezésére való várakozás nem kritikus.
  • Javíthatja a folyamat átviteli sebességét azáltal, hogy először rövidebb feladatokat hajtanak végre, így rövid átfutási idővel.
  • Javítja a feladatok teljesítményét azáltal, hogy rövidebb munkákat kínál, amelyeket először végre kell hajtani, és amelyek többnyire rövidebb átfutási idővel rendelkeznek.

Nem megelőző SJF

A nem megelőző ütemezésben, ha a processzorciklust lefoglalták a folyamat számára, a folyamat addig tartja, amíg el nem éri a várakozási állapotot vagy le nem fejeződik.

Tekintsük a következő öt folyamatot, amelyek mindegyikének saját egyedi sorozatfelvételi ideje és érkezési ideje van.

Feldolgozási sor Burst time Érkezési idő
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Step 0) A 0 időpontban P4 érkezik és megkezdi a végrehajtást.

Nem megelőző SJF

Step 1) Az időpont= 1, megérkezik a P3 folyamat. De a P4-nek még 2 végrehajtási egységre van szüksége a befejezéshez. Folytatja a végrehajtást.

Nem megelőző SJF

Step 2) A =2 időpontban a P1 folyamat megérkezik, és hozzáadódik a várakozási sorhoz. A P4 folytatja a végrehajtást.

Nem megelőző SJF

Step 3) A 3 időpontban a P4 folyamat befejezi a végrehajtást. A P3 és P1 burst idejét összehasonlítjuk. A P1 folyamat végrehajtásra kerül, mert a sorozatfelvételi ideje rövidebb a P3-hoz képest.

Nem megelőző SJF

Step 4) Amikor az időpont = 4, a P5 folyamat megérkezik, és hozzáadódik a várakozási sorhoz. A P1 folytatja a végrehajtást.

Nem megelőző SJF

Step 5) Amikor az időpont = 5, a P2 folyamat megérkezik, és hozzáadódik a várakozási sorhoz. A P1 folytatja a végrehajtást.

Nem megelőző SJF

Step 6) A 9 időpontban a P1 folyamat befejezi a végrehajtást. A P3, P5 és P2 burst idejét összehasonlítjuk. A P2 folyamat végrehajtásra kerül, mert a sorozatfelvételi ideje a legalacsonyabb.

Nem megelőző SJF

Step 7) A time=10 időpontban a P2 végrehajt, a P3 és P5 pedig a várakozási sorban vannak.

Nem megelőző SJF

Step 8) A 11 időpontban a P2 folyamat befejezi a végrehajtást. A P3 és P5 burst idejét összehasonlítjuk. A P5 folyamat végrehajtásra kerül, mert a sorozatfelvételi ideje alacsonyabb.

Nem megelőző SJF

Step 9) A 15 időpontban a P5 folyamat befejezi a végrehajtást.

Nem megelőző SJF

Step 10) A 23 időpontban a P3 folyamat befejezi a végrehajtást.

Nem megelőző SJF

Step 11) Számítsuk ki a fenti példa átlagos várakozási idejét.

Wait time 
P4= 0-0=0
P1=  3-2=1
P2= 9-5=4
P5= 11-4=7
P3= 15-1=14
Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2

Megelőző SJF

A Preemptive SJF ütemezésben a jobok a készenléti sorba kerülnek, ahogy jönnek. A legrövidebb sorozatfelvételi idejű folyamat végrehajtása megkezdődik. Ha egy még rövidebb burst idejű folyamat érkezik, akkor az aktuális folyamatot eltávolítják, vagy megelőzik a végrehajtást, és a rövidebb jobhoz rendelik a CPU ciklust.

Fontolja meg a következő öt folyamatot:

Feldolgozási sor Burst time Érkezési idő
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Step 0) A 0 időpontban P4 érkezik és megkezdi a végrehajtást.

Feldolgozási sor Burst time Érkezési idő
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Megelőző SJF

Step 1) Az időpont= 1, megérkezik a P3 folyamat. A P4-nek azonban rövidebb a sorozatfelvételi ideje. Folytatja a végrehajtást.

Megelőző SJF

Step 2) Az időpont = 2, a P1 folyamat 6 burst idővel érkezik. A burst ideje hosszabb, mint a P4-é. Ezért a P4 folytatja a végrehajtást.

Megelőző SJF

Step 3) A 3 időpontban a P4 folyamat befejezi a végrehajtást. A P3 és P1 burst idejét összehasonlítjuk. A P1 folyamat végrehajtásra kerül, mert a sorozatfelvételi ideje alacsonyabb.

Megelőző SJF

Step 4) Az időpont = 4, a P5 folyamat megérkezik. A P3, P5 és P1 sorozatfelvételi idejét összehasonlítjuk. A P5 folyamat végrehajtásra kerül, mert a sorozatfelvételi ideje a legalacsonyabb. A P1 folyamat megelőzve van.

Feldolgozási sor Burst time Érkezési idő
P1 5-ból 6 maradt 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Megelőző SJF

Step 5) Az időpont = 5, a P2 folyamat érkezik. A P1, P2, P3 és P5 burst idejét összehasonlítjuk. A P2 folyamat végrehajtásra kerül, mert a sorozatfelvételi ideje a legkevesebb. A P5 folyamat megelőzve van.

Feldolgozási sor Burst time Érkezési idő
P1 5-ból 6 maradt 2
P2 2 5
P3 8 1
P4 3 0
P5 3-ból 4 maradt 4

Megelőző SJF

Step 6) A =6 időpontban P2 fut.

Megelőző SJF

Step 7) A =7 időpontban P2 befejezi a végrehajtást. A P1, P3 és P5 burst idejét összehasonlítjuk. A P5 folyamat végrehajtásra kerül, mert a sorozatfelvételi ideje rövidebb.

Feldolgozási sor Burst time Érkezési idő
P1 5-ból 6 maradt 2
P2 2 5
P3 8 1
P4 3 0
P5 3-ból 4 maradt 4

Megelőző SJF

Step 8) =10 időpontban a P5 befejezi a végrehajtást. A P1 és P3 burst idejét összehasonlítjuk. A P1 folyamat végrehajtásra kerül, mert a sorozatfelvételi ideje rövidebb.

Megelőző SJF

Step 9) A =15 időpontban P1 befejezi a végrehajtást. A P3 az egyetlen folyamat. Megkezdi a végrehajtást.

Megelőző SJF

Step 10) A =23 időpontban a P3 befejezi a végrehajtást.

Megelőző SJF

Step 11) Számítsuk ki a fenti példa átlagos várakozási idejét.

Wait time 
P4= 0-0=0
P1=  (3-2) + 6 =7
P2= 5-5 = 0
P5= 4-4+2 =2
P3= 15-1 = 14
Average Waiting Time = 0+7+0+2+14/5 = 23/5 =4.6

Az SJF előnyei

Íme az SJF módszer használatának előnyei:

  • Az SJF-et gyakran használják hosszú távú ütemezéshez.
  • Csökkenti az átlagos várakozási időt a FIFO (First in First Out) algoritmuson keresztül.
  • Az SJF módszer a legalacsonyabb átlagos várakozási időt adja meg egy adott folyamatcsoporthoz.
  • Alkalmas a kötegelt munkákhoz, ahol a futási idők előre ismertek.
  • A hosszú távú ütemezés kötegelt rendszeréhez a sorozatfelvételi idő becslése a munkaleírásból szerezhető be.
  • A rövid távú ütemezéshez meg kell jósolnunk a következő sorozatidő értékét.
  • Valószínűleg optimális az átlagos átfutási idő tekintetében.

Az SJF hátrányai/hátrányai

Íme néhány hátránya/hátránya az SJF algoritmusnak:

  • A munka befejezésének idejét korábban tudni kell, de nehéz megjósolni.
  • Gyakran használják kötegelt rendszerben hosszú távú ütemezéshez.
  • Az SJF nem hajtható végre CPU ütemezés rövid távra. Ez azért van így, mert nincs konkrét módszer a közelgő CPU burst hosszának előrejelzésére.
  • Ez az algoritmus nagyon hosszú átfutási időt vagy éhezést okozhat.
  • Ismerni kell, hogy egy folyamat vagy feladat mennyi ideig fog futni.
  • Ez éhezéshez vezet, ami nem csökkenti az átlagos átfutási időt.
  • Nehéz megmondani a közelgő CPU-kérés hosszát.
  • Az eltelt időt fel kell jegyezni, ami több terhelést eredményez a processzoron.

Összegzésként

  • Az SJF egy olyan algoritmus, amelyben a legkisebb végrehajtási idejű folyamatot választják a következő végrehajtáshoz.
  • Az SJF ütemezés minden egyes feladathoz a befejezés időegységeként van társítva.
  • Ez az algoritmus-módszer hasznos a kötegelt típusú feldolgozáshoz, ahol a feladatok befejezésére való várakozás nem kritikus.
  • Alapvetően kétféle SJF módszer létezik: 1) Nem megelőző SJF és 2) Preemptív SJF.
  • A nem megelőző ütemezésben, ha a processzorciklust lefoglalták a folyamat számára, a folyamat addig tartja, amíg el nem éri a várakozási állapotot vagy le nem fejeződik.
  • A megelőző SJF-ütemezésben a jobok érkezéskor a készenléti sorba kerülnek.
  • Bár egy rövid sorozatidejű folyamat elindul, az aktuális folyamatot eltávolítják vagy megelőzik a végrehajtástól, és a rövidebb feladat kerül végrehajtásra elsőként.
  • Az SJF-et gyakran használják hosszú távú ütemezéshez.
  • Csökkenti az átlagos várakozási időt a FIFO (First in First Out) algoritmuson keresztül.
  • Az SJF ütemezésben a Munka befejezési idejét korábban tudni kell, de nehéz megjósolni.
  • Az SJF nem implementálható a CPU rövid távú ütemezéséhez. Ez azért van így, mert nincs konkrét módszer a közelgő CPU burst hosszának előrejelzésére.