Programowanie Równoległe i Rozproszone

Wielkość: px
Rozpocząć pokaz od strony:

Download "Programowanie Równoległe i Rozproszone"

Transkrypt

1 Programowanie Równoległe i Rozproszone Lucjan Stapp Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska (l.stapp@mini.pw.edu.pl) 1/75 PRiR Trzy podstawowe zadania programów równoległych to: 1. Jednoczesna praca procesorów (równoległość wykonania) 2. Wymiana informacji (komunikacja między procesowa) 3. Wymuszenie na procesorach ustalenia jednej wartości dla zmiennej albo czasu rozpoczęcia i zakończenia (synchronizacja) 2/75 PRiR 1. Równoległość: Wybór między SIMD a MIMD 3/75 PRiR Przygotował: Lucjan Stapp 1

2 2. Komunikacja międzyprocesorowa (międzyprocesowa) Ani ludzie ani komputery nie mogą się komunikować bez ustalenia pewnego zbioru nazw. Architektura z pamięcią dzieloną vs multikomputery Problem komunikacji można rozwiązać na różne sposoby 1. architektura pamięci dzielonej szyny połączenie typu crossbar połączenie typu multistage 2. dla maszyn z pamięcią rozproszoną pierścienie drzewa binarne dwu-wymiarowe tablice procesorów hiperkostka (hypercube) Architektury te były prezentowane na pierwszym wykładzie 4/75 PRiR odnosi się do potrzeby ustalenia jednej wartości dla zmiennej przez dwa (lub więcej) procesory. Dwa podstawowe problemy to: 1. wzajemne wykluczanie 2. spójność pamięci Wzajemne wykluczanie(ang. mutual exclusion) zezwalanie dokładnie jednemu procesorowi na dostęp do danego miejsca w pamięci w tym samym czasie. 5/75 PRiR Przykład 1 Proc_1: I_11: x 1 Proc_2: I_21: x 2 Wartość początkowa : x=0 6/75 PRiR Przygotował: Lucjan Stapp 2

3 Przykład 1 cd Możliwe scenariusze wykonania: Time Proc_1 Proc_2 x 0 x 1 1 x 2 2 Time Proc_1 Proc_2 x 0 x 2 2 x 1 1 Stądmożliwewartościxto1lub2. 7/75 PRiR Przykład 2. Proc_1: y x+1; x y; z z + y; Proc_2: y x+1; x y; z z + y; Początkowe wartości : x=0, y=0, z=0 8/75 PRiR Przykład 2 cd. Możliwe scenariusze wykonania: Time Proc_1 Proc_2 x y z y x x y z z + y y x x y z z+y Time Proc_1 Proc_2 x y z y x y x x y x y z z+y z z+y Time Proc_1 Proc_2 x y z y x x y y x z z + y x y z z+y /75 PRiR Przygotował: Lucjan Stapp 3

4 Przykład 2 cd. Możliwe wartości końcowe: x y z /75 PRiR Wniosek: Wzajemne wykluczanie NIEwystarcza, aby zapewnić poprawne wykonanie programu równolegle wykonywanego. 11/75 PRiR Definicje Proces sekwencyjna część programu równolegle wykonywanego (równoległego), wykonywana na jednym procesorze. Liczba procesów może być większa niż liczba procesorów w systemie. (Rozwiązanie powyższego problemu zostanie podane w przyszłości). Sekcja krytyczna sposób na poprawną komunikację. Co najwyżej jeden proces może pracować w sekcji krytycznej, wykorzystując w tym samym czasie wspólne zasoby (np. zmienne) 12/75 PRiR Przygotował: Lucjan Stapp 4

5 Przykład 2. cd Proc_1: critical section y x+1; x y; z z + y; end of critical section Proc_2: critical section y x+1; x y; z z + y; end of critical section Początkowe wartości: x=0, y=0, z=0 13/75 PRiR Przykład 2. cd Możliwe scenariusze wykonania: Time Proc_1 Proc_2 x y z y x x y z z + y y x x y z z+y Time Proc_1 Proc_2 x y z y x x y z z+y y x x y z z + y /75 PRiR Example 2 - cont. Jedyny możliwy wynik: x y z /75 PRiR Przygotował: Lucjan Stapp 5

6 Wniosek Komunikacja między procesami jest oparta na wzajemnym wykluczaniu się sekcji krytycznych 16/75 PRiR Pierwszy (podstawowy) schemat komunikacji Przykład 4 - komunikacja Proc_1: cycle instrukcja_1_a; wysyłanie informacji; instrukcja_1_b; end_of_cycle Proc_2: cycle instrukcja_2_a; odbieranie informacji; instrukcja_2_b; end_of_cycle 17/75 PRiR Pierwszy schemat komunikacji Example 4a(Producent - konsument) Proc_1: cycle instruction_1_a; critical_section wysyłanie informacji do pustego bufora; (zapis do pustego bufora); end_of_cycle; Proc_2: cycle instruction_2_a; critical_section odbieranie informacji z niepustego bufora (czytanie z bufora); end_of_cycle; 18/75 PRiR Przygotował: Lucjan Stapp 6

7 Drugi (podstawowy) schemat komunikacji Drugi podstawowy schemat wykorzystywany do komunikacji jest używany głównie w systemach rozproszonych handshaking (ang. uścisk dłoni); 19/75 PRiR Cycle Instruction_1_A; critical_section; wysłanie sygnału; Drugi schemat komunikacji critical_section; czekanie na odpowiedź; critical_section; pisanie (wysyłanie) danych; critical_section; czekanie na end_signal; end_of_cycle; Cycle Instruction_2_A; critical_section; czekanie na sygnał; wysłanie odpowiedzi; wait; critical_section; odbieranie danych; wysłanie end_signal; end_of_cycle; 20/75 PRiR Proc_1: cycle instruction_1_a; critical_section czekaj_dopóki_bufor_2_jest_pusty; critical_section czytaj_z_bufor_2; Przykład 5 Proc_2: cycle instruction_2_a; critical_section czekaj_dopóki_bufor_1_jest_pusty; critical_section czytaj_z_bufor_1; end_of_critical_section instruction_1_b; instruction_2_b; critical_section czekaj_dopóki_bufor_1_jest_pełny; pisz_do_bufor_1; end_of_cycle; critical_section czekaj_dopóki_bufor_2_jest_pełny; pisz_do_bufor_2; end_of_cycle; 21/75 PRiR Przygotował: Lucjan Stapp 7

8 Deadlock W powyższej sytuacji oba procesy będą czekały w nieskończoność na dane: Proc_1 na dane z bufora_2 Proc_2 na dane z bufora_1 Powyższa sytuacja to tzw. zakleszczenie(ang. deadlock). Zakleszczenie to ZAWSZEkrytyczny błąd programisty. 22/75 PRiR Teraz zademonstrujemy narzędzia do zarządzania sekcją krytyczną. Wymagania stawiane rozwiązaniom: 1. Symetryczność i równość procesów. 2. Niezależne od prędkości procesów. 3. Skończony czas rozwiązywania konfliktów. 4. Niezależne czynności poza sekcją krytyczną. 23/75 PRiR SYNCHRONIZACJA PRZEZ ZMIENNĄ CAŁKOWITĄ (LICZNIK) intx= 0; /* x = 0 gdy nie ma żadnego procesu w sekcji krytycznej x = 1 gdy jest jakiś proces w sekcji krytycznej */ process:: P; while(1) instructions_a; while (!x) x++; if ( x<> 1 ) x--; loop; } } /* teraz sekcja krytyczna */ /* po sekcji krytycznej */ x --; } /*while*/ } /* P */ 24/75 PRiR Przygotował: Lucjan Stapp 8

