Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Semafory Autorzy : Michał Winciorek Łukasz Jackowicz.

Podobne prezentacje


Prezentacja na temat: "Semafory Autorzy : Michał Winciorek Łukasz Jackowicz."— Zapis prezentacji:

1 Semafory Autorzy : Michał Winciorek Łukasz Jackowicz

2 Pojęcia wstępne proces procesy współbieżne (rys a i b)

3 Procesy mogą ze sobą współpracować lub współzawodniczyć.
komunikacja synchronizacja program współbieżny - składa się z kilku sekwencyjnych procesów, w których wykonywanie poszczególnych instrukcji może być przeplatane, lecz same procesy muszą się ze sobą komunikować by synchronizować działanie bądź wymieniać dane.

4 Blokada i zagłodzenie zasób dzielony sekcja krytyczna
blokada – wstrzymana grupa procesów, oczekujących na zdarzenie, które może zapoczątkować tylko jakiś inny proces z tej grupy ang. deadlock

5 Semafor zagłodzenie – nieskończone wstrzymywanie
procesu przez wykonywanie innych, współbieżnych do niego procesów Semafor stanowi mechanizm synchronizacji procesów, przeciwdziała wystąpieniu zjawisk blokady i zagłodzenia definicja semafora ogólnego S – zmienna całkowita, nieujemna, o nadanej pewnej wartości początkowej

6 dozwolone operacje na semaforach
Czekaj(S). Jeśli S>0 to S:=S-1, Jeśli nie to wstrzymaj wykonanie procesu. Taki proces nazywamy wstrzymanym przez semafor S. Sygnalizuj(S) Jeśli są procesy wstrzymane przez ten semafor, to wznów jeden z nich, Jeśli nie to S:=S+1. własności semafora Czekaj(S) i Sygnalizuj(S) to operacje atomowe Niezmienniki : a) S >= 0 b) S = S0 + #Sygnały - #Oczekiwania

7 rodzaje semaforów : uwagi i wnioski
Sygnalizuj(S) musi wznowić wstrzymany wcześniej proces ... ... ale który rodzaje semaforów : Semafor z kolejką oczekujących procesów – FIFO Semafor z aktywnym czekaniem - wartość S jest sprawdzana w pętli aktywnego czekania Czekaj(S): Loop If S>0 then S:=S-1; exit; endif; End Loop; Silnie i słabo uczciwy semafor. uwagi i wnioski

8 Wzajemne wykluczanie Problem : zsynchronizowanie N procesów, z których każdy w nieskończonej pętli na przemian zajmuje się „własnymi sprawami” i wykonuje sekcję krytyczną, w taki sposób, aby wykonywanie sekcji krytycznych jakichkolwiek dwóch lub więcej procesów nie pokrywało się w czasie. Problem występujący w rzeczywistych systemach w związku z przydzielaniem zasobów komputera wielu procesom. sposób rozwiązania przy użyciu semafora z kolejką oczekujących procesów Oznaczenia : e(s) – wartość zmiennej semaforowej e0(s)– wartość początkowa zm. semaforowej, jej wartość zależy od rozwiązywanego problemu, określa krotność zasobu f(s) – kolejka procesów czekających na dostęp do zasobu P(s) – procedura wejścia, wykonywana dla każdego procesu zgłaszającego chęć skorzystania z zasobu V(s) – procedura wyjścia, zwalniająca niepotrzebny danemu procesowi zasób, wykonywana dla każdego procesu, który kończy użytkowanie zasobu

9 implementacja procedur
P(s) : begin e(s):=e(s)-1 if e(s) < 0 then stan(R):=zawieszony R do kolejki f(s) end else R zajmuje zasób V(s) : begin e(s):=e(s)+1 if e(s) <= 0 then wyprowadź Q z kolejki f(s) stan(Q):=aktywny end Ug. R to proces pytający o dostęp do zasobu

10 Problem obiadujących filozofów
Założenia: Filozof je tylko wtedy gdy ma dwa widelce, przy czym nie może podnieść na raz dwóch widelców. Dwóch filozofów nie może jeść jednocześnie tym samym widelcem Nie można wyróżniać żadnego z filozofów Żaden z filozofów nie zajmuje się tylko jedzeniem, po skończonym posiłku zapada w medytacje

11 Rozwiązanie: Można przyjąć, że każdy widelec jest semaforem. Filozof próbując podnieść widelec wykonuje operacje czekaj w stosunku do semafora. Odkładając widelec wykonuje natomiast operacje sygnalizuj. Zatem dzielone dane to : var pałeczka: arrey[0..4] of semafor; przy czym wszystkie elementy tablicy pałeczka mają na początku wartość 1. Repeat czekaj(pałeczka[i]); czekaj(pałeczka[i + 1mod 5]); jedzenie sygnalizuj(pałeczka[i]); sygnalizuj(pałeczka[i + 1mod 5]); myślenie Until false;

12 Problem pięciu obiadujących filozofów jest uznawany za klasyczne zagadnienie synchronizacji, z uwagi na to, że stanowi przykład szerokiej klasy problemów sterowania współbieżnością. Jest prostym odzwierciedleniem konieczność przydzielania wielu zasobów do wielu procesów w sposób grożący zakleszczeniem i zagłodzeniem. Sposoby rozwiązania problemu zakleszczenia: pozwolić zasiadać do stołu co najwyżej czterem filozofom naraz pozwolić filozofowi na podnoszenie widelców tylko wtedy, gdy są oba dostępne (tego zabiegu należy dokonać w sekcji krytycznej) zastosować rozwiązanie asymetryczne, tzn. filozof o numerze nieparzystym podnosi najpierw widelec po lewej stronie, a potem sięga na prawo, podczas gdy filozof parzysty rozpoczyna od widelca znajdującego się po jego prawej stronie a potem zwraca się ku lewej stronie.


Pobierz ppt "Semafory Autorzy : Michał Winciorek Łukasz Jackowicz."

Podobne prezentacje


Reklamy Google