430 likes | 536 Views
Zablokování ( deadlock , smrtelné objetí, uváznutí). Zablokování. Současně běží více procesů požadujících přidělení určitých prostředků výpočetního systému a převedených do stavu blokovaných procesů – tj. čekají,
E N D
Zablokování • Současně běží více procesů požadujících přidělení určitých prostředků výpočetního systému a převedených do stavu blokovaných procesů – tj. čekají, • Vznik problému: proces drží určité prostředky, požaduje přidělení dalších prostředků, tyto nedostane a je převeden do stavu blokovaných procesů, přičemž drží nadále již dříve přidělené prostředky požadované jinými (čekajícími) procesy.
Zablokování • Vznik takové situace = zablokování (uváznutí), deadlock • ? Okolnosti, kdy k takové situaci může dojít • ? Jak vzniku takové situace předejít • ? Jak takovou situaci pokud již vznikla řešit
Okolnosti vzniku zablokování • Nemůže vzniknout v systémech s jedním procesem, • Multiprocesové systémy: typicky běžící procesy soutěží o přidělení prostředků. • Běžící proces může prostředky požadovat: • Explicitně (během své existence) • Implicitně (během svého vzniku)
Okolnosti vzniku zablokování • Prostředky dvou typů: • Odejmutelné (preemptable) – mohou být procesu odebrány aniž dojde k nevratnému narušení dalšího korektního chodu procesu (procesor, paměť), • Neodejmutelné (nonpreemptable) – nelze procesu odejmout, aniž by nedošlo ke vzniku chyby v chodu procesu nebo výsledku činnosti (tiskárna)
Okolnosti vzniku zablokování • Situace zablokování se tedy týká procesů, které pracují s prostředky, které v daném okamžiku může používat pouze jeden proces a které jsou neodejmutelné.
Definice zablokování • Lze definovat jako stav, v němž dva nebo více procesů čeká na splnění podmínky, která nemůže nikdy nastat. • Důvodem této nemožnosti však musí být to, že tuto podmínku, na jejíž splnění čeká určitý proces, může splnit pouze jiný proces ze skupiny zablokovaných procesů – tedy proces nacházející se ve stejné situaci • Důležitý moment zablokování=společné čekání
Definice zablokování • Množina procesů je zablokována, pokud každý proces z této množiny čeká na událost, kterou může způsobit pouze jiný proces z této množiny.
Modelování zablokování • Pomocí orientovaných grafů • Orientovaný graf pracuje s uzly dvou typů: • kroužek=proces • čtverec=prostředek
Modelování zablokování • Mezi jednotlivými uzly jsou orientované hrany: • Hrana směřující od procesu k prostředku představuje žádost o přidělení prostředku
Modelování zablokování • Hrana směřující od prostředku k procesu znamená, že daný prostředek byl procesu přidělen a proces ho používá:
Modelování zablokování • Uvedené zobrazení je také označováno jako graf přidělení systémových prostředků (system resource allocation graph),
Modelování zablokování „deadlock“ A T U B
Modelování zablokování • Více instancí téhož prostředku je možné vyznačit tečkami ve čtvercovém uzlu:
Modelování zablokování • V grafu není kružnice zablokování nedošlo • V grafu je kružnice k zablokování mohlo dojít
Modelování zablokování P2 R1 P1 P3 R2 P4
Podmínky pro vznik zablokování • Coffman, Elphick a Shoshani (1971) identifikovali 4 nutné podmínky, které musí být splněny současně pro vznik zablokování • Vzájemné vyloučení při přidělování prostředků, • Postupné přidělování prostředků, • Neodnímatelnost přidělených prostředků, • Vznik kruhového čekání
Metody (strategie) řešení problému zablokování: • 3 přístupy: • Ignorování existence problému, • Volba takového postupu, aby k zablokování nemohlo dojít: • Předcházením zablokování (deadlock prevention) • Vyhnutí se zablokování (deadlock avoidance) • Připustit vznik zablokování, ale použitím metod detekce jej detekovat a následně provést zásah směřující k odstranění zablokování – tj. provedení obnovy (zotavení systému) – detection and recovery
Metody řešení problému zablokování: • I. Ignorování problému (pštrosí algoritmus) • Počítá se s možností vzniku zablokování – úvahy o pravděpodobnosti (matematické hledisko, inženýrské hledisko, dle určení systému, rovnováha nákladů na řešení (větší režie systému) vs. přínosy
Metody řešení problému zablokování: • IIa. Předcházení (prevence) zablokování – deadlock prevention. • Založeno na existenci 4 nutných podmínek pro vznik zablokování • Často používaná metoda (nízká režie) • Hlavní nevýhoda=nízká míra využití prostředků
Podmínky pro vznik zablokování • I. Podmínka vzájemného vyloučení při přidělování prostředků (mutual exclusion condition) • = v systému existují prostředky, které mohou být v daném okamžiku přiděleny nejvýše jednomu procesu (nebo jsou volné)
Metody řešení problému zablokování: • Prolomení některé z nutných podmínek: • A) Podmínka vzájemného vyloučení • V řadě případů nelze využít, platí však zásada, že pokud to není nezbytně nutné nemá se používat vzájemné vyloučení
Podmínky pro vznik zablokování • II. Podmínka postupného přidělování prostředků (hold and wait) • = V systému je možné prostředky přidělovat postupně aniž by proces musel uvolnit dříve získané prostředky, procesy s již přidělenými prostředky se mohou snažit o přidělení dalších
Metody řešení problému zablokování: • Strategie 1: Každý proces musí požadovat všechny prostředky, které bude potřebovat, naráz (a dokud je nedostane, nemůže pokračovat v běhu), • Strategie 2: Pokud proces, který již drží nějaké prostředky, požaduje přidělení dalších prostředků a toto mu bylo odmítnuto, musí nejdříve vrátit všechny prostředky, které drží, a teprve poté o ně znovu požádat,
Metody řešení problému zablokování: • B) podmínka postupného přidělování prostředků (hold and wait condition): • 1. strategie • Metoda úplného počátečního přidělení všech sdílených prostředků • Bezpečná a jednoduchá metoda • Nevýhoda: seznam požadovaných prostředků musí být znám již při vzniku procesu, nízké využití prostředků, součet požadavků všech procesů <= celkové kapacitě prostředků systému
Podmínky pro vznik zablokování • III. Podmínka neodnímatelnosti přidělených prostředků, • = přidělený prostředek nemůže být procesu odejmut do té doby, dokud proces nedokončil používání tohoto prostředku a dokud tedy proces sám neuvolní používaný prostředek
Metody řešení problému zablokování: • C) podmínka neodnímatelnosti přidělených prostředků (no preemption condition) • 2. strategie • Zavedení pravidla požadujícího, aby proces, který již má přiděleny nějaké prostředky a požaduje přidělení dalších prostředků nejdříve vrátil všechny dříve přidělené prostředky a teprve následně požádal o přidělení (všech) prostředků,
Podmínky pro vznik zablokování • IV. Podmínky vzniku kruhového čekání • =musí existovat množina (nejméně dvou) čekajících procesů, kde proces P0 čeká na prostředek držený procesem P1, proces P1 čeká na prostředek používaný procesem P2 a tak dále až k procesu Pn, který čeká na prostředek používaný procesem P0
Metody řešení problému zablokování: • Strategie 3: Musí být zajištěno přidělování prostředků podle lineárního uspořádání prostředků (proces může obdržet požadovaný prostředek pouze tehdy, je-li v daném uspořádání prostředků požadovaný prostředek zařazen výše než kterýkoliv z prostředků, které již proces má přidělen).
Metody řešení problému zablokování: • D) Podmínka vzniku kruhového čekání (circular wait condition) • Nejtriviálněji: proces může mít přidělen jen jeden prostředek • 3. strategie – přidělované prostředky jsou uspořádány do lineárního systému (například očíslováním) a proces musí žádat o přidělení prostředků v určitém předepsaném pořadí.
Metody řešení problému zablokování: • Tj. prostředky byly uspořádány do určité hierarchie (řady) a proces držící určitý prostředek může požádat pouze o prostředek, který stojí v dané hieararchii výše • Důsledek: nemůže dojít ke vzniku kružnice v grafu přidělení prostředků
Metody řešení problému zablokování: • Problémy: • Stanovení vhodného uspořádání pro různé prostředky (během instalace systému, jak se změní po doplnění dalšího prostředku)
Metody řešení problému zablokování: • IIb. Vyhnutí se zablokování (deadlock avoidance) • Založena na představě, že systém bude umět rozpoznat, zda je „bezpečné“ vyhovět požadavku procesu o přidělení prostředků, a že toto přidělení provede pouze za situace, kdy je přidělení bezpečné • Vyžaduje předem znalost určitých informací
Metody řešení problému zablokování: • Metoda je tedy založena na vyhnutí se zablokování pečlivým přidělováním prostředků. • Pracuje s tzv. postupovou dráhou („trajektorií prostředků“) a pojmy „bezpečný stav“ a „nebezpečný stav“
P2 T N D P t T P1 P
Metody řešení problému zablokování: • V bodě „t“ musí systém rozhodnout, zda procesu P2 přidělí plotter (a dojde k zablokování) nebo proces P2 odloží, přidělí (časem) plotter procesu P1 (a vyhne se tak zablokování).
Metody řešení problému zablokování: • „bezpečný stav“: stav, kdy procesy nejsou zablokované a existuje cesta (trajektorie) jak uspokojit všechny požadavky běžících procesů ve vhodném pořadí. • Pokud taková cesta není, je stav „nebezpečný“ (což neznamená, že jsou procesy zablokované a že k zablokování nutně musí dojít)
Metody řešení problému zablokování: Celkem prostředků=10 Je to bezpečný stav
Metody řešení problému zablokování: Celkem prostředků=10 Není to bezpečný stav
Metody řešení problému zablokování: • III. Detekce a zotavení. • Systém se nepokouší zablokování zabránit, ale snaží se detekovat jeho vznik a poté odstranit, • Jak detekce zablokování tak odstranění zablokování znamená režii, • Způsoby detekce: např. graf přidělování prostředků (algoritmus pro detekci cyklů v grafu)
Metody řešení problému zablokování: • Zotavení: • Využitím preempce (odebráním prostředku některému procesu z množiny procesů, které jsou zablokovány) • Využitím systému kontrolních bodů (checkpointů), stav systému periodicky zaznamenáván, v případě vzniku zablokování je proces, který drží prostředek, u něhož požadavek na přidělení vedl k zablokování, vrácen zpět do jednoho ze stavů z doby před přidělením tohoto prostředku, • Likvidací některého z procesů
Metody řešení problému zablokování: • Detekce je možná vždy, obnovení není vždy možné. • Značná režie
Metody řešení problému zablokování: • Kombinovaný přístup: • Žádný z uvedených algoritmů sám není vhodný pro celé spektrum problémů přidělování zdrojů v operačním systému, • Pro každou třídu problémů je vhodné použít různou startegii