Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

SYSTEMY OPERACYJNE ZAKLESZCZENIA (BLOKADY)

Podobne prezentacje


Prezentacja na temat: "SYSTEMY OPERACYJNE ZAKLESZCZENIA (BLOKADY)"— Zapis prezentacji:

1 SYSTEMY OPERACYJNE ZAKLESZCZENIA (BLOKADY)

2 ZAKLESZCZENIE (DEAD LOCK)
Zakleszczenie (blokada) – stan zbioru procesów, gdy każdy z procesów czeka na zdarzenie, które może być spowodowane tylko przez inny proces z tego samego zbioru. Najczęściej dotyczy to przydziału i zwalniania zasobów (fizycznych – drukarki, pamięci, cykle procesora; lub logicznych – pliki, semafory, monitory). Przykłady: 3 procesy, z których każdy ma dostęp do jednego z 3 zasobów (np. 3 przewijaki taśmy, 3 drukarki). Jeśli każdy proces zamówi dodatkowy zasób  procesy znajdą się w stanie zakleszczenia. system z 1 drukarką i 1 przewijakiem – proces z przydzielonym przewijakiem zamawia drukarkę, a proces z przydzieloną drukarką zamawia przewijak  zakleszczenie. Procesy w stanie zakleszczenia nigdy nie skończą swoich zadań, wiążą zasoby systemowe i uniemożliwiają rozpoczęcie wykonywania innych zadań.

3 ZAKLESZCZENIE (DEAD LOCK)
Warunki konieczne zakleszczenia (koniunkcja 4 warunków): Wzajemne wykluczanie: dany zasób może być używany w danym czasie tylko przez jeden proces; inny proces zamawiający dany zasób musi być opóźniony do czasu, aż zasób zostanie zwolniony. Przetrzymywanie i oczekiwanie: musi istnieć proces z przydzielonym co najmniej jednym zasobem, oczekujący na przydzielenie dodatkowego zasobu, zajętego właśnie przez inny proces. Brak wywłaszczeń: zasoby nie podlegające wywłaszczeniu, mogą zostać zwolnione tylko przez przetrzymujący je proces, po zakończeniu przez niego zadania (proces nie może zostać wywłaszczony wbrew swej woli). Cykliczne czekanie: musi istnieć zbiór czekających procesów {P0 , P1 , ... , Pn} takich, że: P0 czeka na zasób przydzielony do P1; P1 czeka na zasób przydzielony do P2, , Pn-1 czeka na zasób przydzielony do PN, PN czeka na zasób przydzielony do P0.

4 ZAKLESZCZENIE (DEAD LOCK)
Metody postępowania z zakleszczeniami: I. Algorytm strusia – ignoruje się możliwość zakleszczenia, uważając, że sytuacje te są sporadyczne (np. UNIX). II. Strategie postępowania: A) Zapobieganie wystąpieniu warunków zakleszczenia: 1. Wzajemne wykluczanie - warunek ten musi być spełniony tylko w stosunku do zasobów niepodzielnych (np. drukarka); zasoby dzielone nie wymagają dostępu na zasadzie WW (np. pliki do czytania). W ogólnym przypadku – niemożliwe do wykonania, niektóre zasoby są z zasady niepodzielne.

5 ZAKLESZCZENIE (DEAD LOCK)
Metody postępowania z zakleszczeniami – zapobieganie (cd): 2. Przetrzymywanie i oczekiwanie – a) każdy proces zamawia i dostaje wszystkie potrzebne zasoby, zanim rozpocznie działanie; b) proces może zamawiać zasoby tylko wtedy, gdy nie ma żadnych zasobów (konieczność wcześniejszego zwolnienia przydzielonych wcześniej zasobów). Wady: spadek wykorzystania zasobów w systemie oraz możliwość głodzenia procesów (zwłaszcza oczekujących na popularne zasoby). Zastosowanie: w SO - nie, w s. baz danych (transakcje) – tak.

