Ajánlott, 2024

Szerkesztő Választása

Eltérő és nem elővásárlási ütemezés közötti különbség az operációs rendszerben

A CPU-ütemező feladata, hogy a CPU-hoz egy folyamatot rendeljen, ha a CPU üresjáratban van. A CPU-ütemező kiválasztja a folyamatot a kész sorból, és a folyamatot a CPU-hoz rendeli. Az ütemezést, amely akkor megy végbe, amikor egy folyamat futásállapotból kész állapotba vagy várakozási állapotból kész állapotba vált, úgy hívjuk, hogy előzetes ütemezésnek nevezzük. A kezeken az ütemezés, amely akkor történik meg, amikor egy folyamat befejeződik, vagy átkapcsol a futásról a várakozási állapotra, az ilyen típusú CPU ütemezés az úgynevezett Non-Preemptive Scheduling . A preemptive és a nem preemptive ütemezés közötti alapvető különbség a nevükben van. Ez egy előzetes ütemezés előfeltétele; a folyamatok ütemezhetők. A nem előzetes ütemezésben a folyamatokat nem lehet ütemezni.

Az alábbiakban bemutatott összehasonlító táblázat segítségével röviden vitassuk meg az elővételi és a nem előjellegű ütemezés közötti különbségeket.

Összehasonlító táblázat

Az összehasonlítás alapjaElőzetes ütemezésNem elővásárlási ütemezés
AlapvetőAz erőforrásokat korlátozott ideig hozzárendelik egy folyamathoz.Amint az erőforrások egy folyamathoz vannak hozzárendelve, a folyamat addig tart, amíg befejezi a felszakítási idejét, vagy átáll a várakozási állapotra.
MegszakításA folyamat megszakítható.A folyamatot nem lehet megszakítani, amíg véget nem ér vagy várakozási állapotba nem vált.
ÉhezésHa egy magas prioritású folyamat gyakran érkezik a kész sorba, az alacsony prioritású folyamat éheződhet.Ha a folyamat hosszú futási idővel CPU-t futtat, akkor egy másik folyamat, amely kevesebb CPU-robbantási időt igényel, éheződhet.
FelsőAz előzetes ütemezésben a folyamatok ütemezésének általános költségei vannak.A nem előzetes ütemezés nem tartalmaz általános költségeket.
RugalmasságAz előzetes ütemezés rugalmas.A nem előzetes ütemezés merev.
KöltségAz előzetes ütemezés költséggel jár.A nem előzetes ütemezés nem költség-asszociatív.

Az előzetes ütemezés meghatározása

Az előzetes ütemezés olyan körülmények között hajtható végre, amikor egy folyamat futó állapotból kész állapotba vagy várakozási állapotból kész állapotba vált . Itt az erőforrások (CPU-ciklusok) a folyamatra korlátozott ideig vannak hozzárendelve, majd elveszik, és a folyamat ismét visszaáll a kész sorba, ha még mindig fennáll a CPU-bontási idő. A folyamat készen áll a várakozási sorban, amíg a következő esélyt nem kapja.

Ha egy nagy prioritású folyamat érkezik a készenléti sorba, akkor nem kell várnia, amíg az aktuális folyamat befejezi a felszakítási időt. Ehelyett az aktuális folyamat megszakad a végrehajtás közepén, és a készenléti sorba kerül, amíg a nagy prioritású folyamat a CPU ciklusokat használja. Ily módon a kész sorban lévő folyamatok egy kis időt kapnak a CPU futtatására. Ez rugalmassá teszi az előzetes ütemezést, de növeli a folyamatot a futó állapotról a kész állapotra és a vise-versére.

Az előzetes ütemezéssel működő algoritmusok kerek Robin. A legrövidebb feladat első (SJF) és a prioritásütemezés előzetes ütemezés alatt állhat.

Vessünk egy példát az előzetes ütemezésre, nézzük meg az alábbi képet. Négy eljárásunk van P0, P1, P2, P3. Ebből P2 érkezik a 0. időpontban. Tehát a CPU a P2 folyamathoz van hozzárendelve, mivel nincs más folyamat a sorban. Közben P2 végrehajtott, P3 az 1. időpontban érkezett, most a P2 folyamat folyamatos ideje (5 milliszekundum), ami nagyobb, mint a P3 által igényelt idő (4 milliós). Tehát a CPU a P3 processzorhoz van rendelve.

