SO materiał

Warunki konieczne wystąpienia zakleszczenia

Definicja zakleszczenia procesu

Wzajemne wykluczanie 2 procesów — podejście 1

Algorytm dla procesu Pi przy dwóch procesach Pi i Pj

shared numer: Integer := i;

while numeri dosekcja wejściowa

nic;

sekcja krytycznai;

numer := j; ← sekcja wyjściowa

Operacja test&set

function test&set(var l: Boolean): Boolean;

begin
test&set := l;
l := true;
end;

Operacja Exchange

procedure exchange(var a,b: Boolean);

var tmp: Boolean;

begin
tmp := a;

a := b;
b := tmp;

end;

Wzajemne wykluczanie z użyciem instrukcji test&set

shared zamek: Boolean := false;

while test&set(zamek) dosekcja wejściowa

nic; ← sekcja wejściowa

sekcja krytyczna;

zamek := false; ← sekcja wyjściowa

reszta;

Wzajemne wykluczanie z użyciem instrukcji Exchange

shared zamek: Boolean := false;

local klucz: Boolean;

klucz := true; ← sekcja wejściowa

repeat exchange(zamek, klucz); ← sekcja wejściowa

until klucz = false; ← sekcja wejściowa

sekcja krytyczna;

zamek := false; ← sekcja wyjściowa

reszta;

Adres logiczny i fizyczny

Przykład odwzorowania adresu logicznego na fizyczny

Przykład weryfikacji poprawności adresu

Schemat transformacji adresu w systemie pamięci stronicowanej

// czyli wraz ze stronicowaniem jak myślę. //

Schemat adresowania z segmentacją

Schemat adresowania z segmentacją i stronicowaniem

Grafy przepływu procesów

Grafy przepływu procesów przedstawiają zależności czasowe wykonywania procesów. Wierzchołki tych grafów reprezentują chwile czasu, natomiast krawędzie zorientowane - procesy. Dwa wierzchołki są połączone krawędzią zorientowaną (łukiem) jeżeli istnieje proces, którego moment rozpoczęcia odpowiada pierwszemu wierzchołkowi, a moment zakończenia - drugiemu.

Dobrze zagnieżdżony graf przepływu procesów

Graf przepływu procesów jest dobrze zagnieżdżony, jeżeli może być opisany przez funkcje P(a,b) i S(a,b) lub ich złożenie, gdzie P(a,b) i S(a,b) oznaczają odpowiednio wykonanie równoległe i szeregowe procesów a i b.

Przykład

Przedstawić graf przepływu procesów
odpowiadających wyznaczeniu wyrażenia

y := ( a + b )2–(c + d )(e – f)

Notacja "and" (Wirth)

Współbieżne wykonanie może być specyfikowane za pomocą operatora and, który łączy dwa wyrażenia wykonywane współbieżnie.

Przykład notacji „and”

Zastosowanie notacji and do implementacji programu wyznaczającego wartość wyrażenia:

(a+b)2– (c+d)(e–f)

Notacja "parbegin - parend" ("cobegin - coend", Dijsktra)

Wszystkie wyrażenia ujęte w nawiasy parbegin – parend są wykonywane współbieżnie

Notacja "fork, join, quit" (Conway)

Przykład notacji „fork, join, quit”

Problem wzajemnego wykluczania (1)

Instrukcja testandset

Załóżmy, że w systemie dostępna jest instrukcja typu testandset (a, b), która w sposób atomowy (niepodzielny) dokonuje odczytu zmiennej b, zapamiętania wartości tej zmiennej w zmiennej a oraz przypisania zmiennej b wartości true.

testandset(a, b) is equivalent to :

------------------

a := b;

b := True;

------------------

nottestandset(a, b) is equivalent to :

------------------

a := b;

b := False;

------------------

Przykład – testandset

Semafory

