Problem detekcji zakończenia

Podobne dokumenty
Problem detekcji zakończenia (I)

Problem detekcji zakończenia (I)

Konstrukcja spójnego obrazu stanu globalnego

Detekcja zakleszczenia (1)

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

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

Mechanizmy rozgłaszania niezawodnego

Wzajemne wykluczanie i zakleszczenie

Problem detekcji zakończenia (II)

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

Proces rozproszony 1

Detekcja zakleszczenia (2)

Konstrukcja spójnego obrazu stanu globalnego algorytmy

Konstrukcja spójnego obrazu stanu globalnego algorytmy

Konstrukcja spójnego obrazu stanu globalnego algorytmy

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

Przetwarzanie rozproszone

Konstrukcja spójnego obrazu stanu globalnego - wprowadzenie

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

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

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

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

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

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

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

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

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

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

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

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

Przetwarzanie rozproszone

Przetwarzanie rozproszone

Podstawowe algorytmy i ich implementacje w C. Wykład 9

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

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

Sortowanie topologiczne skierowanych grafów acyklicznych

Informatyka 1. Przetwarzanie tekstów

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Mechanizmy rozgłaszania niezawodnego

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Analiza algorytmów zadania podstawowe

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

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Ogólne wiadomości o grafach

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

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

PHP: bloki kodu, tablice, obiekty i formularze

Instrukcje cykliczne (pętle) WHILE...END WHILE

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

Rozszerzenia sieci Petriego

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

Algorytmy i struktury danych

Semafory. - aktywne oczekiwanie =GRGDWNRZ\PZVSDUFLHPVSU]WRZ\P 6SHFMDOQDLQVWUXNFMDPDV]\QRZDUHDOL]XMFDDWRPRZ\]DSLVL odczyt, np.

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

Losowość w rozproszonym modelu

Rozszerzenia sieci Petriego

Wstęp do programowania 2

Opis implementacji: Implementacja przedstawia Grę w życie jako przykład prostej symulacji opartej na automatach.

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Delphi 7 + Indy 10 Przykłady prostych aplikacji sieciowych

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

Komputerowe systemy sterowania

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

SOP2 - semafory. grudzień

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

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

Porządek symetryczny: right(x)

Wprowadzenie do programowania współbieżnego

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

Macierzowe algorytmy równoległe

Wysokość drzewa Głębokość węzła

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

Instrukcje iteracyjne (pętle)

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

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

Algorytmy i struktury danych

Drzewa podstawowe poj

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

Dynamiczne struktury danych

Modelowanie złożonych układów cyfrowych (1)

Optymalizacja. Symulowane wyżarzanie

Zagadnienie najkrótszej drogi w sieci

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

LibreOffice Calc VBA

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

Technologie informacyjne (5) Zdzisław Szyjewski

Kiedy i czy konieczne?

Wykład 5: Specyfikacja na poziomie systemowym

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

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

Optymalizacja harmonogramów budowlanych - szeregowanie zadań. Mgr inż. Aleksandra Radziejowska AGH Akademia Górniczo-Hutnicza w Krakowie

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

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

2:8,7 3:9,4 / \ / \ / \ / \ 4:7,3 5:8 6:9,2 7:4

Antyaliasing w 1 milisekundę. Krzysztof Kluczek

Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg.

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Metody Kompilacji Wykład 7 Analiza Syntaktyczna

Transkrypt:

Problem detekcji zakończenia Przykład sortowanie rozproszone Rozważmy problem sortowania rozproszonego zbioru X składającego się z v różnych liczb naturalnych, w środowisku rozproszonym o n węzłach (procesorach), n < v. Zadaniem każdego procesu jest uporządkowanie przypisanej mu części zbioru liczb naturalnych i wyznaczenie elementu minimalnego Elementy minimalne są wysyłane do lewych sąsiadów. Po otrzymaniu wiadomości zwartością minimalną, proces wyznacza element maksymalny i wysyła go do prawego sąsiada. 1

