Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Wstęp do programowania Wykład 7 Programowanie współbieżne, równoległe i rozproszone.

Podobne prezentacje


Prezentacja na temat: "Wstęp do programowania Wykład 7 Programowanie współbieżne, równoległe i rozproszone."— Zapis prezentacji:

1 Wstęp do programowania Wykład 7 Programowanie współbieżne, równoległe i rozproszone

2 Definicje Proces – wykonujący się program wraz z zasobami przydzielonymi mu przez system operacyjny. Wątek – sekwencja działań, która może wykonywać się jednocześnie z innymi sekwencjami działań w kontekście jednego procesu

3 Przetwarzanie równoległe, współbieżne i rozproszone Przetwarzanie równoległe (ang. parallel computing) Wykonywanie dwóch lub więcej procesów jednocześnie. Przetwarzanie współbieżne (ang. concurrent computing) Wykonywanie dwóch lub więcej procesów w taki sposób, że każdy z nich rozpoczyna się zanim skończą się pozostałe. Przetwarzanie rozproszone (ang. distributed computing) Wykonywanie dwóch lub więcej procesów jednocześnie na kilku komputerach połączonych siecią.

4 Superkomputer IBM Blue Gene P (2007) 36*10 12 FLOPS FLOPS – FLoating point Operations Per Second

5 Superkomputer Sequoia (2012) 17.17*10 15 FLOPS

6 Superkomputer Tianhe-2 (2013) *10 15 FLOPS Pamięć operacyjna: 1.34*10 6 gigabajtów $

7 Klaster Ariel IV firmy Sun

8 Gęstość mocy

9 Procesor wielordzeniowy

10 Zasób dzielony Zasób dzielony – zasób, z którego korzysta kilka procesów (wątków). Problem powstaje wtedy jeśli tylko jeden proces (ograniczona liczba procesów) może w danej chwili korzystać z zasobu. W codziennym życiu: łazienka, telefon, wózki w hipermarkecie.

11 Sekcja krytyczna Sekcja krytyczna – fragment procesu, w którym korzysta on z zasobu dzielonego. Jeśli jeden z procesów wykonuje swoją sekcję krytyczną, inne procesy, które chcą wykonywać swoje sekcje krytyczne muszą czekać.

12 Przykład int x; proces1; proces2; int i,y; int i,y; { { for (i=1; i<=10; i++) for (i=1; i<=10;i++) { { y=x; y=x; y++; y++; x=y; x=y; } }

13 Problem wzajemnego wykluczania Zsynchronizować n procesów, z których każdy na przemian zajmuje się własnymi sprawami i wykonuje sekcję krytyczną, w taki sposób, aby żadne dwa procesy nie wykonywały swoich sekcji krytycznych w tym samym czasie. proces_i; obudź_sie; wstań; zjedz_śniadanie ……. umyj_sięsekcja krytyczna

14 Schemat procesu proces; //deklaracje { while (true) { własne sprawy; protokół wstępny; sekcja krytyczna; protokół końcowy; }

15 Poprawność programów współbieżnych Bezpieczeństwo Program współbieżny jest bezpieczny jeśli nie doprowadza do niepożądanego stanu. W przypadku problemu wzajemnego wykluczania własność bezpieczeństwa oznacza, że nigdy dwa procesy nie znajdą się jednocześnie w swoich sekcjach krytycznych. Żywotność Program współbieżny jest żywotny jeśli zapewnia, że każde pożadane zdarzenie w końcu zajdzie. W przypadku problemu wzajemnego wykluczania własność żywotności oznacza, że jeśli jakiś proces czeka na wejście do swojej sekcji krytycznej, to w końcu do niej wejdzie.

16 Blokada (zakleszczenie) Zbiór procesów znajduje się w stanie blokady, jeśli każdy z tych procesów jest wstrzymany w oczekiwaniu na zdarzenie, które może być spowodowane tylko przez jakiś inny proces z tego zbioru. Przykład: osoby A i B potrzebują noża i widelca. Na stole znajduje się jeden nóż i jeden widelec. Jeśli osoba A posiada widelec i czeka aż osoba B zwróci nóż, a osoba B posiada nóż i czeka aż osoba A zwróci widelec, to mamy blokadę.

17 Problem producentów i konsumentów … … … P1P1 P3P3 PnPn P2P2 KmKm K3K3 K2K2 K1K1 Producenci Bufor Konsumenci Producenci produkują porcje informacji i kładą je na bufor. Konsumenci pobierają porcje z bufora. Porcje powinny być pobierane w kolejności ich produkcji. Jeśli bufor jest pełny, producent musi czekać. Jeśli bufor jest pusty, konsument musi czekać.

18 Problem czytelników i pisarzy Należy zsynchronizować dwie grupy procesów reprezentujących czytelników i pisarzy konkurujących o dostęp do wspólnej czytelni. Proces czytelnik co jakiś czas odczytuje informację zgromadzoną w czytelni i może to robić z innymi czytelnikami. Proces pisarz co jakiś czas zapisuje nową informację w czytelni i musi wówczas przebywać w czytelni sam. Zakładamy, że operacje czytania i pisania trwają skończoną ilość czasu.

19 Problem pięciu filozofów F1F1 F2F2 F5F5 F4F4 F3F3

20 Algorytm piekarniany (Lampart) Proces, który chce wejść do swojej sekcji krytycznej, pobiera numerek. Następnie czeka aż wszystkie procesy, które pobrały wcześniejsze numerki zrealizują swoje sekcje krytyczne. Wada: aktywne czekanie!

21 Semafory (Dijkstra) Semafor -- zmienna całkowita przyjmująca wartości nieujemne. Na semaforze S określone są dwie atomowe operacje: wait(S) (opuszczenie semafora) i signal(S) (podniesienie semafora) wait(S): jeśli S>0, to S=S-1 wpp wstrzymaj działanie procesu wykonującego tę operację. signal(S): jeśli są procesy wstrzymane w wyniku operacji opuszczania, wznów jeden z nich. W przeciwnym przypadku S++.

22 Semafory i wzajemne wykluczanie semaphore S=1; proces(int i) { while(true) { własne sprawy; wait(S); sekcja krytyczna; signal(S); } }

23 Spotkanie (rendezvous) Wątek 1: Wątek 2: A; B; C;D; (A, B, C, D – instrukcje) Chcemy, aby A wykonała się przed D oraz C przed B. semaphore jest1=0, jest2=0; Wątek 1: Wątek 2: A ; C; signal(jest1); signal(jest2); wait(jest 2); wait(jest1); B; D


Pobierz ppt "Wstęp do programowania Wykład 7 Programowanie współbieżne, równoległe i rozproszone."

Podobne prezentacje


Reklamy Google