Algorytm Lamporta. Czy można to ulepszyć?

Podobne dokumenty
Koordynacja procesów w środowisku rozproszonym

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

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

Wzajemne wykluczanie i zakleszczenie

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

Elekcja, wzajemne wykluczanie i zakleszczenie

Algorytmy zarządzania współbieżnym wykonywaniem transakcji część I

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

Detekcja zakleszczenia (1)

Mechanizmy pracy równoległej. Jarosław Kuchta

Bazy danych. Andrzej Łachwa, UJ, /15

Stronicowanie w systemie pamięci wirtualnej

Kolejki FIFO (łącza nazwane)

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Metody Optymalizacji: Przeszukiwanie z listą tabu

Jak przekształcić zamówienie zakupu w fakturę. Copyright Tungsten Corporation plc 2018

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

Modele procesów masowej obsługi

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

Proces obsługi deklaracji Intrastat w systemie Celina WebCel

Systemy operacyjne. wykład 11- Zakleszczenia. dr Marcin Ziółkowski. Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne

Przesyłania danych przez protokół TCP/IP

Systemy operacyjne. Zajęcia 11. Monitory

Instrukcja integratora - obsługa dużych plików w epuap2

Strefa pokrycia radiowego wokół stacji bazowych. Zasięg stacji bazowych Zazębianie się komórek

Planowanie przydziału procesora

Lista 4. Kamil Matuszewski 22 marca 2016

Wirtualna centralka telefoniczna P2P

Problem zakleszczenia

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

System Rozproszone Komunikator Dokumentacja. Maciej Muszkowski Jakub Narloch

Znajdowanie wyjścia z labiryntu

2. Informacje o mechanizmie limitów

Przykładowe rozwiązania

POTRZEBY A B C D E P P P P P

SYSTEMY OPERACYJNE LABORATORIUM 2014/2015

Lock Manager Deadlock Źródła Jak starczy czasu. Dreadlocks. Konrad Błachnio MIMUW 19 maja 2010

Planowanie przydziału procesora

Przewodnik dla ucznia

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:

Podstawowe struktury danych

Sortowanie - wybrane algorytmy

I. Techniki wielowersyjne sterowania współbieżnością

Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki

PODSTAWY BAZ DANYCH Wykład 9

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

Algorytmiczna teoria grafów

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

1. Po kliknięciu we wspomniany link otworzy się strona o następującym wyglądzie:

Zaawansowane algorytmy i struktury danych

Instrukcja ewidencji i sprawozdawania informacji o pierwszym wolnym terminie.

1 Układy równań liniowych

Wstęp do programowania 2

Metoda eliminacji Gaussa. Autorzy: Michał Góra

Zarządzanie procesorem

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

KS-ZSA. Mechanizm centralnego zarządzania rolami

Prezentacja systemu RTLinux

Mikroprocesor Operacje wejścia / wyjścia

Bazy danych w sterowaniu

5. Algorytm genetyczny przykład zastosowania

Konstrukcja spójnego obrazu stanu globalnego - wprowadzenie

PRZERWANIA. P1 - Procedura obslugi przerwania. Obsługa zdarzenia Z1 poprzez procedurę obsługi przerwania P1

Opis protokołu RPC. Grzegorz Maj nr indeksu:

INSTRUKCJA DLA RODZICÓW. System rekrutacji do żłobków w Gminie Wrocław

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Spis treści REJESTRACJA NOWEGO KONTA UŻYTKOWNIKA PANEL ZMIANY HASŁA PANEL EDYCJI DANYCH UŻYTKOWNIKA EXTRANET.NET...

Profil pracy wariant konfiguracji programu obejmujący m.in język, walutę, konto allegro, szablon aukcji, zdefiniowane koszty wysyłki itp.

Dlaczego nie wystarczają liczby wymierne

Systemy operacyjne III

epuap Zakładanie konta organizacji

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

Spis treści. Rejestracja/logowanie. Zmiana numeru konta klienta. Tworzenie nowej przesyłki. Zamawianie kuriera

dr inż. Jarosław Forenc

Aby wejść do systemu należy kliknąć w link znajdujący w ogłoszeniu konkursu (oznaczony napisem: złóż wniosek ).

Program jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem.

Algorytmy i Struktury Danych

Instrukcja IT Service & Help Desk Ticket System.

Oświadczenie o plikach cookies

Jak zacząć korzystać w HostedExchange.pl ze swojej domeny

Czym są pliki cookies? Rodzaje plików cookies Dlaczego używamy plików cookies?

Luty 2001 Algorytmy (4) 2000/2001

Elementy Modelowania Matematycznego

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Uniwersalny Konwerter Protokołów

