Preemptivní a nepreemptivní plánování

Klíčové rozdíly mezi preventivním a nepreemptivním plánováním

  • V preemptivním plánování je CPU přidělováno procesům na určité časové období a nepreemptivní plánovací CPU je přidělováno procesu, dokud neskončí.
  • V Preemptivním plánování se úkoly přepínají na základě priority, zatímco v nepreemptivním plánování nedochází k žádnému přepínání.
  • Preemptivní algoritmus má režii přepínání procesu z připraveného stavu do běžícího stavu, zatímco Nepreemptivní plánování žádnou takovou režii přepínání nemá.
  • Preemptivní plánování je flexibilní, zatímco Nepreemptivní plánování je pevné.
Preemptivní vs Nepreemptivní plánování
Preemptivní vs Nepreemptivní plánování

Co je preventivní plánování?

Preemptivní plánování je metoda plánování, kde jsou úkoly většinou přiřazeny s jejich prioritami. Někdy je důležité spustit úlohu s vyšší prioritou před jinou úlohou s nižší prioritou, i když úloha s nižší prioritou stále běží.

V tomto okamžiku úloha s nižší prioritou nějakou dobu trvá a obnoví se, když úloha s vyšší prioritou dokončí své provádění.

Co je to Nepreemptivní plánování?

V tomto typu metody plánování je CPU přiděleno konkrétnímu procesu. Proces, který udržuje CPU zaneprázdněn, uvolní CPU buď přepnutím kontextu, nebo ukončením.

Je to jediná metoda, kterou lze použít pro různé hardwarové platformy. To proto, že nepotřebuje specializovaný hardware (například časovač), jako je preemptivní plánování.

Nepreemptivní plánování nastane, když proces dobrovolně vstoupí do stavu čekání nebo se ukončí.

Preemptivní vs Nepreemptivní plánování: Srovnávací tabulka

Zde je přímé srovnání Preemptivní vs Nepreemptivní plánování. Hlavní rozdíly mezi Preemptivním a Nepreemptivním plánováním v OS jsou následující:

Preemptivní plánování Nepreemptivní plánování
Procesoru lze zabránit, aby provedl různé procesy uprostřed provádění jakéhokoli aktuálního procesu. Jakmile procesor zahájí své provádění, musí jej dokončit před spuštěním druhého. Nejde to uprostřed pozastavit.
Využití procesoru je efektivnější ve srovnání s Nepreemptivním plánováním. Využití CPU je méně efektivní ve srovnání s preemptivním plánováním.
Doba čekání a odezvy preventivního plánování je kratší. Čekací doba a doba odezvy u nepreemptivní metody plánování je vyšší.
Preemptivní plánování je prioritou. Proces s nejvyšší prioritou je proces, který se v současnosti používá. Když jakýkoli proces vstoupí do stavu běhu, stav tohoto procesu se nikdy nevymaže z plánovače, dokud nedokončí svou úlohu.
Preemptivní plánování je flexibilní. Nepreemptivní plánování je rigidní.
Příklady: – Nejkratší zbývající čas jako první, Round Robin atd. Příklady: Kdo dřív příjde ten dřív mele, Nejkratší úloha jako první, Prioritní plánování atd.
Preemptivní plánovací algoritmus může být preemptován, což je proces, který lze naplánovat V nepreemptivním procesu plánování nelze plánovat
V tomto procesu je CPU přiděleno procesům na určité časové období. V tomto procesu je CPU přiděleno procesu, dokud se neukončí nebo nepřepne do stavu čekání.
Preemptivní algoritmus má režii přepínání procesu ze stavu připravenosti do stavu běhu a naopak. Nepreemptivní plánování nemá takovou režii na přepnutí procesu ze spuštění do stavu připravenosti.

Výhody Preemptivního plánování

Zde jsou výhody/výhody metody Preemptivního plánování:

  • Preemptivní metoda plánování je robustnější, takže jeden proces nemůže monopolizovat CPU
  • Volba spuštěné úlohy přehodnocena po každém přerušení.
  • Každá událost způsobí přerušení běžících úloh
  • Operační systém zajišťuje, že využití procesoru je u všech běžících procesů stejné.
  • V tomto je využití CPU stejné, tj. všechny běžící procesy budou využívat CPU rovnoměrně.
  • Tato metoda plánování také improvizuje průměrnou dobu odezvy.
  • Preemptivní plánování je výhodné, když jej používáme pro multiprogramovací prostředí.

Výhody nepreemptivního plánování

