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.

  • 🔒 Definice: Zablokování zablokuje procesy, z nichž každý drží zdroj, zatímco čekají na ostatní procesy.
  • 🧩 Čtyři podmínky: Vzájemné vyloučení, čekání a zastavení, žádná preempce a kruhové čekání musí držet pohromadě.
  • 🔁 Kruhové čekání: Procesy tvoří uzavřený řetězec, každý čeká na zdroj, který má ten předchozí.
  • 🛡️ Prevence: Porušení kterékoli ze čtyř podmínek zabrání vzniku patové situace.
  • 🏦 Vyhýbání se: Bankéřův algoritmus kontroluje požadavky na zdroje, aby systém udržel v bezpečném stavu.
  • 🤖 Úhel umělé inteligence: Strojové učení detekuje vzorce zablokování a Copilot pomáhá s psaním a kontrolou kódu pro zamykání.

Zablokování Operasystém

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 Deadlock

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í

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:

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.

Nejčastější dotazy

Pro vznik deadlocku je nutné současně splnit čtyři Coffmanovy podmínky: vzájemné vyloučení, čekání a zadržení, bez preempce a kruhové čekání. Odstranění kterékoli z těchto podmínek zabrání vzniku deadlocku.

Prevence předem odstraňuje jednu ze čtyř podmínek, takže k zablokování nikdy nemůže dojít. Vyhýbání se podmínkám umožňuje, ale používá kontroly za běhu, jako například Bankéřův algoritmus, aby systém zůstal v bezpečném stavu.

V deadlocku se blokované procesy úplně zastaví a nikdy nezmění svůj stav. živý zámek, procesy neustále mění stav a využívají CPU, ale stále nedělají žádný pokrok. Livelock je speciální případ nedostatku zdrojů.

Většina univerzálních systémů, včetně Windows a Linux používají pštrosí algoritmus a jednoduše ignorují vzácné deadlocky, protože prevence je nákladná. Databáze a systémy reálného času místo toho spouštějí aktivní rutiny detekce a obnovy.

Graf alokace zdrojů mapuje procesy a zdroje jako uzly spojené hranami požadavků a přiřazení. Cyklus v grafu signalizuje možné zablokování; u zdrojů s jednou instancí cyklus vždy znamená existenci zablokování.

Ne. Skutečný deadlock je trvalý, protože blokované procesy nikdy samy od sebe neuvolní své zdroje. Operační systém ho musí přerušit tím, že si vybere zdroj, vrátí se zpět nebo ukončí jeden z procesů.

Modely strojového učení se učí vzory požadavků na zdroje, aby mohly předvídat a označovat zablokování dříve, než k němu dojde. Plánovače s umělou inteligencí mohou měnit pořadí požadavků nebo ladit zásady zamykání, což je užitečné v databázích, cloudových platformách a distribuovaných systémech.

Ano. GitHub Copilot dokáže odhalit riskantní řazení zámků, navrhnout konzistentní získávání zámků a generovat testy, které odhalí deadlocky. Jeho výstup považujte za první průchod a stále ověřujte logiku souběžnosti pomocí vhodných analytických nástrojů.

Shrňte tento příspěvek takto: