deadlock v distribuovaném systému
Zablokování nastává, když skupina procesů vzájemně čeká na prostředky, které drží ostatní členové skupiny, a nikdo nemůže pokračovat. Tedy klasický race condition, ale s jiným univerzem než u paralelního programování.
[!note] Složitost V distribuovaném systému je detekce deadlocku složitější, protože neexistuje centrální tabulka zámků.
- Detekce: Využívají se algoritmy založené na grafu čekání (Wait-For-Graph (WFG)). Pokud se v distribuovaném grafu objeví cyklus, nastal deadlock.
Problémy
Problém “Falešného deadlocku” (phantom deadlock)
V distribuovaném systému hrozí, že algoritmus detekuje deadlock, který ve skutečnosti neexistuje. Příčina: Zpoždění zpráv v síti. Scénář: Proces P1 uvolní prostředek, ale zpráva o uvolnění dorazí k detektoru později než zpráva o tom, že na něj někdo jiný začal čekat. Důsledek: Detektor vidí cyklus, který v reálném čase nikdy neexistoval (nekonzistentní řez)
Problém v distribuovaném systému
V lokálním počítači má operační systém celý graf u sebe. V distribuovaném systému je ale graf „rozstříhaný“:
- Uzel $A$ ví, že $P_1→P_2$.
- Uzel $B$ ví, že $P2→P3$.
- Uzel $C$ ví, že $P3→P1$. Žádný uzel sám o sobě cyklickou závislost.
Distribuované algoritmy detekce
Materiály uvádějí několik metod, jak cykly v distribuovaném WFG najít:
Centralizovaný a hierarchický algoritmus
- Centralizovaný: Existuje jeden koordinátor (resource manager), kterému uzly posílají své lokální změny grafu.
- Hierarchický: Deadlocky se řeší nejdříve lokálně, a pokud přesahují hranice uzlu, řeší je nadřazený koordinátor.
Path-pushing
- Uzly si mezi sebou posílají informaci o svých závislostech.
- Při detekci závislosti na vzdáleném uzlu se tato informace “potlačí” dál, dokud se někde nesestaví celý cyklus.
Edge chasing (algoritmus sond)
- Nejpoužívanější metoda, reprezentovaná algoritmem Chandy-Misra-Haas.
-
Princip: Pokud je proces blokován, vyšle speciální zprávu (sondu/probe) všem procesům, na které čeká.