Zde jsou klady/výhody metody nepreemptivního plánování:

  • Nabízí nízkou plánovací režii
  • Má tendenci nabízet vysokou propustnost
  • Je to koncepčně velmi jednoduchá metoda
  • Less potřebné výpočetní zdroje pro plánování

Nevýhody Preemptivního plánování

Níže jsou uvedeny nevýhody preemptivního plánování:

  • Potřebujete omezené výpočetní zdroje pro plánování
  • Pozastavení běžící úlohy, přepnutí kontextu a odeslání nové příchozí úlohy trvá plánovači déle.
  • Proces, který má nízkou prioritu, musí čekat delší dobu, pokud některé procesy s vysokou prioritou přicházejí nepřetržitě.

Nevýhody nepreemptivního plánování

Zde jsou nevýhody/nevýhody metody Nepreemptivního plánování:

  • To může vést k hladovění, zejména u těch úkolů v reálném čase
  • Chyby mohou způsobit zamrznutí stroje
  • To může dělat v reálném čase a prioritní plánování obtížný
  • Špatná doba odezvy procesů

Příklad nepreemptivního plánování

V nepreemptivním plánování SJF, jakmile je cyklus CPU přidělen procesu, proces jej podrží, dokud nedosáhne stavu čekání nebo není ukončen.

Zvažte následujících pět procesů, z nichž každý má svůj vlastní jedinečný čas shluku a čas příchodu.

Fronta procesů Čas prasknutí Čas příjezdu
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Krok 0) V čase=0 dorazí P4 a spustí provádění.

Příklad nepreemptivního plánování

Krok 1) V čase = 1 přichází proces P3. Ale P4 stále potřebuje k dokončení 2 prováděcí jednotky. Bude pokračovat v provádění.

Příklad nepreemptivního plánování

Krok 2) V čase =2 dorazí proces P1 a přidá se do čekající fronty. P4 bude pokračovat v provádění.

Příklad nepreemptivního plánování

Krok 3) V čase = 3 proces P4 dokončí své provádění. Porovná se doba burstu P3 a P1. Proces P1 se provede, protože jeho doba shluku je kratší ve srovnání s procesem P3.

Příklad nepreemptivního plánování

Krok 4) V čase = 4 dorazí proces P5 a přidá se do čekající fronty. P1 bude pokračovat v provádění.

Příklad nepreemptivního plánování

Krok 5) V čase = 5 dorazí proces P2 a přidá se do čekající fronty. P1 bude pokračovat v provádění.

Příklad nepreemptivního plánování

Krok 6) V čase = 9 proces P1 dokončí své provádění. Porovná se doba burstu P3, P5 a P2. Proces P2 se provede, protože jeho doba burstu je nejnižší.

Příklad nepreemptivního plánování

Krok 7) V čase=10 se P2 provádí a P3 a P5 jsou ve frontě čekajících.

Příklad nepreemptivního plánování

Krok 8) V čase = 11 proces P2 dokončí své provádění. Porovná se doba burstu P3 a P5. Proces P5 se provede, protože jeho doba burstu je kratší.

Příklad nepreemptivního plánování

Krok 9) V čase = 15 proces P5 dokončí své provádění.

Příklad nepreemptivního plánování

Krok 10) V čase = 23 proces P3 dokončí své provádění.

Příklad nepreemptivního plánování

Krok 11) Vypočítejme průměrnou dobu čekání pro výše uvedený příklad.

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

Příklad preventivního plánování

Zvažte to následující tři procesy v Round-robin

Fronta procesů Čas prasknutí
P1 4
P2 3
P3 5

Příklad preventivního plánování

Krok 1) Provádění začíná procesem P1, který má dobu shluku 4. Zde se každý proces provádí po dobu 2 sekund. P2 a P3 jsou stále ve frontě.

Příklad preventivního plánování

Krok 2) V čase =2 se P1 přidá na konec fronty a P2 se spustí

Příklad preventivního plánování

Krok 3) V čase=4 je P2 vyřazen a přidán na konec fronty. P3 se spustí.

Příklad preventivního plánování

Krok 4) V čase=6 je P3 vyřazen a přidán na konec fronty. P1 se spustí.

Příklad preventivního plánování

Krok 5) V čase=8 má P1 dobu shluku 4. Dokončilo provádění. P2 zahájí provádění

Příklad preventivního plánování

Krok 6) P2 má dobu shluku 3. Proběhl již 2 interval. V čase=9 dokončí P2 provádění. Poté P3 zahájí provádění, dokud nebude dokončeno.

Příklad preventivního plánování

Krok 7) Vypočítejme průměrnou dobu čekání pro výše uvedený příklad.

Wait time 
P1= 0+ 4= 4
P2= 2+4= 6
P3= 4+3= 7