Semaforem nazywamy zmienną chronioną, na ogół będącą nieujemną zmienną typu integer, do której dostęp (zapis i odczyt) możliwy jest tylko poprzez wywołanie specjalnych funkcji (operacji) dostępu i inicjacji.

Wyróżnia się semafory:

przyjmujące tylko wartość 0 lub 1,

mogą przyjąć nieujemną wartość całkowitoliczbową.

Operacje P(S) i V(S)

Przykład – semafory

Problem producenta-konsumenta

// Z tego co myślę to jest z użyciem semafora //

Semafory binarne

Semafory binarne Sb mogą przyjmować tylko dwie wartości: 0 i 1.

Przez Pb i Vb oznaczone są operacje na semaforach binarnych odpowiadające operacjom P i V .

Definicja Pb jest taka sama jak P, natomiast definicja Vb różni się od V tylko tym, że Vb nie zmienia wartości semafora binarnego jeśli miał on wartość 1.

Implementacja semaforów binarnych

Opuszczanie semafora

Procedure P (var s:Binary_semaphore)

Begin

while not s do nic;

S:=false;

End;

Podnoszenie semafora

Procedure V (var s:Binary_semaphore)

Begin

S:=true;

End;

Implementacja binarnych operacji semaforowych z aktywnym czekaniem

Specyfikacja implementacji z aktywnym czekaniem (ang.busy wait)

Implementacja z aktywnym czekaniem

Regiony krytyczne – definicja

Niech następująca deklaracja zmiennej v typu T określa zmienną dzieloną przez wiele procesów.

var v: shared T;

Zmienna v będzie dostępna tylko w obrębie instrukcji region o następującej postaci:

region v do S;

Regiony krytyczne – implementacja

Warunkowe regiony krytyczne – implementacja

Pisarze i czytelników z użyciem semaforów

Pisarze i czytelnicy z użyciem regionów krytycznych

Producent – konsument z wykorzystaniem monitorów

Pisarze i czytelnicy z wykorzystaniem monitorów

Filozofowie z wykorzystaniem monitorów

Zakleszczenie – definicja

Przez zakleszczenie (ang. deadlock) rozumieć będziemy formalnie stan systemu, w którym spełniany jest następujący warunek:

gdzie W jest zbiorem indeksów (lub zbiorem zadań)

Mówimy, że system jest w stanie zakleszczenia (w systemie wystąpił stan zakleszczenia), jeżeli istnieje niepusty zbiór W zadań, które żądają przydziału dodatkowych zasobów nieprzywłaszczalnych będących aktualnie w dyspozycji innych zadań tego zbioru.

Innymi słowy, system jest w stanie zakleszczenia, jeżeli istnieje niepusty zbiór W zadań, których żądania przydziału dodatkowych zasobów nieprzywłaszczalnych nie mogą być spełnione nawet jeśli wszystkie zadania nie należące do W zwolnią wszystkie zajmowane zasoby.

Jeżeli W≠∅, to zbiór ten nazywamy zbiorem zadań zakleszczonych.

Warunki konieczne wystąpienia zakleszczenia

Warunkami koniecznymi wystąpienia zakleszczenia są:

Wzajemne wykluczanie (ang. mutual exclusion condition),

W każdej chwili zasób może być przydzielony co najwyżej jednemu zadaniu.

Zachowywanie zasobu (ang. wait for condition),

Proces oczekujący na przydzielenie dodatkowych zasobów nie zwalnia zasobów będących aktualnie w jego dyspozycji.

Nieprzywłaszczalność (ang. non preemption condition),

Zasoby są nieprzywłaszczalne tzn. ich zwolnienie może być zainicjowane jedynie przez proces dysponujący w danej chwili zasobem.

Istnienie cyklu oczekiwań (ang. circular wait condition),

Występuje pewien cykl procesów z których każdy ubiega się o przydział dodatkowych zasobów będących w dyspozycji kolejnego procesu w cyklu.

