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:

Nedochází k preempci – prostředky může dobrovolně uvolnit pouze proces, který si je alokoval, poté, co tento proces dokončí svůj úkol.

Vzájemné vyloučení – speciální typ binárního semaforu používaný k řízení přístupu ke sdílenému prostředku. Umožňuje, aby aktuální úlohy s vyšší prioritou byly blokovány po 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ů. Kruhové čekání také vyžaduje, aby každý proces požadoval prostředky ve vzestupném pořadí.

 

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

Nedovolte, aby byl systém zablokovaný.

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

Pokud dojde k zablokování, restartujte systém.