ESET Online nápověda

Hledat Čeština
Změnit kapitolu

Vzájemné zablokování (deadlock)

Vzájemné zablokování (deadlock) představuje situaci, kdy počítačový proces čeká na prostředek, který je přiřazen jinému procesu. V takové situaci nedojde ke spuštění žádného procesu, protože požadovaný prostředek si drží proces, který také čeká na uvolnění jiného prostředku. Vzniku vzájemného zablokování je důležité zabránit dříve, než k němu dojde. Vznik zablokování je možné detekovat prostřednictvím systémového plánovače, který pomáhá operačnímu systému sledovat všechny alokované prostředky jednotlivým procesům. Zablokování může nastat v případě, kdy jsou současně splněny tyto čtyři podmínky:

Nepreemptivnost – prostředky může dobrovolně uvolnit pouze proces, který si je alokoval, po dokončení své úlohy.

Vzájemná jedinečnost – speciální typ binárního semaforu používaného k řízení přístupu ke sdílenému prostředku. Zajišťuje blokování aktuální úloh s vyšší prioritou na co nejkratší dobu.

Držení a čekání – tento stav nastane, pokud proces drží jeden nebo více prostředků a současně čeká na přidělení dalších.

Kruhové čekání – definuje celkové pořadí všech typů prostředků. Při kruhovém čekání se též od procesů vyžaduje, aby každý žádal o prostředky ve vzestupném pořadí.

 

Vznik vzájemného zablokování můžete vyřešit třemi způsoby:

Nedovolte, aby se systém dostal do stavu zablokování.

Umožněte vznik zablokování, následně proveďte preempci, aby došlo k uvolnění prostředků.

Při výskytu zablokování restartujte operační systém.