4. Procesy pojęcia podstawowe

Sortowanie topologiczne skierowanych grafów acyklicznych

Materiały pomocnicze 1

System Gokart Timing

Konstrukcja spójnego obrazu stanu globalnego algorytmy

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

PRZERWANIA. 1. Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego.

Wojskowa Akademia Techniczna im. Jarosława Dąbrowskiego

Przetwarzanie rozproszone

Konstrukcja spójnego obrazu stanu globalnego algorytmy

Programowanie Równoległe i Rozproszone

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Problem detekcji zakończenia

Tablice z haszowaniem

Transkrypt:

Algorytm Maekawa

Plan Przypomnienie - algorytm Lamporta Idea algorytmu Generowanie zbiorów arbitrażu Zakleszczenia Przykład Analiza założeń Przypadki pesymistyczne Podsumowanie

Algorytm Lamporta Rozwiązuje problem rozproszonego wykluczenia, Wolny od zakleszczeń, Wymaga wielu broadcastów, Niepraktycznie duża złożoność komunikacyjna (3n-3). Czy można to ulepszyć?

Algorytm Maekawa Nie musimy prosić o zgodę wszystkich węzłów. Wystarczy że poprosimy te, które odmówiłyby wszystkim innym.

Algorytm Maekawa Pogrupujmy węzły w zbiory w taki sposób, aby dowolne dwa zbiory miały niezerową część wspólną. Przykład w szachach - obszar bicia dowolnych dwóch wież ma część wspólną (co najmniej dwa pola).

Algorytm Maekawa a) Przecięcia zbiorów są niepuste (wymagane dla zapewnienia wzajemnego wykluczania). b) Każdy węzeł należy do własnego zbioru (w celu zmniejszenia liczby wiadomości). c) Zbiory mają taki sam rozmiar* (każdy węzeł wykonuje równą ilość pracy). d) Dowolny węzeł należy do takiej samej liczby różnych zbiorów arbitrażu* (równa odpowiedzialność w udzielaniu zgody - każdy potrzebuje zgody od takiej samej liczby węzłów).

Algorytm Maekawa Przykład: Przecięcia zbiorów są niepuste, Każdy węzeł występuje 3 razy. Dla wartości takich że, powyższe warunki będą w niewielkim stopniu odchylone.

Algorytm Maekawa N - ilość węzłów w sieci K - ilość węzłów w zbiorze arbitrażu

Algorytm Maekawa Założenia: kanały FIFO, znana ilość węzłów, bezawaryjność węzłów, bezawaryjność łączy.

Rodzaje zapytań REQUEST LOCKED RELEASE FAILED INQUIRE RELINQUISH - proszę o zgodę na CS - zgoda na CS - wyszedłem z CS - poczekaj, jest ktoś ważniejszy - zgłosił się do mnie ktoś ważniejszy - zrzekam się twojej zgody na CS

Algorytm Maekawa Węzeł chcący wejść do sekcji krytycznej wysyła wiadomość REQUEST do każdego węzła w swojej grupie arbitrażu. Dostęp do CS jest możliwy po otrzymaniu kompletu odpowiedzi LOCKED. Węzeł otrzymujący REQUEST odpowiada LOCKED jeśli nie jest zablokowany. Odpowiadając, zmienia swój stan na zablokowany.

Algorytm Maekawa Jeśli zablokowany węzeł otrzyma REQUEST, umieszcza go w swojej kolejce priorytetowej. Następnie: Jeśli REQUEST ma wyższy priorytet od blokującej wiadomości oraz od wszystkich w kolejce, wysyła INQUIRE do blokującego procesu. W przeciwnym wypadku wysyła FAILED do procesu który nadał REQUEST.

Algorytm Maekawa Otrzymuję REQUEST. Czy jestem zablokowany? nie Blokuję się z tym REQUESTem. Odpowiadam: LOCKED. tak nie REQUEST wpada do kolejki. Odpowiadam: FAILED. Czy ten REQUEST jest ważniejszy od wszystkich które obsługuję*? tak REQUEST wpada do kolejki. Wysyłam do blokującego: INQUIRE. * obsługuję : obługiwany REQUEST to ten blokujący oraz każdy znajdujący się w kolejce.

Algorytm Maekawa Aby wejść do CS, węzeł czeka na komplet LOCKED. Po wyjściu z CS, wysyła RELEASE. Węzeł otrzymujący RELEASE wysyła LOCKED do węzła którego REQUEST ma najwyższy priorytet według jego kolejki. Jeśli kolejka jest pusta, węzeł staje się niezablokowany.

Algorytm Maekawa Co z taką sytuacją? REQ REQ LOCK LOCK REQ REQ