6 ZAKLESZCZENIE (DEAD LOCK)
Metody postępowania z zakleszczeniami – zapobieganie (cd) 3. Brak wywłaszczeń – proces zgłaszający zapotrzebowanie na zasoby, których nie można mu przydzielić, traci wszystkie dotychczasowe zasoby i oczekuje na dostępność wszystkich potrzebnych zasobów (zasoby „stracone” i zwolnione przez dany proces dopisywane są do listy zasobów, na które proces oczekuje); lub: jeżeli proces A zgłasza zapotrzebowanie na zasoby, które aktualnie są przydzielone procesowi B, który oczekuje na dodatkowe zasoby, to odbiera się je procesowi B i przydziela procesowi A. Jeśli zasoby nie są ani dostępne, ani przetrzymywane przez czekający proces B, to proces A też musi zaczekać. Podczas oczekiwania proces może zatem utracić pewne zasoby, ale tylko wtedy, gdy zażąda ich inny proces. Wada: możliwość głodzenia procesów i ciągłego ich restartowania.

7 ZAKLESZCZENIE (DEAD LOCK)
Metody postępowania z zakleszczeniami – zapobieganie (cd) 4. Cykliczne czekanie – niedopuszczenie do zamknięcia łańcucha oczekujących procesów (pętli) poprzez uporządkowanie wszystkich typów zasobów (numeracja) i wymaganie, by każdy proces zamawiał zasoby we wzrastającym porządku ich numeracji. Jeżeli proces zamawia zasoby o numerze „j”, to musi wcześniej zwolnić wszystkie zasoby o numerach „i” większych od „j”. Np. jeżeli proces potrzebuje przewijaka taśmy, napędu dysku i drukarki, to ich numeracja może być odpowiednio: 1, 5, 9; wówczas proces najpierw musi zamówić przewijak a potem drukarkę. = = = Algorytmy zapobiegania zakleszczeniom dążą do niespełnienia przynajmniej jednego z 4 warunków koniecznych zakleszczeń  małe wykorzystanie zasobów oraz ograniczona przepustowość systemu.

8 ZAKLESZCZENIE (DEAD LOCK)
Metody postępowania z zakleszczeniami cd. B) Unikanie zakleszczeń – algorytmy unikania różnią się pod względem ilości i typu wymaganych informacji o sposobach zamawiania zasobów przez procesy. - proces deklaruje maksymalną liczbę zasobów każdego typu, które będzie potrzebował, - system dysponuje informacjami o aktualnych przydziałach i ostrożnie przydziela zasoby; - system uwzględnia zasoby bieżąco dostępne, zasoby przydzielone każdemu z procesów oraz przyszłe zamówienia i zwolnienia ze strony każdego procesu. Algorytm unikania zakleszczenia sprawdza dynamicznie stan przydziału zasobów, gwarantując niespełnienie warunku cyklicznego czekania.

9 ZAKLESZCZENIE (DEAD LOCK)
Stan systemu jest bezpieczny jeżeli istnieje porządek, w którym system może przydzielić zasoby każdemu procesowi, stale unikając zakleszczenia. stan bezpieczny / stan zagrożenia  zakleszczenie (nie ma zakleszczeń) / (możliwość ale nie konieczność z.) istnieje możliwa do realizacji / proces nie zawsze musi żądać kolejność wykonania i zakończenia / wszystkich zadeklarowanych przez wszystkich procesów / siebie zasobów W stanie zagrożenia SO nie może zapobiec zamówieniom procesów, prowadzącym do zakleszczenia – stanami zagrożenia steruje zatem zachowanie procesów.