9 SYNCHRONIZACJA PRZEZ ZMIENNĄ CAŁKOWITĄ (LICZNIK) Powyższe rozwiązanie jest błędne: Z dwoma procesami pracującymi krok po kroku, x może przyjąć wartość 2. Żaden proces nie wejdzie do sekcji krytycznej. 25/75 PRiR SYNCHRONIZACJA PRZEZ ZMIENNE LOKALNE int x:= 0; /* x = 0 gdy nie ma żadnego procesu w sekcji krytycznej x = 1 gdy jest jakiś proces w sekcji krytycznej */ process :: P; int y = 1; while(1) instructions_a; x y; /* operacja atomowa zamiana wartości */ while (y) x y; /* teraz sekcja krytyczna */ /* po sekcji krytycznej */ x y; }/*while*/ }/* P */ Wniosek: aktywne czekanie(busy waiting) 26/75 PRiR SYNCHRONIZACJA PRZEZ (Semafory Dijkstry) Semafor:specjalna zmienna skojarzona z sekcją krytyczną. Są dwie atomowe (niepodzielne)operacje na semaforze s: P(s): opuść semafor s (=czekaj na semaforze s) Wait(s) V(s): podnieś semafor s (= sygnalizuj na semaforze s) Signal(s) 27/75 PRiR Przygotował: Lucjan Stapp 9

10 Zarys kodu semafora:: class semaphore:: public s; ints; SET qs; /* zbiór czekających procesów*/ void Wait(s) if (s=< 0) dodaj_proces_do_qs; else s--; void Signal(s) if (not_empty(qs) ) aktywuj_jakiś_proces_z_qs; else s++; } } 28/75 PRiR Są 3 stany semafora: 1. s > 0 2. s = 0 i qs jest pusty 3. s = 0 i qs nie jest pusty. Wait(s): s = 0 Tak Nie uśpij proces w qs s-- 29/75 PRiR Signal(s): s = 0 Tak Nie qs jest pusty s++ Tak s++ Nie aktywuj jakiś proces z qs Ponieważ stan s> 0 i qs niepusta jest niemożliwy upraszczamy Signal(s) (zaznaczona część powyższej ilustracji). 30/75 PRiR Przygotował: Lucjan Stapp 10

11 Semafory spełniają nasze wymagania. 1. Symetryczność i równość procesów. 2. Niezależne od prędkości procesów. 3. Skończony czas rozwiązywania konfliktów. 4. Niezależne od czynności poza sekcją krytyczną. 31/75 PRiR Dostęp do sekcji krytycznej - typowy schemat semaphore w = 1; process:: P; while(1) instruction_a; Wait(w); /* opuść semafor w*/ /* wejście do sekcji krytycznej*/ /* sekcja krytyczna*/ /*wyjście z sekcji krytycznej */ Signal(w); /*podnieś semafor w*/ } /*while*/ } /* P */; 32/75 PRiR Producent -konsument z jednoelementowym buforem 33/75 PRiR Przygotował: Lucjan Stapp 11

12 buffer buf; semaphore full, empty = 0, 1; process producer; Product S; Product production()...;} while(1) S= production (); Wait(empty); /*czekanie na pusty bufor*/ buf=s; Signal(full); /* sygnalizuj, że coś jest w buforze*/ } process consumer; Void consumption( product S)...;} product S; while(1) Wait(full); /* czekaj aż coś będzie w buforze*/ S=buf; Signal(empty); /*sygnalizuj, że bufor jest pusty*/ consumption(s); } } 34/75 PRiR Dlaczego potrzeba 2 semaforów(full oraz empty)? Czy zawszefull +empty == 1? 35/75 PRiR Schemat producent - konsument: jednoelementowy bufor, m producentów, n konsumentów Kod dla producenta i konsumenta nie ulegazmianie. 36/75 PRiR Przygotował: Lucjan Stapp 12

13 Schemat producent - konsument każdy proces jest jednocześnie producentem i konsumentem 37/75 PRiR buffer buf1, buf2; semaphore full1,empty1,full2,empty2 = 0,1,0,1; /*dla każdego bufora potrzebujemy dwóch semaforów*/ process::p1; product S,C; while(1) /* produkcja dobuf2 */ S= production(); Wait(empty2); buf2 = S; Signal(full2); /*pobranie zbuf1 */ Wait(full1); C=buf1; Signal(empty1); Consumption(C); process::p2; Product S,C; while(1) /* produkcjado buf1 */ S= production(); Wait(empty1); buf1 =S; Signal(full1); /* pobranie zbuf2 */ Wait(full2); C=buf2 ; Signal(empty2); Consumption(C); 38/75 PRiR Schemat producent konsument z nieskończonym buforem 39/75 PRiR Przygotował: Lucjan Stapp 13

14 buffer buf[ ]; int first_free = 1; /* pierwsza pusta komórka w buforze */ intlast_occ = 1; /* ostatnia komórka w buforze z nieprzeczytanymi informacjami */ semaphore full, wp, wc = 0,1,1; /* fulldo sprawdzenia czy czytanie jest możliwe; fulljest równe liczbie pełnych (nieprzeczytanych) komórek w buforze; bufor jest nieskończony, dlatego dodanie do bufora jest zawsze możliwe */ /* wp dla wzajemnego wykluczania się producentów */ /* wcdla wzajemnego wykluczania się konsumentów */ 40/75 PRiR process :: producer; product S; while(1) S= production(); Wait(wp); /* opuść semafor wp, aby zapewnić dostęp do bufora na wyłączność */ buf[first_free] = S; /* wstaw produkt na pierwsze wolne miejsce w buforze*/ first_free ++ ; Signal(full); /* podnieś semafor wp, aby udostępnić dostęp innym producentom do bufora */ Signal(wp); process :: consumer; product S; while(1) Wait(full); /* konsumpcja jest możliwa tylko gdy coś jest w buforze*/ Wait(wc); /* opuść semafor wc, aby uzyskać dostęp do bufora na wyłączność */ S=buf[last_occ]; last_occ++; Signal(wc); /* podnieśsemaforwcby udostępnić innym konsumentom dostęp do bufora*/ consumption(s); 41/75 PRiR BINARNE Binarny semafor (ang. binary semaphore) ma tylko 2 wartości: 0 i 1. Zamiast operacji Wait i Signal używamy analogicznych operacji binarnych: BWait i BSignal. 42/75 PRiR Przygotował: Lucjan Stapp 14

