Porządek dostępu do zasobu: procesory obszary pamięci cykle procesora pliki urządzenia we/wy

Podobne dokumenty
Systemy operacyjne. wykład 11- Zakleszczenia. dr Marcin Ziółkowski. Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie

Zakleszczenie. Problem i przeciwdziałanie. Systemy operacyjne Wykład 8 1

Synchronizacja procesów i wątków

POTRZEBY A B C D E P P P P P

Przeciwdziałanie zakleszczeniu. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Problem zakleszczenia

Wzajemne wykluczanie i zakleszczenie

Programowanie współbieżne Wykład 5. Rafał Skinderowicz

Materiały pomocnicze 1

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

Blokady. Model systemu. Charakterystyka blokady

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne

Detekcja zakleszczenia (1)

Problem zakleszczenia. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Elekcja, wzajemne wykluczanie i zakleszczenie

Synchronizacja procesów

Koordynacja procesów w środowisku rozproszonym

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Przykładowe zadanie z unikania blokad.

* Wymień typowe standardy sygnałów procesowych: - analogowy - dwustanowe

Wzmianka o zakleszczeniu (ang. deadlock, inne tłumaczenia: blokada, impas, zastój) pojawiła się przy okazji synchronizacji procesów.

Sortowanie topologiczne skierowanych grafów acyklicznych

UNIKANIE IMPASÓW W SYSTEMACH PROCESÓW WSPÓŁBIEŻNYCH

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

4. Procesy pojęcia podstawowe

Podstawy Informatyki. Wykład 6. Struktury danych

Programowanie współbieżne i równoległe. dr inż. Marcin Wilczewski 2013

Zarządzanie procesami i wątkami

Algorytmy zarządzania współbieżnym wykonywaniem transakcji część I

4. Procesy pojęcia podstawowe

Procesy, wątki i zasoby

Działanie systemu operacyjnego

Algorytmy i Struktury Danych.

Algorytm Lamporta. Czy można to ulepszyć?

Systemy operacyjne III

Digraf. 13 maja 2017

Problem 1 prec f max. Algorytm Lawlera dla problemu 1 prec f max. 1 procesor. n zadań T 1,..., T n (ich zbiór oznaczamy przez T )

1. Działania na procesach

Wskaźniki. Informatyka

Mechanizmy pracy równoległej. Jarosław Kuchta

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco

Semafory. // G - globalna dla wszystkich. // Wada - aktywne oczekiwanie Test_and_Set(Li); exit when Li = 0; end loop sekcja_krytyczna(i); G := 0;

Działanie systemu operacyjnego

Programowanie współbieżne Wykład 2. Iwona Kochańska

Wprowadzenie do programowania współbieżnego

Wykład 6. Planowanie (szeregowanie) procesów (ang. process scheduling) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

Programowanie współbieżne Wykład 7. Iwona Kochaoska

Podstawy Programowania C++

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Przełączanie kontekstu. Planista średnioterminowy. Diagram kolejek. Kolejki planowania procesów. Planiści

Podstawy informatyki. Izabela Szczęch. Politechnika Poznańska

Plan wykładu. Przykład. Wprowadzenie BAZY DANYCH. Transakcje Hurtownie danych

Klasyczne problemy współbieżności. Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Sztuczna Inteligencja i Systemy Doradcze

Matematyczne Podstawy Informatyki

1.1 Definicja procesu

Dynamiczne struktury danych

Systemy Operacyjne. wykład 1. Adam Kolany. Październik, Instytut Techniczny Państwowa Wyższa Szkoła Zawodowa w Nowym Sączu

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

SOE Systemy Operacyjne Wykład 8 Pamięć wirtualna dr inż. Andrzej Wielgus

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

LibreOffice Calc VBA

Szeregowanie zadań w Linux Kernel 2.6. Daniel Górski Przemysław Jakubowski

Współbieżność w środowisku Java

Działanie systemu operacyjnego

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 3

Zarządzanie pamięcią w systemie operacyjnym

Liczby losowe i pętla while w języku Python

Bazy danych w sterowaniu

Systemy wbudowane. Systemy operacyjne czasu rzeczywistego

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Metody uporządkowania

Metody uporządkowania

Algorytmy dla maszyny PRAM

Podstawy programowania skrót z wykładów:

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Działanie systemu operacyjnego

Informatyka, systemy, sieci komputerowe

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Lock Manager Deadlock Źródła Jak starczy czasu. Dreadlocks. Konrad Błachnio MIMUW 19 maja 2010

