Sop_13_wyk_1.0.pdf

(4064 KB) Pobierz
Microsoft PowerPoint - SOP_wyk_nr_13.ppt
Systemy operacyjne Systemowe mechanizmy synchronizacji procesów
Systemy operacyjne
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 poziomie architektury komputera, jak i przy
wsparciu systemu operacyjnego, polegającego na odpowiednim zarządzaniu
synchronizowanymi procesami. Należą do nich semafory oraz mechanizmy
zdefiniowane w ramach standardu POSIX, czyli zamki oraz zmienne warunkowe.
529586733.008.png 529586733.009.png
Systemy operacyjne Systemowe mechanizmy synchronizacji procesów
Systemy operacyjne
Plan wykładu
• Definicja semafora
• Klasyfikacja semaforów
• Implementacja semaforów
•Zamki
• Zmienne warunkowe
• Klasyczne problemy synchronizacji
Systemowe mechanizmy synchronizacji procesów (2)
Wykład składa się z trzech części. Pierwsza obejmuje semafory, ich abstrakcyjną
definicję, klasyfikację oraz sposoby implementacji. Druga dotyczy mechanizmów
standardu POSIX i sposobu ich użycia w synchronizacji. Ostatnia z zasadniczych
części wykładu obejmuje klasyczne problemy synchronizacji procesów —
producenta i konsumenta, czytelników i pisarzy, pięciu filozofów oraz śpiących
fryzjerów. Przedstawione zostaną rozwiązania tych problemów z użyciem
semaforów. Na koniec pojawi się krótka wzmianka o strukturalnych
mechanizmach synchronizacji.
529586733.010.png 529586733.011.png
Systemy operacyjne Systemowe mechanizmy synchronizacji procesów
Systemy operacyjne
Semafory
• Semafor jest zmienną całkowitą nieujemną lub — w
przypadku semaforów binarnych — zmienną typu
logicznego.
• Na semaforze można wykonywać dwa rodzaje operacji:
– P — opuszczanie semafora (hol. proberen)
– V — podnoszenie semafora (hol. verhogen)
• Synchronizacja polega na blokowaniu procesu w
operacji opuszczania semafora, jeśli semafor jest już
opuszczony.
Systemowe mechanizmy synchronizacji procesów (3)
Semafor, jako mechanizm synchronizacji procesów, został zaproponowany przez
Dijkstrę.
Semafor jest zmienną całkowitą, która z logicznego punktu widzenia (z punktu
widzenia aplikacji) przyjmuje wartości nieujemne (≥0) lub — w przypadku
semaforów binarnych — logiczne. Zmienna semaforowa musi mieć nadaną
początkowąwartość(oczywiście nieujemną).
Po nadaniu początkowej wartości zmiennej semaforowej można na niej wykonywać
tylko dwa rodzaje operacji:
P —opuszczanie semafora (hol. proberen),
V —podnoszenie semafora (hol. verhogen).
Operacja opuszczania powoduje zmniejszenie wartości zmiennej semaforowej, a
operacja podnoszenia jej zwiększenie. Wykonując operację semaforową, proces
może zastaćzablokowany (przejśćw stan oczekiwania). Typowym przypadkiem jest
blokowanie w operacji opuszczania semafora. Operacja opuszczanianie zakończy się
do czasu, ażwartośćzmiennej semaforowej będzie na tyle duża (byćmoże zostanie
zwiększona w międzyczasie), że zmniejszenie jej wartości w wyniku tej operacji nie
spowoduje przyjęcia wartości ujemnej. W przypadku semaforów dwustronnie
ograniczonych blokowanie może wystąpić również w przypadku podnoszenia
semafora.
529586733.001.png 529586733.002.png
Systemy operacyjne Systemowe mechanizmy synchronizacji procesów
Systemy operacyjne
Rodzaje semaforów (1)
• Semafor binarny — zmienna semaforowa przyjmuje
tylko wartości true (stan podniesienia, otwarcia) lub false
(stan opuszczenia, zamknięcia).
• Semafor ogólny (zliczający) — zmienna semaforowa
przyjmuje wartości całkowite nieujemne, a jej bieżąca
wartość jest zmniejszana lub zwiększana o 1 w wyniku
wykonania odpowiednio operacji opuszczenia lub
podniesienia semafora.
Systemowe mechanizmy synchronizacji procesów (4)
Typowym semaforem jest semafor binarny, który może mieć dwa stany:
podniesiony (otwarty) i opuszczony (zamknięty). Wielokrotne podnoszenie
takiego semafora nie zmieni jego stanu —skutkiem będzie stan otwarcia. W
niektórych rozwiązaniach przyjmuje się, że próba podniesienia otwartego
semafora sygnalizowana jest błędem.
W przeciwieństwie do semafora binarnego, semafor ogólny „pamięta” liczbę
operacji podniesienia. Przy wartości początkowej 0 można zatem bez
blokowania procesu wykonać tyle operacji opuszczenia semafora, ile razy
zostałon wcześniej podniesiony. Stąd określenie — semafor zliczający .
529586733.003.png 529586733.004.png
Systemy operacyjne Systemowe mechanizmy synchronizacji procesów
Systemy operacyjne
Rodzaje semaforów (2)
• Semafor uogólniony — semafor zliczający, w przypadku
którego zmienną semaforową można zwiększać lub
zmniejszać o dowolną wartość, podaną jako argument
operacji.
• Semafor dwustronnie ograniczony — semafor ogólny, w
przypadku którego zmienna semaforowa, oprócz
dolnego ograniczenia wartością 0, ma górne
ograniczenie, podane przy definicji semafora.
Systemowe mechanizmy synchronizacji procesów (5)
Semafor uogólniony można zwiększać lub zmniejszać o dowolną podaną wartość pod
warunkiem, że w wyniku zmniejszenia zmienna semaforowa nie osiągnie wartości
ujemnej. Jeśli zatem wartość parametru, o którą ma być zmniejszona zmienna
semaforowa jest większa od wartości tej zmiennej, następuje zablokowanie procesu.
Dla semafora dwustronnie ograniczonego definiuje się górne ograniczenie, po
osiągnięciu którego następuje blokowanie procesu równieżw operacji podnoszenia.
529586733.005.png 529586733.006.png 529586733.007.png
Zgłoś jeśli naruszono regulamin