Pr-1st-1.1-m12-Slajd79

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Algorytm zgodnego rozgłaszania niezawodnego z globalnym uporządkowaniem wiadomości: awaria procesu

Algorytm zgodnego rozgłaszania niezawodnego z globalnym uporządkowaniem wiadomości: awaria procesu


Rozważmy teraz przykład, w którym jeden proces ulegnie awarii.


Załóżmy, że tak jak poprzednio monitor Q1 procesu P1 wysyła pakiet z wiadomością M1. Powoduje to modyfikację elementu vSeqNo1[1]:=1, oraz dołączenie pakietu z wiadomością M1 do zbioru pending1. Analogicznie, monitor Q3 wysyłając pakiet z wiadomością M3, przypisuje vSeqNo3[3]:=1, dołączając równocześnie pakiet z wiadomością M3 do zbioru pending3.


Załóżmy tym razem jednak, że proces P2, i tym samym monitor Q2 uległ awarii po otrzymaniu pakietu z wiadomością M1.


Po pewnym czasie pakiet z wiadomością od procesu P3 dociera do Q1. Powoduje to oczywiście odpowiednią modyfikację tablic vSeqNo1. Analogicznie, gdy pakiet z wiadomością M1 dotrze ostatecznie do Q3, monitor ten zmodyfikuje odpowiednio tablicę vSeqNo3. Żaden proces nie jest w stanie odebrać wiadomości, gdyż oba czekają na zwiększenie drugiej pozycji tablicy vSeqNoi[2] (odpowiadającej procesowi P2 ). Zwiększenie to może jednak nastąpić tylko w wyniku otrzymania pakietu od Q2 – co nigdy nie nastąpi z powodu awarii P2 i Q2.


Widzimy tutaj, że w przypadku możliwości awarii choć jednego procesu przedstawione rozwiązanie jest niepoprawne.


<< Poprzedni slajd | Spis treści | Następny slajd >>