Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Programowanie współbieżne i rozproszone. Programowanie równoległe i rozproszone dotyczy tworzenia współpracuj ą cych ze sob ą procesów współbieżnych wykonywanych.

Podobne prezentacje


Prezentacja na temat: "Programowanie współbieżne i rozproszone. Programowanie równoległe i rozproszone dotyczy tworzenia współpracuj ą cych ze sob ą procesów współbieżnych wykonywanych."— Zapis prezentacji:

1 Programowanie współbieżne i rozproszone

2 Programowanie równoległe i rozproszone dotyczy tworzenia współpracuj ą cych ze sob ą procesów współbieżnych wykonywanych na komputerach równoległych (czyli albo na superkomputerach posiadaj ą cych tysi ą ce procesorów, albo na lokalnych czy rozległych sieciach stacji roboczych jedno i wieloprocesorowych)

3 Definicja komputera sekwencyjnego Komputer von Neumanna Procesor centralny (Central processor unit CPU ) wykonuje program umieszczony w zał ą czonej pami ę ci, odczytuj ą c kolejne instrukcje programu (z pami ę ci) i zapisuj ą c dane (do pami ę ci)

4 Wielokomputer (multicomputer) Pewna ilo ść komputerów von Neumanna poł ą czonych sieci ą (interconnect network) Każdy procesor wykonuje swój program Program ten ma dost ę p do swojej pami ę ci lokalnej, oraz może wysyła ć i odbiera ć komunikaty poprzez sie ć. Operacje send/receive używane s ą do komunikacji z innymi komputerami lub w celu czytania i pisania z/do ich odległych pami ę ci.

5 Podział ze wzgl ę du na ilo ść wykonywanych programów i czytanych danych MIMD = Multiple Instructions Multiple Data (Wiele programów wiele danych) - każdy procesor wykonuje swój własny program na swoich własnych danych. SIMD = Single Instructions Multiple Data (Pojedynczy program wiele danych) - każdy procesor wykonuje ten sam program na różnych danych.

6 Podział ze wzgl ę du na ilo ść wykonywanych programów i czytanych danych MISD = Multiple Instruction Single Data (Wiele programów te same dane) każdy procesor wykonuje swój własny program na tych samych danych (Praktycznie nie występują) SISD = Single Instruction Single Data (Jeden program te same dane) to klasyczna architektura sekwencyjna (wiele kopii tego samego komputera sekwencyjnego)

7 Podział ze wzgl ę du na typ pami ę ci Komputer o pami ę ci współdzielonej (shared memory computer) =każdy procesor posiada dost ę p do dowolnego fragmentu pami ę ci, konieczne jest zastosowanie różnych mechanizmów zabezpieczaj ą cych dany obszar pami ę ci przed jednoczesnym dost ę pem wielu procesów (np. semafory)

8 Podział ze wzgl ę du na typ pami ę ci Komputer o pami ę ci rozproszonej (distributed memory computers) =każdy procesor posiada dost ę p do swojego fragmentu pami ę ci, konieczne jest zastosowanie mechanizmów wymiany informacji pomi ę dzy procesorami (np. mechanizm przesyłania komunikatów)

9 Podział ze wzgl ę du na typ pami ę ci Hybrydy (miesza ń ce) =komputery o pami ę ci rozproszonej, o w ę złach wieloprocesorowych

10 na komputerze o pami ę ci rozproszonej na każdym w ęź le wykonywane s ą procesy (programy sekwencyjne) które komunikuj ą si ę ze sob ą, wymieniaj ą c dane i synchronizując prace

11 Na komputerze o pami ę ci współdzielonej wykonywane s ą w ą tki działaj ą ce we wspólnym obszarze pami ę ci. Może by ć tak że każdy w ą tek wykonywany jest przez jeden procesor. Wtedy wszystkie w ą tki wykonywan ą s ą równolegle.

12 Może by ć tak że na komputerze o pami ę ci współdzielonej mamy wi ę cej w ą tków niż procesorów i wtedy jeden procesor wykonuje wiele w ą tków. Wtedy wszystkie w ą tki przypisane do jednego procesora nie s ą wykonywane równolegle ale są wykonywane współbieżnie.