15 BINARNE Producent konsument z nieskończonym buforem i semaforami binarnymi Zamiast semafora full powinno się użyć: zmienną całkowitą m = liczba pełnych komórek w buforze binarny semafor bfull binarny semafor wm pilnujący dostępu do zmiennej m 43/75 PRiR BINARNE buffer buf[ ] ; intfirst_free= 1; /* pierwsza wolna komórka w buforze*/ intlast_occ = 1; /* ostatnia komórka z nieprzeczytanymi informacjami*/ binary semaphore bfull, wp, wc, wm = 0,1,1,1; /* wm -semafor dostępu do zmiennej m*/ intm = 0; /* liczba wypełnionych komórek*/ 44/75 PRiR process :: producer; product S; while(1) S= production(); BWait(wp); buf[first_free] = S; first_free ++ ; BSignal(wp); /*poniższa sekwencja instrukcji jest użyta zamiast Signal(full)z poprzedniego przykładu*/ BWait(wm); m++; if (m ==1) BSignal(bfull); Bsignal(wm); BINARNE process :: consumer; product S; while(1) Bwait(bfull); /* konsumpcja jest możliwa gdy coś jest w buforze*/ Bwait(wc); S=buf[last_occ]; last_occ++; BSignal(wc); BWait(wm); m--; if (m >0) Bsignal (bfull); BSignal(wm); /* jeżeli bufor jest niepusty, musimy otworzyć semafor binarny bfull*/ consumption(s); 45/75 PRiR Przygotował: Lucjan Stapp 15

16 BINARNE Uwaga: Celem powyższego przykładu jest pokazanie, jak zastąpić semafor zwykły semaforem binarnym; czasami może to prowadzić do dodatkowych komplikacji; nie będą one omawiane na niniejszym wykładzie. 46/75 PRiR Producent konsument ze skończonym buforem 47/75 PRiR Producent - konsument ze skończonym buforem Nowy semafor emptypowinien zostać dodany do poprzedniego rozwiązania. Umieszczenie elementu w buforze jest możliwe, gdy empty(liczba wolnych komórek w buforze) jest większa niż 0. W przeciwnym wypadku producent powinien czekać (w zbiorze na semaforze empty). 48/75 PRiR Przygotował: Lucjan Stapp 16

17 #define N =??? /*wielkość bufora*/ buffer buf[ ] ; int first_free = 1; /* pierwsza wolna komórka w buforze*/ intlast_occ = 1; /* ostatnia komórka w buforze z nieprzeczytaną informacją*/ semaphore full, empty = 0,N; binary semaphore wp, wc= 1,1; 49/75 PRiR process :: producer; product S; while(1) S= production(); Wait(empty); BWait(wp); buf[first_free] = S; first_free=(first_free + 1)%N; BSignal(wp); Signal(full); process :: consumer; product S; while(1) Wait(full); BWait(wc); S=buf[last_occ]; last_occ=(last_occ+1)%n; BSignal(wc); Signal(empty); consumption(s); 50/75 PRiR Problem czytelników i pisarzy Readers writers problem Opis problemu: Jest n czytelników, m pisarzy i jedna wspólna strona; Każdy czytelnik czyta informacje ze strony, każdy pisarz może pisać na stronie; Wielu czytelników może naraz czytać dane ze strony; Pisarz zajmuje stronę na wyłączność(żaden inny proces pisarz czy czytelnik -nie może używać w tym czasie strony); Nie ma ograniczeńczasowych na czytanie i pisanie, ale operacje te są skończone. 51/75 PRiR Przygotował: Lucjan Stapp 17

18 Schemat: czytelnicy i pisarze 52/75 PRiR Readers writers problem Rozwiązanie: Pisarz: Robi coś; Chce pisać; Pisze; Informuje, że skończył pisać; Czytelnik: Robi coś; Chce czytać; Czyta; Informuje, że skończył czytać; 53/75 PRiR intno_of_r; /* liczba procesów - czytelników aktualnie czytających */ binarysemaphore sp, w = 1, 1; /* w służy do synchronizacji dostępu do no_of_r, sp służy do synchronizacji dostępu do strony */ 54/75 PRiR Przygotował: Lucjan Stapp 18

19 process :: reader; while(1) BWait(w); no_of_r ++; if (no_of_ r == 1) BWait(sp); /* pierwszy czytelnik opuszcza sp */ BSignal(w); /* czytanie ze strony*/ BWait(w); no_of_r--; if (no_of_r== 0) BSignal(sp); /* ostatni czytelnik podnosi semafor sp*/ BSignal(w); process :: writer; while(1) BWait(sp); /* każdy piszący proces musi opuścić semafor sp*/ /* pisanie na stronie */ BSignal(sp); 55/75 PRiR Czytelnicy - pisarze z priorytetem dla pisarzy. Dodajemy dwa dodatkowe warunki do zadania: 1. Pisarze mają priorytet, jeśli jakikolwiek pisarz chcepisać, żaden czytelnik nie może zacząć czytać. 2. Nie ma priorytetu pomiędzy czytelnikami. 56/75 PRiR int no_of_r,no_of_w = 0,0; /*no_of_r- liczba procesów aktualnie czytających no_of_w liczba procesów, które chca pisać*/ binary semaphore sp,sr= 1, 1; binary semaphore w1, w2, w3= 1, 1,1; /*w1 do dostępu do no_of_r w2 do dostępu do no_of_w w3 dodatkowa śluza dla czytelników sp podobnie jak w poprzednim przykładzie sr dla priorytetu pisarzy */ 57/75 PRiR Przygotował: Lucjan Stapp 19

20 process :: reader; while(1) BWait(w3); BWait(sr); BWait(w1); no_of_r++; if (no_of_r == 1) BWait(sp); BSignal(w1); BSignal(sr); BSignal(w3); /* czytanie */ BWait(w1); no_of_r--; if ( no_of_r == 0) BSignal(sp); BSignal(w1); process :: writer; ; while(1) BWait(w2); no_of_w++; if (no_of_w== 1 ) BWait(sr); BSignal(w2); BWait(sp); /* pisanie */ BSignal(sp); BWait(w2); no_of_w--; if (no_of_w==0) BSignal(sr); BSignal(w2); 58/75 PRiR Modyfikacje semaforów Rozszerzone operacje na semaforach Jednoczesne operacje na semaforach (ang. Concurrent semaphore operations) (Dijkstra) DWait(s 1,s 2,...,s i,...,s n ); Czekaj aż wszystkie s i, s i >0 (i=1,...,n); for (i=1;i<=n;i++) s i = s i -1; DSignal(s 1,s 2,...,s i,...,s n ); for (i=1;i<=n;i++) s i = s i +1; 59/75 PRiR UOGÓLNIONE Modyfikacje semaforów Rozszerzone operacje na semaforach Uogólnione operacje na semaforach Wartość semafora jest zmieniana o wartość całkowitą n. NWait(s,n); Czekaj ażs >= n; s=s-n; NSignal(s,n); s = s+n; 60/75 PRiR Przygotował: Lucjan Stapp 20

