Wykład - koordynacja procesów

Nasza ocena:

3
Wyświetleń: 357
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Wykład - koordynacja procesów - strona 1 Wykład - koordynacja procesów - strona 2 Wykład - koordynacja procesów - strona 3

Fragment notatki:

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)

Zaloguj się, aby dodać komentarz