Konstrukcja spójnego obrazu stanu globalnego Proces rozproszony Proces rozproszony Π, będący współbieżnym wykonaniem zbioru P ={P, P,..., P n } procesów sekwencyjnych P i, opisuje uporządkowana czwórka gdzie: Π = Σ, Σ 0, Λ, Φ, (7.) Σ jest zbiorem stanów globalnych procesu rozproszonego, Σ S S... S n, Σ 0 jest zbiorem stanów początkowych, Σ 0 S 0 S 0... S 0 n, Λ jest zbiorem zdarzeń, Λ = E E... E n ; Φ jest funkcją tranzycji, taką że Φ Σ Λ Σ. ()
Wykonanie częściowe procesu Częściowe wykonanie procesu rozproszonego Π = Σ, Σ 0, Λ, Φ utożsamia się zciągiem Σ 0,E, Σ,E,,Σ s,e s+, Σ s+, składającym się naprzemiennie ze stanów i zdarzeń, takim że dla każdego u, 0 u s, Σ u,e u+, Σ u+ Φ. (7.) () Wykonanie procesu Przez wykonanie (realizację) ϒ procesu Π rozumieć będziemy natomiast częściowe wykonanie rozpoczynające się stanem początkowym Σ 0 Σ 0. (4)
Stan osiągalny Powiemy, że stan Σ procesu jest osiągalny ze stanu Σ, co oznaczymy przez Σ Σ, (7.) jeżeli istnieje częściowe wykonanie Σ 0, E, Σ, E,..., Σ s, E s+, Σ s+ procesu Π, takieże Σ = Σ 0 a Σ = Σ s+. (5) Globalny stan osiągalny Oznaczmy przez ϒ zbiór wszystkich możliwych wykonań (realizacji) procesu Π. Jeżeli istnieje wykonanie procesu Π, takie że Σ jest stanem końcowym, to stan ten nazwiemy globalnym stanem osiągalnym (spójnym) procesu rozproszonego Π (ang. reachable, consistent). (6)
Historia wykonania Każdemu wykonaniu ϒ ϒ procesu Π, odpowiada pewien ciąg stanów Σ 0, Σ, Σ,..., Σ s, Σ s+, nazywany śladem wykonania (realizacji) procesu Π,orazciąg zdarzeń E 0, E, E,..., E s, E s+, nazywany historią wykonania (realizacji) procesu. Historię E 0, E, E,..., E s, oznaczamy przez Ξ s, a zbiór historii przez Ξ. (7) Konfiguracja Zbiór konfiguracji (obrazów stanu globalnego) Γ jest iloczynem kartezjańskim stanów procesów składowych procesu rozproszonego Γ = S S... S n Konfiguracja wektor stanów lokalnych wszystkich składowych procesów sekwencyjnych procesu rozproszonego Γ = S, S,..., S n (8) 4
Konfiguracja spójna () Konfigurację Γ nazwiemy konfiguracją spójną lub obrazem spójnym jeżeli E, E zachodzi: (E Γ E a E ) (E Γ ) (7.4) (9) Konfiguracja spójna () Twierdzenie 7. Konfiguracja Γ = S k, S k,..., S n kn, reprezentująca stan osiągalny przetwarzania rozproszonego Π jest konfiguracją spójną. (0) 5
Linia odcięcia, odcięcie spójne Linia odcięcia dzieli zbiór zdarzeń na przeszłość oraz przyszłość Odcięciem Ψ zbioru zdarzeń Λ nazwiemy skończony zbiór Ψ Λ, taki że: (E Ψ E a i E ) (E Ψ) (7.5) Odcięcie Ψ zbioru zdarzeń Λ nazwiemy odcięciem spójnym, gdy: (E Ψ E a E ) (E Ψ) (7.6) Odcięcie Ψ jest późniejsze od Ψ, jeżeli Ψ Ψ () Odcięcie spójne przykład P P E E σ 0 Ψ Ψ M σ E E σ σ M E E P E E E M E 4 σ 4 σ E 5 M 4 M 5 () 6
Odcięcie niespójne przykład E a E, P P E Ψ,aE Ψ E a E, Ψ Ψ 4 E E M E M E E M 4 E Ψ 4,aE Ψ 4 M E 4 P E E () Odcięcie spójne a konfiguracja spójna Zgodnie z definicją, każdemu odcięciu Ψ opisanemu przez linię odcięcia σ k, σ k,..., σ kn n odpowiada konfiguracja Γ = S k, S k,..., S kn n. (7.7) Twierdzenie 7.5 Niech Γ będzieę konfiguracją a Ψ odpowiadającym jej j odcięciem. Konfiguracja Γ jest konfiguracją spójną, wtedy i tylko wtedy, gdy Ψ jest odcięciem spójnym. (4) 7
Stan globalny systemu Wiele problemów istniejących w systemach rozproszonych można sprowadzić do problemu oceny stanu globalnego: Śledzenie i sterowanie wykonywaniem programu rozproszonego (monitoring, debugging) Detekcja stanów awaryjnych (utraty wiadomości, zakleszczenia) lub oczekiwanych (zakończenia obliczeń rozproszonych) Dostosowywanie konfiguracji i funkcji systemu do zmieniającego się obciążenia (5) Modele stanów globalnych () Problem: wzajemne wykluczanie trzech procesów współdzielących pewien zasób Warunkiem uzyskania dostępu do zasobu jest posiadanie znacznika (ang. token) Znacznik krąży między procesami połączonymi w logiczny pierścień (6) 8
Modele stanów globalnych () Stan S i(τ) procesu P i w każdej chwili τ czasu globalnego (rzeczywistego) zdefiniowany jest przez trzy zmienne: present i (τ), outlog i (τ), inlog i (τ). S i (τ)= present i (τ), outlog i (τ), inlog i (τ) (7.9) present i (τ) - przyjmuje wartość True, tylko wówczas, gdy znacznik typu TOKEN znajduje się w chwili τ w procesie P i. outlog i (τ) - kolejka znaczników wysłanych do chwili τ przez proces P i. inlog i (τ) - kolejka znaczników odebranych przez proces P i do chwili τ. (7) Modele stanów globalnych przykład () Σ (τ 0 )= present (τ 0 ) = True outlog (τ 0 ) = inlog (τ 0 ) = present ( (τ 0 ) = False outlog (τ 0 ) = inlog (τ 0 ) = present (τ 0 ) = False outlog (τ 0 ) = inlog (τ 0 ) = P P P (8) 9
Modele stanów globalnych przykład (5) Σ = present (τ ) = False outlog (τ ) = {token } inlog (τ ) = P present (τ ) = False outlog (τ ) = inlog (τ ) = present (τ )=False outlog (τ )= inlog (τ )= P P Σ = present (τ ) = False outlog (τ ) = {token } inlog (τ ) = present (τ ) = True outlog (τ ) = inlog (τ ) = {token } present (τ ) = False outlog (τ ) = inlog (τ ) = P Σ = presentp ( (τ ) = False outlog (τ ) = {token } inlog (τ ) = present (τ ) = False outlog (τ ) = {token } inlog (τ ) = {token } present (τ ) = False outlog (τ ) = inlog (τ ) =........ itd... P P P P P (9) Graf stanów osiągalnych Σ 6 P P Σ 5 Σ 0 Σ 7 P P P P Σ P P P P P P Σ 4 Σ P P Σ P P P P (0) 0
Model stanów globalnych () Zalety: Ogranicza a liczbę składowych stanu globalnego do liczby procesów Wady: podejście jest adekwatne tylko dla systemów z kanałami niezawodnymi rosnący koszt związany z zapamiętywaniem wysłanych i odebranych wiadomości () Modele stanów globalnych (4) Podejście alternatywne: stan globalny jako złożenie stanów lokalnych i stanów kanałów komunikacyjnych n+m składowych odpowiadających stanom lokalnym wszystkich n procesów i wszystkich m kanałów Prostsza reprezentacja stanu procesu kosztem większej liczby składowych ()
Modele stanów globalnych (5) Stan procesu P i jest w każdej chwili określony przez zmienną logiczną present i, oraz przez liczniki sentno i (ang. sent number) irecvno i (ang. received number) Stan kanału L i,j określany przez zbiór znaczników znajdujących się aktualnie w kanale C i,j () Model stanów globalnych (6) Prostsza reprezentacja: stan procesu określony przez zmienną present i (posiadanie znacznika) stan kanału określony przez zmienną present i,j (znacznik w kanale) (4)
Modele stanów globalnych przykład Σ(τ) = S (τ), S (τ), S (τ), L, (τ), L, (τ), L, (τ) Σ 0 =, 0, 0, 0, 0, 0 Σ 0 Σ Σ Σ Σ 4 Σ 5 Σ 6 Σ = 0, 0, 0,, 0, 0 Σ = 0,, 0, 0, 0, 0 Σ = 0, 0, 0, 0,, 0 Σ 4 = 0, 0,, 0, 0, 0 P token P token P P τ 0 τ token Σ 5 = 0, 0, 0, 0, 0, τ τ τ 4 τ 5 τ 6 (5) Ocena stanów globalnych Przykłady oceny stanów globalnych Zaginięcie znacznika może prowadzić do blokady całego systemu Zwielokrotnienie znaczników może prowadzić do obecności kilku procesów w sekcji krytycznej (6)
Porównanie reprezentacji stanów globalnych Pierwsza reprezentacja: operuje na informacji najpełniejszej: unikalnych znacznikach i całej historii komunikacji. Druga reprezentacja: utożsamia wszystkie znaczniki i wyróżnia tylko stany ich obecności oraz nieobecności w poszczególnych procesach i kanałach (7) Niedeterminizm przetwarzania rozproszonego P req P req ack, ack 4, P 4 P req req P P req req ack, P 4 req req ack 4, P (8) 4
Metoda wyznaczania stanu globalnego Proces chcący wyznaczyć stan globalny wysyła żądania wyznaczania stanów lokalnych, a następnie konstruuje na ich podstawie stan globalny. (9) Problemy związane z wyznaczaniem stanu globalnego Otrzymane składowe stany lokalne procesów mogą być: przestarzałe, niekompletne, odpowiadać konfiguracjom niespójnym (reprezentującym stany nieosiągalne). 5
Problem konstrukcji stanu globalnego Dodatkowe założenia upraszczające dostępny jest dla wszystkich procesów globalny zegar czasu rzeczywistego znane jest maksymalne opóźnienie komunikacji względne prędkości przetwarzania w poszczególnych węzłach są ograniczone () Koncepcja konstrukcji obrazu spójnego () Proces inicjatora Q α wysyła do monitorów wszystkich procesów przetwarzania rozproszonego wiadomość:,,zapamiętaj stan lokalny w chwili τ s Monitory Q i procesów zapamiętują stan lokalny S i w chwili τ s i natychmiast wysyłają wiadomość kontrolną do wszystkich monitorów. Zapamiętują też stan L k,i kanałów wejściowych jako zbiorów wszystkich wiadomości ś i aplikacyjnych, które zostały ł wysłaneł przed τ s a dotarły doq i po chwili τ s. () 6
Koncepcja konstrukcji obrazu spójnego () Gdy monitor Q i otrzyma przez kanał C j,i pierwszą wiadomość o etykiecie czasowej większeję od τ s s,, aktualną wartość L j,i uznaje jako stan tego kanału w chwili τ s Monitor Q i, po otrzymaniu wiadomości o etykietach czasowych większej od τ s ze wszystkich kanałów wejściowych, przesyła stan lokalny i wyznaczone stany kanałów wejściowych ch do inicjatora Q α () Koncepcja konstrukcji obrazu spójnego () Po odebraniu od wszystkich monitorów wiadomości zawierających stany lokalne oraz stany ich kanałów wejściowych w chwili τ s, inicjator Q α konstruuje obraz stanu globalnego Γ (4) 7
Założenia dotyczące środowiska przetwarzania Niezawodne kanały zachowują uporządkowanie wiadomości (niezawodne kanały FIFO) Stan reprezentowany jest w postaci złożenia lokalnych stanów procesów i stanów kanałów Pełen asynchronizm komunikacji i przetwarzania Brak zegara globalnego (5) Algorytm Chandy Lamporta: Koncepcja () Pewien monitor Q α inicjuje proces konstrukcji (detekcji) spójnego obrazu stanu globalnego Q α zapamiętuje stan lokalny skojarzonego z nim procesu aplikacyjnego P α i wysyła wiadomość kontrolną (znacznik), do wszystkich incydentnych monitorów (6) 8
Algorytm Chandy Lamporta: Koncepcja () Każdy monitor Q i po odebraniu znacznika z kanału C j,i, sprawdza, czy jest to pierwszy znacznik odebrany w danym procesie detekcji Jeżeli tak jest, monitor Q i zapamiętuje stan S i procesu P i, uznaje stan kanału C j,i za pusty, i propaguje znacznik przez wszystkie swoje kanały wyjściowe (7) Algorytm Chandy Lamporta: Koncepcja () Jeżeli stan procesu P i został już wcześniej zapamiętany, to Q i uznaje za stan kanału C ji j,i zbiór tych wszystkich wiadomości aplikacyjnych, które dotarły tym kanałem po zapamiętaniu stanu a przed otrzymaniem znacznika Po odebraniu znaczników ze wszystkich kanałów wejściowych, monitor Q i przesyła zapamiętany stan lokalny procstate i oraz stan chanstate i do monitora Q β (8) 9
Ilustracja działania algorytmu Chandy-Lamporta P / Q P /Q E E σ σ σ E E E 4 E 5 M M σ E σ E E 4 P / Q σ σ E τ E E E 4 b τ e M Γ = S, S, S, L, =, L, =,L, =,L, =,L, ={M }, L, = P / Q P / Q E σ σ σ 4 E E 4 E 5 E E M E M σ M σ E E 4 P / Q σ σ E τb τ e E E E 4 Γ = S, S, S, L, =, L, =,L, =,L, =,L, ={M }, L, ={M } (9) Algorytm Chandy Lamporta () type PACKET extends FRAME is record of data : MESSAGE end record type MARKER extends FRAME type STATE extends FRAME is record of procstate : PROCESS_STATE chanstate : array [..n] of set of MESSAGE end record (40) 0
Algorytm Chandy Lamporta () msgin pcktout markerout stateout recvmark i chanstate i procstate i C IN i C OUT i involved i : MESSAGE : PACKET : MARKER : STATE : array [..n] of BOOLEAN := False : array [..n] of set of MESSAGE := : PROCESS_STATE : set of CHANNEL_ ID : set of CHANNEL_ID : BOOLEAN := False (4) Algorytm Chandy Lamporta (). procedure RECORDSTATE() do. procstate i := S i. for all C j,i C IN i do 4. chanstate i [j] := 5. end for 6. involved i := True 7. send(q i, Q OUT i, markerout) 8. end procedure 9. procedure SENDSTATE(i) do 0. stateout.procstate := procstate i. stateout.chanstate := chanstate i. send(q i, Q β, stateout). end procedure (4)
Algorytm Chandy Lamporta (4) 4. when e_start(q α, TakeSnapshot) do 5. RECORDSTATE() 6. recvmark α [α] := True 7. if C IN α = then 8. SENDSTATE(α) 9. end if 0. end when (4) Algorytm Chandy Lamporta (5). when e_send(p i,p j, msgout: MESSAGE) do. pcktout.data := msgout. send(q i, Q j, pcktout) 4. end when (44)
Algorytm Chandy Lamporta (6) 5. when e_receive(q j, Q i, markerin: MARKER) do 6. if involved i then 7. RECORDSTATE( ) 8. end if 9. recvmark i [j] := True 0. if C j,i C IN i :: recvmark i [j] then.. SENDSTATE(i) end if. end when (45) Algorytm Chandy Lamporta (7) 4. when e_receive (Q j, Q i, pcktin : PACKET) do 5. msgin := pcktin.data 6. if involved i recvmark i [j] then 7. chanstate i [j] := chanstate i [j] {msgin} 8. end if 9. deliver (P j, P i, msgin) 40. end when (46)
Twierdzenie Twierdzenie Algorytm Chandy-Lamporta wyznacza w skończonym czasie konfigurację spójną. (47) Wyznaczanie obrazu spójnego: Kanały non-fifo Lai i Yang przedstawili algorytm, który nie wymaga by kanały były typu FIFO. W algorytmie zakłada się, że reprezentacje stanów lokalnych obejmują historię komunikacji, a więc odpowiednie zbiory wiadomości dotychczas wysłanych i odebranych. P i outlog i,j (τ) =inlog i,j (τ') P j τ wysłanie znacznika τ' odebranie znacznika (48) 4
Algorytm Lai-Yang: Koncepcja () Jeśli po zapamiętaniu stanu proces P i już nigdy nie wyśle wiadomości do P j, to nie ma potrzeby przesłania do Q j znacznika Jeśli wiadomości będą w dalszym ciągu wysyłane, to dołączany jest do nich znacznik w formie etykiety (49) Algorytm Lai-Yang: Koncepcja () Wyróżnione pakiety ze znacznikiem przechwytywane są przez monitor Q j odbiorcy i powodują zapamiętanie stanu procesu P j, a przed przekazaniem wiadomości aplikacyjnej procesowi P j Algorytm przydziela procesom (kontrolerom) oraz wiadomościom jeden z dwóch kolorów White albo Red (50) 5
Algorytm Lai-Yang () type PACKET extends FRAME is record of colour : enum {White, Red} data : MESSAGE end record type STATE extends FRAME is record of procstate : PROCESS_STATE sentlog : set of MESSAGE recvlog : set of MESSAGE end record (5) Algorytm Lai-Yang () msgin : MESSAGE pcktout : PACKET dummyout : PACKET stateout : STATE procstate i : PROCESS_STATE proccolour i : enum {White, Red} := White sentlog i : set of MESSAGE := outlog i : set of MESSAGE := recvlog i : set of MESSAGE := inlog i : set of MESSAGE := (5) 6
Algorytm Lai-Yang (). procedure RECORDSTATE() do. procstate i := S i. sentlog i := outlog i 4. recvlog i := inlog i 5. end procedure 6. procedure SENDSTATE(i) do 7. stateout.procstate := procstate i 8. stateout.sentlog t t tl := sentlog i 9. stateout.recvlog := recvlog i 0. send(q i, Q β, stateout). end procedure (5) Algorytm Lai-Yang (4). when e_start(q α, TakeSnapshot) do. RECORDSTATE() 4. proccolour α := Red 5. dummyout.pcktcolour := Red 6. dummyout.data := 7. send(q α, Q\{Q α }, dummyout) 8. SENDSTATE(α) 9. end when (54) 7
Algorytm Lai-Yang (5) 0. when e_send(p i, P j, msgout: MESSAGE) do. outlog i := outlog i {msgout}. pcktout.colour := proccolour i. pcktout.data := msgout 4. send(q i, Q j, pcktout) 5. end when (55) Algorytm Lai-Yang (6) 6. when e_receive(q j, Q i, pcktin: PACKET) do 7. if pcktin.colour=red proccolour i =White then 8. proccolour i := Red 9. RECORDSTATE(i) 0. SENDSTATE(i). end if. msgin := pcktin.data. if msgin then 4. inlog i := inlog i {msgin} 5. deliver(p j,p i, msgin) 6. end if 7. end when (56) 8
Algorytm Lai-Yang: Złożoność czasowa Dla grafu pełnego reprezentującego topologię przetwarzania rozproszonego złożoność czasowa algorytmu Lai-Yanga wynosi, a złożoność komunikacyjna, w sensie liczby przesyłanych znaczników, wynosi n-, pomijającfazę przesyłania wiadomości o stanach procesów i kanałów. (57) Algorytm kolorujący procesy i wiadomości: Koncepcja () Każdy proces pierwotnie ma kolor White, a staje się Red po zapamiętaniu jego stanu lokalnego a przed przekazaniem mu pierwszej wiadomości z pakietem koloru Red. Inicjator detekcji stanu globalnego zapamiętuje stan lokalny procesu, staje się Red i wysyła pusty pakiet koloru Red do wszystkich monitorów. (58) 9
Algorytm kolorujący procesy i wiadomości: Koncepcja () Wiadomości będące w wyznaczonym obrazie stanu globalnego w kanałach, to wiadomości w pakietach koloru White odebrane przez monitor koloru Red Za każdym razem, gdy monitor otrzymuje tego typu pakiet, przesyła zawartą w nim wiadomość do inicjatora (59) Algorytm kolorujący procesy i wiadomości () type PACKET extends FRAME is record of colour : enum {White, Red} data : MESSAGE end record type PROC_STATE extends FRAME is record of procstate : PROCESS_STATE end record type CHAN_STATE extends FRAME is record of chanstate : MESSAGE end record (60) 0
Algorytm kolorujący procesy i wiadomości () msgin pcktout dummyout procstateout chanstateout procstate i proccolour i : MESSAGE : PACKET : PACKET : PROC_STATE : CHAN_STATE : PROCESS_STATE : enum {White, Red} := White (6) Algorytm kolorujący procesy i wiadomości (). when e_start(q α, TakeSnapshot) do. procstate t α := S α. proccolour i := Red; 4. dummyout.colour := Red; 5. dummyout.data := 6. send (Q α, Q\{Q α }, dummyout) 7. end when (6)
Algorytm kolorujący procesy i wiadomości (4) 8. when e_send (P i, P j, msgout: MESSAGE) do 9. pcktout.colour t := proccolour i 0. pcktout.data := msgout. send (Q i, Q j, pcktout). end when (6) Algorytm kolorujący procesy i wiadomości (5). when e_receive (Q j, Q i, pcktin : PACKET) do 4. msgin := pcktin.data t 5. if pcktin.colour = White proccolour i = Red 6. then 7. chanstateout.chanstate := msgin 8. send(q i, Q α, chanstateout) 9. end if (64)
Algorytm kolorujący procesy i wiadomości (6) 0. if pcktin.colour=red proccolour i = White then. proccolour i := Red. procstate i := S i. procstateout.procstate := procstate i 4. send (Q i,q α, procstateout) 5. end if 7. if msgin then 8. deliver (P j, P i, msgin) 9. end if 0. end when (65)