21 UOGÓLNIONE Modyfikacje semaforów Rozszerzone operacje na semaforach Uogólnione operacje na semaforach Priorytety w dostępie do zasobów Priorytety są realizowane na podstawie numeru procesu. Procesy z mniejszymi numerami mają wyższy priorytet. 61/75 PRiR UOGÓLNIONE semaphore prior = 2*N-1; // N number of processes process:: Proc(name) /*1 <=name<=n */ int i; while(1) NWait(prior,N+name-1); /* prior == N-name żaden inny proces nie może wejść do sekcji krytycznej*/ /*zażądaj zasobu; */ /*critical section */ /*zwolnienie zasobu*/ NSignal(prior, name-1); /* prior = =N-1 żaden proces nie może wejść do sekcji krytycznej */ for(i=1;i<=n;i++) /* szukanie czekającego procesu z najwyższym priorytetem*/ NSignal(prior,1); /* prior == N+i-1 proces nr i wchodzi do sekcji krytycznej przerywamy pętlę */ } 62/75 PRiR UOGÓLNIONE Czytelnicy i pisarze bez priorytetu semaphore w = M; /* M > liczba czytelników*/ process :: reader; while(1) NWait(w,1); /*M procesów może zmniejszyć wo1*/ /* teraz czytanie */ NSignal(w,1); process :: writer; while(1) NWait(w,M); /*tylko jedenprocesmoże zmniejszyć w do 0*/ /* teraz pisanie */ NSignal(w,M); 63/75 PRiR Przygotował: Lucjan Stapp 21

22 UOGÓLNIONE Czytelnicy - pisarze z priorytetem dla pisarzy int no_of_r, no_of_w = 0,0; /*no_of_r liczba aktualnie czytających procesów no_of_w liczba czekających pisarzy*/ semaphore sp, r = M,M; /*M>= liczby możliwych czytelników sp podobnie jak we wcześniejszym przykładzie r dla realizowania priorytetu pisarzy */ 64/75 PRiR UOGÓLNIONE process :: reader; while(1) NWait(r,M); NWait(sp,1); NSignal(r,M-1); /*pisarz może zwiększyć semafor ro 1 */ NSignal(r,1); /*tu czytelnik czeka jeśli jakiś pisarz czeka */ /* czytanie */ NSignal(sp,1); process :: writer; while(1) NWait(r,1); NWait(sp,M); /* pisanie */ NSignal(sp,M); NSignal(r,1); 65/75 PRiR n filozofów je rybę 66/75 PRiR Przygotował: Lucjan Stapp 22

23 n filozofów je rybę Opis problemu: N filozofów siedzi dokoła okrągłego stołu, każdy na swoim miejscu. Jest n talerzy i n widelców na stole. Talerze znajdują się na wprost filozofów, widelce leżą pomiędzy talerzami. Czynności filozofa: Loop Myśli Chce podnieść swoje widelce Je rybę posługując się widelcami Odkłada widelce 67/75 PRiR n filozofów je rybę. Rozwiązanie problemu: Spróbuj podnieść swoje widelce Rozwiązanie 1. Czekaj aż lewy widelec będzie wolny Podnosi lewy widelec Czekaj aż prawy widelec będzie wolny Podnosi prawy widelec Złe rozwiązanie: deadlock 68/75 PRiR n filozofów je rybę. Rozwiązanie problemu: Spróbuj podnieść swoje widelce Rozwiązanie 2: Loop Czekaj aż lewy jest wolny Podnieś lewy IF prawy jest zajęty Odłóż lewy widelec ELSE Podnieś prawy widelec EXIT } } Złe rozwiązanie: busy waiting 69/75 PRiR Przygotował: Lucjan Stapp 23

24 n filozofów je rybę. Rozwiązanie problemu: Spróbuj podnieść swoje widelce Wniosek: Rozwiązanie 3: Czekaj, aż oba będą wolne Podnieś oba widelce w jednym ruchu 70/75 PRiR n filozofów je rybę. Rozwiązanie problemu: Odłóż widelce Odłóż widelce w dowolnej kolejności Obudźtego sąsiada, który czeka na widelec (jeśli jego drugi widelec jest wolny) czasami obu 71/75 PRiR Pierwsze rozwiązanie z semaforami - deadlock resource fork [N-1]; binary semaphore sem [N-1] = (N) 1; process Philosopher (name); while(1) /* myśli */ /* chce jeść */ BWait( sem[name] ); /* podnosi lewy widelec - fork[name] */ BWait( sem[(name+1) % N] ) ; /*podnosi prawy widelec -fork[(name+1) % N] */ /* jedzenie*/ BSignal( sem[name] ); /*odłożenie widelca fork[name] */ BSignal( sem[(name+1) % N] ) ; /* odłożenie widelca fork [(name+1) % N] */ 72/75 PRiR Przygotował: Lucjan Stapp 24

25 Prawidłowe rozwiązanie state[i] = 0 i-ty filozof myśli state[i] = 1 i-ty filozof chce jeść state[i] = 2 i-ty filozof je resource fork [N-1]; binary semaphore filsem[n-1] = 0; /*każdy filozof ma swój własny semafor do czekania */ intstate [N-1] = 0 ; Boolean semaphore w = 1; /* w do dostępu do tablicy stanów */ void test (k: integer); if ((state [(k-1)% N] <> 2 ) and ( state[k]== 1) and ( state[(k+1)%n] <> 2 )) state [k] = 2; BSignal(filsem[k]); 73/75 PRiR Prawidłowe rozwiązanie(cd.) process Philosopher (name); while(1) /* mysli */ /* chce jeść*/ BWait(w); state[name] = 1; test (name); BSignal(w); BWait( filsem[name] ); /* filsem[name] może zostać opuszczony, TYLKOjeśli został podniesiony w procedurze test(name) */ request (fork[name], fork [(name+1) % N] ) ; /* eating*/ release (fork[name], fork [(name+1) % N]) ; BWait(w); state[name] = 0; test ((name-1) % N); test ((name+1) % N); /* sprawdzamy obydwu sąsiadów czy czekają */ /* odpowiednie semafory są podnoszone */ BSignal(w); 74/75 PRiR To samo z semaforami uogólnionymi: semaphore sem[n] = 1; void philosopher(int name); while(1) /* myśli*/ DWait(sem[name], sem[(name+1) % N]); /*je*/ DSignal(sem[name], sem[(name+1) % N]); } } 75/75 PRiR Przygotował: Lucjan Stapp 25

WYKŁAD 4 SEMAPHORES (CIĄG DALSZY) Przykład 6 Problem czytelników i pisarzy. Wykład 4 strona 1/24

WYKŁAD 4 SEMAPHORES (CIĄG DALSZY) Przykład 6 Problem czytelników i pisarzy. Wykład 4 strona 1/24 WYKŁAD 4 SEMAPHORES (CIĄG DALSZY) Przykład 6 Problem czytelników i pisarzy Wykład 4 strona 1/24 Ilustracja 5. Schemat problemu czytelników i pisarzy Wykład 4 strona 2/24 Opis problemu: Jest n czytelników,

Bardziej szczegółowo

SOP2 - semafory. grudzień

SOP2 - semafory. grudzień SOP2 - semafory grudzień 2010 1 Plan prezentacji Problem producent-konsument Problem czytelników i pisarzy Problem jedzących filozofów grudzień 2010 2 Producent-konsument var bufor: array [0..n-1] of produkt;

