Przydzia l zasobów Jedna z funkcji systemów operacyjnych jest przydzia l, albo alokacja, zasobów. Nadzór systemu jest konieczny wtedy, gdy z danego zasobu może korzystać wy lacznie jeden proces na raz. Przyk ladami takich zasobów sa: urzadzenia peryferyjne, jak drukarki, nap edy optyczne, itp., porty komunikacyjne: szeregowe, równoleg le, USB, itp., globalne urzadzenia programowe: semafory, obszary pami eci, itp., blokady wy laczności nak ladane na dost ep do plików, lub ich fragmentów. Zakleszczenia alokacja zasobów 1
Wyw laszczanie zasobów Istnieja pewne rodzaje zasobów, z których można proces wyw laszczyć. Przyk ladem takiego zasobu jest pami eć. Jeśli procesowi zosta la przydzielona pami eć, której potrzebuje inny proces, to dzi eki mechanizmowi pami eci wirtualnej można ten pierwszy proces wymieść na dysk, i użyć jego pami eci dla innych celów. Po wznowieniu pierwszego procesu, jego pami eć zostanie przywrócona do pierwotnego stanu droga stronicowania. Jednak wielu zasobów nie da si e bezkarnie wyw laszczać. Nie można odebrać procesowi drukarki nie majac pewności na jakim etapie jest jego zadanie drukowania, nie można odebrać mu portu komunikacyjnego jeśli jest możliwość, że rozpocza l on już komunikacj e z jakimś podsystemem, nie można odebrać mu semafora, bo ten może zabezpieczać toczac a si e transakcj e, itd. Zakleszczenia alokacja zasobów 2
Uzyskiwanie dost epu do zasobów Dla pewnych zasobów, korzystajace z nich procesy musza same obs lugiwać kontrol e dost epu do nich, ponieważ system operacyjnych nie zna logiki rzadz acej tym dost epem. Do zarzadzania dost epem do zasobu można pos lużyć si e semaforem lub muteksem. Przed użyciem zasobu proces zajmuje semafor (operacja down, być może czeka na dost ep), a po użyciu zasobu zwalnia semafor (operacja up, nigdy nie musi czekać). W przypadku korzystania z wi ecej niż jednego zasobu na raz, dost ep do nich musi być uzyskiwany sekwencyjnie. Zakleszczenia alokacja zasobów 3
Powstawanie zakleszczeń W przypadku różnych procesów konkurujacych o dost ep do zasobów możliwe jest napisanie programu w taki sposób, że kontrola dost epu do zasobu przebiega poprawnie (kod po lewej), albo w taki sposób, że powstaje zakleszczenie (deadlock): Zakleszczenia powstawanie 4
Definicja zakleszczenia Można sformu lować nast epuj ac a definicj e zakleszczenia [Tanenbaum, Modern Operating Systems, 3rd Edition]: W przypadku zbioru procesów do zakleszczenia dochodzi wtedy, gdy każdy proces w zbiorze oczekuje na zdarzenie, które może spowodować inny proces z tego zbioru. Ponieważ wszystkie procesy oczekuja, żaden z nich nie spowoduje zdarzenia, na które czeka ktoś inny. Procesy z tego zbioru sa zatem zakleszczone i pozostana tak na zawsze. Zak ladamy tu, że nic (np. sygna l) nie może przerwać tego czekania. Typowym zdarzeniem, na które oczekuja procesy jest przydzia l zasobu chwilowo zajmowanego przez inny proces. Taki przypadek zakleszczenia nazywany jest zakleszczeniem zasobów (nieco później rozważymy inne rodzaje zakleszczenia). Zakleszczenia definicja 5
Warunki powstawania zakleszczenia zasobów Aby mog lo dojść do zakleszczenia zasobów musza być spe lnione cztery warunki: wzajemne wykluczanie w danym momencie, każdy zasób jest albo przypisany dok ladnie do jednego procesu, albo jest dost epny wstrzymywanie i oczekiwanie procesy posiadajace zasoby przydzielone wcześniej moga żadać nowych zasobów brak wyw laszczania przydzielone zasoby nie moga być zabrane procesom; moga być jedynie dobrowolnie zwolnione cykliczne oczekiwanie musi istnieć cykl oczekiwania na zasoby z lożony z dwóch lub wi ecej procesów: każdy proces w tym lańcuchu oczekuje na zasób b ed acy w posiadaniu nast epnego procesu w lańcuchu Powyższe warunki sa warunkami koniecznymi powstania zakleszczenia. Gdy którykolwiek z nich nie jest spe lniony, wtedy do zakleszczenia na pewno nie dojdzie. Zakleszczenia warunki konieczne 6
Grafy alokacji zasobów Stany procesów uzyskujacych dost ep do zasobów można opisać za pomoca grafów alokacji zasobów, na których procesy sa reprezentowane przez w ez ly okrag le, zasoby jako w ez ly kwadratowe, a luki reprezentuja posiadanie oraz żadanie zasobów. Rysunek (a) przedstawia proces (A) posiadajacy zasób [R]. Rysunek (b) przedstawia proces (B) żadaj acy dost epu do zasobu [S]. Rysunek (c) przedstawia dwa zakleszczone procesy: (C) i (D). Proces (C) posiada zasób [U] i czeka na zasób [T]. Proces (D) posiada zasób [T] i czeka na zasób [U]. Zakleszczenia modelowanie 7
Przyk lad sekwencja alokacji zasobów Rozważmy przyk lad alokacji zasobów na powyższych rysunkach: (a),(b),(c). Jeśli procesy b ed a uruchamiane sekwencyjnie, najpierw A do zakończenia, potem B do zakończenia, i w kończu C, wtedy do zakleszczenia nie dojdzie. Jednak jeśli procesy b ed a wykonywane wspó lbieżnie, i sekwencja żadań zasobów b edzie jak na rysunku (d), wtedy te same procesy, wywo luj ace te same żadania zasobów, każdy w tej samej kolejności, tym razem doprowadza do zakleszczenia. Zakleszczenia modelowanie 8
Przyk lad powstanie zakleszczenia Powstanie zakleszczenia w poprzednim przyk ladzie można przedstawić na grafie alokacji zasobów. Na rysunku (j) widać zakleszczenie po wydaniu przez proces (S) żadania dost epu do zasobu [R]. Zakleszczenia modelowanie 9
Przyk lad eliminacja zakleszczenia Jednak powstawanie zakleszczeń w przypadkach takich jak w przyk ladzie jest kwestia przypadku. Gdyby system operacyjny, zamiast przydzielać zasoby procesowi (B), uruchamia l tylko procesy (A) i (C) przypadkiem, lub świadomie, przewidujac nadchodzac a porażk e do zakleszczenia by nie dosz lo, co ponownie widać na grafach alokacji zasobów. Zakleszczenia modelowanie 10
Post epowanie z zakleszczeniami Ogólnie można sformu lować nast epuj ace podejścia do przeciwdzia lania zakleszczeniom: wykrywanie i usuwanie zakleszczenia (deadlock detection and recovery) dopuszczamy do powstania zakleszczenia, po czym wykrywamy je, i podejmujemy dzia lania w celu jego wyeliminowania unikanie zakleszczenia (deadlock avoidance) nie dopuszczamy do powstania zakleszczenia poprzez ostrożna alokacj e zasobów zapobieganie zakleszczeniom (deadlock prevention) nie dopuszczamy do powstania zakleszczenia poprzez wyeliminowanie jednego z warunków koniecznych Do powyższej listy można dodać jeszcze jedna metod e post epowania z zakleszczeniami, zwana algorytmem strusia (ostrich algorithm). Polega on na ca lkowitym zignorowaniu problemu zakleszczeń. Problemy te powstaja bowiem rzadko, i sa tylko jednym z możliwych zagrożeń przy tworzeniu wielowatkowych, wspó lbieżnych systemów. Jednocześnie, przeciwdzia lanie zakleszczeniom którakolwiek z powyższych metod jest kosztowne, i ten koszt system operacyjny musia lby ponosić przy każdej operacji przydzia lu zasobów. Wi ekszość wspó lczesnych systemów operacyjnych wychodzi z za lożenia, że nie op laca si e przeciwdzia lać zakleszczeniom, i tego nie robi. Zakleszczenia ogólne metody przeciwdzia lania 11
Zakleszczenia ogólne metody przeciwdzia lania 12
Wykrywanie zakleszczeń dla pojedynczych egzemplarzy zasobów W poniższym grafie alokacji zasobów (a) istnieje cykl oznaczajacy wystapienie zakleszczenia. Na rysunku (b) wyodr ebnione zosta ly procesy i zasoby biorace udzia l w zakleszczeniu. Zakleszczenia wykrywanie 13
Algorytm wykrywania zakleszczenia dla pojedynczych egzemplarzy 1. Dla każdego w ez la N w grafie wykonaj poniższe kroki rozpoczynajac od w ez la N. 2. Stwórz pusta list e L; wszystkie luki określ jako niezaznaczone. 3 Dodaj bieżacy w eze l na koniec listy L, i sprawdź, czy w eze l wyst epuje na L dwa razy. Jeśli tak, to graf zawiera cykl. STOP. 3. Sprawdź, czy z tego w ez la wychodza dowolne niezaznaczone luki. Jeśli tak, to przejdź do kroku 5, a jeśli nie, to przejdź do kroku 6. 5 Losowo wybierz niezaznaczony wychodzacy luk, i go zaznacz. Nast epnie przejdź po tym luku do nast epnego w ez la i skocz do kroku 3. 6 Jeśli jest to w eze l poczatkowy, to graf nie zawiera cyklu. STOP. W przeciwnym wypadku osiagn eliśmy martwy koniec. Usuń w eze l z listy i przejdź do poprzedniego w ez la, czyli tego, który by l bieżacy przed w ez lem aktualnie analizowanym. Oznacz go jako bieżacy i przejdź do kroku 3. Zakleszczenia wykrywanie 14
Wykrywanie zakleszczeń dla wielu egzemplarzy zasobów W przypadku istnienia wielu egzemplarzy pewnych zasobów konieczne jest inne podejście. Oznaczmy liczb e klas zasobów m i ogólna liczb e egzemplarzy zasobu i przez E i. E = (E 1,E 2,...,E m ) b edzie wektorem istniejacych zasobów. Liczb e dost epnych egzemplarzy zasobu i oznaczymy A i, i A = (A 1,A 2,...,A m ) b edzie wektorem dost epnych zasobów. C b edzie macierza bieżacej alokacji, a R macierza żadań dla n procesów. Zakleszczenia wykrywanie 15
Zauważmy, że dla przyj etych oznaczeń: Algorytm wykrywania zakleszczeń n i C i +A j = E j i=1 Przyjmijmy, że dla dwóch wektorów A i B zapis A B oznacza, że wszystkie elementy A sa mniejsze lub równe odpowiednim elementom B. Algorytm poczatkowo traktuje wszystkie procesy jako nieoznaczone. W trakcie pracy oznacza te procesy, które moga si e wykonać korzystajac z puli dost epnych zasobów. Po zakończeniu proces może zwrócić wszystkie swoje zasoby do puli, co umożliwia wykonanie si e innym procesom. 1. Wybierz nieoznaczony proces P i którego wiersz R i macierzy R: R i A Jeśli nie ma takiego procesu, to algorytm kończy dzia lanie. 2. Jeśli taki proces zostanie znaleziony, dodaj i-ty wiersz macierzy C (C i ) do A, oznacz proces i i powróć do kroku 1. Po zakończeniu algorytmu, wszystkie nieoznaczone procesy pozostaja zakleszczone. Algorytm jest niedeterministyczny, ale jego wynik jest zawsze taki sam. Zakleszczenia wykrywanie 16
Wykrywanie zakleszczeń przyk lad Poczatkowo jedynie dla procesu i = 3 mamy R i A. W efekcie otrzymujemy: A = (2 2 2 0) Teraz proces i = 2 ma R i A i może si e wykonać. Otrzymujemy: A = (4 2 2 1) W końcu można uruchomić proces i = 1. W systemie nie ma zakleszczeń. Zakleszczenia wykrywanie 17
Realizacja wykrywania zakleszczeń w systemie Pozostaje pytanie: kiedy system powinien podejmować wykrywanie zakleszczeń, wykonujac powyższy algorytm? Jedna możliwość jest aby robić to po każdym zg loszeniu żadania zasobów przez dowolny proces. W takim przypadku system najszybciej jak to jest tylko możliwe otrzyma informacj e o powstajacym zakleszczeniu, i b edzie móg l podjać odpowiednie dzia lania. Jednak powyższa metoda jest kosztowna. Alternatywna metoda jest wykonywaniu algorytmu okresowe, i/lub wtedy, gdy obciażenie procesora spadnie poniżej pewnej wartości. Zauważmy, że gdy pewna liczba procesów zostanie zakleszczonych, nie b ed a one wykonywane, co powinno spowodować spadek obciażenia procesora. Zakleszczenia wykrywanie 18
Usuwanie zakleszczeń przez wyw laszczanie Niekiedy jest możliwe wyw laszczenie pewnych zasobów od wybranego procesu. Może to wymagać r ecznej interwencji operatora. Na przyk lad, wyw laszczenie drukarki może odbyć si e przez zawieszenie procesu, wyj ecie jego wykonanych już wydruków z drukarki, przydzielenie jej oczekujacemu na nia procesowi, a po jego zakończeniu w lożenie wydrukowanego papieru z powrotem do drukarki, i wznowienie zawieszonego procesu. Zakleszczenia usuwanie 19
Usuwanie zakleszczeń przez wycofywanie operacji Program można przygotować do operacji usuwania zakleszczeń poprzez tworzenie punktów kontrolnych zapisujacych stan programu w pliku na dysku. Punkt kontrolny zawiera obraz pami eci, stany rejestrów, jak również informacj e o przydziale zasobów. Po wykryciu zakleszczenia, system określa jaki(e) zasób(y) jest(sa) potrzebny(e), i który z zakleszczonych proces je posiada i móg lby zostać cofni ety do punktu kontrolnego. Gdy zasoby zostana uwolnione, moga być przydzielone innemu zakleszczonemu procesowi. Zakleszczenia usuwanie 20
Usuwanie zakleszczeń przez zabijanie procesów Czasami prościej niż wycofać proces do punktu kontrolnego jest po prostu go zabić. Oczywiście zabity proces należa loby później uruchomić ponownie. By loby to bezproblemowe, gdyby operacje wykonywane przez proces by ly idempotentne, to znaczy takie, które można wykonywać wiele razy, ale tworza one takie same wyniki. Kompilacja jakiegoś systemu oprogramowania ma t e w lasność. Podobnie sprawdzanie spójności systemu plików, albo stanu macierzy RAID. Itp. Natomiast realizacja pakietu przelewów bankowych (np. miesi ecznych wyp lat dla pracowników jakiejś wi ekszej firmy), nie jest idempotentna, i normalnie nie można jej bezpiecznie wykonać powtórnie. Ogólnie, procesy, które nie tylko obliczaja jakieś wyniki, ale tworza efekty uboczne, typowo nie sa idempotentne. Zakleszczenia usuwanie 21
Zakleszczenia usuwanie 22
Trajektorie zasobów Na diagramie widać wykonywanie kolejnych instrukcji dwóch procesów: A i B. Trajektoria wykonania może biec wy lacznie do góry i w prawo. Obszary zakreślone skośnymi liniami oznaczaja równoczesny przydzia l zasobów procesom i sa wykluczone. W momencie s proces A przydzieli l już drukark e, a w momencie t proces B żada plotera. Jeśli to żadanie zostanie spe lnione, to system wejdzie w obszar ograniczony wspó lrz ednymi [(I 1,I 5 ),(I 4,I 8 )], z którego nie ma wyjścia, ponieważ w momencie (I 2,I 6 ) dojdzie do zakleszczenia. Ca ly ten obszar jest niebezpieczny. Zakleszczenia unikanie 23
Stany bezpieczne i niebezpieczne B edziemy opisywali stany przydzia lu zasobów dla zbioru procesów za pomoca przedstawionych wcześniej wektorów E i A oraz macierzy C i R. Stan nazywamy bezpiecznym jeśli istnieje pewien sposób szeregowania procesów pozwalajacy im wykonać si e do końca, nawet jeśli jednocześnie zażadaj a maksymalnej liczby zasobów. Przedstawiony powyżej przyk lad ilustruje przydzia l pojedynczego zasobu z wieloma egzemplarzami. Liczby w tabelkach wyrażaja aktualny stan posiadania egzemplarzy tego zasobu, oraz maksymalny przydzia l dla każdego procesu. Sekwencja rysunków dowodzi, że stan przedstawiony na rysunku (a) jest bezpieczny. Zakleszczenia unikanie 24
Stany bezpieczne i niebezpieczne (2) Rozważmy teraz taki sam stan poczatkowy, jak w poprzednim przyk ladzie (rysunek (a) poniżej). Jednak proces A zażada l dodatkowej jednostki zasobu, i otrzyma l go (rysunek (b)). Ten stan nie jest bezpieczny. Jedynym procesem, co do którego można mieć pewność, że poprawnie wykona si e do końca jest B (rysunki (c) i (d)). Jednak nawet po wykonaniu B i zwolnieniu jego zasobów, żaden z procesów A i C nie b edzie móg l poprawnie si e wykonać. Zauważmy, że stan przedstawiony na rysunku (d) nie jest stanem zakleszczenia. Nie ma wcale pewności, że do zakleszczenia dojdzie. Gdyby proces A, przed zażadaniem dodatkowych zasobów, na jakiś czas zwolni l przynajmniej jeden, proces C móg lby si e poprawnie zakończyć, a po nim A. Zatem o ile stan bezpieczny gwarantuje możliwość poprawnej pracy systemu, w stanie niebezpiecznym jedynie takiej gwarancji nie ma. Zakleszczenia unikanie 25
Algorytm bankiera Analiz e powyższych przyk ladów można uogólnić to prostego algorytmu bezpiecznego przydzia lu zasobów. Algorytm bankiera 1 (Dijkstra 1965) jest prostym uogólnieniem wcześniejszego algorytmu sprawdzania wystapienia zakleszczenia. Jego dzia lanie można sformu lować za pomoca regu ly: Dla każdego żadania przydzia lu, sprawdź czy prowadzi ono do stanu bezpiecznego, i gdy tak, to przydziel zasób. Gdy nie, odrzuć żadanie. 1 Nazwaalgorytmunawi azujedoanalogiibankieraprzydzielaj acego pożyczki grupie klientów. Musi on tak gospodarować pula posiadanych środków aby przydzielać kedyty umożliwiajace dzia lanie niektórym klientom, podczas gdy innym kredyty sa wstrzymywane. Jeśli wszyscy klienci b ed a w stanie poprawnie zrealizować swe cele, i nast epnie sp lacić swoje kredyty, bankier wykona l swoje zadanie. Zakleszczenia unikanie 26
Algorytm bankiera przyk lady dla pojedynczego zasobu Trzy stany alokacji zasobów: (a) bezpieczny, (b) bezpieczny, (c) niebezpieczny. Zakleszczenia unikanie 27
Algorytm bankiera dla wielu zasobów Przedstawiony powyżej stan zasobów przydzielonych i jeszcze potrzebnych procesom jest bezpieczny. Procesy moga wykonać si e na przyk lad w kolejności: D, A, B, C, E. Jeżeli w tym stanie proces B zażada lby jednej drukarki, to żadanie to można spe lnić, ponieważ stan wynikowy nadal jest bezpieczny. Jeżeli jednak nast epnie proces E również zażada lby drukarki, to tego żadania nie można spe lnić bo stan wynikowy nie by lby bezpieczny. Zakleszczenia unikanie 28
Algorytm bankiera dla wielu zasobów (2) Algorytm sprawdzania, czy stan jest bezpieczny: 1. Znajdź w macierzy R rzad i odpowiadajacy procesowi P i, którego wszystkie niespe lnione żadania zasobów R i moga być zaspokojone przez dost epne zasoby R i A. Jeśli nie można wybrać takiego procesu to w systemie w końcu dojdzie do zakleszczenia. 2. Wybrany proces może poprawnie wykonać si e do końca. Oznacz proces jako zakończony, i dodaj jego posiadane zasoby do wektora A. 3. Powtarzaj kroki 1 i 2 dopóty, dopóki albo wszystkie procesy zostana oznaczone jako zakończone, ale pozostana procesy, których żadań nie da si e spe lnić. W tym drugim przypadku mamy do czynienia z zakleszczeniem. Zakleszczenia unikanie 29
Zakleszczenia unikanie 30
Zapobieganie zakleszczeniom Teoretycznie, algorytm bankiera rozwiazuje problem zakleszczeń w elegancki sposób, bez uciekania si e do opisanych wcześniej zabiegów usuwania powsta lych zakleszczeń. Jednak wymaga on pe lnej znajomości rozk ladu przysz lych żadań przydzia lu zasobów wszystkich procesów. Jest to możliwe raczej tylko w zamkni etych systemach, gdzie istnieje sta la pula procesów, i ich charakterystyka jest znana. (Ale w takich systemach możliwe sa prostsze rozwiazania problemu zakleszczeń, niż analiza stanów bezpiecznych.) Dlatego podejście unikania zakleszczeń ma charakter teoretyczny, ale niezbyt przydatny praktycznie. Zatem, czy istnieja metody bardziej praktyczne? Można takie zaproponować w oparciu o warunki konieczne powstawania zakleszczeń. Gdyby uda lo si e wykluczyć przynajmniej jeden z tych warunków, to zakleszczenia nie by ly w ogóle możliwe. Zakleszczenia zapobieganie 31
Atak na warunek wzajemnego wykluczania Gdyby zasoby nie by ly przydzielane procesom na wy l aczność, do zakleszczeń nie mog loby dojść. Jak to osiagn ać przy korzystaniu z zasobów przez wiele procesów? Rozważmy dost ep do drukarki. Procesy moga przydzielać ja sobie na wy laczność, ale alternatywnie drukowanie może być obs lugiwane przez jeden centralny proces, zwany spoolerem. Udost epnia on interfejs funkcji drukowania, i procesy korzystaja z niego w celu skorzystania z drukarki. To podejście można zastosować również do przydzia lu wybranych innych zasobów. Należy jednak uważać. Jest teoretycznie możliwe powstanie zakleszczenia przy korzystaniu z demona obs lugujacego dost ep do urzadzenia. Jeśli demon opóźnia wykonanie operacji do momentu otrzymania wszystkich danych, a pojemność bufora ma ograniczona, to dwa procesy moga jednocześnie rozpoczać transmisj e danych na urzadzenie, ale potem opóźniać ja, powodujac cz eściowe zape lnienie bufora, i niemożność dokończenia któregokolwiek zadania. Zatem stosowanie tej metody warto po l aczyć z rozważnym korzystaniem z zasobów. Przydzia l zasobu powinien nast epować wtedy gdy jest to absolutnie konieczne, oraz gdy proces jest gotowy do szybkiego i skutecznego wykonania operacji na zasobie. Zakleszczenia zapobieganie 32
Atak na warunek wstrzymywania i oczekiwania Jak można zapobiec temu, żeby procesy posiadajace pewne zasoby, zawiesza ly si e w oczekiwaniu na inne? Można wymagać, aby proces przydzieli l sobie wszystkie potrzebne mu zasoby przed rozpocz eciem przetwarzania. Jeśli nie b edzie móg l przydzielić wszystkich zasobów, to nie przydzieli żadnych, b edzie na nie czeka l, nie blokujac jednak innych procesów. Jednak nie wszystkie procesy wiedza z góry, których zasobów b ed a potrzebowa ly (gdyby wiedzia ly, możnaby stosować unikanie zakleszczeń za pomoca algorytmu bankiera). W innych przypadkach możemy uzyskać nieoptymalne korzystanie z zasobów. Jeśli proces najpierw d lugo korzysta z jednego zasobu, a potem z innego, to móg lby przez d lugi czas niepotrzebnie blokować oba zasoby. Rozwiazaniem może być wymaganie, aby procesy przed każda kolejna faza obliczeń, wymagajac a innej konfiguracji zasobów, zwolni ly wszystkie zasoby dotychczas przetrzymywane, i uzyska ly dost ep do wszystkich aktualnie potrzebnych zasobów od nowa. Zakleszczenia zapobieganie 33
Atak na warunek braku wyw laszczania Zanegowanie braku wyw laszczania oznacza możliwość wyw laszczania zasobów. Przyk ladowym możliwym sposobem wyw laszczania zasobów jest by proces żadaj acy zasobu, który nie jest obecnie dost epny, musia l zwrócić wszystkie posiadane już zasoby. Potem musia lby on od poczatku żadać i czekać na wszystkie zasoby. By lby on wznowiony dopiero wtedy, gdy wszystkie te zasoby b ed a dost epne. Zakleszczenia zapobieganie 34
Atak na warunek cyklicznego oczekiwania Warunek cyklicznego oczekiwania można zanegować na kilka sposobów. Na przyk lad, można żadać, aby każdy proces móg l przydzielić sobie tylko jeden zasób. Niestety, w wiekszości przypadków jest to nie do przyj ecia. Innym sposobem może być globalne ponumerowanie zasobów, na przyk lad jak na rysunku poniżej, oraz przyj ecie zasady: wiele zasobów może być przydzielonych, ale tylko w kolejności zgodnej z ich numerami. W tej sytuacji graf alokacji zasobów nigdy nie b edzie mia l cykli, i zakleszczenia nie moga powstać. Rozważmy przyk lad na powyższym rysunku. Proces (A) ma przydzielony zasób [i] a proces (B) ma zasób (j). Do zakleszczenia mog loby dojść, gdyby teraz proces (A) zażada l zasobu [j] a proces (B) zasobu (i). Jednak jeśli sa to różne zasoby, to albo i < j albo na odwrót, i powyższa sekwencja alokacji zasobów prowadzaca do zakleszczenia, by laby zabroniona. Zakleszczenia zapobieganie 35
Jest to również prawda w przypadku zbioru procesów. Niech k b edzie najwyższym numerem już przydzielonego zasobu. Proces, który go przetrzymuje, nigdy nie zażada zasobu o numerze niższym. Najwyżej może zażadać jeszcze zasobu o numerze wyższym, ale te sa wszystkie wolne. Proces ostatecznie zakończy si e, i zwolni wszystkie zasoby. W tej sytuacji uwolniony b edzie nast epny proces przetrzymujacy zasób o najwyższym numerze, i on również po jakimś czasie skończy i zwolni swoje zasoby. Algorytm pozostaje s luszny, jeśli zażadamy przydzia lu zasobów w kolejności niemalejacych numerów (a niekoniecznie rosnacych), oraz żeby proces nie móg l jedynie przydzielać zasobów o numerze wi ekszym od tych, które aktualnie posiada (a niekoniecznie tych które przydzieli l wcześniej i zwolni l). Numeracja zasobów jest rozwiazaniem problemu zakleszczeń. Jego wada jest trudność znalezienia globalnej numeracji zasobów, która zapewni laby optymalne dzia lanie systemu w każdym przypadku. Zakleszczenia zapobieganie 36
Referencje Wi ekszość materia lu w tej prezentacji, w tym przyk ladów i rysunków, pochodzi z podr ecznika Andrew S. Tanenbauma: Modern Operating Systems, Third Edition, Pearson Education, 2008, polskie wydanie: Systemy Operacyjne, Wydanie III, Helion 2010. Zakleszczenia zapobieganie 37