13 Może by ć tak że na komputerze o pami ę ci rozproszonej mamy wiele programów wykonywanych przez jeden procesor i wtedy mamy do czynienia z wieloma w ą tkami pracuj ą cymi na jednym w ęź le, w obr ę bie obszaru pami ę ci jednego procesora. W ą tki te wtedy wykonywane s ą współbieżnie ale nie równolegle.

14 Może by ć tak że na maszynie hybrydowej mamy wiele w ą tków wykonywanych na każdym w ęź le przez wiele procesorów. Je ś li do każdego procesora przypisany jest jeden w ą tek wówczas mamy do czynienia z równoległym wykonaniem wielu w ą tków.

15 Modele programowania Task (zadanie) = program sekwencyjny + pami ęć lokalna + interface do komunikacji z innymi taskami (kanały komunkacyjne wej ś cia i wyj ś cia). Chanel – poł ą czenie wyj ś ciowego portu komunikacyjnego jednego taska z wejściowym portem komunikacyjnym drugiego taska

16 Tasks and Channels (Foster D&BPP) (zadania i kanały komunikacyjne) Obliczenia równoległe składaj ą si ę z jednego lub wi ę cej tasków. Taski wykonuj ą si ę współbieżnie Ilo ść tasków może si ę zmienia ć w trakcie wykonania.

17 Kanały komunikacyjne channels mog ą by ć tworzone dynamicznie.

18 Tasks and Channels (Foster D&BPP) (zadania i kanały komunikacyjne) Akcje wykonywane przez task: read / write (operacja odczytu i zapisu na pami ę ci lokalnej)

19 Tasks and Channels (Foster D&BPP) (zadania i kanały komunikacyjne) send (wysłanie komunikatu do innego taska) operacja send odbywa si ę poprzez kanał komunikacyjny, od wyj ś cia portu komunikacyjnego jednego tasku do wej ś cia portu komunikacyjnego drugiego tasku zakładamy że operacja send jest asynchronicza – ko ń czy si ę natychmiast – proces nie czeka na potwierdzenie odbioru przesłanej wiadomo ś ci

20 Tasks and Channels (Foster D&BPP) (zadania i kanały komunikacyjne)

21 receive (odebranie komunikatu od innego taska)

22 Tasks and Channels (Foster D&BPP) (zadania i kanały komunikacyjne) create (stworzenie nowego taska)

23 Modele programowania terminate (zakończenie swojego działania)

24 Modele programowania taski mog ą by ć mapowane na fizyczne procesory w różny sposób nie wpływa to na semantyk ę programu na przykład każdy task może zosta ć przypisany do oddzielnego procesora, lub wiele tasków może zosta ć przypisanych do wielu procesorów zakładamy że jeden task nie może być przypisany do wielu procesorów

25 Modele programowania Message Passing Tym si ę różni od modelu Tasks and Channels że nie pozwala na tworzenie i usuwanie nowych tasków. Przykład: standard MPI (Message Passing Interface) najbardziej powszechne implementacje standardu: mpich, lam standard PVM (Parallel Virtual Machine)

26 Modele programowania Data parallelism Te same operacje wykonywane s ą na wielu strukturach danych Przykład: High Performance Fortran

27 Modele programowania Shared memory programming model Taski pracuj ą na współdzielonej pami ę ci konieczne s ą mechanizmy takie jak semafory w celu zapewnienia synchronizacji dost ę pu wielu tasków do tego samego obszaru pami ę ci

28 Wzajemne wykluczanie Założenia modelowe: System rozproszony składa się z N węzłów (1..N). Jeden węzeł odpowiada jednemu procesowi. Komunikaty wysyłane od jednego procesu do innego dochodzą w tym samym porządku. Każdy komunikat dochodzi w skończonym czasie. Sieć jest w pełni połączona, każdy proces może wysłać bezpośrednio komunikat do każdego innego.

29 Wzajemne wykluczanie Niech Si oznacza zbiór procesów udzielających pozwolenia procesowi i. Wymagane własności algorytmów wzajemnego wykluczania: dla każdej pary indeksów i, j zbiory Si oraz Sj mają elementy wspólne.