10 ZAKLESZCZENIE (DEAD LOCK)
Przykład: System ma 12 jednostek zasobów i 3 procesy: P0, P1, P2, których wymagania określa tabela: Proces Zapotrzebowanie maksymalne Zapotrzebowanie bieżące P0 10 5 P1 4 2 P2 9 2 (3) Ciąg < P1, P0, P2> [2+5+2, 3 wolne] spełnia warunek stanu bezpiecznego (P1 może otrzymać dodatkowe 2); po zakończeniu P1 – jest wolne 10 jedn., zatem P0 może otrzymać max. liczbę jedn. Po zakończeniu P0, p. P2 ma do dyspozycji wszystkie jedn. Ale jeśli proces P2 w trakcie realizacji procesu P1 zamówi i otrzyma dodatkową jedn. to system przejdzie w stan zagrożenia. Dlaczego? P1 może uzyskać max. jednostek. Ale wystarczy, że P0 oprócz 5 jedn. zażąda dodatkowo jeszcze 5 – brak 1, P0 czeka; jeśli P2 również zażąda dodatkowo 6 jedn. to mamy zakleszczenie.

11 ZAKLESZCZENIE (DEAD LOCK)
Algorytmy unikania zakleszczeń zapewniają pozostawanie systemu zawsze w stanie bezpiecznym. Przy każdorazowym zamówieniu zasobu przez proces system sprawdza, czy przydzielenie procesowi danego zasobu nie spowoduje przejście systemu w stan zagrożenia, który potencjalnie pozwala na zakleszczenie. Algorytmy unikania zakleszczeń mogą powodować oczekiwanie procesu na zasoby nawet wtedy, jeśli zasoby te są na bieżąco dostępne. Daje to mniejsze wykorzystanie zasobów niż w przypadku rezygnacji z unikania zakleszczeń.

12 ZAKLESZCZENIE (DEAD LOCK)
Algorytm bankiera (analogia do banku, który nie zainwestuje gotówki tak, aby uniemożliwić zaspokojenie wymagań wszystkich jego klientów). Algorytm służy do sprawdzenia, czy stan jest bezpieczny. 1. Proces przy wejściu do systemu deklaruje maksymalną liczbę egzemplarzy każdego zasobu, które będzie potrzebował. 2. Przy zamawianiu zasobów przez użytkownika, system określa, czy ich przydzielenie pozostawi system w stanie bezpiecznym: - przy odpowiedzi pozytywnej – zasoby są przydzielane, - w przypadku odpowiedzi negatywnej – proces musi czekać.

13 ZAKLESZCZENIE (DEAD LOCK)
Algorytm bankiera cd. Dla implementacji algorytmu potrzebne są następujące struktury: dostępne: wektor określający liczbę dostępnych zasobów Z(i): D[i]), maksymalne: macierz określająca maksymalne żądania każdego procesu P(j): Max[j,i], przydzielone: macierz określająca liczbę zasobów każdego typu Z(i), przydzielonych do każdego z procesów P(j): Pd[j,i], potrzebne: macierz określająca pozostałe do spełnienia zamówienia każdego z procesów: Pt[j,i]. Pt[j,i] = Max[j,i] - Pd[j,i] koniec: wektor K[j] o wartościach true, gdy proces P(j) może być zakończony w dotychczasowej konfiguracji przydziałów, robocze: wektor R(i) o wartościach odpowiadających liczbie zasobów Z(i) dostępnych po zakończeniu wszystkich procesów, dla których K[i] = true.

14 ZAKLESZCZENIE (DEAD LOCK)
Algorytm bankiera cd. Wypełnij tablicę K wartościami false, a tablicę R zawartością tablicy D. Znajdź takie j, że: - K[j] = false - Pt[j]  R j – nr kolejnego procesu dodawanego na końcu już skonstruowanego ciągu bezpiecznego. Jeżeli nie ma takiego j, to idź do kroku 6. Jeżeli jest takie j, to: - R = R + Pd[j] - K[j] = true po dodaniu procesu P(j) do konstruowanego ciągu bezpiecznego zakłada się, że ten proces kończy się i zwalnia wszystkie swoje zasoby. 5. Wróc do kroku 2. 6. Jeżeli dla każdego j = 1, 2, ...n K[j]=true, to stan jest bezpieczny; w przeciwnym przypadku stan nie jest bezpieczny.

