Különbség a megelőző és nem megelőző ütemezés között az operációs rendszerekben A különbség

Anonim

A processzor ütemezése (vagy CPU ütemezés ) meghatározza, hogy mely folyamatok vannak hozzárendelve és eltávolítva a CPU-ból, például a Preemptive és a Non Régebbi rendszerek egyszerű önálló módokon működhetnek, de a növekvő a rugalmas rendszerek rugalmasabbá tétele, valamint a virtualizáció, a többfeldolgozás hatékony kezelése gyors reagálást biztosít minden feladatkezelési kérelemre.

Az ütemezési egységek gyakran

feladat

néven hivatkoznak, és az ütemező munkája futtatni és kezelni ezeket a feladatokat, ha szükséges, az ütemező kiválasztja az eltávolítandó feladatot, és feldolgozásra van rendelve a CPU-hoz, az alkalmazott ütemezési modellt.

Hogyan értesíti az ütemező az elsőbbséget élvező feladatokat?

Az ütemezőnek tisztességes és hatékony kiválasztási folyamatot kell futtatnia, figyelembe véve a változó, dinamikus feldolgozási kéréseket, és a legtöbb processzor ciklusokat kihasználva.

A feladatok két állapotban lehetnek feldolgozás közben:

Egy

CPU Burst

  1. esetén, ahol a CPU végzi a számításokat a feladat feldolgozásához (a CPU sorozata a feladattól a feladathoz változik, és programot programozni). Bevitel / Kimenet (I / O) Burst
  2. várakozás az adatok fogadására vagy elküldésére a rendszerből.
    Ha a CPU üresjáratban van, az Ütemező a

Készenlévő várólista üzenetet olvas, és kiválasztja a következő futó feladatot. Ezután a Diszpécser a kiválasztott feladatvezérlést biztosítja a CPU számára, ezért gyorsnak kell lennie! A Diszpécser által felvetett bármely idő Dispatch Latency néven ismert. A Ready queue

különböző struktúrák és egyedi paraméterek, valamint számos olyan módszer használható, amelyek az ütemezési folyamat összetettségeinek kezelésére használhatók. Általánosságban a CPU kihasználtságának, átviteli teljesítményének optimalizálása és maximalizálása. Az ütemezőnek a következő szakaszok egyikében kell döntenie:

Ha a feladat

Running

  1. Várakozó állapot (például egy I / O kérelem alatt vár). Ha a feladat Running
  2. -ről Ready -ra változik (például egy megszakításra válaszol). Ha a feladat Várakozás
  3. és Ready között változik (például egy I / O kérés befejeződött). Ha Feladat
  4. Új feladatot kell kiválasztani, ha az 1. vagy 4. lépcső történik a CPU teljes kihasználásának biztosítása érdekében, és mind a 2., mind a 3. szakaszban a feladat tovább folytatódhat, vagy újabb kiválasztott. A feladat feldolgozásának megértése után nézzünk két ütemezési modult, amelyek a CPU-megszakításokkal foglalkoznak.

Mindkettőnek hasonló funkciói vannak a feladatokkal, a feladatállapotokkal, a várólistákkal és a prioritásokkal (statikus vagy dinamikus):

Nem-megelőző ütemezés

ha egy feladat addig fut, amíg meg nem áll (önként), vagy befejeződik. A Windows®-nak nem volt megelőző ütemezése a Windows 3. x-ig, amely után átállt a Preemptive-ra a Windows 95-ből.

  • A Preemptive Scheduling egy olyan feladat, amelyet egy CPU-megszakítás kényszerít le erőszakkal, ellentétben a Non-Preemptive a feladat addig fut, amíg fel nem szabadítja a CPU vezérlését.
  • Nem megelőző ütemezés A nem megelőző rendszeren belüli feladatok a befejezésig futnak.

Az Ütemező ezután ellenőrzi az összes feladat állapotát, és

Ready

állapotban a következő legmagasabb prioritású feladatot ütemezi. A nem előre megtervezett ütemezéssel, ha a feladatnak a CPU-hoz való hozzárendelése van, akkor nem vonható el, még akkor sem, ha a rövid feladatoknak várniuk kell a hosszabb feladatok elvégzésére. Az ütemezéskezelés minden feladatnál "tisztességes", és a válaszadási idő kiszámítható, mivel a kiemelt fontosságú feladatok nem képesek várakozási feladatokat később leállítani.

Az ütemező biztosítja, hogy minden feladat megkapja a CPU részesedését, elkerülve a késedelmet bármilyen feladattal. A processzorhoz rendelt "időtartam" nem feltétlenül egyenlő, mivel attól függ, hogy a feladat mennyi ideig tart.

Preventive Scheduling

Ez az ütemezési modell lehetővé teszi a feladatok megszakítását - ellentétben a nem-megelőző ütemezéssel, amely "befejezési" megközelítést tartalmaz.

A külső hívásokból kezdeményezhető megszakítások arra hívják fel az ütemezőt, hogy szüneteltesse a futó feladatot egy másik magasabb prioritású feladat kezelésére - így a CPU vezérlése megelőzhető.

A

Ready

állapotban a legmagasabb prioritású feladat végrehajtása lehetővé teszi a gyors reagálást valós idejű eseményekre. A megelőző ütemezéssel kapcsolatos hátrányok egy része az erőforrások általános költségnövekedését eredményezi, amikor megszakításokat használ, és két adatmegosztási feladattal is előfordulhat, mivel a megosztott adatszerkezetek frissítése közben megszakadhat, és negatívan befolyásolhatja az adatok integritását. Másrészt praktikus lehet egy feladat szüneteltetése egy másik, kritikus fontosságú feladat kezelésére.

Összefoglalóban

Számos különböző eltérés és függőséget lehet meghatározni a különböző irányelvekben, például egy

"Round Robin Policy [i]"

használatával, ahol minden feladat (egyenlő prioritással) egyszer fut, majd a sor végén, a következő ciklusra. Az egyéb szabályzatok , Legkisebb-Job-First , Legkisebb-Job-Next , Legkisebb maradt idő , stb. A korábbi adatok elemzése információt nyújt a szempontokról, mint például az új feladatok megérkezésének üteme, a CPU és az I / O Bursts stb., Így a valószínűségeloszlások kiszámíthatják a feladatok jellemzőit: várakozási idő, rendszergazdák releváns adatokkal az ütemezési modellek meghatározásához.