Bardziej szczegółowo

Programowanie Równoległe i Rozproszone

Programowanie Równoległe i Rozproszone Programowanie Równoległe i Rozproszone Lucjan Stapp Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska (l.stapp@mini.pw.edu.pl) 1/30 PRiR MONITOR klasa z następującymi właściwościami: wszystkie

Bardziej szczegółowo

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

Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg. Wady mechanizmów niskopoziomowych Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg. Dekkera zależny od liczby synchronizowanych

Bardziej szczegółowo

Klasyczne problemy synchronizacji

Klasyczne problemy synchronizacji Klasyczne problemy synchronizacji Systemy Operacyjne 2 laboratorium Mateusz Hołenko 19 grudnia 2011 Plan zajęć 1 Synchronizacja 2 Problem producenta / konsumenta 3 Problem pięciu filozofów 4 Problem czytelników

Bardziej szczegółowo

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 4 Synchronizacja procesów (i wątków) cześć I Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Potrzeba synchronizacji Procesy wykonują się współbieżnie. Jeżeli w 100% są

Bardziej szczegółowo

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1 Przetwarzanie wielowątkowe przetwarzanie współbieżne Krzysztof Banaś Obliczenia równoległe 1 Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np. komputery macierzowe)

Bardziej szczegółowo

Klasyczne problemy współbieżności. Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów

Klasyczne problemy współbieżności. Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów Klasyczne problemy współbieżności Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów Wzajemne wykluczanie Zsynchronizować N procesów, z których każdy w nieskończonej

Bardziej szczegółowo

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

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne Synchronizacja procesów Przeplot Przeplot wątków współbieżnych Cel i metody synchronizacji procesów Problem sekcji krytycznej Semafory Blokady 3.1 3.3 Wątki współbieżne Cel i metody synchronizacji procesów

Bardziej szczegółowo

Wprowadzenie do programowania współbieżnego

Wprowadzenie do programowania współbieżnego Wprowadzenie do programowania współbieżnego Marcin Engel Instytut Informatyki Uniwersytet Warszawski Zamiast wstępu... Zamiast wstępu... Możliwość wykonywania wielu akcji jednocześnie może ułatwić tworzenie

Bardziej szczegółowo

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

Semafory. // G - globalna dla wszystkich. // Wada - aktywne oczekiwanie Test_and_Set(Li); exit when Li = 0; end loop sekcja_krytyczna(i); G := 0; Semafory Rozwiązanie problemu wzajemnego wykluczania Bez dodatkowego wsparcia sprzętowego i programowego Zakładamy jedynie, że zapis do i odczyt z pamięci wspólnej są operacjami atomowymi (czyli istnieje

Bardziej szczegółowo

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

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1 Programowanie równoległe i rozproszone Monitory i zmienne warunku Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności Problem producentów i konsumentów: jedna grupa procesów

Bardziej szczegółowo

Systemy operacyjne Wzajemne wykluczanie i synchronizacja

Systemy operacyjne Wzajemne wykluczanie i synchronizacja Systemy operacyjne [2] Wyścigi w systemie operacyjnym IPC - komunikacja między procesami (ang. InterProcess Communication) W SO wykonujące się procesy często dzielą obszary wspólnej pamięci, pliki lub

Bardziej szczegółowo

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację. J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 11.1 abstrakcyjne Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post

Bardziej szczegółowo

Przykład wystąpienia wyścigu. Systemy operacyjne / Wzajemne wykluczanie i synchronizacja str.4/33. Wyścigi w systemie operacyjnym.

Przykład wystąpienia wyścigu. Systemy operacyjne / Wzajemne wykluczanie i synchronizacja str.4/33. Wyścigi w systemie operacyjnym. Przykład wystąpienia wyścigu Systemy Operacyjne Wzajemne wykluczanie i synchronizacja dr inż. Tomasz Jordan Kruk T.Kruk@ia.pw.edu.pl Przykład void echo() chin = getchar(); chout = chin; putchar( chout

Bardziej szczegółowo

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację. J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Bardziej szczegółowo

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

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix) Mechanizmy komunikacji spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix) Język CSP Hoare (1978r.) Communicating Sequential Processes

Bardziej szczegółowo

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

Semafory. - aktywne oczekiwanie =GRGDWNRZ\PZVSDUFLHPVSU]WRZ\P 6SHFMDOQDLQVWUXNFMDPDV]\QRZDUHDOL]XMFDDWRPRZ\]DSLVL odczyt, np. Semafory 5R]ZL]DQLHSUREOHPXZ]DMHPQHJRZ\NOXF]DQLD %H]GRGDWNRZHJRZVSDUFLDVSU]WRZHJRLSURJUDPRZHJR =DNáDGDP\MHG\QLH*H]DSLVGRLRGF]\W]SDPLFLZVSyOQHMV RSHUDFMDPLDWRPRZ\PLF]\OLLVWQLHMHDUELWHUZVSyOQHMSDPLFL :UD]LHMHGQRF]HVQHJR]DSLVXLRGF]\WXUH]XOWDWHPEG]LH

Bardziej szczegółowo

Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska

Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów Iwona Kochańska Mechanizm synchronizacji wątków/procesów Wykorzystanie semaforów zapobiega niedozwolonemu wykonaniu

Bardziej szczegółowo

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd Synchronizacja procesów Proces producenta - zmodyfikowany (licznik) produkuj jednostka w nast_p while licznik =n do nic_nie_rob; bufor [we] := nast_p; we=we+1 mod n; licznik:=licznik+1; Zmodyfikowany proces

Bardziej szczegółowo

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne 1 Programowanie wspóªbie»ne wiczenia 2 semafory cz. 1 Zadanie 1: Producent i konsument z buforem cyklicznym type porcja; void produkuj(porcja &p); void konsumuj(porcja p); porcja bufor[n]; / bufor cykliczny

Bardziej szczegółowo

synchronizacji procesów

synchronizacji procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Definicja semafora Klasyfikacja semaforów Implementacja semaforów Zamki Zmienne warunkowe Klasyczne problemy synchronizacji (2) Semafory

Bardziej szczegółowo

Synchronizacja procesów i wątków

Synchronizacja procesów i wątków SOE Systemy Operacyjne Wykład 12 Synchronizacja procesów i wątków dr inŝ. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Problem sekcji krytycznej Podstawowy problem synchronizacji

Bardziej szczegółowo

Problemy czytelników i pisarzy oraz 5 ucztujących filozofów

Problemy czytelników i pisarzy oraz 5 ucztujących filozofów Problemy czytelników i pisarzy oraz 5 dr inż. Sławomir Samolej Katedra Informatyki i Automatyki Politechnika Rzeszowska Program przedmiotu oparto w części na materiałach opublikowanych na: http://wazniak.mimuw.edu.pl/

Bardziej szczegółowo

synchronizacji procesów

synchronizacji procesów Dariusz Wawrzyniak Definicja semafora Klasyfikacja semaforów Implementacja semaforów Zamki Zmienne warunkowe Klasyczne problemy synchronizacji Plan wykładu (2) Semafory Rodzaje semaforów (1) Semafor jest

