Pr-1st-1.1-m05-Slajd48: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Szopen (dyskusja | edycje)
Nie podano opisu zmian
 
Szopen (dyskusja | edycje)
Nie podano opisu zmian
 
Linia 1: Linia 1:
==Przykład działania algorytmu (1)==
==Przykład działania algorytmu (1)==


[[Image:pr-1st-1.1-m05-Slajd48a.png]]
[[Image:Pr-1st-1.1-m05-Slajd58.png]]
[[Image:pr-1st-1.1-m05-Slajd48b.png]]
[[Image:Pr-1st-1.1-m05-Slajd69.png]]
[[Image:pr-1st-1.1-m05-Slajd48c.png]]
[[Image:Pr-1st-1.1-m05-Slajd60.png]]
[[Image:pr-1st-1.1-m05-Slajd48d.png]]
[[Image:Pr-1st-1.1-m05-Slajd61.png]]
[[Image:pr-1st-1.1-m05-Slajd48e.png|Przykład działania algorytmu (1)]]
[[Image:Pr-1st-1.1-m05-Slajd62.png|Przykład działania algorytmu (1)]]




Linia 25: Linia 25:


W rozważanym przykładzie przyjęto, że  
W rozważanym przykładzie przyjęto, że  
<math>Q_1 = Q_{\alpha} jest jedynym inicjatorem procesu detekcji zakleszczenia. Monitor  
<math>Q_1 = Q_{\alpha}</math> jest jedynym inicjatorem procesu detekcji zakleszczenia. Monitor  
<math>Q_1</math> wywołuje procedurę NotifyProc i w konsekwencji jego stan zmienia się, wiadomości typu NOTIFY zostają wysłane (co zaznaczono białym kółkiem i strzałką) do monitorów wszystkich procesów tworzących zbiór warunkujący <math>\mathcal{OUT}_1</math>, a monitor oczekuje na wiadomości typu DONE potwierdzające wszystkie wiadomości typu NOTIFY. Następnie, monitory  
<math>Q_1</math> wywołuje procedurę NotifyProc i w konsekwencji jego stan zmienia się, wiadomości typu NOTIFY zostają wysłane (co zaznaczono białym kółkiem i strzałką) do monitorów wszystkich procesów tworzących zbiór warunkujący <math>\mathcal{OUT}_1</math>, a monitor oczekuje na wiadomości typu DONE potwierdzające wszystkie wiadomości typu NOTIFY. Następnie, monitory  
<math>Q_2</math>, <math>Q_3</math> i <math>Q_4</math>
<math>Q_2</math>, <math>Q_3</math> i <math>Q_4</math>
Linia 33: Linia 33:




[[pr-1st-1.1-m05-Slajd47 | << Poprzedni slajd]] | [[pr-1st-1.1-m05-toc|Spis treści ]] | [[pr-1st-1.1-m05-Slajd49 | Następny slajd >>]]
[[Pr-1st-1.1-m05-Slajd47 | << Poprzedni slajd]] | [[Pr-1st-1.1-m05-toc|Spis treści ]] | [[Pr-1st-1.1-m05-Slajd49 | Następny slajd >>]]

Aktualna wersja na dzień 15:55, 7 wrz 2006

Przykład działania algorytmu (1)

Przykład działania algorytmu (1)


Dla ilustracji działania algorytmu rozważmy przykładowy stan globalny reprezentowany przez graf oczekiwanych potwierdzeń przedstawiony na slajdzie. Procesy P1, P2, P3 i P4 należące do zbioru 𝒫 są pasywne i oczekują na wiadomości od innych procesów ze zbioru 𝒫, zgodnie z grafem WFG. Dla prostoty prezentacji skojarzymy z każdym wierzchołkiem grafu WFG (procesem) dwa wektory reprezentujące stan algorytmu w danym wierzchołku. Pierwszy wektor, oznaczony przez pSi (ang. process state), jest zmienną reprezentowaną przez tablicę [1..2] liczb naturalnych. Wartość pSi[1] zależy od wartości zmiennej notifiedi, i od liczby odebranych wiadomości typu DONE. Początkowo wartość pSi[1] jest równa 0. Po nadaniu zmiennej notifiedi wartości True przez monitor Qi, pSi[1] przyjmuje wartość 1. Następnie, gdy zakończy się zainicjowana ewentualnie faza potwierdzania i odebrana zostanie ostatnia wiadomość typu DONE, wartość pSi[1] jest zmieniana na 2. Podobnie wartość pSi[2] zależy od zmiennej confirmedi, oraz od liczby odebranych wiadomości typu ACK. Początkowo pSi[2] równa się 0. Po nadaniu zmiennej confirmedi wartości True przez monitor Qi, pSi[2] przyjmuje wartość 1. Następnie, po odebraniu ostatniej wiadomości typu ACK, wartość elementu pSi[2] jest zmieniana na 2. Drugi wektor skojarzony z każdym monitorem Qi, oznaczony przez cSi (ang. communication state), jest zmienną reprezentowaną przez tablicę [1..3], której elementy odpowiadają licznikom odebranych wiadomości typu CONFIRM, ACK i DONE. Początkowo, wszystkie te liczniki mają wartość 0. Są one stosownie zwiększane w wyniku odebrania wiadomości typu CONFIRM, ACK i DONE. Na rysunku wektor pSi jest umieszczony wewnątrz wierzchołka, a wektor cSi obok wierzchołka.

W rozważanym przykładzie przyjęto, że Q1=Qα jest jedynym inicjatorem procesu detekcji zakleszczenia. Monitor Q1 wywołuje procedurę NotifyProc i w konsekwencji jego stan zmienia się, wiadomości typu NOTIFY zostają wysłane (co zaznaczono białym kółkiem i strzałką) do monitorów wszystkich procesów tworzących zbiór warunkujący 𝒪𝒰𝒯1, a monitor oczekuje na wiadomości typu DONE potwierdzające wszystkie wiadomości typu NOTIFY. Następnie, monitory Q2, Q3 i Q4 odbierają współbieżnie wiadomości typu NOTIFY i w konsekwencji wywołują procedurę NotifyProc, zmieniając tym samym odpowiednio pSi[1] i wysyłając wiadomości typu NOTIFY do monitorów wszystkich procesów tworzących ich zbiory warunkujące. W następnym kroku, wiadomości typu NOTIFY docierają do monitorów, których flagi notifiedi są już zapalone (True). Dlatego, monitory te wysyłają w odpowiedzi wiadomości typu DONE (zaznaczone czarnym kółkiem). W rezultacie, wektory stanów monitorów Q2, Q3 i Q4 przyjmują wartość [2,0]. Umożliwia to dalej wysłanie wiadomości typu DONE do inicjatora Q1. Gdy inicjator otrzyma wszystkie oczekiwane wiadomości typu DONE, algorytm kończy się stwierdzając zakleszczenie procesu P1.


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