Algorytm Maekawa Co z taką sytuacją? REQ REQ REQ LOCK FAIL FAIL LOCK REQ

Algorytm Maekawa Rozwiązywanie zakleszczeń - mechanizm INQUIRE Jeśli widzę że wydałem blokadę (wysłałem LOCKED) węzłowi o niższym priorytecie, pytam go czy jest pewien że nie ma zakleszczenia.

Algorytm Maekawa Węzeł otrzymujący INQUIRE odpowiada RELINQUISH (zrzeka się przyznanego mu LOCKED) jeśli otrzymał już chociaż jeden komunikat FAILED. Jeśli nie, węzeł zapamiętuje INQUIRE na wypadek gdyby FAILED przybył póżniej.

Algorytm Maekawa To tyle! Spójrzmy na pseudokod.

Algorytm Maekawa

Algorytm Maekawa

Algorytm Maekawa

Algorytm Maekawa

Algorytm Maekawa

Algorytm Maekawa

Algorytm Maekawa

Algorytm Maekawa

Algorytm Maekawa

Algorytm Maekawa

Przykład Spójrzmy na przykład dla 7 węzłów.

R,L R 1 7 2 R L 6 3 5 4

R,L R 1 R,L 7 2 R R L R L 6 3 5 4

R,L R,L R 1 R,L 7 2 R R R L L R 6 3 F queue = [7] R L 5 4

R,L R,L R 1 I 7 R,L 2 R queue = [1] R L L R R 6 3 F queue = [7] R I L 5 4

R,L R,L R 1 I 7 R,L 2 R queue = [1] R L L R R 6 3 F R I queue = [7] L L 5 4 Q...więcej strzałek? queue = [7]

1 REL 7 2 queue = [1] REL 6 REL 3 queue = [7] 5 4 queue = [7]

1 L REL 7 2 queue = [ ] REL 6 L REL 3 queue = [7] 5 4 queue = [ ]

REL 1 L 7 REL REL 6 L REL 2 REL REL 3 queue = [7] 5 4

REL 1 L 7 REL REL REL 2 REL L 6 L REL 3 queue = [ ] 5 4

Co jeśli nie ma FIFO 1 R R 2 L I 3

Co jeśli nie ma FIFO 1 R REL 2 F L 3

Modyfikacje dla non-fifo zapamiętuj znaczniki czasowe otrzymanych wiadomości FAILED, INQUIRE, LOCKED per osoba wykrywaj sytuacje (wykorzystując znaczniki czasowe) LOCKED po INQUIRE FAILED po LOCKED

Modyfikacje dla non-fifo przy otrzymaniu LOCKED po INQUIRE: jeśli wysłano już RELINQUISH: ignoruj jeśli nie wysłano RELINQUISH: ignoruj ale dodatkowo zachowaj się jakby otrzymano FAILED (wyślij RELINQUISH do wszystkich od których otrzymano INQUIRE)* przy otrzymaniu FAILED po LOCKED: ignoruj

Złożoność komunikacyjna Przy małym obciążeniu: K - 1 wiadomości REQUEST K - 1 wiadomości LOCKED K - 1 wiadomości RELEASE = 3 (K - 1)

Złożoność komunikacyjna Przy dużym obciążeniu: Nowe żądanie będzie miało niski priorytet i dostanie same FAILED. K - 1 wiadomości REQUEST K - 1 wiadomości FAILED K - 1 wiadomości LOCKED K - 1 wiadomości RELEASE = 4 (K - 1)

Złożoność komunikacyjna Najgorszy przypadek: Węzeł wysyłający REQUEST nie uczestniczył w algorytmie przez pewien czas, przez co jego żądanie ma wyższy priorytet od innych. K - 1 wiadomości REQUEST K - 1 wiadomości INQUIRE* K - 1 wiadomości RELINQUISH K - 1 wiadomości LOCKED K - 1 wiadomości RELEASE = 5 (K - 1)

Brak zakleszczeń (1) Dowód nie wprost: Załóżmy, że istnieje zakleszczenie. Jeśli tak jest, musi istnieć cykl węzłów oczekujących na siebie. Jednak nie jest to możliwe, gdyż: 1. Priorytety są unikatowe (znacznik czasowy unikalny dla węzła, id węzła też unikalny). 2. Musi istnieć węzeł o niższym priorytecie* w stosunku do sąsiadów w cyklu.

Brak zakleszczeń (2) 3. 2 sąsiednie węzły w cyklu mają co najmniej 1 wspólny węzeł w zbiorach arbitrażu (o który będą się ubiegały). 4. Jeśli węzeł o wyższym priorytecie nie uzyska LOCKED to wysyła INQIURE. 5. Węzeł o niższym priorytecie wyśle RELINQUISH jeśli wie, że nie uda mu się zablokować wszystkich węzłów z jego zbioru arbitrażu.