Zarządzanie procesorem

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

Wstęp do programowania

Programowanie w języku C++

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Transkrypt:

ZAKLESZCZENIA

w SO brak środków zapobiegania zakleszczeniom Zamówienia na zasoby => przydział dowolnego egzemplarza danego typu Zasoby w systemie typy; identyczne egzemplarze procesory obszary pamięci cykle procesora pliki urządzenia we/wy Porządek dostępu do zasobu: zamówienie (funkcje systemowe, operacje semaforowe) użycie zwolnienie

Przed użyciem zasobu SO sprawdza w tablicy systemowej, czy zasób został przydzielony procesowi Tablica systemowa: zasób wolny/zajęty id procesu, któremu przydzielono zasób kolejka procesów oczekujących na zasób

Zbiór procesów jest w stanie zakleszczenia każdy proces z tego zbioru czeka na zdarzenie, które może być efektem działania innego procesu z tego zbioru zdarzenia przydział, zwalnianie zasobów fizycznych, logicznych - komunikacja między procesami

Warunki konieczne do wystąpienia zakleszczenia Wzajemne wykluczanie przynajmniej jeden zasób niepodzielny Przetrzymywanie i oczekiwanie Jeden proces dysponuje jednym zasobem, oczekuje na drugi zasób, który jest przetrzymywany przez inny proces Brak wywłaszczeń Zasób może być zwolniony tylko przez proces, któremu został przydzielony Czekanie cykliczne procesy czekające {P 0, P 1, P 2, P n } tworzą cykl: P 0 P 1 P 2 P n P 0

V: Graf przydziału zasobów Resource-Allocation Graph zbiór wierzchołków - V zbiór krawędzi - E P = {P 1, P 2,, P n } - procesy R = {R 1, R 2,, R m } zasoby P 1 R j Krawędź zamówienia krawędź skierowana R j P i Krawędź przydziału

proces 4 egzemplarze jednego typu zasobu P i żąda zasobu R j P i P i przydzielony zostaje R j R j P i Przydział zasobu: - krawędź zamówienia zastąpiona krawędzią przydziału R j

Brak cykli, nie ma zakleszczenia

zakleszczenie Cykle: P 1 R 1 P 2 R 3 P 3 R 2 P 1 P 2 R 3 P 3 R 2 P 2

Cykl: P 1 R 1 P 3 R 2 P 1 Jest cykl; bez zakleszczenia

Nie ma cykli nie ma zakleszczenia Są cykle Jeśli po jednym egzemplarzu każdego zasobu - zakleszczenie jeśli po kilka egzemplarzy każdego typu zasobu możliwe zakleszczenie

Co robić z zakleszczeniami Gwarancja, że system nigdy nie wejdzie w stan zakleszczenia Dopuszczanie wystąpienia zakleszczeń + usuwanie zakleszczeń Ignorowanie problemu; założenie, że zakleszczenie nigdy nie wystąpi - UNIX

Zapobieganie zakleszczeniom (1) Wzajemne wykluczanie niemożliwe dla zasobów niepodzielnych Przetrzymywanie i oczekiwanie potrzeba zagwarantowania, że gdy proces żąda zasobu nie dysponuje innym zasobem Alokowanie wszystkich zasobów procesu przed działaniem Zamawianie zasobu po zwolnieniu innych zasobów Wady: Małe wykorzystanie zasobów Możliwe głodzenie Nie spełnienie min. jednego z 4 warunków

Zapobieganie zakleszczeniom (2) Brak wywłaszczeń Protokół 1 Jeśli zamówienie nie może być spełnione - utrata wszystkich zasobów Dodanie ich do listy wolnych zasobów Restart procesu możliwy gdy dostępne wszystkie wymagane zasoby Protokół 2 Jeśli zamówione zasoby przydzielone są procesowi, który czeka na dodatkowy zasób wywłaszczenie Jeśli nie - proces czeka; wywłaszczenie tylko wtedy, gdy inny proces zażąda zasobów

Zapobieganie zakleszczeniom (3) Czekanie cykliczne całkowite uporządkowanie typów zasobów zamawianie zasobów w kolejności

Unikanie zakleszczeń Wymaga dodatkowych informacji a priori o zamawianych zasobach Każdy proces deklaruje max. liczbę zasobów każdego typu Dynamiczne sprawdzanie stanu alokacji zasobów, aby nie doszło do czekania cyklicznego Stan przydziału zasobów: liczba dostępnych i przydzielonych zasobów maksymalne zapotrzebowanie procesów

