Programowanie współbieżne Wykład 4. Rafał Skinderowicz
|
|
- Sabina Duda
- 7 lat temu
- Przeglądów:
Transkrypt
1 Programowanie współbieżne Wykład 4 Rafał Skinderowicz
2 Semafory Algorytmy synchronizacyjne omawiane poprzednio opierały się na atomowych instrukcjach odczytu i zapisu do pamięci, ewentualnie dodatkowych rozkazach typu Read-Modify-Write Algorytmy te stosowały aktywne oczekiwanie (ang. spin-locks) w większości przypadków nieefektywne Semafory (ang. semaphores) konstrukcje programistyczne wyższego poziomu, ułatwiające synchronizację w programach współbieżnych 2
3 Stany procesu powtórka Zazwyczaj jest więcej procesów (lub wątków) niż fizycznych procesorów (rdzeni) Procesy muszą współdzielić procesor Proces, który chce się wykonywać jest procesem gotowym Proces, który otrzymał czas procesora jest procesem aktywnym W każdym momencie tylko jeden proces jest w stanie aktywnym Gdy żaden proces nie jest gotowy do wykonania, to wykonywany jest proces jałowy (bezczynności, ang. idle) Przydziałem czasu procesora poszczególnym procesom zajmuje się planista (ang. scheduler) 3
4 Procesy wstrzymane Konstrukcja semafora zakłada istnienie dodatkowego stanu procesu wstrzymanego Proces wstrzymany nie jest gotowy do wykonania Proces wstrzymany może jedynie być obudzony lub wznowiony na skutek zdarzenia zewnętrznego zmieniającego jego stan ze wstrzymanego na gotowy Proces wstrzymany nie zużywa czasu procesora czekanie nieaktywne Procesy zablokowane są zapamiętywane w dodatkowej strukturze danych (zbiór, lista, kolejka) 4
5 Stany procesu diagram nieaktywny gotowy aktywny (wykonywany) zakończony wstrzymany Początkowo proces jest nieaktywny W pewnym momencie staje się gotowy (zostaje aktywowany) Po przydziale czasu procesora przez planistę staje się aktywny, po wyczerpaniu przydziału wraca do stanu gotowości Na skutek wykonania niektórych operacji wątek może stać się wstrzymany Kiedy proces wykona ostatnią instrukcję staje się zakończony 5
6 Semafory Semafory zostały zaproponowane przez holenderskiego naukowca E. Dijkstrę w 1968 r. Na poziomie konceptualnym semafor, pełni po prostu rolę licznika dostępnych w danym momencie zasobów Mogą zostać zaimplementowane bez konieczności aktywnego oczekiwania (ang. busy-waiting) Rysunek 1: Edsger W. Dijkstra (autor: Hamilton Richards) 6
7 Semafory Nazwa semafor została użyta przez analogię do idei semaforów kolejowych: Zasobami współdzielonymi przez pociągi są tory 7
8 Semafory Nazwa semafor została użyta przez analogię do idei semaforów kolejowych: Zasobami współdzielonymi przez pociągi są tory Jeżeli dany tor jest w danym momencie niedostępny, to semafor jest opuszczony (zamknięty) 7
9 Semafory Nazwa semafor została użyta przez analogię do idei semaforów kolejowych: Zasobami współdzielonymi przez pociągi są tory Jeżeli dany tor jest w danym momencie niedostępny, to semafor jest opuszczony (zamknięty) Jeżeli dany tor jest wolny, to semafor jest podniesiony (otwarty) 7
10 Semafory Nazwa semafor została użyta przez analogię do idei semaforów kolejowych: Zasobami współdzielonymi przez pociągi są tory Jeżeli dany tor jest w danym momencie niedostępny, to semafor jest opuszczony (zamknięty) Jeżeli dany tor jest wolny, to semafor jest podniesiony (otwarty) Na każdym torze w każdej chwili może znajdować się maksymalnie jeden pociąg 7
11 Semafory analogia nr 2 Załóżmy, że mamy napisać program symulujący korzystanie z parkingu podziemnego parking mieści 20 samochodów wjazd na parking zamykany jest szlabanem szlaban otwiera się po naciśnięciu przycisku, jeżeli na parkingu są jeszcze wolne miejsca jeżeli wszystkie stanowiska są zajęte szlaban wjazdowy pozostaje opuszczony 8
12 Semafory analogia nr 2 Załóżmy, że mamy napisać program symulujący korzystanie z parkingu podziemnego parking mieści 20 samochodów wjazd na parking zamykany jest szlabanem szlaban otwiera się po naciśnięciu przycisku, jeżeli na parkingu są jeszcze wolne miejsca jeżeli wszystkie stanowiska są zajęte szlaban wjazdowy pozostaje opuszczony Zauważmy, że system sterujący nie musi zapisywać, który samochów zajmuje które stanowisko wystarczy aktualna liczba samochodów na parkingu 8
13 Semafory analogia nr 2 W podanym przykładzie: współdzielonymi zasobami są miejsca parkingowe system sterujący szlabanem pełni rolę semafora: początkowo wartość semafora to 20 kiedy samochód wjeżdża na parking, semafor zmniejszany jest o 1 kiedy samochód wyjeżdża z parkingu semafor zwiększany jest o 1 jeżeli semafor ma wartość 0, to znaczy, że wszystkie miejsca są zajęte i kolejni kierowcy muszą poczekać na zwolnienie miejsca 9
14 Semafory definicja Semafor S to abstrakcyjny typ danych z dwoma polami: S.V liczba całkowita nieujemna S.L zbiór wstrzymanych procesów 10
15 Semafory definicja Semafor S to abstrakcyjny typ danych z dwoma polami: S.V liczba całkowita nieujemna S.L zbiór wstrzymanych procesów Na semaforze można wykonywać tylko dwie operacje atomowe: operację wait(s) (w lit. czasem P (S)) oczekiwanie na podniesienie semafora operację signal(s) (w lit. czasem V (S)) podnosi semafor 10
16 Semafory definicja Semafor S to abstrakcyjny typ danych z dwoma polami: S.V liczba całkowita nieujemna S.L zbiór wstrzymanych procesów Na semaforze można wykonywać tylko dwie operacje atomowe: operację wait(s) (w lit. czasem P (S)) oczekiwanie na podniesienie semafora operację signal(s) (w lit. czasem V (S)) podnosi semafor Semafor musi zostać zainicjowany wartością początkową Zbiór S.L początkowo jest pusty Programista nie musi mieć bezpośredniego dostępu do wartości pól S.V oraz S.L 10
17 Semafor operacja wait wait(s): if S.V > 0 S.V S.V 1 else S.L S.L {A} A.stan wstrzymany Jeżeli wartość semafora (składowa V ) jest niezerowa, to następuje jej zmniejszenie o 1 i proces A wykonuje się dalej 11
18 Semafor operacja wait wait(s): if S.V > 0 S.V S.V 1 else S.L S.L {A} A.stan wstrzymany Jeżeli wartość semafora (składowa V ) jest niezerowa, to następuje jej zmniejszenie o 1 i proces A wykonuje się dalej Jeżeli wartość ta jest równa zero, to proces A zostaje wstrzymany proces A jest wstrzymany na semaforze S 11
19 Semafor operacja signal signal(s): if S.L = S.V S.V + 1 else niech A będzie dowolnym elementem zbioru S.L S.L S.L {A} A.stan gotowy Jeżeli zbiór procesów wstrzymanych na semaforze S jest pusty, to wartość (składowej S.L) semafora zwiększa się o 1 12
20 Semafor operacja signal signal(s): if S.L = S.V S.V + 1 else niech A będzie dowolnym elementem zbioru S.L S.L S.L {A} A.stan gotowy Jeżeli zbiór procesów wstrzymanych na semaforze S jest pusty, to wartość (składowej S.L) semafora zwiększa się o 1 W przeciwnym razie ze zbioru procesów wstrzymanych budzony (usuwany) jest dowolny ze wstrzymanych wcześniej procesów 12
21 Rodzaje semaforów Semafor, którego składowa S.L przyjmuje jedynie wartości 0 lub 1 nazywany jest semaforem binarnym Semafor, którego składowa S.L może przyjmować dowolne wartości nieujemne, to semafor ogólny Semafor może być zamknięty przez jeden proces, a podniesiony przez inny 13
22 Rodzaje semaforów Semafor, którego składowa S.L przyjmuje jedynie wartości 0 lub 1 nazywany jest semaforem binarnym Semafor, którego składowa S.L może przyjmować dowolne wartości nieujemne, to semafor ogólny Semafor może być zamknięty przez jeden proces, a podniesiony przez inny Blokady są zakładane i zwalniane przez ten sam proces Próba zwolnienia blokady założonej przez inny proces skutkuje błędem 13
23 Semafor binarny działanie Operacja wait(s) jak dla semafora ogólnego Operacja signal(s): if S.V = 1 // nieokreślone! else if S.L = S.V 1 else niech A będzie dowolnym elementem zbioru S.L S.L S.L {A} A.stan gotowy 14
24 Semafory budzenie procesów Definicja operacji signal(s) nie podaje, który z procesów wstrzymanych na semaforze stanie się gotowy Decyzja zależy od implementacji semafora, a ściślej kolejności w której procesy są wzbudzane Nie ma to wpływu na własności bezpieczeństwa semaforów, jednak może mieć wpływ na własność żywotności możliwe zagłodzenie 15
25 Zastosowania semaforów Semafory umożliwiają łatwe rozwiązanie problemów: synchronizacji dostępu do zasobów: niekoniecznie wyłączny dostęp również ograniczony dostęp do krytycznych zasobów, tzn. dla więcej, niż jednego procesu jednocześnie synchronizacji kolejności wykonywania proces musi oczekiwać na zakończenie operacji wykonywanych przez inne procesy, by kontynuować działanie 16
26 Semafory binarne a blokady Obie konstrukcje mają dwa stany: otwarty, zamknięty Różnią się jednak celem: blokady stosowane są do ochrony zasobów przed jednoczesną modyfikacją semafory stosowane są do synchronizacji między wątkami semafor może być początkowo zamknięty 17
27 Semafory binarne a blokady Obie konstrukcje mają dwa stany: otwarty, zamknięty Różnią się jednak celem: blokady stosowane są do ochrony zasobów przed jednoczesną modyfikacją semafory stosowane są do synchronizacji między wątkami semafor może być początkowo zamknięty 1 binary semaphore data_ready = 0 // współdzielony semafor 2 T data = null 1 // Proces 1: 2 3 data = gather_sensor_data() 4 signal(data_ready) 1 // Proces 2: 2 3 wait(data_ready) 4 process(data) 17
28 Semafory a blokady Semafory i blokady często stosowane są razem 1 semaphore data_ready = 0 // semafor ogólny 2 Queue queue // współdzielona kolejka 3 lock queue_lock // blokada do WW dla kolejki 1 // Proces 1: 2 3 while (true) { 4 data = gather_sensor_data() 5 queue_lock.lock() 6 queue.push(data) 7 queue_lock.unlock() 8 signal(data_ready) 9 } 1 // Proces 2: 2 3 while (true) { 4 wait(data_ready) 5 queue_lock.lock() 6 data = queue.pop() 7 queue_lock.unlock() 8 process(data) 9 } 18
29 Wzajemne wykluczanie semafory Za pomocą semafora binarnego można również rozwiązać problem wzajemnego wykluczania binarny semafor S 1 // współdzielony semafor // Proces P i while (true) { sekcja lokalna P i wait(s) sekcja krytyczna P i signal(s) } Działanie analogiczne do blokad (ang. lock) 19
30 Wzajemne wykluczanie przykład // Proces P while (true) { sekcja lokalna wait(s) sekcja krytyczna signal(s) } // Proces Q while (true) { sekcja lokalna wait(s) sekcja krytyczna signal(s) } 20
31 Wzajemne wykluczanie przykład // Proces P while (true) { sekcja lokalna wait(s) sekcja krytyczna signal(s) } // Proces Q while (true) { sekcja lokalna wait(s) sekcja krytyczna signal(s) } 21
32 Wzajemne wykluczanie przykład // Proces P while (true) { sekcja lokalna wait(s) sekcja krytyczna signal(s) } // Proces Q while (true) { sekcja lokalna wait(s) sekcja krytyczna signal(s) } 22
33 Wzajemne wykluczanie przykład // Proces P while (true) { sekcja lokalna wait(s) sekcja krytyczna signal(s) } // Proces Q while (true) { sekcja lokalna wait(s) sekcja krytyczna signal(s) } Proces Q został wstrzymany, ponieważ wartość semafora została wcześniej zmieniona na 0 przez proces P 23
34 Wzajemne wykluczanie przykład // Proces P while (true) { sekcja lokalna wait(s) sekcja krytyczna signal(s) } // Proces Q while (true) { sekcja lokalna wait(s) sekcja krytyczna signal(s) } Wykonanie signal(s) przez proces P powoduje wzbudzenie procesu Q wstrzymanego wcześniej na semaforze Q 24
35 Własności semaforowego rozwiązania problemu WW Wzajemne wykluczanie: tak Brak zakleszczenia: tak Brak zagłodzenia: tak, ale tylko dla 2 procesów w przypadku większej liczby procesów (> 2) brak zagłodzenia jest gwarantowany jedynie w przypadku silnych semaforów Dodatkowo: prostota, np. w porównaniu do alg. Petersona, czy piekarnianego brak aktywnego oczekiwania 25
36 Semafory a uczciwość Semafor silny (uczciwy) to taki który gwarantuje, że jeżeli proces został wstrzymany na semaforze, to zostanie w końcu wzbudzony (stanie się gotowy) niezależnie od tego jak wiele procesów wstrzymano na semaforze Wystarczy, by wstrzymane na semaforze procesy (zbiór S.L) były przechowywane w kolejce (FIFO) Przy N procesach, w kolejce S.L może znajdować się N 1 procesów, więc wystarczy N 1 operacji signal(s), tak by wszystkie z nich zostały wzbudzone Semafor słaby to semafor, który nie gwarantuje, że proces zostanie wzbudzony możliwe zagłodzenie Przykładowo, wzbudzany jest losowo wybrany proces 26
37 Przykład sortowanie przez scalanie Założenia: dana jest tablica A liczb całkowitych o rozmiarze N (N 2) elementów należy posortować jej elementy dzieląc pracę między 3 współbieżne procesy oznaczone A, B i C Procesy 1. i 2. mają za zadanie posortować połówki tablicy, odpowiednio A[1,..., m] oraz A[m + 1,..., N], gdzie m = N/2 Proces 3. scala posortowane połówki tablicy w posortowaną całość (można to zrobić w czasie O(N)) 27
38 Rozwiązanie // zmienne globalne A array[n] binarny semafor S1 0 binarny semafor S2 0 // Proces A: sortuj(a[1,..., m]) signal(s1) // Proces B: sortuj(a[m + 1,..., N]) signal(s2) // Proces C: wait(s1) wait(s2) scal(a[1,..., m], A[m + 1,..., N]) 28
39 Rozwiązanie // zmienne globalne A array[n] binarny semafor S1 0 binarny semafor S2 0 // Proces A: sortuj(a[1,..., m]) signal(s1) // Proces B: sortuj(a[m + 1,..., N]) signal(s2) // Proces C: wait(s1) wait(s2) scal(a[1,..., m], A[m + 1,..., N]) Problem ten można również rozwiązać za pomocą jednego semafora ogólnego - jak? 28
40 Problem producenta konsumenta Dane są dwa rodzaje procesów: Producenci producent wykonuje instrukcję produkuj tworząc dane, które przesyłane są konsumentom Konsumenci po odbiorze danych od producenta konsument wykonuje operację konsumuj przetwarzającą odebrane dane 29
41 Problem producenta konsumenta Dane są dwa rodzaje procesów: Producenci producent wykonuje instrukcję produkuj tworząc dane, które przesyłane są konsumentom Konsumenci po odbiorze danych od producenta konsument wykonuje operację konsumuj przetwarzającą odebrane dane Komunikacja między producentami a konsumentami może być zrealizowana na dwa sposoby: 29
42 Problem producenta konsumenta Dane są dwa rodzaje procesów: Producenci producent wykonuje instrukcję produkuj tworząc dane, które przesyłane są konsumentom Konsumenci po odbiorze danych od producenta konsument wykonuje operację konsumuj przetwarzającą odebrane dane Komunikacja między producentami a konsumentami może być zrealizowana na dwa sposoby: synchroniczny po wykonaniu operacji produkuj producent oczekuje na odebranie danych przez konsumentów 29
43 Problem producenta konsumenta Dane są dwa rodzaje procesów: Producenci producent wykonuje instrukcję produkuj tworząc dane, które przesyłane są konsumentom Konsumenci po odbiorze danych od producenta konsument wykonuje operację konsumuj przetwarzającą odebrane dane Komunikacja między producentami a konsumentami może być zrealizowana na dwa sposoby: synchroniczny po wykonaniu operacji produkuj producent oczekuje na odebranie danych przez konsumentów asynchroniczny dane wyprodukowane przez producenta gromadzone są w buforze, z którego pobierane są przez konsumentów 29
44 Producent-konsument przykłady Producent Klawiatura Edytor tekstu Joystick Gra komputerowa Łącza komunikacyjne Przeglądarka internetowa Aplikacja kliencka Konsument System operacyjny Drukarka Gra komputerowa Ekran Przeglądarka internetowa Łącza komunikacyjne Baza danych 30
45 Producent-konsument synchronizacja Konsument nie może pobierać danych z pustego bufora Producent nie może wstawiać danych do pełnego bufora bufor o nieskończonej pojemności nie istnieje próba wstawienia do pełnego bufora skutkowałaby utratą danych wstawianych, bądź zastępowanych 31
46 Producent-konsument nieskończony bufor Jak wspomniano, bufor o nieskończonej pojemności nie istnieje, ale jeżeli: jego rozmiar jest bardzo duży, tempo odbierania danych przez konsumenta jest porównywalne z tempem produkcji to można uniknąć narzutu wynikającego z konieczności synchronizacji próby wstawienia do pełnego bufora konieczne jest jedynie synchronizowanie prób odbierania danych przez konsumenta 32
47 Producent-konsument nieskończony bufor // zmienne globalne Typ bufor = array[ ] // bufor o nieograniczonej pojemności semafor ogólny niepusty = 0 // Producent Typ el int in = 0 while (true) { el = produkuj() bufor [ in ] = el in = in + 1 signal( niepusty ) } // konsument Typ el int out = 0 while (true) { wait( niepusty ) el = bufor [ out ] out = out + 1 konsumuj( l ) } 33
48 Producent-konsument nieskończony bufor Każde wstawienie elementu przez producenta powoduje zwiększenie wartości semafora niepusty o 1 Każde wyjęcie elementu przez konsumenta powoduje zmniejszenie wartości semafora niepusty o 1 liczba operacji wyjęcia elementów z bufora nigdy nie będzie wyższa, niż liczba wstawionych elementów W algorytmie nie dochodzi do zakleszczenia dopóki producent wykonuje signal( niepusty ), to proces konsumenta jest budzony W algorytmie nie dochodzi do zagłodzenia co najwyżej jeden proces może być wstrzymany (konsument) 34
49 Producent-konsument bufor jednoelementowy Załóżmy, że bufor może przechowywać tylko 1 element Warunki synchronizacji: producent musi czekać na opróżnienie bufora konsument może wyjąć element tylko z niepustego bufora Potrzebne są dwa semafory binarne: niepełny producent czeka na tym semaforze, aż konsument opróżni bufor niepusty konsument czeka na tym semaforze, aż producent wstawi element 35
50 Producent-konsument bufor jednoelementowy // zmienne globalne Typ bufor = array[1] semafor binarny niepusty = 0 semafor binarny niepełny = 1 // producent Typ el while (true) { el = produkuj() wait( niepełny ) bufor[ 0 ] = el signal( niepusty ) } // konsument Typ el while (true) { wait( niepusty ) el = bufor[ 0 ] signal( niepełny ) konsumuj( el ) } 36
51 Producent-konsument bufor ograniczony Rozmiar bufora wynosi N, N 1 Potrzebne są dwa semafory ogólne: niepełny zlicza liczbę wolnych miejsc w buforze początkowo N niepusty zlicza liczbę elementów znajdujących się w buforze początkowo 0 W każdym momencie, gdy żaden z procesów nie modyfikuje bufora zachodzi warunek: niepełny.v + niepusty.v = N 37
52 Producent-konsument bufor ograniczony // zmienne globalne Typ bufor = array[n] // bufor o ograniczonej pojemności semafor ogólny niepusty = 0 semafor ogólny niepełny = N // producent Typ el int in = 0 while (true) { el = produkuj() wait( niepełny ) bufor[ in ] = el in = ( in + 1 ) mod N signal( niepusty ) } // konsument Typ el int out = 0 while (true) { wait( niepusty ) el = bufor[ out ] out = ( out + 1 ) mod N signal( niepełny ) konsumuj( el ) } 38
53 Producent-konsument bufor ograniczony Własności przytoczonego rozwiązania: dane nie są nadpisywane zanim nie zostaną odczytane (odebrane) dane są odczytywane tylko raz dane nie są pobierane z pustego bufora dane są odczytywane w kolejności, w której zostały wyprodukowane wszystkie dane są w końcu odczytane 39
54 Producent-konsument warianty problemu Wielu producentów jeden konsument producenci współdzielą bufor konieczna synchronizacja dostępu dla producentów 40
55 Producent-konsument warianty problemu Wielu producentów jeden konsument producenci współdzielą bufor konieczna synchronizacja dostępu dla producentów Jeden producent wielu konsumentów konsumenci współdzielą bufor konieczna synchronizacja dostępu dla konsumentów 40
56 Producent-konsument warianty problemu Wielu producentów jeden konsument producenci współdzielą bufor konieczna synchronizacja dostępu dla producentów Jeden producent wielu konsumentów konsumenci współdzielą bufor konieczna synchronizacja dostępu dla konsumentów Wielu producentów wielu konsumentów rywalizacja między konsumentami rywalizacja między producentami 40
57 Problem ucztujących filozofów Pięciu filozofów siedzi przy stole i wykonuje naprzemiennie dwie czynności: myślenie i jedzenie. Na stole znajduje się misa ze spaghetti, po które sięgają filozofowie Do zjedzenia swojej porcji każdy filozof potrzebuje dwóch widelców Każdy filozof może podnieść widelec z jego lewej i prawej strony while True: myśli protokół wstępny je protokół końcowy 41
58 Problem ucztujących filozofów w4 f4 w3 f5 f3 w2 w0 f1 f2 w1 42
59 Problem ucztujących filozofów Zadanie polega na opracowaniu protokołów wstępnego i końcowego, dla których spełnione będą warunki: Filozof może jeść, gdy ma dwa widelce Dwóch filozofów nie może trzymać w tym samym czasie tego samego widelca (wzajemne wykluczanie) Brak zakleszczenia Brak zagłodzenia Niewielki narzut obliczeniowy w przypadku braku rywalizacji 43
60 Rozwiązanie 1 semafor binarny [] widelce = [1, 1, 1, 1, 1] // tablica semaforów // Filozof i, i {1, 2, 3, 4, 5} while True: myśli wait(widelce[i-1]) wait(widelce[i mod 5]) je signal(widelce[i-1]) signal(widelce[i mod 5]) 44
61 Problem ucztujących filozofów rozwiązanie 1 Rozwiązanie 1. ma własność wzajemnego wykluczania dwóch filozofów nie może podnieść jednocześnie tego samego widelca Jednak rozwązanie to może prowadzić do zakleszczenia 45
62 Problem ucztujących filozofów rozwiązanie 1 w4 f4 w3 f5 f3 w0 w2 f1 f2 w1 Do zakleszczenia dochodzi, gdy każdy filozof podniesie widelec po lewej stronie, ale nie zdąży podnieść prawego, bo zostanie wyprzedzony przez sąsiada 46
63 Rozwiązanie 2 semafor binarny [] widelce = [1, 1, 1, 1, 1] semafor ogólny jadalnia = 4 // Filozof i, i {1, 2, 3, 4, 5} while True: myśli wait(jadalnia) wait(widelce[i-1]) wait(widelce[i mod 5]) je signal(widelce[i-1]) signal(widelce[i mod 5]) signal(jadalnia) 47
64 Rozwiązanie 2 własności Dwóch filozofów nie może trzymać w tym samym czasie tego samego widelca (wzajemne wykluczanie): tak Brak zakleszczenia: tak Brak zagłodzenia: tak Niewielki narzut obliczeniowy w przypadku braku rywalizacji: tak 48
65 Rozwiązanie 3 semafor binarny [] widelce = [1, 1, 1, 1, 1] semafor ogólny jadalnia = 4 // Filozof 5 while True: myśli wait(widelce[0]) wait(widelce[4]) je signal(widelce[0]) signal(widelce[4]) 49
66 Rozwiązanie 3 w4 f4 w3 f5 f3 w2 w0 f1 f2 w1 Asymetria protokołów wstępnych jako przeciwdziałanie zakleszczeniu. 50
67 Semafory w Javie Klasa Semaphore z pakietu java.util.concurrent Pierwszy konstruktor Semaphore(int permits) parametr permits określa wartość semafora, może być ujemna Metoda acquire to odpowiednik metody wait Może rzucić wyjątek InterruptedException Metoda release to odpowiednik metody signal Drugi konstruktor przyjmuje dodatkowy parametr boolean fair Gdy fair = true, to semafor jest semaforem silnym (uczciwym), tj. obsługuje wstrzymane wątki w kolejności FIFO Gdy fair = false, to semafor jest semaforem słabym nie ma gwarancji kolejności wybudzania wstrzymanych na semaforze wątków 51
68 Przykład 1 import java.util.concurrent.semaphore; 2 class Zliczanie implements Runnable { 3 static volatile int licznik = 0; 4 static Semaphore sem = new Semaphore(1); // semafor binarny 5 6 public void run() { 7 for (int i = 0; i < 10; ++i) { 8 try { 9 sem.acquire(); 10 } catch(interruptedexception e) {} 11 n = n + 1; 12 s.release(); 13 } 14 } 15 public static void main(string [] args) { 16 // utworzenie i uruchomienie wątków } 19 } 52
69 Symulacja semaforów ogólnych Problem czy możemy zaimplementować semafor ogólny mając do dyspozycji jedynie semafory binarne? 53
70 Próba 1 // zmienne globalne int licznik = K // wart. semafora (gdy licznik < 0 to brak zasobów) semafor binarny straznik = 1 semafor binarny wolne = 0 // symulowane wait wait () { wait( straznik ) licznik = licznik - 1 if (licznik < 0) { signal( straznik ) wait( wolne ) } else { signal( straznik ) } } // symulowane signal signal () { wait( straznik ) licznik = licznik + 1 if ( licznik 0 ) { // ktoś czeka sygnalizuj signal( wolne ) } signal( straznik ) } Semafor binarny straznik używany jest do zapewnienia WW dla sekcji krytycznej modyfikującej i odczytującej licznik 54
71 Próba 1 c.d. Załóżmy, że wykonują się współbieżnie 4 procesy (p1, p2, p3, p4) oraz zmienna licznik = 2 // Procesy p1, p2 pójdą tą ścieżką wait () { wait( straznik ) licznik = licznik - 1 if (licznik < 0) { signal( straznik ) wait( wolne ) } else { signal( straznik ) } } // Procesy p3 i p4 zostaną wstrzymane wait () { wait( straznik ) licznik = licznik - 1 if (licznik < 0) { signal( straznik ) wait( wolne ) } else { signal( straznik ) } } // zmienne globalne licznik = -2 // wart. semafora straznik = 1 wolne = 0 55
72 Próba 1 wait() { wait( straznik ) licznik = licznik - 1 if (licznik < 0) { signal( straznik ) wait( wolne ) //p3 i p4 //czekają } else signal( straznik ) } signal() { wait( straznik ) licznik = licznik + 1 if ( licznik 0 ) { signal( wolne ) } signal( straznik ) } Początkowo: licznik = -2 straznik = 1 wolne = 0 p1 i p2 wykonują signal() licznik = 0 straznik = 1 wolne = 1 p3 staje się aktywny i przechodzi przez wait( wolne) licznik = 0 straznik = 1 wolne = 0 p4 jest nadal wstrzymany, mimo że nie powinien być 56
73 Próba 2 poprawna // poprzednia wersja wait () { wait( straznik ) licznik = licznik - 1 if (licznik < 0) { signal( straznik ) wait( wolne ) } else { signal( straznik ) } } // poprawiona wersja wait () { wait( straznik ) licznik = licznik - 1 if (licznik < 0) { signal( straznik ) wait( wolne ) } signal( straznik ) } 57
74 Próba 2 poprawna // poprzednia wersja signal () { wait( straznik ) licznik = licznik + 1 if ( licznik 0 ) { signal( wolne ) } signal( straznik ) } // poprawiona wersja signal () { wait( straznik ) licznik = licznik + 1 if ( licznik 0 ) { signal( wolne ) } else { signal( straznik ) } } Zmiana zapobiega możliwości wielokrotnego podniesienia semafora wolne, jeżeli nie został on wcześniej opuszczony. W Próbie 1., jeżeli p1 wykona signal(wolne), ale nie signal(straznik), to p2 nie może wykonać signal(wolne) zanim p3 nie wykona sekcji krytycznej 58
75 Dziedziczenie sekcji krytycznej Opisana technika nazywana jest dziedziczeniem sekcji krytycznej Proces budzony dziedziczy dostęp do sekcji krytycznej (opuszczony semafor) Po obudzeniu proces musi zwolnić (podnieść) semafor 59
76 Dziedziczenie sekcji krytycznej c.d. Schemat alg. z dziedziczeniem sekcji krytycznej Zawieszanie procesu: wait( straznik )... if( warunek ) { licznik = licznik + 1 signal( straznik ) wait( wolne ) // po obudzeniu sem. straznik będzie opuszczony } signal( straznik ) Budzenie procesu: wait( straznik ) if ( licznik > 0 ) { signal( wolne ) // wybudź jeden z wstrzymanych procesów } else { signal( straznik ) } 60
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ółowoPrzeplot. 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ółowoProgramowanie 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ółowoIngerencja 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ółowoSemafory. // 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ółowoWykł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ółowoProgramowanie 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ółowoSemafor 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ółowoWprowadzenie 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ółowoSystemy 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ółowoWspółbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1
Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie
Bardziej szczegółowosynchronizacji 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ółowoAutor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1
Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego
Bardziej szczegółowoprocesó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ółowoJęzyki i Techniki Programowania II. Wykład 7. Współbieżność 1
Języki i Techniki Programowania II Wykład 7 Współbieżność 1 Programy, Procesy, Wątki Program to zestaw instrukcji do wykonania, dane do przetworzenia, mechanizmy sterujące (stos) Proces w komputerze to
Bardziej szczegółowosynchronizacji 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ółowoProgramowanie 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ółowoSynchronizacja 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ółowoSOP2 - 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ółowoMonitory. 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ółowoProces 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ółowoProgramowanie współbieżne Wykład 5. Rafał Skinderowicz
Programowanie współbieżne Wykład 5 Rafał Skinderowicz Monitory motywacje Mechanizmy synchronizacji takie jak blokady (zamki) semafory pozwalają efektywnie rozwiązywać dostępu do współdzielonych zasobów,
Bardziej szczegółowoSemafor 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ółowoSemafory. - 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ółowoKlasyczne 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ółowoWykł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ółowoPodstawy współbieżności
Podstawy współbieżności Algorytmy i struktury danych. Wykład 6. Rok akademicki: 2010/2011 Od koncepcji współbieżności do systemów rozproszonych Współbieżnośd rozważany na poziomie koncepcyjnym sposób realizacji
Bardziej szczegółowoProgramowanie 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ółowoProblemy 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ółowo1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4
Spis treści 1 Wątki 1 2 Tworzenie wątków 1 3 Synchronizacja 3 4 Dodatki 3 5 Algorytmy sortowania 4 6 Klasa Runnable 4 Temat: Wątki Czym są wątki. Grafika. Proste animacje. Małe podsumowanie materiału.
Bardziej szczegółowoWą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ółowoSystemy 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ółowoWykł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ółowoProblemy 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ółowoWątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().
Wątki Streszczenie Celem wykładu jest wprowadzenie do obsługi wątków w Javie. Czas wykładu 45 minut. Definiowanie wątków jako klas potomnych Thread Nadpisanie metody run(). class Watek extends Thread public
Bardziej szczegółowoWYKŁ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ółowoProces 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ółowoProgramowanie 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ółowoMechanizmy 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ółowoSystemy 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ółowoModelowanie 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ółowoSynchronizacja 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ółowoJ. 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ółowoKurs programowania. Wykład 8. Wojciech Macyna
Wykład 8 Program bez watków, jeden procesor, trzy zadania Program z watkami, jeden procesor, trzy zadania Procesory wielordzeniowe, każde zadanie na osobnym procesorze Trzy zadania uruchomione w watkach
Bardziej szczegółowoJava. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu
Bardziej szczegółowoProgramowanie 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ółowoJava. Programowanie Obiektowe Mateusz Cicheński
Java Programowanie Obiektowe Mateusz Cicheński Wielowątkowość Proces a wątek? Thread vs Runnable sleep(), interrupt(), join() Problemy wielowątkowości Obiekty niemodyfikowalne (immutable) Serializacja
Bardziej szczegółowo4. 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ółowoAplikacje w Javie- wykład 11 Wątki-podstawy
1 Aplikacje w Javie- wykład 11 Wątki-podstawy Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/ http://docs.oracle.com/javase/9/docs/
Bardziej szczegółowoObliczenia 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ółowoProgramowanie współbieżne i rozproszone w języku Java
Programowanie współbieżne i rozproszone w języku Java Uniwersytet Marii Curie-Skłodowskiej Wydział Matematyki, Fizyki i Informatyki Instytut Informatyki Programowanie współbieżne i rozproszone w języku
Bardziej szczegółowoStworzenie 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ółowoProgramowanie 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ółowoStrategia "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ółowoModel pamięci. Rafał Skinderowicz
Model pamięci Rafał Skinderowicz Czym jest model pamięci Model pamięci dotyczy programów współbieżnych W programie współbieżnym może się zdarzyć, że dany wątek nie będzie widział od razu wartości zmiennej
Bardziej szczegółowoGdy 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ółowo3URJUDPRZDQLHZVSyá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ółowoJ. 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ółowoProgramowanie współbieżne Wykład 2. Rafał Skinderowicz
Programowanie współbieżne Wykład 2 Rafał Skinderowicz Program współbieżny a sekwencyjny Program zapis algorytmu, ciąg instrukcji do wykonania przez procesor: statyczny sekwencja instrukcji przekształcających
Bardziej szczegółowoKlasyczne 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ółowo4. 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ółowoAlgorytmy 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ółowo1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco
1. Liczby 3456.0012 i 0.000076235 w zapisie zmiennoprzecinkowym przedstawia się następująco a) 0.34560012 10 4 i 0.76235 10 4 b) 3.4560012 10 3 i 7.6235 10 5 c) 3.4560012 10 3 i 7.6235 10 5 d) po prostu
Bardziej szczegółowoMultiprocessor 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ółowoWielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.
Wielowątkowość Programowanie w środowisku rozproszonym. Wykład 1. Informacje organizacyjne Wymiar godzin: W-30, LAB-15 Zaliczenie wykonanie kilku programów i ich zaliczenie (w trakcie zajęć laboratoryjnych)
Bardziej szczegółowo5. 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ółowoKurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017
Wykład 8 10 maj 2017 Współbieżność Watki w JAVA-ie Współbieżność może być realizowana na poziomie systemu operacyjnego (procesy) lub na poziomie aplikacji (watki). W JAVA-ie powszechnie stosuje się watki.
Bardziej szczegółowoRó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ółowoRó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ółowoJęzyk Java wątki (streszczenie)
Programowanie współbieżna Język Java wątki (streszczenie) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Języka Java wątki Autor:
Bardziej szczegółowoProgramowanie komputerów
Programowanie komputerów Wykład 7: Programowanie wielowątkowe w Javie dr inż. Walery Susłow Współbieżność Programy współbieżne (concurrent software) aplikacje potrafiące wykonywać kilka operacji w tym
Bardziej szczegółowoSemafor 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ółowoProcesy 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ółowoAlgorytmy i Struktury Danych
Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu
Bardziej szczegółowoProgramowanie 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ółowoMechanizmy 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ółowoDokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
Bardziej szczegółowoWspółbieżność w środowisku Java
Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych
Bardziej szczegółowoProgramowanie współbieżne Zadanie numer 3 Monitory
Programowanie współbieżne Zadanie numer 3 Monitory Cel zadania Celem zadania jest poznanie monitorowego mechanizmu synchronizacji procesów i zasad jego działania. Podstawa zaliczenia 1. Zademonstrowanie
Bardziej szczegółowoJAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Bardziej szczegółowoZaawansowany 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ółowoSYSTEMY 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ółowoSortowanie przez wstawianie Insertion Sort
Sortowanie przez wstawianie Insertion Sort Algorytm sortowania przez wstawianie można porównać do sposobu układania kart pobieranych z talii. Najpierw bierzemy pierwszą kartę. Następnie pobieramy kolejne,
Bardziej szczegółowoSystemowe 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ółowoGeneratory. Michał R. Przybyłek
Generatory Michał R. Przybyłek 1 Wstęp Generator to potencjalnie nieskończony, leniwie obliczany, ciąg wartości. W zależności od tego, która ze stron decyduje o wygenerowaniu nowej wartości wyróżniamy
Bardziej szczegółowoProgram jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem.
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 1 Podstawowe definicje i pojęcia współbieżności 1.1 Motywacja Przewiduje się że w dalszej perspektywie głównym motorem wzrostu mocy przetwarzania komputerów
Bardziej szczegółowoProces 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ółowoAlgorytmy z powrotami. Algorytm minimax
Algorytmy z powrotami. Algorytm minimax Algorytmy i struktury danych. Wykład 7. Rok akademicki: 2010/2011 Algorytm z powrotami rozwiązanie problemu budowane jest w kolejnych krokach, po stwierdzeniu (w
Bardziej szczegółowoINFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227
INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne Sortowanie Dane wejściowe : trzy liczby w dowolnym porządku Dane wyjściowe: trzy liczby
Bardziej szczegółowoWSPÓŁBIEŻNOŚĆ. MATERIAŁY:
WSPÓŁBIEŻNOŚĆ ZAGADNIENIA: procesy, wątki, synchronizacja, synchronizacja w Java 5.0 blokady, egzekutory, zbiory wątków MATERIAŁY: http://docs.oracle.com/javase/tutorial/essential/concurrency/ HTTP://USERS.UJ.EDU.PL/~CIESLA/
Bardziej szczegółowoProgramowanie 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ółowoModel pamięci. Rafał Skinderowicz
Model pamięci Rafał Skinderowicz Czym jest model pamięci Model pamięci dotyczy programów współbieżnych W programie współbieżnym może się zdarzyć, że dany wątek nie będzie widział od razu wartości zmiennej
Bardziej szczegółowoWykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
Bardziej szczegółowoJava - tablice, konstruktory, dziedziczenie i hermetyzacja
Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja
Bardziej szczegółowoPodstawy programowania obiektowego
Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie
Bardziej szczegółowoAnaliza algorytmów zadania podstawowe
Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą
Bardziej szczegółowoJęzyki i metody programowania Java INF302W Wykład 2 (część 1)
Języki i metody programowania Java INF302W Wykład 2 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 1 Struktura wykładu 1. Identyfikacja
Bardziej szczegółowoJAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.
JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod
Bardziej szczegółowo4. 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ółowo2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych
2. Tablice Tablica to struktura danych przechowująca elementy jednego typu (jednorodna). Dostęp do poszczególnych elementów składowych jest możliwy za pomocą indeksów. Rozróżniamy następujące typy tablic:
Bardziej szczegółowo