Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
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*1012 FLOPS FLOPS – FLoating point Operations Per Second
5
Superkomputer Sequoia (2012)
17.17*1015 FLOPS
6
Superkomputer Tianhe-2 (2013)
33.86 *1015 FLOPS Pamięć operacyjna: 1.34*106 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
… 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 P1 P2 P3 Pn Producenci … Bufor … K1 K2 Km K3 Konsumenci
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
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
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.