Principy operačních systémů
Lekce 7: Obrana proti deadlocku
Principy operačních systémů – Ing. Nulíček Vladimír
Deadlock • Deadlock = uváznutí, zablokování • Vznik problému: proces drží určité prostředky, požaduje přidělení dalších prostředků, tyto nedostane a je převeden do stavu blokovaných procesů, přičemž drží nadále již dříve přidělené prostředky požadované jinými (čekajícími) procesy. • Např. jeden proces má přidělenu tiskárnu a požaduje modem, druhý proces má přidělen modem a požaduje tiskárnu – vzniká tzv. cyklické čekání.
Lekce 7: Obrana proti deadlocku
2
Principy operačních systémů – Ing. Nulíček Vladimír
Model zablokování – orientovaný graf
Lekce 7: Obrana proti deadlocku
3
Principy operačních systémů – Ing. Nulíček Vladimír
4 Coffmanovy podmínky zablokování 1. Vzájemné vyloučení (Exclusive use) - prostředek vlastní právě jeden proces nebo je volný 2. Drž a čekej (Hold and wait) - proces může vlastnit prostředek a žádat o další 3. Neodnímatelnost (No preemption) - přidělené prostředky nemohou být odebrány 4. Čekání do kruhu (Cyclic dependency) - procesy čekají na prostředky v kruhu, každý článek čeká na prostředek vlastněný dalším článkem Lekce 7: Obrana proti deadlocku
4
Principy operačních systémů – Ing. Nulíček Vladimír
Řešení problému zablokování • pštrosí algoritmus – předstíráme, že problém neexistuje • detekce a zotavení (detection and recovery) – řešíme, až když nastane problém • vyhýbání se zablokování (avoidance) – „opatrným“ přidělováním zabráníme realizaci všech Coffmanových podmínek • předcházení zablokování (prevention) – napadení jedné z Coffmanových podmínek
Lekce 7: Obrana proti deadlocku
5
Principy operačních systémů – Ing. Nulíček Vladimír
Pštrosí algoritmus • Ve skutečnosti nejde o algoritmus • Problém zablokování se nedetekuje ani neřeší • Používá se tehdy, pokud zablokování nastává jen výjimečně (nebo pokud by náklady na jeho řešení by byly vyšší než případné důsledky problému) • Pokud dojde k zablokování, uživatel musí problém řešit tak, že jeden z procesů násilně ukončí a tím přeruší kruh čekání na přidělení prostředků. • Používá se ve většině univerzálních OS (Unix, Windows…) Lekce 7: Obrana proti deadlocku
6
Principy operačních systémů – Ing. Nulíček Vladimír
Detekce a zotavení (detection and
recovery)
• Systém se nesnaží předcházet výskytu uváznutí, tzn. procesy mohou uváznout. • V případě výskytu uváznutí se tuto situaci snaží detekovat a na základě toho se pokusí uváznutí odstranit.
Lekce 7: Obrana proti deadlocku
7
Principy operačních systémů – Ing. Nulíček Vladimír
Detekce uváznutí
Lekce 7: Obrana proti deadlocku
8
Principy operačních systémů – Ing. Nulíček Vladimír
Detekce uváznutí
Lekce 7: Obrana proti deadlocku
9
Principy operačních systémů – Ing. Nulíček Vladimír
Detekce uváznutí
Lekce 7: Obrana proti deadlocku
10
Principy operačních systémů – Ing. Nulíček Vladimír
Detekce uváznutí - příklad
Lekce 7: Obrana proti deadlocku
11
Principy operačních systémů – Ing. Nulíček Vladimír
Zotavení z uváznutí • Zotavení pomocí odebrání
• Dočasné násilné odebrání prostředku a půjčení jinému procesu. Ve většině případů to vyžaduje manuální intervenci, (např. odebrání pásky nebo tiskárny).
• Zotavení pomocí návratu
• Periodicky si ukládáme důležité informace o procesech, tak abychom později byli schopni je vrátit do předchozích stavů. • Při detekci uváznutí, proces, který vlastní kritický prostředek, je vrácen zpět v čase do stavu, kdy daný prostředek ještě nevlastnil. Uvolněný kritický prostředek je přidělen jednomu z uváznutých procesů.
•
Zotavení pomocí ukončení procesů
• Ukončíme proces, který je součástí smyčky v alokačním grafu. • Problém s některými typy procesů (překlad x modifikace databáze).
Lekce 7: Obrana proti deadlocku
12
Principy operačních systémů – Ing. Nulíček Vladimír
Zamezení vzniku uváznutí (avoidance) • Většinou procesy alokují prostředky postupně jeden po druhém. • V okamžiku žádosti o další prostředek, systém musí rozhodnout, zda přidělení prostředku je bezpečné (tzn. že nedojde k uváznutí) či nebezpečné. • Prostředek bude přidělen pouze pokud to bude bezpečné. • Systém se snaží předejít uváznutí opatrnou alokací prostředků. • Postupový prostor (postupová cesta) lze použít pro modelování vzniku uváznutí. Lekce 7: Obrana proti deadlocku
13
Principy operačních systémů – Ing. Nulíček Vladimír
Postupový prostor
Lekce 7: Obrana proti deadlocku
14
Principy operačních systémů – Ing. Nulíček Vladimír
• Procesy nesmí vstoupit do nebezpečné oblasti (Unsave region). Vstup do této oblasti vždy skončí uváznutím. • V bodě t, systém musí rozhodnout, zda přidělí plotter procesu B. • Abychom se vyhnuli uváznutí, B musí být pozastaven. • Proces B bude pokračovat, až proces A použije a opět uvolní plotter. Lekce 7: Obrana proti deadlocku
15
Principy operačních systémů – Ing. Nulíček Vladimír
Bankéřův algoritmus • Algoritmus, který předchází vzniku uváznutí (Dijkstra, 1965). • Bezpečný stav • Pokud nedošlo k uváznutí a existuje takové alokační pořadí, které zaručuje, že každý proces bude postupně uspokojen a skončí. • Bankéřův algoritmus kontroluje, zda přidělení prostředku vede na bezpečný stav. • Pokud ne, pak je žádost odmítnuta. • Pokud ano, prostředek je přidělen. • Nevýhoda: proces musí dopředu vědět, které prostředky bude během svého života potřebovat. Lekce 7: Obrana proti deadlocku
16
Principy operačních systémů – Ing. Nulíček Vladimír
Bankéřův algoritmus - příklad
Lekce 7: Obrana proti deadlocku
17
Principy operačních systémů – Ing. Nulíček Vladimír
Prevence uváznutí (prevention) • Spočívá v napadení jedné ze 4 Cofmannových podmínek: 1. Vzájemné vyloučení (Exclusive use) 2. Drž a čekej (Hold and wait) 3. Neodnímatelnost (No preemption) 4. Čekání do kruhu (Cyclic dependency)
Lekce 7: Obrana proti deadlocku
18
Principy operačních systémů – Ing. Nulíček Vladimír
Porušení vzájemného vyloučení • Sdílení prostředku s výlučným přístupem pomocí virtualizace. • Příklad: sdílení tiskárny – Každý proces pošle svůj požadavek do tiskové fronty. – Tiskový démon (server) postupně požadavky z tiskové fronty posílá na fyzickou tiskárnu. – Pouze tiskový démon přistupuje přímo k fyzické tiskárně. • Bohužel toto řešení nelze použít ve všech případech.
Lekce 7: Obrana proti deadlocku
19
Principy operačních systémů – Ing. Nulíček Vladimír
Porušení podmínky Hold and Wait • Každý proces musí alokovat všechny požadované prostředky v okamžiku spuštění (např. OS/360) – tzv. „úplné vyhrazování prostředků“ • Prostředky nebudou využívány optimálně. • Například: – Proces si alokuje disk, 5 minut z něj načítá vstupní data, potom 50 minut provádí výpočet a nakonec výsledek tiskne 5 minut na tiskárnu. – Disk i tiskárna jsou alokovány po celých 60 minut. • Pokud budeme znát požadavky na prostředky v okamžiku spuštění procesu můžeme použít bankéřův algoritmus. Lekce 7: Obrana proti deadlocku
20
Principy operačních systémů – Ing. Nulíček Vladimír
Porušení podmínky neodnímatelnosti • V praxi v podstatě nelze realizovat
Lekce 7: Obrana proti deadlocku
21
Principy operačních systémů – Ing. Nulíček Vladimír
Porušení podmínky čekání do kruhu • Proces může mít přidělen v daném okamžiku pouze jeden prostředek. • Proces může alokovat více prostředků, ale pouze v přesně definovaném pořadí. – Prostředky mají přiřazena čísla (např. tiskárna 1, plotter 2, páska 3). – Proces může požádat pouze o prostředek s vyšším číslem než je maximum z již alokovaných prostředků. • Problém: pro daný počet procesů a prostředků nemusí existovat vhodné očíslování prostředků. V praxi v podstatě nelze realizovat Lekce 7: Obrana proti deadlocku
22