Doporučená, 2024

Redakce Choice

Rozdíl mezi preventivním a nepředvídatelným plánováním v OS

Je zodpovědností plánovače CPU přidělit proces procesoru, kdykoli je procesor v klidovém stavu. Plánovač CPU vybere proces z připravené fronty a proces přidělí CPU. Plánování, ke kterému dochází, když proces přechází ze stavu, kdy je stav zapnutý, nebo ze stavu čekání do stavu připravenosti, se nazývá Preemptive Scheduling . Plánování, ke kterému dochází, když se proces ukončí, nebo přepne z běžícího na čekání na stav, tento způsob plánování CPU se nazývá Non-Preemptive Scheduling . Základní rozdíl mezi preemptivním a neproventivním plánováním spočívá v jejich jménu. To je Preemptive plánování může být předcházeno; procesy mohou být naplánovány. V Non-preemptive plánování, procesy nelze naplánovat.

Pojďme diskutovat o rozdílech mezi Preemptive a Non-Preemptive Scheduling ve stručnosti s pomocí srovnávací tabulky uvedené níže.

Srovnávací graf

Základ pro porovnáníPreemptivní plánováníNon Preemptive Scheduling
ZákladníProstředky jsou přiděleny procesu po omezenou dobu.Jakmile jsou zdroje alokovány na proces, proces jej drží, dokud nedokončí svůj burst čas nebo přepne do stavu čekání.
PřerušitProces může být přerušen.Proces nelze přerušit, dokud neukončí nebo nepřepne do stavu čekání.
HladověníPokud proces s vysokou prioritou často přichází do připravené fronty, proces s nízkou prioritou může hladovět.Pokud proces s dlouhým časem shluku běží na CPU, pak další proces s kratší dobou CPU může hladovět.
RežiePreemptivní plánování má režijní náklady na plánování procesů.Nepreventivní plánování nemá režijní náklady.
FlexibilitaPreemptivní plánování je flexibilní.Nepreventivní plánování je tuhé.
NákladyPreemptivní plánování je spojeno s náklady.Nepreventivní plánování není nákladově asociativní.

Definice preventivního plánování

Preemptivní plánování je takové, které lze provést za okolností, kdy proces přechází z běžícího stavu do stavu připravenosti nebo ze stavu čekání do stavu připravenosti . Zde jsou zdroje (cykly CPU) přiděleny procesu po omezenou dobu a poté jsou odebrány a proces je opět umístěn do připravené fronty, pokud má stále zbývající čas CPU. Proces zůstává v připravené frontě, dokud nedostane další šanci na provedení.

Pokud proces s vysokou prioritou dorazí do připravené fronty, nemusí čekat na dokončení procesu synchronizace. Namísto toho je aktuální proces přerušen uprostřed provádění a je umístěn do připravené fronty, dokud proces s vysokou prioritou nevyužívá cykly CPU. Tímto způsobem každý proces v připravené frontě dostane nějaký čas ke spuštění CPU. To dělá preemptivní plánování flexibilní, ale zvyšuje režii přepínání procesu z běžícího stavu do připraveného stavu a verše.

Algoritmy, které pracují na preemptivním plánování, jsou Round Robin. Nejkratší Job First (SJF) a Priority scheduling mohou nebo nemusí spadat pod preemptivní plánování.

Podívejme se na příklad Preemptive Scheduling, viz obrázek níže. Máme čtyři procesy P0, P1, P2, P3. Z toho P2 dorazí v čase 0. CPU je proto přiděleno procesu P2, protože ve frontě není žádný jiný proces. Mezitím se P2 provádělo, P3 přichází v čase 1, nyní zbývající čas pro proces P2 (5 milisekund), který je větší než čas požadovaný P3 (4 milisekundy). CPU je tedy přidělen procesoru P3.

