Pr-1st-1.1-m05-Slajd49

Z Studia Informatyczne
Wersja z dnia 15:55, 7 wrz 2006 autorstwa Szopen (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Przykład działania algorytmu (2)

Przykład działania algorytmu (2)


Drugi przykład zastosowania algorytmu przedstawia kolejny slajd. Rozważany teraz graf jest podobny do poprzedniego, z tą tylko różnicą, że węzeł P4 nie ma krawędzi wychodzącej.

Oznacza to, że proces P4 jest aktywny. Załóżmy jeszcze, że każdy proces oczekuje potwierdzeń od wszystkich procesów tworzących jego zbiór warunkujący. Niech ponadto Q1 będzie ponownie jedynym inicjatorem. Rozpoczyna on fazę powiadamiania, wysyłając wiadomość typu NOTIFY do monitorów wszystkich procesów tworzących zbiór 𝒪𝒰𝒯1,. Kiedy wiadomość typu NOTIFY dotrze do Q4, którego 𝒪𝒰𝒯4=, monitor Q4 wywołuje procedurę NotifyProc. Procedura ta zmienia stan pS4[1] na 1, a następnie wywołuje procedurę ConfirmProc. W efekcie, pS4[1]=1 i wiadomość typu CONFIRM zostaje wysłana do monitorów wszystkich procesów tworzących zbiór 𝒩4. W kroku tym, monitory Q2 i Q3 zmieniają swoje zmienne stanu pS2[1] oraz pS3[1] na 1 i wysyłają wiadomości typu NOTIFY do monitorów wszystkich procesów tworzących ich zbiory 𝒪𝒰𝒯i. Tak więc monitor Q4 jest inicjatorem fazy potwierdzania dla Q1, Q2 i Q3. Tym samym Q4 wyśle wiadomość typu DONE do inicjatora jego fazy powiadamiania, czyli do Q1, dopiero po otrzymaniu wiadomości typu ACK, w odpowiedzi na wszystkie wiadomości typu CONFIRM. W następnym kroku, między innymi monitor Q3 otrzymuje wiadomość typu CONFIRM od Q4 i przekazuje ją do wszystkich swoich poprzedników w grafie.

Należy zauważyć, że w kroku tym Q2 nie przesyła wiadomości typu CONFIRM do Q1, gdyż w przyjętym modelu żądań jest to dopuszczalne dopiero po otrzymaniu wiadomości typu CONFIRM od wszystkich następników w grafie. Warunek ten jest spełniony w następnym kroku, kiedy to Q2 otrzymał już wiadomość typu CONFIRM od Q3. Wówczas, Q2 wysyła wiadomość typu CONFIRM do Q1. W efekcie, w następnym kroku wiadomości typu ACK przesłane są kolejno do Q2, Q3 i Q4. Gdy wiadomość typu ACK dotrze do Q4, monitor ten kończy fazę potwierdzania, co umożliwia mu wysłanie wiadomości typu DONE do monitora będącego dla Q4 inicjatorem jego fazy powiadamiania.


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