Zablokování Operating System: Co je to, kruhové čekání (příklady)
⚡ Chytré shrnutí
K zablokování v operačním systému dochází, když je sada procesů blokována, protože každý z nich drží jeden zdroj a čeká na další, který drží jiný proces, čímž vzniká kruhový řetězec, kde žádný proces nemůže pokračovat.

Co je Deadlock?
Zablokování je situace, která nastává v operační systém když proces přejde 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ý jako softwarový zámek nebo softwarový zámek.
Když dojde k zablokování, žádný ze zapojených procesů nemůže pokračovat, takže dotčená práce se zastaví, dokud nezasáhne operační systém.
Příklad Deadlock
- Příkladem z reálného světa by mohl být provoz, který jede pouze jedním směrem.
- Zde je most považován za zdroj.
- Takže když dojde k zablokování, lze ho vyřešit couváním jednoho vozu (využití zdrojů a vrácení zpět).
- Pokud dojde k uváznutí, může být nutné zálohovat několik vozů.
- Takže hladovění je možné.
Příklad uváznutí
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 pokračuje, dokud poslední proces nečeká na zdroj držený prvním procesem. Tím se vytváří kruhový řetězec.
Například procesu A je přidělen zdroj B, když požaduje zdroj A. Stejným způsobem je procesu B přidělen zdroj A, když požaduje zdroj B. Tím se vytvoří kruhová čekací smyčka.
Příklad kruhového čekání
Například počítač má tři USB disky a tři procesy. Každý ze tří procesů vlastní jeden z USB disků. Takže když si každý proces vyžádá další disk, všechny tři procesy se dostanou do zablokování, protože každý z nich čeká na uvolnění USB disku, zatímco je stále používán. Výsledkem je kruhový řetězec.
Příklad kruhového čekání
Detekce zablokování v OS
Výskyt zablokování může být detekován plánovačem zdrojů. Plánovač zdrojů pomáhá operačnímu systému udržovat track všech zdrojů, které jsou alokovány různým procesům. Jakmile je detekováno zablokování, lze jej vyřešit převzetím zdrojů, vrácením procesu zpět nebo ukončením jednoho nebo více zablokovaných procesů.
Prevence uváznutí v OS
Je důležité předejít zablokování dříve, než k němu může dojít. Systém kontroluje každou transakci před jejím provedením, aby se ujistil, že nevede k zablokování. Ani malá operace, která by mohla v budoucnu způsobit zablokování, se nikdy nesmí provést.
Prevence deadlocku je sada metod, které zajišťují, že nemůže být splněna alespoň jedna ze čtyř nezbytných podmínek.
Žádná preference
Zdroj může být uvolněn pouze dobrovolně procesem, který jej drží, a to poté, co tento proces dokončil svůj úkol.
- Pokud proces, který drží nějaké zdroje, požádá o jiný zdroj, který mu nelze okamžitě alokovat, pak se všechny jeho zdroje uvolní.
- Předem vybrané zdroje se přidají do seznamu zdrojů, na které proces čeká.
- Proces se restartuje pouze tehdy, když může znovu získat své staré zdroje i ty nové, které požaduje.
Vzájemné vyloučení
Vzájemné vyloučení je plná forma Mutexu. Je to speciální typ binárního souboru. semafor který se používá k řízení přístupu ke sdílenému zdroji. Zahrnuje mechanismus dědění priorit, který zabraňuje problémům s dlouhodobou inverzí priorit a blokuje úlohy s vyšší prioritou po co nejkratší možnou dobu.
Sdílené zdroje, jako jsou soubory jen pro čtení, nikdy nevedou k zablokování, ale zdroje, jako jsou tiskárny a páskové jednotky, potřebují exkluzivní přístup pro jeden proces.
Vydržte a čekejte
V tomto stavu musí být procesy zastaveny a nemohou uchovávat jeden nebo více zdrojů, zatímco současně čekají na jeden nebo více dalších.
Kruhové čekání
Tato metoda zavádí úplné pořadí všech typů zdrojů. Prevence cyklického čekání také vyžaduje, aby každý proces požadoval zdroje ve vzestupném pořadí výčtu.
Vyhýbání se mrtvému bodu Algorithms
Je lepší se vyhnout zablokování, než podnikat kroky po jeho vzniku. Vyhnutí se vyžaduje další informace, například jak budou zdroje použity. Vyhnutí se zablokování je užitečný model, ve kterém 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í deadlocku dynamicky vyhodnocuje stav alokace zdrojů, aby k situaci kruhového čekání nikdy nedošlo.
Pro jednu instanci typu zdroje:
- Použijte graf alokace zdrojů.
- Cyklus v grafu je nezbytný a postačující pro vznik deadlocku.
Pro více instancí typu zdroje:
- Cyklus je nezbytný, ale ne postačující pro zablokování.
- Použití Bankéřův algoritmus.
Rozdíl mezi hladověním a uváznutím
Zde jsou některé důležité rozdíly mezi zablokováním a hladověním:
| Zablokování | Hladovění |
|---|---|
| K zablokování dochází, když je jeden z procesů zablokován. | Hladovění je situace, kdy jsou všechny procesy s nízkou prioritou blokovány, zatímco procesy s vysokou prioritou běží. |
| Deadlock je nekonečný proces. | Hladovění je dlouhé čekání, ale ne nekonečný proces. |
| Každá patová situace má vždy hlad. | Každé hladovění nemusí nutně vést k patové situaci. |
| K zablokování dochází v důsledku vzájemného vyloučení, zadržení a čekání, absence preempce a cyklického čekání, ke kterým dochází současně. | Děje se to kvůli nekontrolovanému stanovení priorit a špatnému hospodaření se zdroji. |
Výhody Deadlock
Zde jsou výhody použití metody ošetření deadlocku:
- Tato situace funguje dobře pro procesy, které provádějí jednorázovou dávku aktivity.
- Pro zablokování není nutná žádná preempce.
- Je to pohodlná metoda, pokud se použije u zdrojů, jejichž stav lze snadno uložit a obnovit.
- Je možné to vynutit pomocí kontrol během kompilace.
- Nevyžaduje žádné výpočty za běhu, protože problém je řešen v návrhu systému.
Nevýhody Deadlocku
Zde jsou nevýhody použití metody ošetření deadlocku:
- Zpožďuje zahájení procesu.
- Procesy musí předem znát své budoucí potřeby zdrojů.
- Předchází častěji, než je nutné.
- Zakazuje přírůstkové požadavky na zdroje.
- Má inherentní ztráty z preempce.


