Konstrukcja spójnego obrazu stanu globalnego

Podobne dokumenty
Konstrukcja spójnego obrazu stanu globalnego algorytmy

Konstrukcja spójnego obrazu stanu globalnego algorytmy

Problem detekcji zakończenia

Konstrukcja spójnego obrazu stanu globalnego algorytmy

Konstrukcja spójnego obrazu stanu globalnego - wprowadzenie

Czas wirtualny, złożoność algorytmów

Mechanizmy rozgłaszania niezawodnego

Czas wirtualny, złożoność algorytmów

Detekcja zakleszczenia (1)

Proces rozproszony. Plan wykładu. Wykład prowadzą: Jerzy Brzeziński Jacek Kobusiński. Proces rozproszony. Zbiór stanów globalnych (1)

Proces rozproszony 1

Treść zadań 1 8 odnosi się do poniższego diagramu przestrzenno-czasowego.

Wzajemne wykluczanie i zakleszczenie

Problem detekcji zakończenia (I)

Problem detekcji zakończenia (I)

Przetwarzanie rozproszone

PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ W RAMACH EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO OPIS PRZEDMIOTU

Problem detekcji zakończenia (II)

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Czas wirtualny, złożoność algorytmów

Czas wirtualny, złożoność algorytmów

Detekcja zakleszczenia (2)

Przetwarzanie rozproszone

Przetwarzanie rozproszone

Algorytm Lamporta. Czy można to ulepszyć?

Algorytmy Równoległe i Rozproszone Część VI - Systemy rozproszone, podstawowe pojęcia

Mechanizmy rozgłaszania niezawodnego

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Porządek dostępu do zasobu: procesory obszary pamięci cykle procesora pliki urządzenia we/wy

Wykład 1. Systemy przekazywania wiadomości z założeniem bezbłędności działania

Koordynacja procesów w środowisku rozproszonym

Modelowanie procesów współbieżnych

Sortowanie topologiczne skierowanych grafów acyklicznych

Najkrótsza droga Maksymalny przepływ Najtańszy przepływ Analiza czynności (zdarzeń)

Algorytmy Równoległe i Rozproszone Część VII - Systemy rozproszone, wstęp

5. Model komunikujących się procesów, komunikaty

Sterowniki Programowalne (SP) Wykład 11

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Podstawowe własności grafów. Wykład 3. Własności grafów

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

Bezprzewodowe sieci komputerowe

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Diagnozowanie sieci komputerowej na podstawie opinii diagnostycznych o poszczególnych komputerach sieci

Definicja sieci. Sieć Petriego jest czwórką C = ( P, T, I, O ), gdzie: P = { p 1, p 2,, p n } T = { t 1, t 2,, t m }

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

Rozszerzenia sieci Petriego

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Diagnozowanie sieci komputerowej metodą dialogu diagnostycznego

Rozszerzenia sieci Petriego

Synchronizacja procesów

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Wprowadzenie do programowania współbieżnego

Algorytm Grovera. Kwantowe przeszukiwanie zbiorów. Robert Nowotniak

Asynchroniczne statyczne układy sekwencyjne

VI. Równania różniczkowe liniowe wyższych rzędów

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Wstęp do sieci neuronowych, wykład 9 Sieci rekurencyjne. Autoasocjator Hopfielda

Obliczenia inspirowane Naturą

1 Płaska fala elektromagnetyczna

Macierze. Rozdział Działania na macierzach

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu

Podstawy symulacji komputerowej

Podstawy Informatyki. Wykład 6. Struktury danych

Wstęp do programowania 2

Macierzowe algorytmy równoległe

Programowanie współbieżne Wykład 2. Iwona Kochańska

Wstęp do programowania. Różne różności

Semafory. // G - globalna dla wszystkich. // Wada - aktywne oczekiwanie Test_and_Set(Li); exit when Li = 0; end loop sekcja_krytyczna(i); G := 0;

Proces rezerwy w czasie dyskretnym z losową stopą procentową i losową składką

Gramatyki grafowe. Dla v V, ϕ(v) etykieta v. Klasa grafów nad Σ - G Σ.

Matematyczne Podstawy Informatyki

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Teoria Złożoności Zadania

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Rywalizacja w sieci cd. Protokoły komunikacyjne. Model ISO. Protokoły komunikacyjne (cd.) Struktura komunikatu. Przesyłanie między warstwami

Podstawy Informatyki Systemy sterowane przepływem argumentów

Planowanie eksperymentu 2 (k p) w 2 r blokach. Stanisław Jaworski, Wojciech Zieliński

WYKŁAD 11 Uczenie maszynowe drzewa decyzyjne

Pierścień wielomianów jednej zmiennej

Systemy Rozproszone. Zagadnienia do egzaminu.

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

VII. Elementy teorii stabilności. Funkcja Lapunowa. 1. Stabilność w sensie Lapunowa.

Przetwarzanie i Kompresja Obrazów. Segmentacja

Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące.

Optymalizacja. Przeszukiwanie lokalne

Podstawy robotyki. Wykład II. Robert Muszyński Janusz Jakubiak Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Aproksymacja. j<k. L 2 p[a, b] l 2 p,n X = Lemat 1. Wielomiany ortogonalne P 0,P 1,...,P n tworza przestrzeni liniowej Π n. Dowód.

3.4. Przekształcenia gramatyk bezkontekstowych

miejsca przejścia, łuki i żetony

Dystrybucje, wiadomości wstępne (I)

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix)

ZiMSK. Routing dynamiczny 1

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Transkrypt:

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)