Mezitím, P3 byl vykonávání, proces P1 dorazí v čase 2. Nyní zbývající čas pro P3 (3 milisekundy) je menší než čas požadovaný procesy P1 (4 milisekundy) a P2 (5 milisekund). P3 tedy může pokračovat. Zatímco P3 pokračuje, P0 dorazí v čase 3, nyní zbývající čas pro P3 (2 milisekundy) se rovná času potřebnému P0 (2 milisekundy). P3 tedy pokračuje a po ukončení P3 je CPU přiděleno P0, protože má méně času synchronizace než ostatní. Po ukončení P0 je CPU přiděleno P1 a pak P2.

Definice nepředvídatelného plánování

Non-preemptivní Plánování je takové, které lze použít za okolností, kdy se proces ukončí, nebo proces přechází ze stavu spuštění do stavu čekání . V Non-Preemptive Scheduling, jakmile jsou prostředky (CPU) přiděleny procesu, proces uchovává CPU, dokud se neukončí nebo nedosáhne čekacího stavu.

Na rozdíl od preemptivního rozvrhování nepřekročí plánování bez přerušení proces běžící CPU uprostřed provádění. Místo toho čeká, až proces dokončí dobu synchronizace CPU, a pak může přidělit CPU jinému procesu.

V Non-preemptive plánování, jestliže proces s dlouhým procesorem burst čas je vykonán pak jiný proces bude muset čekat na dlouhou dobu který zvětší průměrnou čekací dobu procesů v připravené frontě. Nicméně, nepředvídatelné plánování nemá žádnou režii přepínání procesů z připravené fronty na CPU, ale dělá plánování rigidní, protože proces v provádění není ani předběžný pro proces s vyšší prioritou.

Výše uvedený plánovací příklad řešíme bez preventivního způsobu. Proces P2 přichází zpočátku v čase 0, takže CPU je přiděleno procesu P2, který trvá 6 milisekund. Mezi všemi procesy, tj. P0, P1, P3 přichází do připravené fronty. Ale všechny čekají, až proces P2 dokončí svou dobu prasknutí CPU. Pak proces, který přijde po P2 tj. P3 je pak přidělen CPU, dokud to skončí je to burst čas. Podobně se provede P1 a CPU se později přenese na proces P0.

Klíčové rozdíly mezi preventivním a nepředvídatelným plánováním

  1. Základním rozdílem mezi preemptivním a neproventivním plánováním je to, že v preemptivním rozvrhování je CPU přiděleno procesům po omezenou dobu. Zatímco v Non-preemptive plánování, CPU je přidělen procesu až do ukončení nebo přepne do stavu čekání .
  2. Prováděcí proces v preemptivním rozvrhování je přerušen uprostřed provádění, zatímco prováděcí proces v non-preventivním plánování není přerušen uprostřed provádění.
  3. Preemptivní plánování má režii přepínání procesu z připraveného stavu do provozního stavu, verše a udržování připravené fronty. Na druhé straně, non-preemptivní plánování nemá režii přepínání procesu z běžícího stavu do stavu připravenosti.
  4. V případě preventivního plánování, pokud proces s vysokou prioritou často přichází do připravené fronty, musí proces s nízkou prioritou dlouho čekat a možná bude muset hladovět. Na druhé straně, v non-preemptive plánování, jestliže CPU je přiděleno procesu s větším časem shluku pak procesy s malým časem roztržení mohou muset hladovět.
  5. Preemptivní plánování je poměrně flexibilní, protože kritické procesy mohou přistupovat k CPU, jakmile dorazí do připravené fronty, bez ohledu na to, jaký proces se právě provádí. Non-preemptivní plánování je tuhé, protože i když kritický proces vstoupí do připravené fronty, proces s CPU není narušen.
  6. Preemptive Scheduling je nákladově asociativní, protože musí zachovat integritu sdílených dat, která není případem Non-preemptive Scheduling.

Závěr:

Není to tak, že preemptivní plánování je lepší než non-preemptivní plánování nebo verše. Vše závisí na tom, jak plánování minimalizuje průměrnou dobu čekání procesů a maximalizuje využití procesoru.

Top