To tylko jedna z 6 stron tej notatki. Zaloguj się aby zobaczyć ten dokument.
Zobacz
całą notatkę
Systemy operacyjne – notatki do wykładu
4. Koordynacja procesów
4.1 Sekcje krytyczne
interpretacja przetwarzania współbieżnego dla pojedynczego CPU: proces rozpoczyna się
przed zakończeniem poprzedniego
możliwy konflikt przy operacjach na danych dzielonych (np. nawet instrukcja x:=x=1 to 3
instrukcje (mov AX,x; inc AX; mov x,AX) procesora...
Wniosek: każdy z procesów ma (może mieć) segment kodu nazywany sekcją krytyczną (SK).
SK procesów podlegają wzajemnemu wykluczaniu się w czasie.
Cechy rozwiązania problemu SK:
- wzajemne wyłączanie SK
- ograniczone (skończone) czekanie na wejście do SK
- postęp: kandydują tylko procesy zgłaszające chęć wejścia do SK
np.(ogólna struktura procesu i przykładowe rozwiązanie):
repeat
while x0 do nic (sekcja wejściowa)
(SK)
x:=1
(sekcja wyjściowa)
until false (narzucone naprzemienne (czyli nie spełniające warunku postępu) wykonanie SK
dla 2(może być więcej) procesów)
Poprawne rozwiązanie dla 2 procesów:
var flaga: array[o..1] of Boolean
numer: 0..1
repeat
flaga[i]:=TRUE
(chcę wejść)
numer:=j
(założenie, że drugi chce wejść)
while (flaga[j] AND numer:=j)do nic
flaga[i]:=FALSE
until false
(bez zmiennej numer możliwe byłoby ustawienie obu flag przez procesy w
dwóch kolejnych instrukcjach procesora (po pechowym przełączeniu kontekstu) i wieczne ich
zapętlenie...)
4.2 Semafory
Semafor ogólne popularne rozwiązanie problemu SK i synchronizacji
Semafor s to zmienna całkowita dostępna po inicjacji za pomocą tylko 2 operacji:
- czekaj(s):
while s
sygnalizuj(s)
until false
12
Systemy operacyjne – notatki do wykładu
Zastosowanie przy synchronizacji (np. gdy operacja1 musi się wykonać po operacji2):
s:=0
1proces:
op1;
2proces:
czekaj(s);
sygnalizuj(s);
op2;
-
Wada: s wymaga aktywnego czekania (czas procesora!!!)
rozwiązanie: po czekaj(s) proces jest blokowany i umieszczany w kolejce związanej z s
pobranie procesu z kolejki następuje po sygnalizuj(s)
wtedy semafor to rekord (zmienna całk. + lista procesów)
algorytm obsługi kolejki nie ma znaczenia dla procesora
Realizacja niepodzielności:
1 procesor: blokada przerwań na czas operacji
wiele procesorów: np. pojedyncza instrukcja procesora „test&set”
4.3 Blokady.
Stan blokady: każdy proces w zbiorze procesów czeka na zdarzenie, które może być
spowodowane tylko przez inny procesu z tego samego zbioru (zdarzeniem może być np.
przydział lub zwolnienie zasobu).
np.:
Semafory A i B mają wartość 1:
P0: wait(A); wait(B)
P1: wait(B); wait(A)
Przypadek szczególny: tzw. głodzenie – czekanie w nieskończoność pod semaforem – gdy np.
zastosujemy
... zobacz całą notatkę
Komentarze użytkowników (0)