Stan bezpieczny System jest w stanie bezpiecznym istnieje bezpieczny ciąg procesów Ciąg procesów <P 1, P 2,, P n > jest bezpieczny jeśli dla każdego P, i jego potencjalne zapotrzebowanie na zasoby może być spełnione za pomocą aktualnie dostępnych zasobów + zasoby użytkowane przez inne P k k < I If potrzebne zasoby P i nie są dostępne natychmiast => P i czeka, aż wszystkie P k się zakończą Po zakończeniu P k, P i otrzymuje potrzebne zasoby, kończy działanie Po zakończeniu P i, P i+1 mogą otrzymać zasoby

System w stanie bezpiecznym (safe) nie ma deadlock u System w stanie zagrożenia (unsafe) możliwy deadlock Stan bezpieczny (brak zakleszczenia) system nigdy nie wejdzie w stan zagrożenia

przykład Razem: 20 Proces max. aktualne P 0 8 5 P 1 7 3 5 /zakleszcz. P 2 11 9 Stan bezpieczny systemu <P o, P 1, P 2 > <P o, P 2, P 1 > <P 2, P 1, P 0 > <P 2, P 0, P 1 >

Algorytm grafu przydziału zasobów Krawędź deklaracji P i R j proces P j może zażądać zasobu R j ; linia przerywana Krawędź deklaracji zamieniana na krawędź zamówienia gdy proces zażąda zasobu Po zwolnieniu zasobu przez proces krawędź zamówienia zamieniana na krawędź deklaracji Zasoby muszą być zamawiane a priori w systemie

Graf przydziału zasobów unikanie zakleszczeń

Graf przydziału zasobów stan zagrożenia

Algorytm Bankiera Każdy typ zasobu ma wiele egzemplarzy Każdy proces musi a priori zadeklarować maksymalną liczbę egzemplarzy zasobów, które będą mu potrzebne Liczba ta nie może przekraczać ogólnej liczby zasobów w systemie Gdy proces żąda zasobu, którego przydział spowodowałby wejście systemu w stan zagrożenia musi poczekać Proces musi zwrócić wszystkie zasoby w skończonym czasie

Struktur tury Danych dla Algorytm tmu Bankier era Available[m] Available[j] = k, jest dostępnych k egzemplarzy zasobu typu R j Max[ n,m ] Max [i,j] = k, proces P i może zażądać max. k egzemplarzy zasobu typu R j. Allocation[n, m] n = liczba procesów, m = liczba typów zasobów. Allocation[i,j] = k, P i ma aktualnie k egzemplarzyr j Need[ n, m] Need[i,j] = k, P i może potrzebować k dodatkowych egzemplarzyr j aby zakończyć zadanie Need [i,j] = Max[i,j] Allocation [i,j]

Algorytm - czy system jest w stanie bezpiecznym 1. Work[m], Finish[n] Work = Available Finish [i] = false for i - 1,3,, n. 2. znajdź i : (a) Finish [i] = false (b) Need i Work Jeśli nie ma i go to step 4 n = liczba procesów m = liczba typów zsobów. 3. Work = Work + Allocation i Finish[i] = true go to step 2 m*n 2 4. If Finish [i] == true for all i, then system jest w stanie bezpiecznym

Algorytm zamawiania zasobów Request = wektor zamówień dla procesu P i. Request i [j] = k - proces P i potrzebuje k egzemplarzy zasobu typu R j. 1. If Request i Need i then go to step 2 else error /proces przekroczył deklarowane max/ 2. If Request i Available then go to step 3 else P i musi czekać /zasoby nie są dostepne/ 3. Zmiany stanu: Available = Available - Request i ; Allocation i = Allocation i + Request i ; Need i = Need i Request i; If stan bezpieczny zasoby przydzielone procesowi P i. If stan zagrożenia P i musi czekać; przywrócenie poprzedniego stanu przydziału zasobów

Przykład - algorytm bankiera 5 procesów P 0 - P 4 ; 3 typy zasobów: A, B, C A (10 egzemplarzy), B (5 egzemplarzy) C (7 egzemplarzy). T 0 : Allocation Max Available A B C A B C A B C P 0 0 1 0 7 5 3 3 3 2 P 1 2 0 0 3 2 2 P 2 3 0 2 9 0 2 P 3 2 1 1 2 2 2 P 4 0 0 2 4 3 3 Need = Max Allocation A B C P 0 7 4 3 P 1 1 2 2 P 2 6 0 0 P 3 0 1 1 P 4 4 3 1 Stan bezpieczny: < P 1, P 3, P 4, P 2, P 0 >

