Algoritmus prioritního plánování: Preemptivní, Nepreemptivní PŘÍKLAD

Co je prioritní plánování?

Prioritní plánování je metoda plánování procesů, která je založena na prioritě. V tomto algoritmu plánovač vybírá úkoly, které mají pracovat podle priority.

Procesy s vyšší prioritou by měly být prováděny jako první, zatímco úlohy se stejnými prioritami jsou prováděny na principu round-robin nebo FCFS. Priorita závisí na požadavcích na paměť, času atd.

Typy prioritního plánování

Prioritní plánování se dělí na dva hlavní typy:

Preemptivní plánování

V Preemptivním plánování 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ěží. Úloha s nižší prioritou se nějakou dobu drží a obnoví se, když úloha s vyšší prioritou dokončí své provádění.

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 speciální hardware (například časovač), jako je preemptivní plánování.

Charakteristika prioritního plánování

  • Algoritmus CPU, který plánuje procesy na základě priority.
  • Používalo se v Operasystémy pro provádění dávkových procesů.
  • Pokud jsou dvě úlohy se stejnou prioritou PŘIPRAVENY, funguje to na a KDO DŘÍV PŘIJDE, TEN DŘÍV MELE základ.
  • Při plánování priority je každému procesu přiřazeno číslo, které označuje jeho úroveň priority.
  • Čím nižší číslo, tím vyšší priorita.
  • V tomto typu plánovacího algoritmu, pokud přijde novější proces, který má vyšší prioritu než aktuálně běžící proces, je aktuálně běžící proces preemptován.

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

Zvažte následování pěti procesů P1 až P5. Každý proces má svou jedinečnou prioritu, čas shluku a čas příjezdu.

Proces Priorita Čas prasknutí Čas příjezdu
P1 1 4 0
P2 2 3 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Krok 0) V čase=0 dorazí proces P1 a P2. P1 má vyšší prioritu než P2. Provádění začíná procesem P1, který má dobu shluku 4.

Prioritní plánování

Krok 1) V čase = 1 nepřijde žádný nový proces. Provádění pokračuje s P1.

Prioritní plánování

Krok 2) V čase 2 nepřijde žádný nový proces, takže můžete pokračovat s P1. P2 je ve frontě.

Prioritní plánování

Krok 3) V čase 3 nepřijde žádný nový proces, takže můžete pokračovat s P1. Proces P2 stále čeká ve frontě.

Prioritní plánování

Krok 4) V čase 4 dokončil P1 své provádění. P2 zahájí provádění.

Prioritní plánování

Krok 5) V čase = 5 nepřichází žádný nový proces, takže pokračujeme s P2.

Prioritní plánování

Krok 6) V čase=6 přichází P3. P3 má vyšší prioritu (1) ve srovnání s P2 s prioritou (2). P2 je preemptován a P3 začíná své provádění.

Proces Priorita Čas prasknutí Čas příjezdu
P1 1 4 0
P2 2 1 ze 3 nevyřízených 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Prioritní plánování

Krok 7) V čas 7, nepřichází žádný nový proces, takže pokračujeme s P3. P2 je ve frontě.

Prioritní plánování

Krok 8) V čase = 8 nepřichází žádný nový proces, takže můžeme pokračovat s P3.

Prioritní plánování

Krok 9) V čase = 9 nepřichází žádný nový proces, takže můžeme pokračovat s P3.

Prioritní plánování

Krok 10) V časovém intervalu 10 nepřichází žádný nový proces, takže pokračujeme s P3

Prioritní plánování

Krok 11) V čase=11 přichází P4 s prioritou 4. P3 má vyšší prioritu, takže pokračuje ve svém provádění.

Proces Priorita Čas prasknutí Čas příjezdu
P1 1 4 0
P2 2 1 ze 3 nevyřízených 0
P3 1 2 ze 7 nevyřízených 6
P4 3 4 11
P5 2 2 12

Prioritní plánování

Krok 12) V čase=12 přichází P5. P3 má vyšší prioritu, takže pokračuje v provádění.

Prioritní plánování

Krok 13) V čase=13 dokončí P3 provádění. My máme P2, P4, P5 ve frontě připravených. P2 a P5 mají stejnou prioritu. Čas příjezdu P2 je před P5. P2 tedy zahájí provádění.

Proces Priorita Čas prasknutí Čas příjezdu
P1 1 4 0
P2 2 1 ze 3 nevyřízených 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Prioritní plánování

Krok 14) V čase =14 proces P2 dokončil své provádění. P4 a P5 jsou ve stavu čekání. P5 má nejvyšší prioritu a spustí provádění.

Prioritní plánování

Krok 15) V čase =15 pokračuje P5 v provádění.

Prioritní plánování

Krok 16) V čase = 16 je provádění P5 ukončeno. P4 je jediný proces, který zbývá. Spustí se provádění.

Prioritní plánování

Krok 17) V čase =20 P5 dokončil provádění a nezůstal žádný proces.

Prioritní plánování

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

Waiting Time = čas začátku – čas příjezdu + doba čekání na další dávku

P1 = o - o = o
P2 =4 - o + 7 =11	
P3= 6-6=0
P4= 16-11=5
Average Waiting time = (0+11+0+5+2)/5 = 18/5= 3.6

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

Zde jsou výhody/klady používání metody prioritního plánování:

  • Snadno použitelná metoda plánování
  • Procesy jsou prováděny na základě priority, takže vysoká priorita nemusí dlouho čekat, což šetří čas
  • Tato metoda poskytuje dobrý mechanismus, kde lze přesně definovat relativní důležitost každého procesu.
  • Vhodné pro aplikace s kolísajícími požadavky na čas a zdroje.

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

Zde jsou nevýhody/nevýhody prioritního plánování

  • Pokud se systém nakonec zhroutí, všechny procesy s nízkou prioritou se ztratí.
  • Pokud procesy s vysokou prioritou zabírají hodně času CPU, mohou procesy s nižší prioritou hladovět a budou odloženy na neurčito.
  • Tento plánovací algoritmus může nechat některé procesy s nízkou prioritou čekat donekonečna.
  • Proces bude zablokován, když bude připraven ke spuštění, ale musí čekat na CPU, protože právě běží nějaký jiný proces.
  • Pokud nový proces s vyšší prioritou stále přichází ve frontě připravenosti, pak proces, který je ve stavu čekání, může muset čekat dlouhou dobu.

Shrnutí

  • Prioritní plánování je metoda plánování procesů, která je založena na prioritě. V tomto algoritmu plánovač vybírá úkoly, které mají pracovat podle priority.
  • V Preemptivním plánování priority jsou úkoly většinou přiřazeny s jejich prioritami.
  • V metodě prioritního Nepreemptivního plánování je CPU přiděleno konkrétnímu procesu.
  • Procesy jsou prováděny na základě priority, takže vysoká priorita nemusí dlouho čekat, což šetří čas
  • Pokud procesy s vysokou prioritou zabírají hodně času CPU, mohou procesy s nižší prioritou hladovět a budou odloženy na neurčito.