Brak zakleszczeń (3) 6. Węzeł wspomniany w 2. na pewno dostanie jakąś wiadomość FAILED (przegra z którymś z sąsiadów) a po otrzymaniu INQUIRE wyśle RELINQUISH i jeden z węzłów otrzyma LOCKED na który czekał. Dochodzimy do sprzeczności, tak więc twierdzenie jakoby zakleszczenie możliwe było ku sprzeczności wiedzie nas, tak więc twierdzenie zajść musi, albowiem jego niezajście sprzeczności rodzi. :D

Dowód poprawności 1. Każdy proces może udzielić jednocześnie wyłącznie jednej zgody (LOCKED). 2. Dowolne dwa procesy chcące uzyskać dostęp do CS będą musiały poprosić o zgodę wspólny węzeł (z konstrukcji zbiorów arbitrażu). Z punktu 1 i 2 mamy że dwa procesy nie mogą jednocześnie być w sekcji krytycznej.

Dowód postępu (1) 1. Wiadomość REQUEST nie opuści kolejki procesu dopóki nadawca nie otrzyma odpowiedzi LOCKED. 2. Jeśli proces posiadający LOCKED wyśle RELINQUISH, jego REQUEST wróci do kolejki. Wniosek A: z 1 i 2 mamy że dopóki proces nie wejdzie do CS, jego wiadomości REQUEST będą w kolejkach lub będą blokowały węzły. (REQUESTy nie będą zapomniane ).

Dowód postępu (2) 1. Dla dowolnej wiadomości REQUEST istnieje skończona ilość innych wiadomości REQUEST o wyższym priorytecie (z zegarów Lamporta). 2. Mechanizm INQUIRE wyklucza istnienie zakleszczeń. Wniosek B: Każdy REQUEST zostanie obsłużony w skończonym czasie.

Dowód postępu (3) A. Dopóki proces nie wejdzie do CS, jego wiadomości REQUEST będą w kolejkach lub będą blokowały węzły. B. Każdy REQUEST zostanie obsłużony w skończonym czasie. Wniosek: każdy węzeł otrzyma dostęp do CS w skończonym czasie.

Generowanie zbiorów arbitrażu Warunki dla zbiorów arbitrażu: każdy węzeł znajduje się w K zbiorach, zbiory arbitrażu mają moc K. Problem generowania zbiorów jest tożsamy z problemem istnienia skończonych przestrzeni projekcyjnych.

Generowanie zbiorów arbitrażu Przestrzeń projekcyjna: dowolne dwa punkty leżą na dokładnie jednej wspólnej prostej, dowolne dwie proste przecinają się w dokładnie jednym punkcie.

Generowanie zbiorów arbitrażu Skończona przestrzeń projekcyjna: Problem: czy istnieje przestrzeń projekcyjna dla danego N?

Generowanie zbiorów arbitrażu Euler (1782): (pomylił się)

Generowanie zbiorów arbitrażu Bruck, Ryser (1949): Gdyby istniała FPP(6), to 6 dałoby się zapisać jako sumę kwadratów, a tak nie jest.

Generowanie zbiorów arbitrażu FPP(10)? 10 = 1 + 9 Niestety, nie. C.W.H. Lam, L.Thiel, S.Swiercz (1989) - Dowód poprzez przeszukanie wyczerpujące, CRAY-1A

Generowanie zbiorów arbitrażu Jeśli N jest potęgą liczby pierwszej, to istnieje FPP(N). Nie jest znana żadna FPP której rząd nie jest potęgą liczby pierwszej. Kwestia istnienia takiej FPP pozostaje otwarta.

Generowanie zbiorów arbitrażu Istnieje metoda generowania FPP dla N będących potęgą liczby pierwszej. Jej studium pozostawiamy wnikliwości słuchaczy :) Aby stworzyć zbiory arbitrażu, konstruujemy FPP dla najbliższej wartości N nie mniejszej od ilości węzłów.

Generowanie zbiorów arbitrażu Dysponując FPP(N), gdzie N > P, degenerujemy zbiory według następującej reguły: Usuwamy zbiory Każdą wartość większą od zamieniamy na

Generowanie zbiorów arbitrażu

Zalety algorytmu Maekawa Algorytm szybszy od Lamporta Nie są wykorzystywane broadcasty

Wady algorytmu Maekawa Trudno uzyskać dynamiczne dołączanie / odłączanie węzłów* Względna złożoność implementacyjna * Maekawa się z nami tutaj nie zgadza