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šit | Proces 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žie | Preemptivní plánování má režijní náklady na plánování procesů. | Nepreventivní plánování nemá režijní náklady. |
Flexibilita | Preemptivní plánování je flexibilní. | Nepreventivní plánování je tuhé. |
Náklady | Preemptivní 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.
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.
Klíčové rozdíly mezi preventivním a nepředvídatelným plánováním
- 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í .
- 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í.
- 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.
- 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.
- 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.
- 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.