Sortowanie rozproszone: definicje Zbiór wstępnie podzielony na podzbiory X i v i min i max i P i liczba elementów zbioru X i minimalny element zbioru X i maksymalny element zbioru X i procesy tworzące przetwarzanie rozproszone topologii łańcucha skojarzone ze zbiorami X topologii łańcucha skojarzone ze zbiorami X i. Pary procesów składowych P i, P i+1, połączone są kanałami dwukierunkowymi. Sortowanie rozproszone przykład 7 8 9 4 2 5 3 6 1 7 3 1 4 2 8 6 5 9 1 3 2 4 8 5 7 6 9 1 2 3 5 4 6 8 7 9 2

Sortowanie rozproszone przykład (2) 7 8 8 4 2 5 3 13 6 18 7 7 4 2 1 3 21 6 6 5 8 2 7 4 7 5 1 3 2 3 5 6 8 2 1 4 7 3 5 6 8 0 Problem zakończenia Nie, jestem wolny Przed chwilą skończyłem P 4 Nuda, nie ma co robić. Uff, chyba koniec... Ja też skończyłem P 3 Czy już nastąpił koniec przetwarzania? Może jeszcze nie? P 5 Masz Pracujesz A ty coś Co Jak do słychać leci? roboty? P 2 Już skończyłem P 1 3

Definicja nieformalna zakończenia Definicja i nieformalna: Nieformalnie problem detekcji zakończenia przetwarzania rozproszonego polega na sprawdzeniu, czy wszystkie procesy przetwarzania są w stanie pasywnym oraz czy żadna wiadomość będąca w kanale (transmitowana lub dostępna) nie uaktywni któregokolwiek z tych procesów. Zakończenie dynamiczne Nieformalnie, przetwarzanie rozproszone jest w stanie, p p j zakończenia dynamicznego, jeżeli żaden proces składowy przetwarzania rozproszonego nie będzie już nigdy uaktywniony. Stan ten będzie utrzymywany pomimo, że pewne wiadomości są wciąż transmitowane, a pewne wiadomości są już dostępne. 4

Zakończenie statyczne Nieformalnie, przetwarzanie rozproszone jest w stanie zakończenia statycznego, jeżeli: wszystkie procesy są pasywne wszystkie wiadomości znajdujące się w kanałach są dostępne dla żadnego procesu nie jest spełniony warunek uaktywnienia Klasyczna definicja zakończenia W klasycznej definicji zakończenia przyjmowano że W klasycznej definicji zakończenia przyjmowano, że przetwarzanie rozproszone jest w stanie zakończenia, jeżeli w danej chwili wszystkie procesy są pasywne i wszystkie kanały są puste. 5

Problem detekcji zakończenia Problem detekcji zakończenia przetwarzania rozproszonego obejmującego zbiór procesów, sprowadza się do sprawdzenia czy przetwarzanie osiągnęło określony stan zakończenia. Model przetwarzania synchronicznego W modelu przetwarzania synchronicznego przyjmuje się, że transmisje są natychmiastowe. t Stąd kanałył mogą być uznane za puste przez cały czas i problem zakończenia sprowadza się do sprawdzenia czy wszystkie procesy są jednocześnie pasywne. 6

Detekcja zakończenia dla modelu synchronicznego Monitorom przypisany jest kolor: White lub Black (początkowo White) W pierścieniu przesyłany yj jest znacznik (z przypisanym y kolorem) Początkowo monitory mają kolor White, a zmieniają kolor na Black, gdy odpowiadający im proces aplikacyjny wyśle wiadomości do procesu o indeksie większym. Znacznik jest przesyłany dalej, gdy obserwowany proces staje się pasywny Po wysłaniu znacznika monitorowi przypisywany jest kolor White Algorytm kończy się, gdy znacznik koloru White dotrze do inicjatora Dla uproszczenia prezentacji, w algorytmie wykorzystano funkcje: succ(i) = (i) mod n + 1 pred(i) = (i+n 2) mod n + 1 Przykład detekcji zakończenia runda zakończona niepowodzeniem P 4 P 5 P 3 P 6 P 2 P 1 ( inicjator ) Runda zakończona, konieczna kolejna iteracja 7

Przykład detekcji zakończenia runda zakończona sukcesem P 4 P 5 P 3 P 6 P 2 P 1 ( inicjator ) Wykryto zakończenie Alg. Dijkstra, Feijen, van Gasteren (1) type PACKET extends FRAME is record of data : MESSAGE end record type TOKEN extends FRAME is record of colour : enum { White, Black } end record 8