Eközben P3 hajtott végre, a P1 eljárás érkezik a 2. időpontra. Most a P3 (3 milliszekundum) hátralévő ideje kevesebb, mint a P1 (4 milliszekundum) és a P2 (5 milliszekundum) folyamatokhoz szükséges idő. Így a P3 folytatódhat. Míg a P3 folytatódik, a P0 folyamat a 3. időpontban érkezik, most pedig a P3 (2 milliszekundum) hátralévő ideje megegyezik a P0-val (2 milliszekundum) szükséges idővel. Tehát a P3 folytatódik, és a P3 megszűnése után a CPU P0-nak van rendelve, mivel kevésbé van kitörési ideje, mint a többinél. Miután a P0 megszűnik, a CPU-t P1-nek, majd P2-nek osztjuk.

A nem elővásárlási ütemezés meghatározása

A nem preemptív ütemezés olyan körülmények között alkalmazható, amikor egy folyamat befejeződik, vagy egy folyamat átkapcsol futásról várakozási állapotra . A nem elővásárlási ütemezésben, ha az erőforrások (CPU) egy folyamathoz vannak rendelve, a folyamat a CPU-t addig tartja, amíg meg nem szűnik, vagy eléri a várakozási állapotot.

A preemptive ütemezéssel ellentétben a nem előzetes ütemezés nem szakítja meg a CPU-t futtató folyamatot a végrehajtás közepén. Ehelyett arra vár, hogy a folyamat befejezze a CPU-sorozat felszakítási idejét, és ezután a CPU-t egy másik folyamathoz rendelheti.

A nem előzetes ütemezésben, ha egy folyamat, amely hosszú CPU-frekvenciájú időt futtat, akkor a másik folyamatnak sokáig várnia kell, ami növeli a folyamatok várakozási idejét a kész sorban. Azonban a nem preemptív ütemezés nem rendelkezik a folyamatok átkapcsolásával a kész sorból a CPU-ra, de ez megnehezíti az ütemezést, mivel a végrehajtás folyamatát még a magasabb prioritású folyamat számára sem lehet előfeltételezni.

Megoldjuk a fenti ütemezési példát nem előzetes módon. Mivel kezdetben a P2 folyamat a 0 időpontban érkezik, így a CPU a P2 folyamathoz van hozzárendelve, és 6 milliszekundumot vesz igénybe. Az összes folyamat között, azaz P0, P1, P3 érkezik kész sorba. De mindannyian várnak, amíg a P2 folyamat befejezi a CPU-fúvási idejét. Ezután a P2-t követően érkező folyamatot, azaz a P3-t a CPU-nak addig osztják ki, amíg befejeződik. Hasonlóképpen, akkor a P1 végrehajtja, és a CPU-t később a P0 folyamathoz adjuk.

Kulcsfontosságú különbségek az előzetes és a nem elővásárlási ütemezés között

  1. Az előzetes és nem előzetes ütemezés közötti különbség az, hogy a CPU előre meghatározott ütemezésben korlátozott ideig allokálódik a folyamatokhoz. A nem elővásárlási ütemezés során a CPU-t a folyamathoz rendezik, amíg meg nem szűnik vagy átáll a várakozási állapotra .
  2. A végrehajtási folyamat a preemptive ütemezésben megszakad a végrehajtás közepén, míg a végrehajtási folyamat a nem előzetes ütemezésben nem szakad meg a végrehajtás közepén.
  3. A preemptive Scheduling felülírja a folyamatot a kész állapotról a futó állapotra, a vise-versre és a készenléti sor fenntartására. Másrészről a nem előzetes ütemezés nem tartalmaz többletköltséget a folyamat futtatásától a kész állapotig.
  4. A preemptive ütemezésben, ha egy magas prioritású folyamat gyakran érkezik a kész sorba, akkor az alacsony prioritású folyamatnak hosszú ideig kell várnia, és lehet, hogy éhezni kell. Másrészről, a nem előjellegű ütemezésben, ha a CPU-t nagyobb ütési idővel osztják fel a folyamatra, akkor a kis felszakítási idővel rendelkező folyamatoknak lehetnek éheződni.
  5. A preemptive ütemezés nagyon rugalmas, mivel a kritikus folyamatok hozzáférhetnek a CPU-hoz, amikor beérkeznek a kész sorba, függetlenül attól, hogy milyen folyamatot hajt végre jelenleg. A nem preemptív ütemezés merev, még akkor is, ha egy kritikus folyamat belép a kész sorba, a CPU futó folyamat nem zavar.
  6. A Preemptive Scheduling költség-asszociatív, mivel meg kell őriznie a megosztott adatok integritását, ami nem a nem előzetes ütemezés esetében.

Következtetés:

Nem az, hogy a preemptív ütemezés jobb, mint a nem előzetes ütemezés vagy a vise-verse. Minden attól függ, hogy az ütemezés hogyan csökkenti a folyamatok átlagos várakozási idejét, és maximalizálja a CPU kihasználtságát.

Top