Bardziej szczegółowo

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

J. Ułasiewicz Programowanie aplikacji współbieżnych 1 J. Ułasiewicz Programowanie aplikacji współbieżnych 1 1 1.1 Prosty przykład zakleszczenia (ang. Mexican standoff) W systemach w których wykonywane jest wiele współbieżnych procesów które operują na wspólnych

Bardziej szczegółowo

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 4 Synchronizacja procesów (i wątków) cześć I Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Procesy wykonują się współbieżnie Potrzeba synchronizacji Jeżeli w 100% są

Bardziej szczegółowo

Systemy operacyjne. Zajęcia 11. Monitory

Systemy operacyjne. Zajęcia 11. Monitory Systemy operacyjne. Zajęcia 11. Monitory 1. Monitor to mechanizm zamykający całą pamięć wspólną i synchronizację w pojedynczym module. 2. Monitor posiada całą pamięć wspólną jako część 'prywatną': dostępu

Bardziej szczegółowo

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

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Abstrakcja programowania współbieżnego Instrukcje atomowe i ich przeplot Istota synchronizacji Kryteria poprawności programów współbieżnych

Bardziej szczegółowo

Równoległość i współbieżność

Równoległość i współbieżność Równoległość i współbieżność Wykonanie sekwencyjne. Poszczególne akcje procesu są wykonywane jedna po drugiej. Dokładniej: kolejna akcja rozpoczyna się po całkowitym zakończeniu poprzedniej. Praca współbieżna

Bardziej szczegółowo

Równoległość i współbieżność

Równoległość i współbieżność Równoległość i współbieżność Wykonanie sekwencyjne. Poszczególne akcje procesu są wykonywane jedna po drugiej. Dokładniej: kolejna akcja rozpoczyna się po całkowitym zakończeniu poprzedniej. Praca współbieżna

Bardziej szczegółowo

Monitory. Jarosław Kuchta

Monitory. Jarosław Kuchta Monitory Jarosław Kuchta Co to jest monitor Monitor to zebrane w jednej konstrukcji programowej zmienne i operacje na tych zmiennych. Część tych operacji jest udostępnianych na zewnątrz monitora. Tylko

Bardziej szczegółowo

Programowanie współbieżne Wykład 4. Rafał Skinderowicz

Programowanie współbieżne Wykład 4. Rafał Skinderowicz Programowanie współbieżne Wykład 4 Rafał Skinderowicz Semafory Algorytmy synchronizacyjne omawiane poprzednio opierały się na atomowych instrukcjach odczytu i zapisu do pamięci, ewentualnie dodatkowych

Bardziej szczegółowo

Semafor ustaw_semafor(key_t nazwa, int start); Semafor usun_semafor(semafor sem); void signal(semafor sem); void wait(semafor sem);

Semafor ustaw_semafor(key_t nazwa, int start); Semafor usun_semafor(semafor sem); void signal(semafor sem); void wait(semafor sem); Semafory przypomnienie semafory służą ochronie dostępu procesów do sekcji krytycznej; na semaforach dostępne są dwie operacje: podniesienie semafora signal, opuszczenie semafora wait opuszczony semafor

Bardziej szczegółowo

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd Synchronizacja procesów Proces producenta - zmodyfikowany (licznik) produkuj jednostka w nast_p while licznik =n do nic_nie_rob; bufor [we] := nast_p; we=we+1 mod n; licznik:=licznik+1; Zmodyfikowany proces

Bardziej szczegółowo

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

Mechanizmy pracy równoległej. Jarosław Kuchta Mechanizmy pracy równoległej Jarosław Kuchta Zagadnienia Algorytmy wzajemnego wykluczania algorytm Dekkera Mechanizmy niskopoziomowe przerwania mechanizmy ochrony pamięci instrukcje specjalne Mechanizmy

Bardziej szczegółowo

Modelowanie procesów współbieżnych

Modelowanie procesów współbieżnych Modelowanie procesów współbieżnych dr inż. Maciej Piotrowicz Katedra Mikroelektroniki i Technik Informatycznych PŁ piotrowi@dmcs.p.lodz.pl http://fiona.dmcs.pl/~piotrowi -> Modelowanie... Literatura M.

Bardziej szczegółowo

Synchronizacja procesów

Synchronizacja procesów Synchronizacja procesów - Współbieżność i synchronizacja procesów - Systemowe mechanizmy synchronizacji procesów Systemy operacyjne Wykład 7 1 Współbieżność i synchronizacja procesów Abstrakcja programowania

Bardziej szczegółowo

Systemy operacyjne III

Systemy operacyjne III Systemy operacyjne III WYKŁAD 3 Jan Kazimirski 1 Współbieżność 2 Współbieżność Wielozadaniowość - zarządzanie wieloma procesami w ramach jednego CPU Wieloprocesorowość - zarządzanie wieloma zadaniami w

Bardziej szczegółowo

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

J. Ułasiewicz Programowanie aplikacji współbieżnych 1 J. Ułasiewicz Programowanie aplikacji współbieżnych 1 1 1.1 Prosty przykład zakleszczenia (ang. Mexican standoff) W systemach w których wykonywane jest wiele współbieżnych procesów które operują na wspólnych

Bardziej szczegółowo

Systemy Operacyjne synchronizacja i komunikacja procesów

Systemy Operacyjne synchronizacja i komunikacja procesów Katedra Informatyki, Politechnika Świętokrzyska w Kielcach Kielce, 1 grudnia 2006 1 1 Sytuacje hazardowe 2 Problem sekcji krytycznej 3 Warunki poprawności rozwiązania 4 Rozwiązanie programowe dla dwóch

Bardziej szczegółowo

1. ARCHITEKTURY SYSTEMÓW KOMPUTEROWYCH

1. ARCHITEKTURY SYSTEMÓW KOMPUTEROWYCH 1. ARCHITEKTURY SYSTEMÓW KOMPUTEROWYCH 1 Klasyfikacje komputerów Podstawowe architektury używanych obecnie systemów komputerowych można podzielić: 1. Komputery z jednym procesorem 2. Komputery równoległe

Bardziej szczegółowo

Strategia "dziel i zwyciężaj"

Strategia dziel i zwyciężaj Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania

Bardziej szczegółowo

Problemy współbieżności

Problemy współbieżności Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np. komputery macierzowe) realizowana programowo (bariera, sekcja krytyczna, operacje atomowe) wzajemne wykluczanie

Bardziej szczegółowo

Programowanie równoległe i rozproszone. W1. Wielowątkowość. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Programowanie równoległe i rozproszone. W1. Wielowątkowość. Krzysztof Banaś Programowanie równoległe i rozproszone 1 Programowanie równoległe i rozproszone W1. Wielowątkowość Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np.

Bardziej szczegółowo

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować

Bardziej szczegółowo

Gdy kilka procesów czyta a przynajmniej jeden dokonuje zapisu wynik odczytu zależeć może od sposobu realizacji przeplotu.