Rozwiązania problemu zakleszczenia. Przeciwdziałanie zakleszczeniom.

Konstrukcje systemów immanentnie wolnych od zakleszczenia (construction of deadlock free systems)

Podejście to polega w ogólności na wyposażeniu systemu w taką liczbę zasobów, aby wszystkie możliwe żądania zasobowe były możliwe do zrealizowania. Przykładowo, uzyskuje się to, gdy liczba zasobów każdego rodzaju jest nie mniejsza od sumy wszystkich maksymalnych i możliwych jednocześnie żądań.

Detekcja zakleszczenia i odtwarzanie stanu wolnego od zakleszczenia (detection and recovery).

W podejściu detekcji i odtwarzania, stan systemu jest periodycznie sprawdzany i jeśli wykryty zostanie stan zakleszczenia, system podejmuje specjalne akcje w celu odtworzenia stanu wolnego do zakleszczenia.

Unikanie zakleszczenia (avoidance).

W podejściu tym zakłada sie znajomość maksymalnych żądań zasobowych. Każda potencjalna tranzycja stanu jest sprawdzana i jeśli jej wykonanie prowadziłoby do stanu niebezpiecznego, to żądanie zasobowe nie jest w danej chwili realizowane.

Zapobieganie zakleszczeniu (prevention)

W ogólności podejście to polega na wyeliminowaniu możliwości zajścia jednego z warunków koniecznych zakleszczenia.

Sformułowanie formalne problemu wzajemnego wykluczania

Dany jest zbiór procesów sekwencyjnych komunikujących się przez wspólną pamięć. Każdy z procesów zawiera sekcję krytyczną, w której następuje dostęp do wspólnej pamięci. Procesy te są procesami cyklicznymi

Zakłada się ponadto:

1.Zapis i odczyt wspólnych danych jest operacją niepodzielną, a próba jednoczesnych zapisów lub odczytów

realizowana jest sekwencyjnie w nieznanej kolejności.

2.Sekcje krytyczne nie mają priorytetu.

3.Wzgledne prędkości wykonywania procesów są nieznane.

4.Proces może zostać zawieszony poza sekcją krytyczną.

5.Procesy realizujące instrukcje poza sekcją krytyczną nie mogą uniemożliwiać innym procesom

wejścia do sekcji krytycznej.

6. Procesy powinny uzyskać dostęp do sekcji krytycznej w skończonym czasie.

Przy tych założeniach należy zagwarantować, że w każdej chwili czasu najwyżej jeden proces

jest w sekcji krytycznej.

Implementacja semafora ogólnego na poziomie maszynowym

Opuszczanie semafora

Procedure P(var s: semaphore)

Begin

While s = 0 do nic;

S := s – 1;

End;

Podnoszenie semafora

Procedure V (var s: Semaphore)

Begin

S := s + 1

End;

Implementacja semafora binarnego na poziomie maszynowym

Opuszczanie semafora

Procedure P (var s: Binary_Semaphore)

Begin

while not s do nic;

s := false;

end;

Podnoszenie semafora

Procedure V (var s: Binary_Semaphore)

Begin

S := true;

End;

Wzajemne wykluczanie z użyciem semaforów

Shared mutex: Semaphore := 1;

P(mutex); <- sekcja wejściowa

Sekcja krytyczna;

V(mutex); <- sekcja wyjściowa

Reszta;

Producent i konsument za pomocą semaforów ogólnych

Producent

Local i: Integer := 0;

Local elem: ElemT;

While . . . do Begin

Produkuj(elem)

P(wolne)

Buf[i] := elem;

I := (i+1) mod n;

V(zajety)

End;

Konsument

Local i: integer := 0;

Local elem: ElemT;

While … do Begin

P(zajety)

Elem := buf[i];

I := (i+1) mod n;

V(wolne);

Konsumuj(elem);

End:

Czytelnicy i pisarze za pomocą semaforów binarnych

Czytelnik