30 Wzajemne wykluczanie Pożądane własności algorytmów wzajemnego wykluczania: Zbiory Si,..., SN są równoliczne. Każdy proces j należy do takiej samej liczby zbiorów Si. Każdy proces i należy do Si.

31 Algorytm scentralizowany W systemie istnieje jeden koordynator, tylko on może wyrazić zgodę na wejście procesu do sekcji krytycznej Proces wysyła do koordynatora komunikat z żądaniem Kiedy otrzyma od niego komunikat z odpowiedzią, wtedy może wejść do sekcji Po wyjściu wysyła do koordynatora komunikat zwalniający.

32 Algorytm scentralizowany Koordynator po otrzymaniu żądania sprawdza stan sekcji Jeśli sekcja jest wolna, to wysyła zgodę, np. wstawia żądanie do kolejki Po otrzymaniu komunikatu zwalniającego usuwa z kolejki jeden z komunikatów i wysyła zgodę do czekającego procesu. Jeśli koordynator ulegnie awarii, to jego miejsce musi zająć inny proces.

33 Proces 1 prosi koordynatora o pozwolenie na wejście do sekcji krytycznej. Uzyskuje pozwolenie.

34 Proces 2 prosi o pozwolenie na wejście do tej samej sekcji krytycznej. Koordynator nie odpowiada

35 Kiedy proces 1 opuszcza sekcję krytyczną, zawiadamia o tym koordynatora, a ten wówczas wysyła procesowi 2 pozwolenie na wejście do sekcji.

36 Algorytmy wzajemnego wykluczania W przypadku krążącego żetonu, jeśli każdy proces stale chce wejść do sekcji krytycznej, to każde przesunięcie żetonu skutkuje jednym wejściem do sekcji i jednym wyjściem W przypadku odwrotnym - żaden proces nie chce wejść - żeton może krążyć w pierścieniu bardzo długo nim ktokolwiek wejdzie (liczba komunikatów przypadających na jedno wejście jest nieograniczona)

37 algorytmkomunikat y we/wy opóźnienie pomiędzy we/wy problemy zcentralizowany32Możliwa awaria koordynatora rozproszony2(n-1) Możliwa awaria każdego procesu przekazywanie żetonu 1 do O do (n-1)Możliwe duże opóźnienie

38 Zegary logiczne jednym z wielu problemów pojawiających się w systemach rozproszonych jest rozbieżność wartości zegarów na poszczególnych węzłach-maszynach każda maszyna może posiadać zegar chodzący z inną prędkością, zegary mogą się śpieszyć bądź spóźniać

39 Zegary logiczne wiele algorytmów i aplikacji w systemach liczących posługuje się pojęciem czasu i zegarem (np. make ) w systemie scentralizowanym nie ma problemów z porządkowaniem zdarzeń w czasie w systemie rozproszonym utrzymywanie pojęcia globalnego czasu jest zadaniem niebanalnym, gdyż każdy procesor posługuje się własnym lokalnym zegarem.

40 Zegary logiczne W wielu zastosowaniach wystarczy wzajemna spójność różnych zegarów, ich zgodność z czasem rzeczywistych jest nieistotna Procesy nie muszą się zgodzić co do dokładnej wartości zegara, wystarczy im możliwość porządkowania zdarzeń w czasie

41 Zegary logiczne W systemie rozproszonym utrzymywanie pojęcia globalnego czasu jest zadaniem niebanalnym, gdyż każdy procesor posługuje się własnym lokalnym zegarem W ogólności, czas wirtualny zależy tylko od zdarzeń zachodzących w systemie, a nie od wartości zegarów fizycznych

42 Zegary logiczne istnieje bardzo dużo propozycji zmierzających do synchronizacji zegarów algorytm Cristiana algorytm synchronizacji zegarów Berkeley, protokoły NTP (ang. Network Time Protocol) DTS (ang. Distributed Time Service)

43

44 Algorytm Cristiana Algorytm ten jest przeznaczenie głównie dla środowisk rozproszonych w których jeden z węzłów jest serwerm czasu (ang. time server ) W algorytmie tym zakłada się, że każda maszyna co pewien określony czas wysyła do serwera czasu zapytanie o podanie aktualnego czasu Po otrzymaniu tego zapytania, serwer odpowiada prędko jak tylko może i przesyła aktualny czas UTC