Gdy kilka procesów czyta a przynajmniej jeden dokonuje zapisu wynik odczytu zależeć może od sposobu realizacji przeplotu. Komputery i Systemy Równoległe Jędrzej Ułasiewicz 1 9. Wzajemne wykluczanie 9.1 Przeplot i współużywalność zasobów Wyróżniamy dwa rodzaje zasobów: 1. Zasoby współużywalne - mogą być wykorzystane przez

Bardziej szczegółowo

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

5. Model komunikujących się procesów, komunikaty Jędrzej Ułasiewicz str. 1 5. Model komunikujących się procesów, komunikaty Obecnie stosuje się następujące modele przetwarzania: Model procesów i komunikatów Model procesów komunikujących się poprzez pamięć

Bardziej szczegółowo

Monitory. Wady semafora

Monitory. Wady semafora Wady semafora Monitory Niestrukturalny mechanizm synchronizacji Nie ułatwia wykrywania błędów synchronizacyjnych w czasie kompilacji programu Idea Jądro systemu operacyjnego jako monolityczny monitor -

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Programowanie Równoległe i Rozproszone

Programowanie Równoległe i Rozproszone Programowanie Równoległe i Rozproszone Lucjan Stapp Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska (l.stapp@mini.pw.edu.pl) 1/40 PRiR SYSTEMY ROZPROSZONE Powody użycia systemów rozproszonych:

Bardziej szczegółowo

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Ktedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Ktedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. Igor Wojnicki (AGH, KIS) 7 kwietnia 2018 1 / 28 Hypertext Preprocessor Igor Wojnicki Ktedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie 7 kwietnia 2018 Igor Wojnicki (AGH, KIS) 7 kwietnia

Bardziej szczegółowo

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku. Laboratorium 7 Wstęp Jednym z podstawowych własności Javy jest wielowątkowość. Wiąże się to z możliwością współbieżnego wykonywania różnych operacji w ramach pojedynczej wirtualnej maszyny Javy (JVM).

Bardziej szczegółowo

I.Wojnicki, Tech.Inter.

I.Wojnicki, Tech.Inter. Igor Wojnicki (AGH, KA) 13 maja 2012 1 / 26 Hypertext Preprocessor Igor Wojnicki Katedra Automatyki Akademia Górniczo-Hutnicza w Krakowie 13 maja 2012 $Id: php1.tex,v 1.1 2011/11/19 19:14:25 wojnicki Exp

Bardziej szczegółowo

Klient-Serwer Komunikacja przy pomocy gniazd

Klient-Serwer Komunikacja przy pomocy gniazd II Klient-Serwer Komunikacja przy pomocy gniazd Gniazda pozwalają na efektywną wymianę danych pomiędzy procesami w systemie rozproszonym. Proces klienta Proces serwera gniazdko gniazdko protokół transportu

Bardziej szczegółowo

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

SYSTEMY OPERACYJNE WYKLAD 6 - procesy Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 6 - procesy Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 Zasoby: PROCES wykonujący się program ; instancja programu

Bardziej szczegółowo

Programowanie współbieżne Zadanie 5 - Podstawowe problemy programowania współbieżnego

Programowanie współbieżne Zadanie 5 - Podstawowe problemy programowania współbieżnego 150875 Grzegorz Graczyk numer indeksu imię i nazwisko 151021 Paweł Tarasiuk numer indeksu imię i nazwisko Data 2011-11-07 Kierunek Informatyka Specjalizacja Inżynieria Oprgoramowania i Analiza Danych Rok

Bardziej szczegółowo

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

Lock Manager Deadlock Źródła Jak starczy czasu. Dreadlocks. Konrad Błachnio MIMUW 19 maja 2010 Konrad Błachnio K.Blachnio@students.mimuw.edu.pl MIMUW 19 maja 2010 1 Co to jest? API Implementacja 2 ILockManagerWithDetecting s - straszny zamek 3 4 Obecna implementacja Lock vs. Synchronized Hashtable

Bardziej szczegółowo

Multiprocessor Shared-Memory Information Exchange. Damian Klata, Adam Bułak

Multiprocessor Shared-Memory Information Exchange. Damian Klata, Adam Bułak Multiprocessor Shared-Memory Information Exchange Damian Klata, Adam Bułak Wstęp Zajmiemy się analizą protokołu opartego na komunikacji przez pamięć dzieloną opracowany przez firmę Westinghouse. Protokół

Bardziej szczegółowo

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

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują

Bardziej szczegółowo

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

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Obliczenia równoległe w Microsoft Visual Basic Środowisko Microsoft Visual Studio 2010 i nowsze umożliwia zrównoleglenie obliczeń na wiele rdzeni procesorów. Służą do tego odpowiednie metody dostępne wraz

Bardziej szczegółowo

Wykład 5. Synchronizacja (część II) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wykład 5. Synchronizacja (część II) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 5 Synchronizacja (część II) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wady semaforów Jeden z pierwszych mechanizmów synchronizacji Generalnie jest to mechanizm bardzo

Bardziej szczegółowo

Synchronizacja procesów

Synchronizacja procesów Synchronizacja procesów Proces producenta - zmodyfikowany (licznik) repeat... produkuj jednostka w nast_p... while licznik =n do nic_nie_rob; bufor [we] := nast_p; we=we+1 mod n; licznik:=licznik+1; until

Bardziej szczegółowo

Komunikacja asynchroniczna w modelu rozproszonym

Komunikacja asynchroniczna w modelu rozproszonym Komunikacja asynchroniczna w modelu rozproszonym.odv\f]qhsureohp\zvsyáelh QR FL Problem wzajemnego wykluczania 1DMF] FLHMSRMDZLDM F\VL ZSUDNW\FH operacje lokalne; SURWRNyáZVW SQ\ rejon krytyczny; SURWRNyáNR

Bardziej szczegółowo

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003 Obliczenia równoległe i rozproszone w JAVIE Michał Kozłowski 30 listopada 2003 Wątki w JAVIE Reprezentacja wątków jako obiektów Uruchamianie i zatrzymywanie wątków Realizacja wątków Ograniczenia Mechanizmy

Bardziej szczegółowo

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

SYSTEMY CZASU RZECZYWISTEGO - VxWorks WZAJEMNE WYKLUCZANIE Wiele metod. Np. wyłączanie przerwań: funkcja() //... Int blokada = intlock(); // Obszar krytyczny, któremu nie możemy przerwać intunlock(blokada); wyłączanie wywłaszczania: funkcja()

Bardziej szczegółowo

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

Porządek dostępu do zasobu: procesory obszary pamięci cykle procesora pliki urządzenia we/wy ZAKLESZCZENIA w SO brak środków zapobiegania zakleszczeniom Zamówienia na zasoby => przydział dowolnego egzemplarza danego typu Zasoby w systemie typy; identyczne egzemplarze procesory obszary pamięci

Bardziej szczegółowo

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne 1 Programowanie wspóªbie»ne wiczenia 5 monitory cz. 1 Zadanie 1: Stolik dwuosobowy raz jeszcze W systemie dziaªa N par procesów. Procesy z pary s nierozró»nialne. Ka»dy proces cyklicznie wykonuje wªasnesprawy,

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Systemowe mechanizmy synchronizacji procesów