Alg. Dijkstra, Feijen, van Gasteren (2) msgin pcktout tokenout tokenpresent i proccolour i terminationdetected i : MESSAGE : PACKET : TOKEN : BOOLEAN := False : enum {White, Black} := White : BOOLEAN := False Alg. Dijkstra, Feijen, van Gasteren (3) 1. procedure InitProc() 2. tokenout.colour := White 3. send(q α, Q pred(α), tokenout) 4. tokenpresent α := False 5. proccolour α := White 6. end procedure 9

Alg. Dijkstra, Feijen, van Gasteren (4) 7. when e_start(q α, TerminationDetection) do 8. wait until passive α 9. InitProc() 10. end when 11. when e_send(p i, P j, msgout: MESSAGE) do 12. if i < j then 13. proccolour i := Black 14. end if 15. pcktout.data := msgout 16. send(q i, Q j, pcktout) 17. end when Alg. Dijkstra, Feijen, van Gasteren (5) 18. when e_receive(q j, Q i, pcktin: PACKET) do 19. msgin := pcktin.data 20. deliver(p j, P i, msgin) 21. end when 10

Alg. Dijkstra, Feijen, van Gasteren (6) 22. when e_receive(q succ(i), Q i, tokenin: TOKEN) do 23. tokenpresent i := True 24. wait until passive i 25. if i = α then 26. if proccolour i = White tokenin.colour = White then 27. terminationdetected i := True 28. decide(terminationdetected i ) 29. else 30. InitProc() 31. end if Alg. Dijkstra, Feijen, van Gasteren (7) 32. else 33. tokenout.colour:= tokenin.colour 34. if proccolour i = Black then 35. tokenout.colour:= Black 36. end if 37. send(q i, Q pred(i), tokenout) 38. tokenpresent i := False 39. proccolour i := White 40. end if 41. end when 11

Model przetwarzania dyfuzyjnego Przetwarzanie dyfuzyjne (ang. diffusing computation) jest specyficznym przetwarzaniem rozproszonym, w którym wyróżnia się: inicjatora może w dowolnej chwili rozpocząć przetwarzanie dyfuzyjne wysyłając wiadomość aplikacyjną do jednego lub wielu procesów kooperujących hierarchię kooperujących procesów Założenia dodatkowe Proces aktywny staje się procesem pasywnym tylko w wyniku pewnego zdarzenia wewnętrznego Proces zawsze staje się aktywny po otrzymaniu wiadomości Proces pasywny może stać się aktywny tylko w wyniku otrzymaniu wiadomości 12

Algorytm Dijkstry-Scholten a: Koncepcja Monitory procesów aplikacyjnych przesyłają wiadomości kontrolne jako pewnego rodzaju odpowiedzi na wiadomości aplikacyjne. Monitor pasywnego inicjatora może stwierdzić zakończenie przetwarzania po odebraniu wiadomości kontrolnych od wszystkich monitorów związanych z procesami uaktywnionymi przez inicjatora. Graf przetwarzania dyfuzyjnego P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 P 9 P 10 13

Graf przetwarzania dyfuzyjnego (2) P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 P 9 P 10 Algorytm detekcji zakończenia dla modelu dyfuzyjnego (1) type PACKET extends FRAME is record of data : MESSAGE end record type SIGNAL extends FRAME 14

Algorytm detekcji zakończenia dla modelu dyfuzyjnego (2) msgin : MESSAGE pcktout : PACKET signalin : SIGNAL engager i : PROCESS_ID notengager i : set of PROCESS_ID recvno i : INTEGER:= 0 sentno i : INTEGER:= 0 terminationdetected i : BOOLEAN:= False Algorytm detekcji zakończenia dla modelu dyfuzyjnego (3) 1. when e_start(p R α, P αr, msgout: MESSAGE, DiffusingComputation) do 2. Q αr := {Q j : P j P R α } 3. pcktout.data := msgout 4. sentno α := Q αr 5. send(q α, Q αr, pcktout) 6. end when 15