P 1 żąda (1,0,2) Sprawdzenie: Request Available (1,0,2) (3,3,2) true. Allocation Need Available A B C A B C A B C P 0 0 1 0 7 4 3 2 3 0 P 1 3 0 2 0 2 0 P 2 3 0 1 6 0 0 P 3 2 1 1 0 1 1 P 4 0 0 2 4 3 1 <P 1, P 3, P 4, P 0, P 2 > - spełnia wymagania bezpieczeństwa żądanie (3,3,0) dlap 4? żądanie (0,2,0) dlap 0?

Wykrywanie Deadlock u Pozwolenie na wejście w stan zakleszczenia Algorytm wykrywania zakleszczenia Wyjście z zakleszczenia

Pojedyncze egzemplarze zasobów graf oczekiwania Węzły - procesy P i P j ; P i czeka na P j. graf oczekiwania zawiera cykl => zakleszczenie algorytm wykrywania cykli w grafie - n 2 (n liczba wierzchołków w grafie)

graf oczekiwania graf przydziału zasobów graf oczekiwania

wielokrotne egzemplarze zasobów Available[m] liczba dostępnych zasobów kaŝdego typu Allocation[n, m] liczba zasobów kaŝdego typu aktualnie przydzielona kaŝdemu z procesów Request[n, m] bieŝące zamówienia kaŝdego procesu Request [i,j] = k, proces P i zamawia dodatkowo k egzemplarzy zasobu typu R j

Algorytm wykrywania zakleszczeń 1. Work[m], Finish[n] : (a) Work = Available (b) for i = 1,2,, n if Allocation i 0 then Finish[i] = false else Finish[i] = true 2. znajdź i : (a) (b) Finish[i] == false Request i Work if no such i exists, go to step 4. 3. Work = Work + Allocation i Finish[i] = true go to step 2 4. if Finish[i] == false, for some i, 1 i n then system jest w stanie zakleszczenia if Finish[i] == false then P i is deadlocked.

przykład 5 procesów P 0, P 4 ; 3 typy zasobów A (7 egzemplarzy) B (2 egzemplarzy), C (6 egzemplarzy). T 0 : Allocation Request Available A B C A B C A B C P 0 0 1 0 0 0 0 0 0 0 P 1 2 0 0 2 0 2 P 2 3 0 3 0 0 0 P 3 2 1 1 1 0 0 P 4 0 0 2 0 0 2 <P 0, P 2, P 3, P 1, P 4 > => Finish[i] = true dla kaŝdego I P2 zamawia dodatkowo zasób C Request A B C P0 0 0 0 P1 2 0 2 P2 0 0 1 P3 1 0 0 P4 0 0 2 Zakleszczenie procesów P 1, P 2, P 3, P 4

Kiedy wywoływać algorytm wykrywania zakleszczeń Jak często może wystąpić zakleszczenie? Ilu procesów dotyczy? Gdy zamówienie nie może być spełnione Gdy wykorzystanie procesora < 40% W grafie może powstać wiele cykli problem z wykryciem sprawcy

usuwanie zakleszczeń kończenie procesów Usunięcie wszystkich zakleszczonych procesów Usuwanie procesów po kolei; powtarzanie algorytmu wykrywania zakleszczeń Kolejność wyboru procesów do usunięcia Priorytet Długość obliczeń i czas, który pozostał do zakończenia Użytkowane zasoby procesu Zasoby potrzebne do zakończenia Liczba procesów do przerwania Typ procesu ( interakcyjny, wsadowy)

usuwanie zakleszczeń wywłaszczanie zasobów Wybór ofiary (zasób, proces) Co dalej z wywłaszczonym procesem Niedopuszczanie do głodzenia

usuwanie zakleszczeń podejście mieszane 3 podstawowe podejścia zapobieganie unikanie wykrywanie Podział zasobów na hierarchicznie uporządkowane klasy W obrębie klas najodpowiedniejsze metody

usuwanie zakleszczeń podejście mieszane 4 klasy Zasoby wewnętrzne Pamięć główna Zasoby zadania Wymienny obszar pamięci