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.