15 ZAKLESZCZENIE (DEAD LOCK)
Obsługa żądania procesu przez algorytm bankiera Zd[j,i] – tablica żądań zasobów Z(i) przez proces P(j); 1. Jeśli Zd > Pt[j], tzn. proces żąda więcej zasobów niż zadeklarowane na początku maximum M[j] >>> zlecenie odrzucone. 2. Jeśli Zd > D, tzn. proces żąda więcej zasobów niż jest ich dostępnych >>> zlecenie odrzucone. 3. Jeśli żaden z ww. warunków nie jest spełniony, konstruujemy stan, jaki powstałby po spełnieniu tego żądania i sprawdzamy, czy jest on bezpieczny. Nowy stan otrzymuje się następująco: D = D – Zd; Pd[j] = Pd[j] + Zd; Pt[j] = Pt[j] – Zd; 4. Jeśli taki stan jest bezpieczny, żądanie jest spełniane. Jeśli stan nie jest bezpieczny, proces P(j) musi czekać (mimo, że zasoby są wolne – jest to koszt unikania zakleszczeń).

16 ZAKLESZCZENIE (DEAD LOCK)
Przykład: Są 3 procesy P(1), P(2) i P(3) i dwa rodzaje zasobów Z(1) i Z(2), które mają po 3 egzemplarze. Stan systemu opisany jest tablicami Pd, M i D. Proces Przydział Z(1) Z(2) Maksimum Dostępne P(1) 2 1 P(2) 3 P(3) System jest w stanie bezpiecznym -> ciąg P(3),P(2), P(1): możliwe spełnienie maksymalnych potrzeb P(3); po jego zakończeniu – zwolnienie zasobu Z(2) -> spełnienie max. potrzeb P(2); z kolei możliwe spełnienie potrzeb P(1).

17 ZAKLESZCZENIE (DEAD LOCK)
Algorytm bankiera nie wprowadza zbyt restrykcyjnych ograniczeń na wykorzystywanie zasobów przez procesy, ma jednak kilka ograniczeń : ·   zakłada się, że system operacyjny rozdziela stałą liczbę jednostek zasobów pomiędzy stałą liczbę procesów; ·   algorytm wymaga, aby proces określił swoje maksymalne żądania zasobowe, co nie zawsze jest możliwe lub też może się zmieniać w sposób dynamiczny. Unikanie zakleszczeń jest strategią wykorzystywaną dość często w systemach równoległych i rozproszonych.

18 ZAKLESZCZENIE (DEAD LOCK)
Zadanie: System z 5 procesami (P0,P1,P2,P3,P4) i 4 typy zasobów A,B,C,D o następujących liczbach egzemplarzy [A=3, B=8, C=9, D=7]. W danej chwili stan systemu opisany jest następująco: Przydzielone Maksymalne Dostępne A B C D A B C D A B C D P P P P P W oparciu o algorytm bankiera, należy : 1 – określić macierz zapotrzebowań Potrzebne, 2 – odpowiedzieć, czy system jest w stanie bezpiecznym (uzasadnić)? 3 – jeśli proces P1 złoży zamówienie [0, 4, 2, 0], to czy będzie możliwe jego natychmiastowe spełnienie?

19 ZAKLESZCZENIE (DEAD LOCK)
Metody postępowania z zakleszczeniami C) Wykrywanie i usuwanie Jeżeli w systemie nie stosuje się algorytmów zapobiegania zakleszczeniom ani ich unikania, to może dojść do zakleszczenia. Wówczas w systemie muszą istnieć: - algorytm sprawdzający stan systemu, czy nastąpiło zakleszczenie; - algorytm usuwania zakleszczenia. Algorytm wykrywania zakleszczeń przy każdym zamówieniu może prowadzić do nadmiernego czasu obliczeń.  wykonuje się ten algorytm np. raz na godzinę lub gdy wykorzystanie procesora spadnie np. poniżej 40 %.