45 Algorytm Cristiana nadawca z kolei, po otrzymaniu informacji o czasie od serwera, zanim ustawi wartość swojego zegara, musi uwzględnić parę kwestii zwykłe przepisanie czasu nadesłanego z serwera mogłoby spowodować, że czas płynie wstecz

46 Algorytm Cristiana Może się tak zdarzyć jeżeli zegar nadawcy wymierza czas zbyt szybko istnieje pewien koszt w postaci czasu komunikacji. aby rozwiązać ten problem nadawca może np. zapamiętać przedział czasowy zawarty pomiędzy momentem T0, w którym wysłano zapytanie do serwera i momentem T1, kiedy przyszła odpowiedź z serwera

47 Algorytm Cristiana W najprostszym przypadku przyjmuje się, że połowa tego przedziału jest czasem komunikacji od serwera do klienta (( T1 – T0 ) / 2 ) Jeśli dodatkowo znamy czas (T2 ) przetwarzania zapytania przez serwer, możemy poprawić oszacowanie czasu przez nadawcę i jako czas przesyłania komunikatu bierzemy wtedy połowę wartości ( T1 - T0 - T2 )

48

49 Zegary logiczne istotą zegarów logicznych jest żądanie zapewnienia, by każde zdarzenie w systemie posiadało własną, unikalną etykietę czasową w szczególności by zdarzenie wysłania wiadomości miało zawsze etykietę czasową mniejszą niż zdarzenie odebrania wiadomości (by nie można było odbierać wiadomości z przyszłości) spełnienie tych wymagań jest warunkiem koniecznym poprawności niektórych algorytmów (na przykład wielu algorytmów wzajemnego wykluczania

50 Zegary logiczne Pojęcie zegarów logicznych pochodzi od Lamporta Podczas synchronizowania zegarów korzysta się z relacji uprzedniości (ang. happened-before), która może zachodzić dla dwóch zdarzeń Zapisuje się ją jako: a->b.

51 Relacja Lamporta Relację tę można zaobserwować w dwóch sytuacjach: Jeśli a i b są zdarzeniami, które zaszły w ramach tego samego procesu i a wystąpiło przed b, to a->b. Jeśli a jest zdarzeniem wysłania komunikatu przez jeden proces, a b zdarzeniem odebrania tego komunikatu przez inny proces, to a->b.

52 Relacja ta jest relacją przechodnią. Jeśli nie zachodzi a->b ani nie zachodzi b->a, to mówimy, że zdarzenia a i b są współbieżne nic nie można powiedzieć o ich wzajemnym uporządkowaniu w czasie

53 Jest nam potrzebny taki mechanizm mierzenia czasu, że dla każdego zdarzenia a możemy przypisać mu czas zajścia C(a), co do którego zgodzą się wszystkie procesy (można go implementować jako licznik) Musi zachodzić: a->b, to C(a)->C(b)

54 Implementacja: 1. W każdym procesie P i definiujemy zegar logiczny T i. 2. Zegar można zaimplementować w postaci prostego licznika, zwiększanego między wystąpieniami każdych dwóch kolejnych zdarzeń w procesie. 3. Jeśli a i b zaszły w procesie P i i a->b, to C i (a)->C i (b). 4. Jeśli a jest zdarzeniem wysłania komunikatu m przez proces P i, to m niesie stempel T m = C i (a). 5. P j po odebraniu m w chwili C j uaktualnia swój czas: C j ' = max(C j,T m ) + 1.

55 Relacja całkowitego porządku: 1. C i (a) < C j (b) lub 2. C i (a) = C j (b) i P i < P j

56 (a) zegary bez synchronizacji, (b) synchronizacja zegarów wg Lamporta

57


Pobierz ppt "Programowanie współbieżne i rozproszone. Programowanie równoległe i rozproszone dotyczy tworzenia współpracuj ą cych ze sob ą procesów współbieżnych wykonywanych."

Podobne prezentacje


Reklamy Google