Wait-For-Graph (WFG)

Wait-For-Graph (WFG) je v podstatě „mapa závislostí“. V distribuovaném systému je to nejpoužívanější způsob, jak zjistit, jestli je systém v deadlocku.

[!note] TL;DR

  • Nástroj: Detekce distribuovaného deadlocku.
  • Princip: Hledání cyklů v grafu závislostí procesů.
  • V distribuovaném prostředí: Používá se „Edge-Chasing“ (posílání sond po hranách grafu). Pokud se sonda vrátí k odesílateli, existuje cyklus = deadlock.
  • Riziko: „Falešný deadlock“ kvůli zpoždění zpráv (nutnost konzistentního snapshotu (Chandy-Lamport)).

[!note] Ještě TL;DR pro zkoušku

  • Deadlock = cyklus v WFG.
  • Phantom Deadlock = falešná detekce kvůli zpoždění zpráv (nekonzistentní řez).
  • Edge-chasing = posílání sond po hranách, návrat k odesílateli = potvrzení cyklu.
  • Termination = procesy jsou pasivní A v kanálech nejsou zprávy.

Co je to WFG? (Princip)

WFG je orientovaný graf, kde:

  • Vrcholy (Uzly): Jsou jednotlivé procesy (P1​,P2​,…). Hrany:
  • $P→R$: Proces žádá o prostředek.
  • $R\to P$: Proces drží prostředek.
  • $P_1​→P_2$​: Proces $P_1$​ je blokován procesem $P_2$​.

Základní pravidlo: Pokud se v tomto grafu objeví uzavřený cyklus (např. $P_1​→P_2​→P_3​→P_1$​), nastal deadlock.