20 ZAKLESZCZENIE (DEAD LOCK)
Metody postępowania z zakleszczeniami cd. Wykrywanie: 1. Z zestawu badanych procesów wybiera się nieoznaczony proces, którego praca może być skończona w skończonym czasie, a więc proces, którego żądania zasobowe mogą być spełnione na podstawie jednostek zasobów aktualnie dostępnych w systemie. 2. Jeśli taki proces istnieje, to zakłada się, że po zakończeniu jego pracy zasoby przez niego wykorzystywane wrócą do ogólnej puli zasobów systemowych, a więc proces jest uważany za zakończony. Następuje powrót do pkt. 1. 3. Jeśli wszystkie procesy zostały oznaczone, to algorytm kończy swoje działanie, co oznacza, że żaden z procesów nie znajdował się w stanie zakleszczenia. (modyfikacja algorytmu bankiera)

21 ZAKLESZCZENIE (DEAD LOCK)
Metody postępowania z zakleszczeniami cd. Usuwanie: Czynności, po wykryciu zakleszczenia, w celu jego usunięcia. 1. Usuwanie przez wywłaszczenie - czasowe odebranie zasobów jednemu z procesów i przydzielenie ich innemu procesowi (bardziej potrzebującemu). 2. Usuwanie przez wycofywanie - punkty kontrolne procesu – moment wpisu obrazu pamięci procesu oraz stanu przydzielonych zasobów do tego procesu (zapisywane do dziennika systemu). Informacje te mogą być nadpisywane w kolejnych punktach kontrolnych, jeśli system pracuje normalnie (nie zakleszcza się). Jeśli zostanie wykryte zakleszczenie, należy sprawdzić jakie zasoby są zablokowane. Wybrany na tej podstawie proces jest wycofany do stanu pamiętanego w ostatnim punkcie kontrolnym. Wycofywanie jest kontynuowane aż do momentu, kiedy zakleszczenie zostanie usunięte.

22 ZAKLESZCZENIE (DEAD LOCK)
Usuwanie cd. 3.   Usuwanie zakleszczenia przez usunięcie procesu. Kryteria, na podstawie których mogą być wybierane decyzje o wybraniu procesu do usunięcia: Priorytety procesów - usuwane są procesy o najniższym priorytecie.      Czasy dotychczasowego działania procesów - usuwane są procesy działające najkrócej.    Liczba i typ wykorzystywanych zasobów - usuwane są te procesy, które wykorzystywały najwięcej zasobów. Liczba i typ zasobów potrzebnych do zakończenia działania - usuwane są te procesy, które potrzebują najwięcej zasobów.

23 ZAKLESZCZENIE (DEAD LOCK)
Usuwanie cd. Podejście pragmatyczne: Przy wyborze procesu do usunięcia należy minimalizować koszty tej operacji, np. nie usuwać procesu, który zaraz się skończy, usuwać jak najmniej procesów. Zamiast przerywać proces, lepiej wycofać go do wcześniejszego bezpiecznego stanu. Z dwóch procesów: jednego, który wykonał kompilację programu, i drugiego, który wykonywał aktualizację bazy danych, należy usunąć ten pierwszy, ponieważ kompilację można powtórzyć bez negatywnych skutków, natomiast usunięcie drugiego procesu może spowodować stan niespójny bazy danych.

24 ZAKLESZCZENIE (DEAD LOCK)
Metody postępowania z zakleszczeniami - podsumowanie 1. Przestrzeganie protokołu zapewniającego, że system nigdy nie wejdzie w stan zakleszczenia. 2. Pozwolenie na występowanie zakleszczeń w systemie i wycofywanie się z nich. 3. Zlekceważenie problemu, uważając, że zakleszczenia nie wystąpią w systemie (Unix). Zapobieganie – wyłączenie jednego z 4 warunków koniecznych zakleszczenia. Unikanie – pozyskiwanie informacji o przyszłym użytkowaniu zasobów przez każdy z procesów. Wykrywanie i usuwanie – przedwczesne kończenie niektórych z zakleszczonych procesów lub odbieranie im pewnych zasobów. Jeżeli kryterium wycofywania opiera się o koszty – może dojść do głodzenia procesów.


Pobierz ppt "SYSTEMY OPERACYJNE ZAKLESZCZENIA (BLOKADY)"

Podobne prezentacje


Reklamy Google