Problem sekcji krytycznej. Sprz"towe #rodki synchronizacji. Semafory. Klasyczne problemy synchronizacji. Regiony krytyczne. Monitory. Przyk!ady synchronizacji procesów:!! Solaris,!! Windows XP/Vista/7,!! Linux. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 1
We$my n procesów rywalizuj%cych o dost"p do wspólnych (dzielonych) danych. Ka&dy proces ma segment kodu zwany sekcj! krytyczn! (critical section), w którym mo&e korzysta' ze wspólnych danych. Problem: Nale&y zapewni', &e kiedy jeden proces wykonuje sekcj" krytyczn%, wówczas &aden inny proces nie jest dopuszczany do wykonywania swojej sekcji krytycznej. "! Wykonywanie sekcji krytycznej powinno podlega' wzajemnemu wykluczaniu (mutual exclusion). Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 2
do { sekcja wej!ciowa sekcja krytyczna sekcja wyj!ciowa reszta } while (1); Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 3
1.! Wzajemne wykluczanie: Je#li jeden proces wykonuje swoj% sekcj" krytyczn!, to &aden inny proces nie dzia!a w sekcji krytycznej. 2.! Post"p: Je&eli &aden proces nie wykonuje swojej sekcji krytycznej oraz istniej% procesy, które chc% wej#' do swoich sekcji krytycznych, to tylko procesy nie wykonuj%ce swoich reszt mog% rywalizowa' o wej#cie do sekcji krytycznej i wybór ten nie mo&e by' odwlekany w niesko(czono#'. 3.! Ograniczone czekanie: Mi"dzy chwil% zg!oszenia przez proces ch"ci wej#cia do swojej sekcji krytycznej a chwil% uzyskania na to pozwolenie musi istnie' warto#$ graniczna liczby wej#' innych procesów do sekcji krytycznych. #! Zak!adamy, &e ka&dy proces jest wykonywany z niezerow% szybko#ci%. #! Nie robimy za!o&enia co do wzgl"dnej szybko#ci n procesów. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 4
Dwa procesy: P_0 i P_1 zawieraj%ce sekcje krytyczne. Dzielone zmienne:!! int kolej = 0; (czyja kolej wej#cia do sekcji krytycznej)!! bool flaga[2] = {false,false}; (ch"' wej#cia do SK) "! Kod dla procesu P_i (i = 0, 1; j = 1 i): do { flaga[i] = true; kolej = j; while (flaga[j] && kolej == j) ; /* czekaj */ sekcja krytyczna flaga[i] = false; reszta } while (1); #! Spe!nia wszystkie trzy warunki poprawnego rozwi%zania problemu sekcji krytycznej. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 5
Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 6
Proces P_i: do { wybieranie[i] = true; numer[i] = max(numer[0],..., numer[n-1]) + 1; wybieranie[i] = false; for (j = 0; j < n; j++){ } while (wybieranie[j]) ; while ( numer[j]!= 0 && sekcja krytyczna numer[i] = 0; reszta } while (1); (numer[j],j) < (numer[i],i) ) ; Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 7
$!Na jednym procesorze problem sekcji krytycznej mo&na rozwi%za' zakazuj!c przerwa% w trakcie modyfikacji zmiennej dzielonej. $!Niepodzielne rozkazy: np. TestAndSet lub Swap: bool TestAndSet(bool *cel){ bool zwr = *cel; *cel = true; return zwr; } void Swap(bool *a,bool *b){ bool temp = *a; *a = *b; *b = temp; } Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 8
Dzielona zmienna: Proces P_i: "! Rozkaz TestAndSet: do { while ( TestAndSet(&zamek) ) ; sekcja krytyczna zamek = false; reszta } while (1); bool zamek = false; "! Rozkaz Swap:! lokalna zmienna: bool klucz; do { klucz = true; while (klucz) Swap(&zamek,&klucz); sekcja krytyczna zamek = false; reszta } while (1); %! Nie spe&niaj! warunku ograniczonego czekania!! Dlaczego? Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 9
Semafor (semaphore) pierwszy mechanizm synchronizacyjny w j"zykach wysokiego poziomu (Dijkstra, 1965):!! semaphore abstrakcyjny typ danych;!! semaphore S; zmienna semaforowa o warto#ciach ca!kowitych " 0. Operacje na semaforze:!! Opuszczenie (zaj"cie) semafora: P (hol. passeren, proberen): P(S): while (S <= 0) ; /* czekaj */ S--;!! Podniesienia (zwolnienie) semafora: V (hol. vrijmaken, verhogen): V(S): S++; "! Operacje te musz! by$ niepodzielne! Powy&szy semafor nazywany jest semaforem ogólnym lub licz!cym (counting semaphore): S = 0,1,2,... Mo&e by' te& semafor binarny: S = 0,1 (tylko dwie warto#ci). Semafor licz%cy mo&na zaimplementowa' przy pomocy semafora binarnego i odwrotnie. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 10
Podstawow% wad% powy&szej definicji semafora jest to, &e operacja P zawiera aktywne czekanie (busy waiting), które marnuje cykle procesora. "! Taki semafor nazywany jest wiruj!c! blokad! (spinlock). Implementacja semafora bez aktywnego czekania:!! Semafor jako rekord: typedef struct { int value; } semaphore; struct process *L; /* lista procesów */!! SO dostarcza dwie proste operacje (elementarne funkcje systemowe): block wstrzymuje (blokuje) proces, który j% wywo!uje; wakeup wznawia zablokowany proces (zmienia stan na gotowy);!! Lista procesów czekaj%cych pod semaforem np. kolejka FIFO (bloków kontrolnych procesów). Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 11
Operacje P i V (warto#' semafora mo&e by' ujemna):!! void P(semaphore S) { S.value--; if (S.value < 0) { dodaj ten proces do S.L; block(); } }!! void V(semaphore S) { S.value++; if (S.value <= 0){ usu% jaki# proces P z S.L; wakeup(p); } } "! Powy&sze operacje P i V musz% by' niepodzielne w #rodowisku jednoprocesorowym mo&na to zrealizowa' przez wprowadzenie zakazu przerwa% w trakcie ich wykonywania. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 12
W rozwi%zaniach opartych o semafory mog% pojawia' si" problemy: Zakleszczenie (blokada) (deadlock): Kilka procesów czeka na zdarzenie, które mo&e by' spowodowane tylko przez jeden z czekaj%cych procesów. "! Przyk!ad dwa semafory: semaphore S = 1, Q = 1; Proces P0 P(S); P(Q); Proces P1 P(Q); P(S);...... V(S); V(Q); V(Q); V(S); (Za)g&odzenie (blokowanie niesko%czone) (starvation): Proces nie zostaje wznowiony, mimo i& zdarzenie, na które czeka wyst"puje dowoln% ilo#' razy za ka&dym razem, gdy proces ten móg!by by' wznowiony wybierany jest inny czekaj%cy proces. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 13
Wzajemne wykluczanie! 'wiczenia. Producent'Konsument! 'wiczenia. Czytelnicy i pisarze: Dwie grupy procesów: czytelnicy i pisarze konkuruj% o dost"p do wspólnego zasobu czytelni. Czytelnik odczytuje informacj" zgromadzon% w czytelni i mo&e to robi' razem z innymi czytelnikami, natomiast pisarz zapisuje now% informacj" i musi przebywa' sam w czytelni.! Mo&liwe rozwi%zania: 1)! Czytelnik powinien wej#' do czytelni najszybciej jak to mo"liwe. &! Mo(liwo#$ zag&odzenia pisarzy! 2)! Pisarz powinien wej#' do czytelni najszybciej jak to mo"liwe. &! Mo(liwo#$ zag&odzenia czytelników! 3)! Czytelnicy i pisarze wpuszczani s% do czytelni na przemian, np. wed!ug kolejno#ci zg!osze(, przy czym pisarze wchodz% pojedynczo, natomiast wchodz%cy czytelnik mo&e wpu#ci' do czytelni wszystkich czekaj#cych czytelników. &! Brak zag&odzenia! Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 14
$! Pi"ciu filozofów siedzi przy wspólnym okr#g$ym stole i my!li. Co jaki# czas filozofowie musz% si" posili%. Przed ka&dym filozofem stoi talerz, a obok talerza widelec. Na #rodku sto!u stoi pó$misek z ryb#. Ryb" nale&y je#' dwoma widelcami, wi"c filozof mo&e zacz%' je#' tylko gdy b"dzie mia! obok siebie dwa wolne widelce. Po spo&yciu posi!ku filozof odk$ada oba widelce na stó! i ponownie zatapia si" w my#leniu, itd. "! Mo&liwe rozwi%zania: 1)! Ka&dy filozof czeka a& jeden widelec (np. lewy) b"dzie wolny i podnosi go, a nast"pnie czeka a& b"dzie wolny drugi widelec i te& go podnosi. &! Mo(liwo#$ zakleszczenia ka&dy filozof podniesie jeden widelec. 2)! G!odny filozof podnosi jednocze!nie dwa widelce wtedy gdy s% wolne. &! Mo(liwo#$ zag&odzenia je&eli który# z filozofów b"dzie mia! &ar!ocznych s%siadów, tak &e nigdy dwa widelce obok jego talerza nie b"d% wolne, to nie b"dzie móg! je#' i zostanie zag!odzony. 3)! Nad procesem jedzenia filozofów czuwa lokaj, który dopuszcza do rywalizacji o widelce tylko czterech filozofów naraz, a ci podnosz% widelce sekwencyjnie (np. najpierw lewy, potem prawy). Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 15
Region krytyczny (critical region) konstrukcja synchronizuj%ca wysokiego poziomu. Dzielona zmienna v typu T jest zadeklarowana jako: shared T v; Zmienna v jest dost"pna tylko w obr"bie instrukcji: region v when (B) S; gdzie B jest wyra&eniem boolowskim. Podczas wykonywania instrukcji S (aden inny proces nie ma dost"pu do zmiennej v. Regiony odwo!uj%ce si" do tej samej zmiennej v wykluczaj! si" wzajemnie w czasie. Kiedy proces próbuje wej#' do sekcji krytycznej, obliczane jest wyra&enie boolowskie B: je#li jest ono prawdziwe, to instrukcja S b"dzie wykonana, w przeciwnym razie proces jest opó$niany a& wyra&enie B stanie si" prawdziwe oraz &aden inny proces nie b"dzie przebywa! w regionie zwi%zanym ze zmienn% v. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 16
Dzielone dane: shared struct { jednostka pula[n]; int licznik, we, wy; } bufor; Producent wstawia do bufora jednostk" NastProd: region bufor when (licznik < n){ pula[we] = NastProd; we = (we + 1) % n; licznik++; } Konsument pobiera z bufora jednostk" NastKons: region bufor when (licznik > 0){ NastKons = pula[wy]; wy = (wy + 1) % n; licznik--; } "! Region krytyczny mo(na zaimplementowa$ przy pomocy semaforów. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 17
Monitor konstrukcja do synchronizacji stosowana w j"zykach wysokiego poziomu; umo&liwia bezpieczne dzielenie danych abstrakcyjnego typu mi"dzy wspó!bie&nymi procesami. monitor nazwa_monitora { // deklaracje zmiennych dzielonych procedure P1(...) {... } procedure P2(...) {... }... } procedure Pn(...) {... } kod inicjuj!cy (...) {... } Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 18
Procedura zdefiniowana wewn%trz monitora mo&e korzysta' tylko ze zmiennych lokalnych monitora i swoich parametrów. Zmienne lokalne monitora s% dost"pne tylko za po#rednictwem lokalnych procedur monitora. Konstrukcja monitora gwarantuje, &e w jego wn"trzu mo&e by' aktywny tylko jeden proces (sekcja krytyczna). W celu zwi"kszenia funkcjonalno#ci monitora wprowadza si" dodatkowy mechanizm warunek (condition): condition x, y; # zmienne typu condition; "! Zmienne warunkowe mog% by' u&yte tylko z operacjami wait i signal:!! Operacja x.wait(); oznacza, &e proces j% wywo!uj%cy zostaje zawieszony do chwili, gdy inny proces wywo!a operacj" x.signal();!! Operacja x.signal(); wznawia dok!adnie jeden z zawieszonych procesów je&eli nie ma takich procesów, to operacja ta nie ma &adnego efektu. Kolejno#' wznawiania procesów zale&y do implementacji kolejki procesów czekaj%cych pod dan% zmienn% warunkow%. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 19
Kolejki zwi!zane z warunkami x, y x y Dane dzielone Kolejka wej#ciowa... Operacje Kod inicjuj!cy "! Monitor mo&na zaimplementowa' przy pomocy semaforów. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 20
"! W celu kontrolowania dost"pu do sekcji krytycznych w systemie Solaris zaimplementowano: zamki adaptacyjne, zmienne warunkowe, semafory, blokady do czytania lub pisania oraz turnikety. Zamek adaptacyjny (adaptive mutex) stosowany do ochrony krytycznych danych dla krótkich segmentów kodu (co najwy&ej kilkaset rozkazów).!! W systemach jednoprocesorowych w%tek wstrzymany przez zamek adaptacyjny jest usypiany.!! W systemach wieloprocesorowych w%tek jest usypiany tylko je#li w%tek utrzymuj%cy zamek jest nieaktywny, w przeciwnym razie zamek realizuje aktywne czekanie (wiruj!c! blokad"). Do synchronizacji d!u&szych segmentów kodu u&ywane s% zmienne warunkowe i semafory czekaj%ce w%tki s% usypiane. Blokady do czytania i pisania (readers-writers locks) stosuje si" do ochrony danych o cz"stym dost"pie, zwykle do czytania mo&liwo#' wspó!bie&nego czytania przez wiele w%tków (drogie w realizacji; tylko dla d!ugich sekcji kodu). Turnikety (turnstiles) s!u&% do porz%dkowania listy w%tków czekaj%cych na pozyskanie zamka adaptacyjnego albo blokady do czytania lub pisania s% to struktury kolejek zawieraj%ce w%tki zablokowane na zamku lub blokadzie. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 21
W systemie jednoprocesorowym j!dro si"gaj%c po jaki# zasób globalny maskuje czasowo przerwania. W systemie wieloprocesorowym dost"p do zasobów globalnych chroniony jest przy pomocy wiruj!cych blokad. Do synchronizacji w%tków poza j%drem s!u&% obiekty dyspozytora (dispatcher objects).!! U&ywaj%c obiektu dyspozytora w%tek mo&e korzysta' z ró&nych mechanizmów synchronizacji: zamki (muteksy), semafory, zdarzenia itd.!! Zdarzenia (events) mechanizm synchronizacji podobny do zmiennych warunkowych (mog% powiadamia' w%tek o spe!nieniu &%danego warunku). Obiekty dyspozytora mog% znajdowa' si" w stanie sygnalizowania (signaled) lub niesygnalizowania (nonsignaled).!! Stan sygnalizowania oznacza, &e obiekt jest dost"pny i w%tek nie zablokuje si" przy próbie jego pozyskania.!! Stan niesygnalizowania wskazuje, &e obiekt nie jest dost"pny i przy próbie jego pozyskania w%tek zostanie zablokowany.!! Istnieje zwi!zek mi"dzy stanem obiektu dyspozytora a stanem w!tku: sygnalizowany/niesygnalizowany obiekt w%tek w stanie gotowo#ci/czekania. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 22
Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 23
Model systemu. Charakterystyka zakleszczenia. Metody post"powania z zakleszczeniami. Zapobieganie zakleszczeniom. Unikanie zakleszcze(. Wykrywanie zakleszczenia. Likwidowanie zakleszczenia. Mieszane metody post"powania z zakleszczeniami. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 24
System sk!ada si" z zasobów: pami"', cykle procesora, pliki, urz%dzenia WE/WY itd., o które rywalizuj% procesy. Ka&dy proces korzysta z zasobu wed!ug schematu: 1.! Zamówienie ((!danie, request) je&eli nie mo&e by' zrealizowane natychmiast, to proces musi czeka' do chwili otrzymania zasobu. 2.! U(ycie (use) proces mo&e korzysta' z zasobu. 3.! Zwolnienie (release) proces oddaje zasób. "! Stan zakleszczenia, inaczej blokady (deadlock): ka&dy proces w zbiorze procesów czeka na zdarzenie, które mo&e by' spowodowane tylko przez inny proces z tego samego zbioru, '! np. zwolnienie zaj"tego zasobu, na który proces oczekuje. Przyk!ady:!! System ma trzy nap"dy DVD-RW: ka&dy z procesów P0, P1 i P2 jest w posiadaniu jednego nap"du i zamawia dodatkowy nap"d.!! Semafory A i B s% ustawione na 1: P0 P1 P(A); P(B); P(B); P(A); Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 25
"! Zakleszczenie mo&e powsta' wtedy, kiedy w systemie spe!nione s% jednocze#nie cztery warunki: 1.! Wzajemne wykluczanie: Tylko jeden proces mo&e u&ywa' zasobu w tym samym czasie (zasób niepodzielny). 2.! Przetrzymywanie i czekanie: Proces maj%cy jeden zasób czeka na przydzia! dodatkowych zasobów b"d%cych w posiadaniu innych procesów. 3.! Brak wyw&aszcze%: Zasoby nie podlegaj% wyw!aszczaniu. 4.! Czekanie cykliczne: Istnieje zbiór czekaj%cych procesów {P0,P1,...,Pn}, takich &e P0 czeka na zasób przetrzymywany przez P1, P1 czeka na zasób przetrzymywany przez P2,..., a Pn czeka na zasób przetrzymywany przez P0. Graf przydzia&u zasobów graf skierowany z!o&ony ze zbioru wierzcho&ków W i zbioru kraw"dzi K.!! Zbiór wierzcho!ków W sk!ada si" z dwu podzbiorów: P={P1,...,Pn} zbiór wszystkich procesów, Z={Z1,...,Zm} zbiór typów zasobów.!! Kraw"d) zamówienia: Pi! Zj;!! Kraw"d) przydzia&u: Zj! Pi. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 26
Z1 Z3 Z1 Z3 Kraw"d) zamówienia Kraw"d) przydzia&u P1 P2 P3 P1 P2 P3 Z2 Z4 Graf przydzia&u bez zakleszczenia Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 27 Z2 Z4 Graf przydzia&u z zakleszczeniem 1. Graf nie zawiera cyklu $ nie ma zakleszczenia! 2. Graf zawiera cykl, to: a) Zasoby w jednym egzemplarzu $ zakleszczenie! b) Zasoby w wielu egzemplarzach $ istnieje mo(liwo#$ zakleszczenia!
"!Z problemem zakleszcze% mo(na sobie radzi$ na trzy ró(ne sposoby: Zastosowa' protokó! gwarantuj%cy, &e system nigdy nie wejdzie w stan zakleszczenia. Pozwoli$ systemowi na zakleszczenia, po czym podj%' dzia!ania w celu ich wykrycia i usuni"cia. Zlekcewa(y$ problem, udaj%c, &e zakleszczenia nigdy si" nie pojawi! w systemie (tzw. algorytm strusia) stosowane przez wi"kszo#' systemów operacyjnych, w tym UNIX i Windows. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 28
"! Zapobiec spe!nieniu jednego z warunków koniecznych zakleszcze(: Wzajemne wykluczanie konieczne tylko dla zasobów niepodzielnych; nie wymagane dla zasobów podzielnych. Przetrzymywanie i oczekiwanie zagwarantowa', &e kiedy proces &%da zasobu, to nie posiada innych zasobów, np. wymaga' by proces zamawia! i dostawa! wszystkie swoje zasoby zanim rozpocznie dzia!anie lub tylko wtedy gdy nie ma &adnych zasobów. %! S&abe wykorzystanie zasobów, mo(liwo#$ g&odzenia procesów. Brak wyw&aszcze%:!! Je#li proces b"d%cy w posiadaniu pewnych zasobów &%da zasobu, którego nie mo&na natychmiast przydzieli', to musi zwolni' wszystkie posiadane zasoby.!! Wyw!aszczone zasoby s% dodawane do listy zasobów, na które proces czeka.!! Proces zostanie wznowiony tylko wtedy, gdy b"dzie móg! odzyska' utracone zasoby oraz otrzyma' nowo &%dane zasoby. Czekanie cykliczne wymuszenie ca!kowitego uporz%dkowania wszystkich typów zasobów i wymaganie, aby ka&dy proces zamawia! zasoby w porz%dku rosn%cym ich numeracji. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 29
"! Wymaga informacji a priori o zapotrzebowaniach na zasoby. W najprostszym i najbardziej u&ytecznym modelu wymaga si", aby ka&dy proces deklarowa! maksymaln! liczb" zasobów ka°o typu, których b"dzie potrzebowa!.!! Algorytm unikania zakleszcze% (deadlock avoidance) sprawdza dynamicznie stan przydzia!u zasobów, by zapewni', &e nigdy nie dojdzie do czekania cyklicznego.!! Stan przydzia&u zasobów jest okre#lony przez liczb" dost"pnych i przydzielonych zasobów oraz maksymalne zapotrzebowania procesów. Kiedy proces &%da dost"pnego zasobu, system musi sprawdzi', czy natychmiastowe przydzielenie tego zasobu zachowa system w stanie bezpiecznym (safe state).!! System jest w stanie bezpiecznym, je&eli istnieje ci!g bezpieczny procesów.!! Ci%g procesów <P1,P2,...,Pn> jest bezpieczny, je#li dla ka°o procesu Pi jego potencjalne zapotrzebowanie na zasoby mo&na zaspokoi' przez aktualnie dost"pne zasoby oraz zasoby u&ytkowane przez wszystkie procesy Pj dla j < i.!! System jest w stanie bezpiecznym $ brak zakleszczenia!!! System jest w stanie zagro(enia $ % mo(liwo#$ powstania zakleszczenia!!! Unikanie zakleszcze% gwarancja, &e nigdy nie pojawi si" stan zagro&enia! Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 30
Algorytm grafu przydzia&u zasobów: "! Dla zasobów, których ka(dy typ ma pojedynczy egzemplarz.!! Dodatkowy typ kraw"dzi: kraw"d) deklaracji Pi! Zj wskazuje, &e proces Pi mo&e zamówi' kiedy# zasób Zj; reprezentowana lini% przerywan%.!! Kraw"d$ deklaracji przechodzi w kraw"d$ zamówienia, gdy proces zamawia zasób.!! Gdy zasób jest zwalniany kraw"d$ zamówienia przechodzi z powrotem w kraw"d$ deklaracji.!! Proces musi a priori zadeklarowa' zapotrzebowanie na potrzebne zasoby.!! Zamówienie mo&e by' spe!nione tylko wtedy, gdy nie doprowadzi do powstania cyklu w grafie koszt szukania cyklu: n 2 (n liczba procesów). Algorytm bankiera (banker s algorithm): "! Dla zasobów wielokrotnych (tzn. ka(dy typ mo&e mie' wiele egzemplarzy).!! Ka&dy proces musi zadeklarowa' maksymaln! liczb" egzemplarzy ka°o typu, które b"d% mu potrzebne (& liczby wszystkich zasobów w systemie).!! Kiedy proces zamawia zbiór zasobów, sprawdza si" czy ich przydzielenie pozostawi system w stanie bezpiecznym: je&eli tak zasoby s% przydzielane, je&eli nie proces musi poczeka$ na zwolnienie dostatecznej ilo#ci zasobów.!! Koszt sprawdzania stanu bezpiecznego: m " n 2 (m ilo#' typów zasobów). Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 31
"! Systemy nie stosuj%ce zapobiegania zakleszczeniom musz% posiada':!! Algorytm wykrywania ewentualnego zakleszczenia;!! Algorytm likwidowania wykrytego zakleszczenia. Typy zasobów reprezentowane pojedynczo:!! Algorytm wykrywania zakleszcze( oparty o graf oczekiwania, który powstaje z grafu przydzia!u zasobów po usuni"ciu w"z!ów reprezentuj%cych zasoby, np. Pi! Pj oznacza, &e proces Pi czeka na zasób b"d%cy w posiadaniu procesu Pj.!! Okresowo wykonuje si" powy&szy algorytm, który szuka cyklu w grafie.!! Koszt algorytmu (liczba operacji): n 2 (n liczba wierzcho!ków grafu). Typy zasobów reprezentowane wielokrotnie:!! Algorytm wykrywania zakleszczenia podobny do algorytmu bankiera.!! Koszt algorytmu: m " n 2 (m ilo#' typów zasobów). U&ywanie algorytmu wykrywania zakleszczenia: "! Cz"sto#' wywo!ywania algorytmu zale&y od tego jak cz"sto wyst"puj% zakleszczenia i ile procesów ulega zakleszczeniu. #! Wykonywanie algorytmu przy ka&dym zamówieniu kosztowne! #! Wykonywanie algorytmu periodycznie (np. raz na godzin") lub gdy wyra$nie spadnie wykorzystanie procesora mo&e powsta' wiele cykli! Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 32
Zako%czenie procesu:!! Zaniechanie wszystkich zakleszczonych procesów;!! Usuwanie procesów pojedynczo, a& do wyeliminowania cyklu zakleszczenia. "! Jak wybra' proces do zako(czenia: #!Jaki jest priorytet procesu? #!Jak d&ugo proces wykonywa& obliczenia i ile czasu potrzebuje do zako%czenia? #!Ile zasobów i jakiego typu u(ywa proces? #!Ilu jeszcze zasobów proces potrzebuje do zako%czenia dzia&ania? #!Ile procesów trzeba b"dzie zako%czy$? #!Czy proces jest interakcyjny czy wsadowy? Wyw&aszczanie zasobów:!! Wybór ofiary: które zasoby i które procesy maj% by' wyw!aszczone kryterium minimum kosztów;!! Wycofanie procesu do pewnego bezpiecznego stanu i wznowienie go z tego stanu w pó$niejszym czasie mo(e by$ trudne!!! G&odzenie: do roli ofiary mo&e by' wybierany wci%& ten sam proces potrzebne ograniczenie; uwzgl"dnienie liczby wycofa( przy ocenie kosztów. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 33
Po!%czenie trzech podstawowych metod post"powania z zakleszczeniami:!! zapobieganie,!! unikanie,!! wykrywanie i likwidowanie, pozwala na uzyskanie optymalnego podej#cia do problemu zakleszcze( dla poszczególnych klas zasobów w systemie. Podzia! zasobów na hierarchicznie uporz%dkowane klasy, np.!! Zasoby wewn"trzne (bloki kontrolne procesów itp.);!! Pami"' g!ówna;!! Zasoby zadania (przydzielane urz%dzenia i pliki);!! Wymienny obszar pami"ci (pami"' pomocnicza). U&ywanie najbardziej odpowiedniej techniki post"powania z zakleszczeniami wewn%trz ka&dej z klas zasobów. "! Zakleszczenia dotycz% zwykle nie wi"cej ni& jednej klasy! system mniej (lub wcale nie) nara&ony na zakleszczenia! Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 34
1.! Na czym polega problem sekcji krytycznej i jakie s% jej warunki? Poda' rozwi%zania tego problemu dla dwu oraz wi"kszej liczby procesów. 2.! Jakie mog% by' sprz"towe #rodki synchronizacji i jak mo&na ich u&y' do realizacji wzajemnego wykluczania procesów? 3.! Omówi' semafor jako mechanizm synchronizacji procesów oraz jego mo&liwe implementacje. Jakie wymagania stawia si" wobec operacji semaforowych? 4.! Jakie problemy mog% wyst%pi' w rozwi%zaniach z u&yciem semaforów? Przedstawi' problemy czytelników i pisarzy oraz pi"ciu filozofów poda' ich mo&liwe rozwi%zania. 5.! Co to s% regiony krytyczne? Zastosowa' je dla problemu producenta )konsumenta. Scharakteryzowa' monitor jako mechanizm synchronizacji. 6.! Porówna' metody synchronizacji w systemach operacyjnych Solaris, Windows XP/Vista/7 oraz Linux. 7.! Co to jest zakleszczenie i jakie s% jego warunki? Do czego s!u&y graf przydzia!u zasobów? Jaki jest zwi%zek mi"dzy cyklem w grafie a zakleszczeniem? 8.! Jakie s% metody zapobiegania, unikania oraz wykrywania i likwidowania zakleszcze(. Wies!aw P!aczek Systemy Operacyjne: Wyk!ad 5 35