1
Koordynowanie
procesów
Wykład 4
SO
powtórzenie
2
Koordynowanie
procesów
Aby procesy mogły być wykonywane
w sposób uporządkowany, w
systemie muszą znajdować się
mechanizmy do synchronizowania
i komunikowania się procesów.
Zatem koordynacja procesów polega
na (A)synchronizacji +
(B)komunikacji.
3
Problem sekcji
krytycznej
Prawidłowość przebiegu procesów wymaga
odpowiedniej formy synchronizacji.
Załóżmy, że każdy z grupy
synchronizowanych procesów ma segment
kodu, zwany sekcją krytyczną (zmiana
wspólnych zmiennych, itp..). Gdy jeden z
procesów wykonuje swoją sekcję krytyczną,
wówczas żaden inny proces nie może
wykonywać swojej sekcji krytycznej.
Wykonanie sekcji krytycznych podlega
wzajemnemu wyłączaniu w czasie.
Synchronizacja
4
Ogólna struktura typowego
procesu
repeat
sekcja wejściowa;
sekcja krytyczna;
sekcja wyjściowa;
reszta
until false;
5
Aby prawidłowo skoordynować
procesy (czyli rozwiązać problem
sekcji krytycznej) muszą być
spełnione 3 warunki:
1. wzajemne wyłączanie
(W danym momencie tylko
jeden proces może działać w sekcji krytycznej.)
2. postęp
(Do wejścia do sekcji krytycznej mogą
kandydować procesy nie wykonujące swoich reszt;
wybór nie może być odwlekany w nieskończoność.)
3. ograniczone czekanie
(Istnieje graniczna wartość
liczby wejść innych procesów do ich sekcji krytycznych
po tym, gdy dany proces zgłosił chęć wejścia do sekcji
krytycznej i zanim uzyskał na to pozwolenie.)
Zakłada się, że każdy proces jest wykonywany z
prędkością niezerową. Natomiast nie czyni się
żadnych założeń o względnej prędkości każdego z
procesów.
6
Praktyczne rozwiązania
problemu sekcji krytycznej
• sprzętowe środki synchronizacji, np.
rozkazy sprzętowe wykonywane jako
niepodzielne jednostki pozwalające
sprawdzać i zmieniać zawartość
słowa,
• semafory,
• regiony krytyczne,
• monitory.
7
Semafory
Semafor jest zmienną całkowitą, dostępną tylko za
pomocą dwu standardowych, niepodzielnych
operacji:
• czekaj,
• sygnalizuj.
Gdy jeden proces modyfikuje wartość semafora,
wówczas żaden inny proces nie może jednocześnie
tej wartości zmieniać. Dla czekaj(S) nie może
wystąpić przerwanie podczas sprawdzania wartości
zmiennej całkowitej S (S<=0) i ewentualnego
dokonywania jej zmiany.
Operacje na semaforze:
Czekaj (S) : while s<=0 do nic;
s:=s-1;
Sygnalizuj(S): s:=s+1;
8
Wadą konieczność
aktywnego czekania
przez
procesy. Podczas, gdy jeden proces jest w
sekcji krytycznej, pozostałe procesy usiłujące
wejść do sekcji krytycznych muszą
nieustannie wykonywać instrukcje sekcji
wejściowych.
Aktywne czekanie marnuje cykle procesora,
które mogłyby być produktywnie
zużytkowane przez inne procesy. Semafor
tego rodzaju bywa też nazywany
wirującą
blokadą
(oczekujący proces wiruje w
miejscu).
9
Komunikacja
międzyprocesowa
Komunikacja międzyprocesowa stanowi
mechanizm umożliwiający procesom
wzajemne informowanie się i
synchronizowanie działań. Komunikację
międzyprocesową realizuje się za pomocą
systemu komunikatów
lub
pamięci
dzielonej
. Oba te schematy mogą być
używane jednocześnie w obrębie jednego
S.O.
Komunikacja
10
Systemy z pamięcią
dzieloną
W systemach z pamięcią dzieloną
procesy współużytkują pewne
zmienne, za pomocą których odbywa
się wymiana informacji.
Odpowiedzialność za organizowanie
komunikacji spoczywa na
programistach zastosowań. S.O.
dostarcza tylko środków do dzielenia
pamięci.
11
Metoda systemu
komunikatów
Metoda systemu komunikatów pozwala procesom na
wymianę komunikatów.
Odpowiedzialność za
organizowanie komunikacji spada na sam system
operacyjny.
Jeśli procesy P i Q chcą się
komunikować ze sobą, to muszą nadawać i odbierać
komunikaty – musi istnieć między nimi łącze
komunikacyjne.
W przypadku procesów o rozłącznych przestrzeniach
adresów logicznych, w skład narzędzi komunikacji
międzyprocesowej wchodzą dwie podstawowe
operacje:
•
nadaj
•
odbierz
12
Komunikacja może być bezpośrednia lub
pośrednia.
W
komunikacji bezpośredniej
każdy proces,
który chce nadać lub odebrać komunikat
musi jawnie nazwać odbiorcę lub nadawcę
uczestniczącego w tej wymianie informacji.
W tym przypadku operacje nadaj i odbierz
są zdefiniowane następująco:
nadaj(P,komunikat) czyli nadaj komunikat
do procesu P.
odbierz(Q,komunikat) czyli odbierz
komunikat od procesu Q.
13
W
komunikacji pośredniej
komunikaty
są nadawane i odbierane poprzez
skrzynki pocztowe. Skrzynka pocztowa
jest obiektem, w którym procesy mogą
umieszczać komunikaty i z którego
komunikaty mogą być pobierane.
Proces może komunikować się z innymi
procesami za pomocą różnych
skrzynek pocztowych.