Algorytm detekcji zakończenia dla modelu dyfuzyjnego (4) 7. when e_send(q i, Q j, signalout : SIGNAL) do 8. if recvno i =1 sentno i =0 passive i 9. then 10. Q j := engager i 11. send(q i, Q j, signalout) 12. else 13. for Q j notengager i do 14. notengager i := notengager i \ {Q j } 15. send(q i, Q j, signalout) 16. end for 17. end if 18. recvno i := recvno i - 1 19. end when Algorytm detekcji zakończenia dla modelu dyfuzyjnego (5) 20. when e_receive(q j, Q i, signalin : SIGNAL) do 21. sentno i := sentno i - 1 22. if Q i =Q α sentno i =0 then 23. wait until passive i 24. terminationdetected i := True 25. decide(terminationdetected i ) 26. end if 27. end when 16

Algorytm detekcji zakończenia dla modelu dyfuzyjnego (6) 28. when e_send(p i, P j, msgout: MESSAGE) do 29. pcktout.data := msgout 30. sentno i := sentno i + 1 31. send(q i, Q j, pcktout) 32. end when Algorytm detekcji zakończenia dla modelu dyfuzyjnego (7) 33. when e_receive(q j, Q i, pcktin: PACKET) do 34. if recvno i = 0 then 35. engager i := Q j 36. else 37. notengager i := notengager i {Q j } 38. end if 39. recvno i := recvno i + 1 40. msgin := pcktin.data 41. deliver(p j, P i, msgin) 42. end when 17

Twierdzenie Twierdzenie Jeżeli przetwarzanie dyfuzyjne uległo zakończeniu, to fakt ten stwierdzi algorytm Dijkstry-Scholtena. Algorytm detekcji zakończenia dla systemów asynchronicznych (Misra 83): Założenia Brak założeń o topologii przetwarzania Brak założeń o czasie przesyłania wiadomości Niezawodna komunikacja Kanały FIFO Używa znacznika (ang. token) 18

Algorytm detekcji zakończenia dla systemów asynchronicznych (1) type PACKET extends FRAME is record of data : MESSAGE end record type TOKEN extends FRAME is record of nb : INTEGER end record Algorytm detekcji zakończenia dla systemów asynchronicznych (2) msgin : MESSAGE pcktout : PACKET tokenout : TOKEN tokenpresent i : BOOLEAN := False succ i : PROCESS_ID C : set of CHANNEL_ID colour i : enum { White, Black } := Black terminationdetected i : BOOLEAN := False 19

Algorytm detekcji zakończenia dla systemów asynchronicznych (3) 1. when e_start(p t(p α, TerminationDetection) t ) do 2. tokenout.nb := 0 3. send(q α, succ α, tokenout) 4. end when Algorytm detekcji zakończenia dla systemów asynchronicznych (4) 12. when e_receive(q j, Q i, pcktin: PACKET) do 13. msgin := pcktin.data 14. colour i := Black 15. passive i := False 16. deliver(p j, P i, msgin) 17. end when 20

Algorytm detekcji zakończenia dla systemów asynchronicznych (5) 18. 19. when e_receive(q j, Q i α, tokenin: TOKEN) do tokenpresent t i := True 20. wait until passive i = True 21. if colour i =Black then 22. tokenout.nb:= 0 23. else 24. tokenout.nb:= tokenout.nb + 1 25. end if 26. send(q i, succ i, tokenout) 27. colour i := White 28. tokenpresent i := False 29. end when Algorytm detekcji zakończenia dla systemów asynchronicznych (6) 30. when e_receive(q j, Q α, tokenin: TOKEN) do 31. tokenpresent i := True 32. if colour i =White tokenout.nb= C nb= C then 33. terminationdetected i := True 34. decide(terminationdetected i ) 35. else 36. if colour i = Black then 37. tokenout.nb := 0 38. else 39. tokenout.nb:= tokenout.nb + 1 40. end if 41. send(q i, succ i, tokenout) 42. colour i := White 43. tokenpresent i := False 44. end if 45. end when 21

Cechy algorytmu Misra 83 Możliwość rozszerzenia do dowolnej topologii Wiele monitorów naraz może wykrywać zakończenia Cykl obejmujący wszystkie kanały komunikacyjne musi być znany z góry 22