Systemowe mechanizmy synchronizacji procesów Systemowe mechanizmy synchronizacji procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Celem wykładu jest przedstawienie mechanizmów synchronizacji, które mogą być implementowane zarówno na

Bardziej szczegółowo

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd Synchronizacja procesów Synchronizacja procesów, cd Proces producenta - zmodyfikowany (licznik) produkuj jednostka w nast_p while licznik =n do nic_nie_rob; bufor [we] := nast_p; we=we+1 mod n; licznik:=licznik+1;

Bardziej szczegółowo

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp Programowanie Równoległe i Rozproszone Lucjan Stapp Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska (l.stapp@mini.pw.edu.pl) 1/34 PRiR Algorytm Kunga Dany jest odcinek [a,b] i ciągła funkcja

Bardziej szczegółowo

Wielozadaniowość w systemie Microsoft Windows

Wielozadaniowość w systemie Microsoft Windows Wielozadaniowość w systemie Microsoft Windows mgr inż. Tomasz Jaworski tjaworski@kis.p.lodz.pl http://tjaworski.kis.p.lodz.pl/ Idea wielozadaniowości Proces główny Wątki Algorytm szeregowania ustala kolejność

Bardziej szczegółowo

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu Proces Procesy i wątki Proces jest wykonywanym programem. Wykonanie procesu musi przebiegać w sposób sekwencyjny ( w dowolnej chwili na zamówienie naszego procesu może być wykonany co najwyżej jeden rozkaz

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 4 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Pętle wykonujące się podaną liczbę razy Jeśli chcemy wykonać pewien fragment programu określoną liczbę razy, możemy użyć

Bardziej szczegółowo

3URJUDPRZDQLHZVSyáELH*QHZVWS

3URJUDPRZDQLHZVSyáELH*QHZVWS 3URJUDPRZDQLHZVSyáELH*QHZVWS Problem sortowania N liczb Algorytm sekwencyjny sortuj(1, N); NRV]WVRUWRZDQLDSU]H]SURVW]DPLDQN 2 SRUyZQD $OJRU\WPUyZQROHJá\ cobegin {wykonaj równolegle} VRUWXMSyáB1 VRUWXMSyáB11

Bardziej szczegółowo

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie

Bardziej szczegółowo

1. Procesy i współbieżność

1. Procesy i współbieżność 1. Procesy i współbieżność Opracował: Sławomir Samolej Politechnika Rzeszowska, Katedra Informatyki i Automatyki, Rzeszów, 2013. 1.1. Wprowadzenie Proces to przestrzeń adresowa i pojedynczy wątek sterujący,

Bardziej szczegółowo

Programowanie wielowątkowe. Tomasz Borzyszkowski

Programowanie wielowątkowe. Tomasz Borzyszkowski Programowanie wielowątkowe Tomasz Borzyszkowski Wątki a procesy Jako jeden z niewielu języków programowania Java udostępnia użytkownikowi mechanizmy wspierające programowanie wielowątkowe. Program wielowątkowy

Bardziej szczegółowo

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 WYKŁAD 10 Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 Tomasz Zieliński ZMIENNE O ZŁOŻONEJ BUDOWIE (1) Zmienne

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

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 Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2014/15 Znajdowanie maksimum w zbiorze

Bardziej szczegółowo

Proces y i y w i ąt ą ki

Proces y i y w i ąt ą ki Procesy i wątki Proces Proces jest wykonywanym programem. Wykonanie procesu musi przebiegać w sposób sekwencyjny ( w dowolnej chwili na zamówienie naszego procesu może być wykonany co najwyżej jeden rozkaz

Bardziej szczegółowo

Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego Łódź. Java podstawy języka, wykład 4 1

Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego Łódź. Java podstawy języka, wykład 4 1 Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego 03.12.2010 Łódź Java podstawy języka, wykład 4 1 Stosując blokady (synchronizację) Można doprowadzić do zablokowania wszystkich wątków Zakleszczenie

Bardziej szczegółowo

Podstawy programowania komputerów

Podstawy programowania komputerów Podstawy programowania komputerów Wykład 14: Programowanie współbieżne w C Definicja programowania współbieżnego Programowanie współbieżne jest tworzeniem programów, których wykonanie powoduje uruchomienie

Bardziej szczegółowo

Synchronizacja procesów

Synchronizacja procesów Synchronizacja procesów Problem sekcji krytycznej. Sprzętowe środki synchronizacji. Semafory. Klasyczne problemy synchronizacji. Monitory. Bariery. Przykłady synchronizacji procesów: Solaris, Windows XP/Vista/7/8/10,

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Wykład 6. 6 listopada 2015 Plan wykładu Callable objects 1 Callable objects 2 3 Plan wykładu Callable objects 1 Callable objects 2 3 Callable objects Wszystko jest obiektem. Callable objects Wszystko jest

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce. POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie

Bardziej szczegółowo

Programowanie w VB Proste algorytmy sortowania

Programowanie w VB Proste algorytmy sortowania Programowanie w VB Proste algorytmy sortowania Sortowanie bąbelkowe Algorytm sortowania bąbelkowego polega na porównywaniu par elementów leżących obok siebie i, jeśli jest to potrzebne, zmienianiu ich

Bardziej szczegółowo

Robert Barański, AGH, KMIW MathScript and Formula Nodes v1.0

Robert Barański, AGH, KMIW MathScript and Formula Nodes v1.0 MathScript i Formula Nodes (MathScript and Formula Nodes) Formula Node w oprogramowaniu LabVIEW jest wygodnym, tekstowym węzłem, który można użyć do wykonywania skomplikowanych operacji matematycznych

Bardziej szczegółowo

Programowanie współbieżne Wykład 7. Iwona Kochaoska

Programowanie współbieżne Wykład 7. Iwona Kochaoska Programowanie współbieżne Wykład 7 Iwona Kochaoska Poprawnośd programów współbieżnych Właściwości związane z poprawnością programu współbieżnego: Właściwośd żywotności - program współbieżny jest żywotny,

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

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

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010 Algorytmy równoległe Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka Znajdowanie maksimum w zbiorze n liczb węzły - maksimum liczb głębokość = 3 praca = 4++ = 7 (operacji) n - liczność

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 5 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2016/2017 Zadanie o kotach z poprzedniego wykładu # include < iostream > using namespace std ; int main (){ int rozmiar_ rodzinki,

Bardziej szczegółowo

Zagadnienia zaawansowane. Lech Kruś,

Zagadnienia zaawansowane. Lech Kruś, WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA WYDZIAŁ INFORMATYKI WIELODOSTĘPNE SYSTEMY OPERACYJNE II (SO2) Zagadnienia zaawansowane CZĘŚĆ 1 KONSPEKT WYKŁADÓW INFORMACJA O SPECJALIZACJI SIECI KOMPUTEROWE

Bardziej szczegółowo

Wzajemne wykluczanie i zakleszczenie

Wzajemne wykluczanie i zakleszczenie Wzajemne wykluczanie i zakleszczenie Wzajemne wykluczanie Wzajemne wykluczenie zapewnia procesom ochronę przy dostępie do zasobów, daje im np. gwarancję, że jako jedyne będą mogły z nich korzystać Typy

Bardziej szczegółowo