Pr-1st-1.1-m06-Slajd22
Przykład działania dwufazowego algorytmu detekcji zakleszczenia rozproszonego
Przeanalizujmy działanie tego algorytmu na konkretnym przykładzie przedstawionym w prezentacji. Przyjmiemy ponownie dla uproszczenia, że warunkiem uaktywnienia procesu jest otrzymanie potwierdzenia GRANT od wszystkich procesów tworzących zbiór warunkujący. Niech
będzie inicjatorem procesu detekcji zakleszczenia rozproszonego, a - jedynym aktywnym procesem. Najpierw, inicjator
przekazuje do monitorów procesów tworzących jego zbiór warunkujący wiadomości typu FLOOD, każdą z wagą 1/3. Ponieważ proces jest aktywny, monitor
może od razu wysłać w odpowiedzi wiadomość typu ECHO, z wagą 1/3 równą wadze otrzymanej wiadomości typu FLOOD. Z kolei monitor
przekazuje wiadomość FLOOD do następnika, a przekazuje wiadomość typu FLOOD do
i . Monitor dzieli oczywiście wagę otrzymanej wiadomości FLOOD na pół, a więc wysyła wiadomości z wagami 1/6. W następnym kroku, monitor
jako skojarzony z procesem aktywnym, odpowiada wiadomościami typu ECHO do
i , z wagami równymi odpowiednio 1/3 i 1/6. Monitor
wysyła natomiast wiadomość typu SHORT bezpośrednio do inicjatora w odpowiedzi na odebranie kolejnej wiadomości typu FLOOD od . Następnie, po otrzymaniu wiadomości typu ECHO z wagą 1/3,
przekazuje tę wiadomość do swoich poprzedników i , dzieląc na pół otrzymaną wagę. Ponieważ pojedyncza wiadomość aplikacyjna typu GRANT symulowana tu przez wiadomość typu ECHO od nie byłaby wystarczająca do uaktywnienia
, wysyła wiadomość typu SHORT z wagą 1/6 do inicjatora . W ostatnim kroku, po otrzymaniu wiadomości ECHO od , monitor
przekaże dalej wiadomość typu ECHO do . Algorytm kończy się, gdy inicjator otrzyma z powrotem wiadomości z sumaryczną wagą równą 1.