Zablokování Operating System: Co je to, kruhové čekání (příklady)
Co je Deadlock?
Zablokování je situace, která nastává v OS, když jakýkoli proces vstoupí do stavu čekání, protože jiný čekající proces drží požadovaný zdroj. Zablokování je běžný problém v multiprocessingu, kde několik procesů sdílí specifický typ vzájemně se vylučujícího zdroje známého jako soft lock nebo software.
Příklad Deadlock
- Příkladem v reálném světě by byla doprava, která jede pouze jedním směrem.
- Zde je most považován za zdroj.
- Když tedy dojde k zablokování, lze jej snadno vyřešit, pokud jedno auto couvá (Preempt resources and rollback).
- Pokud dojde k uváznutí, může být nutné zálohovat několik vozů.
- Hladovění je tedy možné.

Co je kruhové čekání?
Jeden proces čeká na zdroj, který je držen druhým procesem, který také čeká na zdroj držený třetím procesem atd. Toto bude pokračovat, dokud poslední proces nebude čekat na zdroj držený prvním procesem. Vznikne tak kruhový řetěz.
Například procesu A je přidělen zdroj B, protože požaduje zdroj A. Stejným způsobem je procesu B přidělen zdroj A a požaduje zdroj B. To vytváří cyklickou čekací smyčku.
Příklad kruhového čekání
Například počítač má tři jednotky USB a tři procesy. Každý ze tří procesů může pojmout jeden z USB disků. Když si tedy každý proces vyžádá další jednotku, dojde u těchto tří procesů k zablokování, protože každý proces bude čekat na uvolnění jednotky USB, která se právě používá. Výsledkem bude kruhový řetězec.
Detekce zablokování v OS
Plánovač zdrojů může detekovat výskyt uváznutí. Plánovač zdrojů pomáhá OS sledovat všechny zdroje, které jsou přiděleny různým procesům. Když je tedy detekováno zablokování, lze jej vyřešit pomocí níže uvedených metod:
Prevence uváznutí v OS
Je důležité zabránit uváznutí dříve, než k němu dojde. Systém kontroluje každou transakci před jejím provedením, aby se ujistil, že nevede k uváznutí. Taková, že i malá změna nastane mrtvá, že operace, která může v budoucnu vést k zablokování, také nikdy neumožnila provedení procesu.
Je to soubor metod, jak zajistit, aby alespoň jedna z podmínek nemohla platit.
Žádná preventivní akce
Žádná preempce – Zdroj může být uvolněn pouze dobrovolně procesem, který jej drží poté, co tento proces dokončí svůj úkol
- Pokud proces, který drží nějaké prostředky, požaduje jiný zdroj, který mu nelze okamžitě přidělit, v takové situaci budou všechny prostředky uvolněny.
- Preemptované prostředky vyžadují seznam prostředků pro proces, který čeká.
- Proces bude restartován pouze v případě, že může znovu získat svůj starý prostředek a nový, který požaduje.
- Pokud proces požaduje nějaký jiný zdroj, když je k dispozici, byl předán žádajícímu procesu.
- Pokud jej drží jiný proces, který čeká na jiný zdroj, uvolníme jej a předáme žádajícímu procesu.
Vzájemné vyloučení
Vzájemné vyloučení je plná forma Mutexu. Jedná se o speciální typ binárního semaforu, který slouží k řízení přístupu ke sdílenému zdroji. Zahrnuje mechanismus dědičnosti priorit, aby se zabránilo rozšířeným problémům s inverzí priorit. Umožňuje udržet aktuální úkoly s vyšší prioritou v blokovaném stavu po co nejkratší dobu.
Sdílené prostředky, jako jsou soubory pouze pro čtení, nikdy nevedou k uváznutí, ale prostředky, jako jsou tiskárny a páskové jednotky, potřebují výhradní přístup prostřednictvím jediného procesu.
Vydržte a čekejte
V tomto stavu musí být procesům zastaveno držení jednoho nebo více zdrojů a současně čekání na jeden nebo více dalších.
Kruhové čekání
Ukládá celkové řazení všech typů zdrojů. Kruhové čekání také vyžaduje, aby každý proces požadoval zdroje ve zvyšujícím se pořadí výčtu.
Vyhýbání se mrtvému bodu Algorithms
Je lepší se vyhnout uváznutí místo toho, abyste podnikli kroky poté, co k zablokování došlo. Potřebuje další informace, například jak by se měly využívat zdroje. Vyhýbání se zablokování je nejjednodušší a nejužitečnější model, u kterého každý proces deklaruje maximální počet zdrojů každého typu, které může potřebovat.
Vyvarování se Algorithms
Algoritmus pro zamezení uváznutí vám pomůže dynamicky posoudit stav alokace prostředků, takže nikdy nemůže nastat situace kruhového čekání.
Jedna instance typu prostředku.
- Použijte graf alokace zdrojů
- Jsou nutné cykly, které jsou dostatečné pro Deadlock
Více instancí typu prostředku.
- Cykly jsou nutné, ale nikdy nestačí pro Deadlock.
- Používá bankéřský algoritmus
Rozdíl mezi hladověním a uváznutím
Zde jsou některé důležité rozdíly mezi Deadlockem a hladověním:
Zablokování | Hladovění |
---|---|
Zablokování nastane, když se jeden z procesů zablokuje. | Hladovění je situace, kdy jsou všechny procesy s nízkou prioritou zablokovány a procesy s vysokou prioritou se provádějí. |
Deadlock je nekonečný proces. | Hladovění je dlouhé čekání, ale ne nekonečný proces. |
Každý Deadlock má vždy hladovění. | Každé hladovění nemusí nutně uváznout na mrtvém bodě. |
Nastane uváznutí, pak vzájemné vyloučení, držení a čekání. Preempce a kruhové čekání zde nenastávají současně. | Stává se to kvůli nekontrolované správě priorit a zdrojů. |
Výhody Deadlock
Zde jsou výhody/výhody použití metody Deadlock
- Tato situace funguje dobře pro procesy, které provádějí jedinou dávku činnosti
- Pro Deadlock není potřeba žádná preempce.
- Pohodlná metoda při aplikaci na zdroje, jejichž stav lze snadno uložit a obnovit
- Možné vynutit pomocí kontrol v době kompilace
- Nepotřebuje žádný výpočet za běhu, protože problém je vyřešen v návrhu systému
Nevýhody Deadlocku
Zde jsou nevýhody/nevýhody použití metody uváznutí
- Zpožďuje zahájení procesu
- Procesy musí znát budoucí potřebu zdrojů
- Pre-empuje častěji, než je nutné
- Zakáže přírůstkové požadavky na zdroje
- Inherentní předkupní ztráty.
Shrnutí
- Definice uváznutí: Je to situace, která nastane v OS když jakýkoli proces vstoupí do stavu čekání, protože jiný čekající proces zadržuje požadovaný zdroj
- Kruhové čekání nastává, když jeden proces čeká na zdroj, který je držen druhým procesem, který také čeká na zdroj držený třetím procesem atd.
- Plánovač zdrojů může detekovat výskyt uváznutí.
- Je důležité zabránit uváznutí dříve, než k němu dojde.
- Zdroj může být uvolněn pouze dobrovolně procesem, který jej drží poté, co tento proces dokončí svůj úkol.
- Vzájemné vyloučení je plná forma Mutexu. Jde o speciální typ dvojhvězdy semafor který se používá pro řízení přístupu ke sdílenému prostředku.
- Hold and wait je stav, kdy procesy musí být zastaveny, aby nedržely jeden nebo více zdrojů a zároveň čekaly na jeden nebo více dalších.
- Vyhýbání se zablokování je nejjednodušší a nejužitečnější model, u kterého každý proces deklaruje maximální počet zdrojů každého typu, které může potřebovat.
- Algoritmus pro zamezení uváznutí vám pomůže dynamicky posoudit stav alokace prostředků, takže nikdy nemůže nastat situace kruhového čekání.
- Deadlock je nekonečný proces, zatímco hladovění je dlouhé čekání, ale ne nekonečný proces.