while ... do begin

P(mutex_r);

l_czyt := l_czyt + 1; if l_czyt = 1 then P(mutex_w);

V(mutex_r);

czytanie;

P(mutex_r);

l_czyt := l_czyt - 1; if l_czyt = 0 then V(mutex_w);

V(mutex_r);

end;

Pisarz

while ... do

P(mutex_w);

pisanie;

V(mutex_w);

end;

5 filozofów za pomocą semaforów binarnych (2)

Filozof nr i (i = 0 ... 4)

while ... do begin

myślenie;

P(dopuść);

P(widelec[i]);

P(widelec[(i+1) mod 5]);

jedzenie;

V(widelec[i]);

V(widelec[(i+1) mod 5]);

V(dopuść);

end;

Śpiący fryzjerzy za pomocą semaforów (2)

Klient

while ... do begin

P(mutex);

if l_czek < p then begin

l_czek := l_czek + 1; V(klient);

V(mutex);

P(fryzjer);

strzyżenie;

end

else V(mutex);

end;

Fryzjer

while ... do begin

P(klient);

P(fotel);

P(mutex);

l_czek := l_czek - 1;

V(fryzjer);

V(mutex);

strzyżenie;

V(fotel);

end;

Producent i konsument za pomocą monitora

Dane współdzielone

shared buf: Buffer;

Producent

local

elem: ElemType;

while ... do begin

produkuj(elem);

buf.wstaw(elem);

end;

Konsument

local

elem: ElemType;

while ... do begin

buf.pobierz(elem);

konsumuj(elem);

end;

Czytelnicy i pisarze za pomocą monitora

• Dane współdzielone

shared czytelnia: Monitor;

• Czytelnik

czytelnia.wejście_czytelnika;

czytanie;

czytelnia.wyjście_czytelnika;

• Pisarz

czytelnia.wejście_pisarza;

pisanie;

czytelnia.wyjście_pisarza;

Producent i konsument za pomocą regionu krytycznego

• Producent

local elem: ElemT;

while ... do

begin

produkuj(elem);

region buf when buf.licz < n do

begin

buf.pula[wej]:= elem;

buf.wej := (buf.wej+1) mod n;

buf.licz := buf.licz + 1;

end;

end;

• Konsument

local elem: ElemT;

while ... do

begin

region buf when buf.licz > 0 do

begin

elem := buf.pula[wyj];

buf.wyj := (buf.wyj+1) mod n;

buf.licz := buf.licz - 1;

end;

konsumuj(elem);

end;


Wyszukiwarka

Podobne podstrony:
SO, Materiały, III semestr, Systemy operacyjne- materiały, egzamin, egzamin SO, egzamin SO
Polecenia linuxa i unixa, Technik Informatyk - materiały, SO I SK
PYTANIA WEJSCIOWKI, Materiały, III semestr, Systemy operacyjne- materiały, egzamin, SO egz, SO egz,
Egzamin lato 2k00-2, Materiały, III semestr, Systemy operacyjne- materiały, egzamin, so-egzamin, roz
Egzamin lato 2k00-1, Materiały, III semestr, Systemy operacyjne- materiały, egzamin, so-egzamin, roz
Kod błędu bluescreen, Technik Informatyk - materiały, SO I SK
SYSTEMY PLIKOW, Technik Informatyk - materiały, SO I SK
Nowy folder, Pytania SO ustne 1 sem, Program autorski rozkładu materiału nauczania z przedmiotu
Polecenia linuxa i unixa, Technik Informatyk - materiały, SO I SK
geriatria p pokarmowy wyklad materialy
Materialy pomocnicze prezentacja maturalna
Problemy geriatryczne materiały
Wstęp do psychopatologii zaburzenia osobowosci materiały
material 7
Prez etyka materiały1
Prez etyka materialy7
so c4
Med Czyn Rat1 Ostre zatrucia Materialy

więcej podobnych podstron