Uviaznutia - Deadlocks Problém uviaznutia Model systému Charakteristika uviaznutia Metódy zvládania uviaznutí Prevencia uviaznutia Vyhnutie (vyvarovanie) sa uviaznutiu Detekcia uviaznutia Obnova po uviaznutí Kombinovaný prístup pre zvládnutie uviaznutia Operating System.
Download
Report
Transcript Uviaznutia - Deadlocks Problém uviaznutia Model systému Charakteristika uviaznutia Metódy zvládania uviaznutí Prevencia uviaznutia Vyhnutie (vyvarovanie) sa uviaznutiu Detekcia uviaznutia Obnova po uviaznutí Kombinovaný prístup pre zvládnutie uviaznutia Operating System.
Uviaznutia - Deadlocks
Problém uviaznutia
Model systému
Charakteristika uviaznutia
Metódy zvládania uviaznutí
Prevencia uviaznutia
Vyhnutie (vyvarovanie) sa uviaznutiu
Detekcia uviaznutia
Obnova po uviaznutí
Kombinovaný prístup pre zvládnutie uviaznutia
Operating System Concepts
1.1
©2009
Ciele
Opis uviaznutí, ktoré zabraňujú množine súbežne (paralelne)
prebiehajúcich procesov dokončiť ich úlohy
Prezentovať viaceré odlišné metódy pre prevenciu či vyhnutie
sa uviaznutiam v počítačovom systéme
Operating System Concepts
1.2
©2009
Problém uviaznutia
Existuje množina blokovaných procesov, každý proces vlastní (drží) nejaký
prostriedok (zdroj) a súčasne čakajú na to, aby im bol ešte (navyše) poskytnutý
ďalší zdroj ktorý je držaný iným procesom z tejto množiny
Príklad
System má dve diskové jednotky
Oba procesy P1 a P2 vlastnia po jednej diskovej jednotke a každý z nich
požaduje pridelenie (alokáciu) ďalšej diskovej jednotky
Príklad
semafory A a B, inicializované na 1, pokiaľ riadky vyjadrujú beh času, dôjde
k uviaznutiu
P0
Operating System Concepts
P1
wait (A);
wait(B)
wait (B);
wait(A)
1.3
©2009
Príklad:
Semafory A, B sú inicializované na 1,
Pokiaľ riadky vyjadrujú beh času, k uviaznutiu nedôjde:
P0
wait (A);
wait (B);
P1
wait(B)
wait(A)
Operating System Concepts
1.4
©2009
Riešenie uviaznutia – prejazd mostu
Premávka na moste je možná iba v jednom smere
Každý príjazd (vjazd) mostu je možné chápať ako zdroj (prostriedok)
Ak sa vyskytne uviaznutie, je možné ho vyriešiť tým že sa 1 auto vráti (preempt resources
and rollback)
- privlastnenie si zdroja vlastneného niekým iným a vrátenie súpera pred žiadosťou o
pridelenia zdroja
Ak sa objaví uviaznutie, môže sa vrátiť i viac vozov
Starvácia je možná, môže dochádzať ku stárnutiu konkrétneho auta, pokiaľ sa ono bude
opakovane vracať.
Poznámka – Väčšina OS nechráni pred uviaznutiami
Operating System Concepts
1.5
©2009
Model systému
Máme typy zdrojov R1, R2, . . ., Rm
CPU cykly (časové diely CPU), priestor pamäte,
V/V zariadenia
Každý zdrojový typ Ri má Wi jednotiek.
Každý proces používa zdroj nasledujúcim spôsobom:
Request (Get) – žiadosť o pridelenie zdroja
Use – použitie zdroja (počas konečnej doby)
Release – uvoľnenie zdroja
Operating System Concepts
1.6
©2009
Charakteristika uviaznutia
Uviaznutie nastane, keď začnú súčasne platiť tieto 4 podmienky:
Mutual exclusion (vzájomné vylúčenie): len 1 proces v
danom časovom okamihu môže používať zdieľaný
prostriedok (zdroj), tzn. aspoň 1 prostriedok musí byť v
nezdieľateľnom móde.
Hold and wait (drž a čakaj) (požiadavky sa uplatňujú
postupne): proces, ktorý vlastní aspoň 1 prostriedok, čaká
na získanie ďalšieho prostriedku, ktorý je doposiaľ vlastnený
iným procesom
No preemption (nepreemptívnosť) (predbiehanie sa
nepripúšťa): Prostriedok sa môže uvoľniť iba tým
procesom, ktorý ho v danom čase vlastní. Prostriedky
nemôžu byť uprednostňované, tzn. že prostriedok môže byť
uvoľnený iba dobrovoľne procesom, ktorý ho drží, až potom
čo proces skončil prácu s daným prostriedkom.
Operating System Concepts
1.7
©2009
Circular wait (Kruhové čakanie): existuje množina {P0, P1, …, P0}
čakajúcich procesov taká že P0 čaká na prostriedok ktorý drží
proces P1, proces P1 čaká na prostriedok ktorý drží proces
P2, …, Pn–1 čaká na prostriedok ktorý drží proces Pn a proces
Pn, čaká na prostriedok, ktorý drží P0 .
Operating System Concepts
1.8
©2009
Graf alokácie (prideľovania) prostriedkov
Máme množinu vrcholov V a množinu hrán E.
Množina vrcholov V má 2 podmnožiny:
P = {P1, P2, …, Pn}, je množina všetkých procesov v systéme
R = {R1, R2, …, Rm}, je množina všetkých typov prostriedkov v
systéme
hrana požiadavky – orientovaná hrana Pi Rj
hrana pridelenia – orientovaná hrana Rj Pi
Operating System Concepts
1.9
©2009
Graf prideľovania prostriedkov
Proces
Typ prostriedku so 4 jednotkami
Pi žiada prostriedok typu Rj
Pi
Rj
Pi drží 1 jednotku typu Rj
Pi
Rj
Operating System Concepts
1.10
©2009
Príklad Grafu prideľovania prostriedkov
Operating System Concepts
1.11
©2009
Graf prideľovania prostriedkov s uviaznutím
Operating System Concepts
1.12
©2009
Graf pridelenia zdrojov s cyklom ale bez uviaznutia
Operating System Concepts
1.13
©2009
Základné skutočnosti
Ak graf pridelenia zdrojov neobsahuje (žiadne) cykly
systém nie je v stave uviaznutia
Ak graf obsahuje cyklus
Ak každý prostriedok (typ) v systéme je iba jeden,
potom existencia cyklu hovorí, že uviaznutie určite
nastalo.
Ak nejaký typ prostriedku obsahuje viac jednotiek,
možnosť uviaznutia
Operating System Concepts
1.14
©2009
Metódy obsluhy uviaznutia
Môžeme použiť protokol prideľovania prostriedkov, aby sme
zabezpečili, že stav uviaznutia nikdy nenastane
Môžeme dovoliť systému, aby sa dostal do stavu uviaznutia a
potom zabezpečiť jeho zotavenie
Problém môžeme ignorovať a tváriť sa že neexistuje. Vo väčšine
operačných systémov je použité práve toto riešenie (napr. UNIX)
Operating System Concepts
1.15
©2009
Prevencia uviaznutia – zabezpečiť, aby aspoň 1 z
podmienok vzniku uviaznutia nenastala
Vzájomné vylúčenie (Mutual exclusion) – musí platiť pre
nezdielateľné prostriedky
Vlastniť a žiadať (Hold and Wait) – musíme zabezpečiť, že
kedykoľvek bude žiadať proces o prostriedok, nesmie vlastniť žiadny
iný prostriedok. Je to možné dosiahnuť 2 spôsobmi:
Proces požiada o všetky prostriedky naraz pred začatím svojho
vykonávania.
Proces môže požiadať o prostriedok, len ak nevlastní žiadny iný.
- nízke využitie prostriedkov
- starvácia
Operating System Concepts
1.16
©2009
Prevencia uviaznutia
Zákaz preempcie –
Ak proces, ktorý už vlastní nejaké prostriedky požaduje ešte
ďalšie, ktoré mu nemôžu byť pridelené okamžite, potom tie, ktoré
vlastní, sa mu odoberú
Odobraté prostriedky sú pridané k prostriedkom, na ktoré procesy
čakajú
Proces sa spustí znova, až keď získa naspäť „staré“ a „nové“
prostriedky, ktoré požadoval.
Kruhové čakanie – platnosť podmienky zamedzímetak, že
usporiadame všetky typy prostriedkov a prinútime procesy požadovať
prostriedky na základe vzostupného poradia číslovania.
Operating System Concepts
1.17
©2009
Vyvarovanie sa uviaznutiu
Requires that the system has some additional a priori information
available
Najjednoduchší a najužitočnejší model vyžaduje, aby každý
proces deklaroval maximálny počet prostriedkov každého
typu ktoré bude potrebovať
Algoritmus vyvarovania sa uviaznutia bude dynamicky
skúmať stav prideľovania prostriedkov aby zabezpečil, že
nikdy nenastane kruhové čakanie.
Stav prideľovania prostriedkov je daný počtom pridelených
prostriedkov, počtom voľných prostriedkov a maximálnym
počtom požadovaných prostriedkov.
Operating System Concepts
1.18
©2009
Bezpečný stav
Stav pridelenia prostriedkov je bezpečný, ak systém môže prideliť
každému procesu všetky ním požadované prostriedky a pritom sa vyhne
stavu uviaznutia.
System sa nachádza v bezpečnom stave ak existujúca sekvencia
procesov <P1, P2, …, Pn> je bezpečná sekvencia pre momentálne
pridelenie, ak pre každý proces Pi požiadavky, ktoré Pi má môžu byť
uspokojené momentálne prístupnými prostriedkami + prostriedkami, ktoré
vlastnia všetky procesy Pj, pre j < i
To znamená:
Ak prostriedky, ktoré Pi potrebuje nie sú momentálne prístupné,
potom Pi musí čakať, pokiaľ ich procesy Pj uvoľnia
Keď Pj skončí, Pi môže získať požadované prostriedky, vykonávať sa,
vrátiť pridelené prostriedky, a môže byť ukončený.
Keď Pi je ukončené, Pi +1 môže získať prostriedky ktoré potrebuje, a
tak ďalej
Operating System Concepts
1.19
©2009
Základné skutočnosti
Ak je systém v bezpečnom stave nemôže byť uviaznutie
Ak je systém v nebezpečnom stave je tu možnosť uviaznutia
Vyhnutie sa uviaznutiu zabezpečiť, že systém nikdy nevstúpi
do nebezpečného stavu.
Operating System Concepts
1.20
©2009
Bezpečný, nebezpečný stav a stav uviaznutia
Operating System Concepts
1.21
©2009
Graf prideľovania prostriedkov
Operating System Concepts
1.22
©2009
Nebezpečný stav v Grafe prideľovania prostriedkov
Operating System Concepts
1.23
©2009
Algoritmus grafu prideľovania prostriedkov
Predpokladajme, že proces Pi požaduje prostriedky Rj
Ak systém vlastní väčší počat prostriedkov daného typu,
potom cyklus je nutnou ale nie postačujúcou podmienkou pre
vznik uviaznutia.
Všeobecne, ak v grafe prideľovania prostriedkov nie je
slučka, uviaznutie nenastalo. V opačnom prípade uviaznutie
môže ale nemusí nastať.
Operating System Concepts
1.24
©2009
Algoritmus bankára
Každý nový proces pri vstupe do systému musí deklarovať
svoje požiadavky pre každý typ prostriedkov
Tento počet nesmie prevýšiť celkový počet prostriedkov
systému
Systém zistí, či uspokojenie požiadaviek procesu ho
nedovedie do nebezpečného stavu
Ak tomu tak nie je, proces dostane čo potrebuje, inak musí
čakať, pokiaľ iné procesy neuvoľnia im pridelené
prostriedky
Operating System Concepts
1.25
©2009
Údajová štruktúra pre algoritmus Bankára
Nech n = počet procesov, a m = počet typov prostriedkov v systéme.
prístupné: Vektor s dlžkou m, ktorý obsahuje počty prístupných
prostriedkov z každého typu. Ak prístupné [j] = k, to znamená, že z
prostriedkov typu Rj je k dispozícii k jednotiek.
Max: matica n x m definuje maximálne požiadavky každého procesu. Ak
Max [i,j] = k, potom proces Pi môže požadovať maximálne k jednotiek z
prostriedkov typu Rj
pridelené: matica n x m definuje počet prostriedkov každého typu
pridelených momentálne procesu Pj. Ak pridelené[i,j] = k, potom proces Pi
má momentálne pridelených k jednotiek prostriedku typu Rj
zostáva potreba: matica n x m ktorá označuje prostriedky, ktoré musia byť
ešte pridelené procesu. Ak zostáva[i,j] = k, potom Pi potrebuje ešte k
prostriedkov typu Rj aby mohol svoju činnosť dokončiť.
zostáva potreba [i,j] = Max[i,j] – pridelené [i,j]
Operating System Concepts
1.26
©2009
Bezpečnostný algoritmus (na zistenie či sa systém
nachádza v bezpečnom stave)
1. Nech pracovné a dokončené sú vektory s dlžkou m respektíve n.
Počiatočné hodnoty (inicializácia):
pracovné = prístupné
dokončené [i] = false pre i = 0, 1, …, n- 1
2. Nájdi i také že:
(a) dokončené [i] = false
(b) zostáva(potreba)i pracovné
Ak také i neexistuje, choď na krok 4
3. pracovné = pracovné + pridelenéi
dokončené[i] = true
choď na krok 2
4. Ak dokončené [i] == true pre všetky i, potom systém je v
bezpečnom stave
Operating System Concepts
1.27
©2009
Algoritmus pre vyžiadanie prostriedku
Požiadavka = vektor požiadaviek pre proces Pi. Ak požiadavkai [j] = k ,
potom proces Pi požaduje k jednotiek prostriedku typu Rj
1. Ak požiadavkai zostáva (potreba)i choď na krok 2. Inak, vzniká
chybový stav, pretože proces prekročil svoje maximálne požiadavky.
2. Ak požiadavklai prístupné, choď na krok 3. Inak, Pi musí čakať
pretože prostriedky nie sú prístupné.
3. Predstierame, že systém pridelil požadované prostriedky procesu Pi tak,
že modifikujeme stav nasledujúcim spôsobom:
prístupné = prístupné – požiadavka;
pridelenéi = pridelenéi + požiadavkai;
zostávai = zostávai – požiadavkai;
Ak je výsledný stav bezpečný prostriedky sú pridelené Pi
Ak je nebezpečný Pi musí čakať a obnoví sa pôvodný stav
Operating System Concepts
1.28
©2009
Príklad algoritmu bankára
5 procesov P0
až
P4;
3 prostriedky typov A,B,C:
A (10 jednotiek), B (5 jednotiek), a C (7 ijednotiek)
Stav systému v čase T0 je nasledovný:
max
pridelené
zostáva (potreba)
ABC
ABC
ABC
ABC
P0
753
010
743
332
P1
322
200
122
P2
902
302
600
P3
222
211
011
P4
433
002
431
Operating System Concepts
1.29
prístupné
©2009
pokračovanie
Obsah matice zostáva (potreby) je definovaný ako max – pridelené.
systém je v bezpečnom stave, pretože postupnosť < P1, P3, P4, P2, P0>
vyhovuje kritériám bezpečnosti
Operating System Concepts
1.30
©2009
príklad: teraz P1 požaduje (1,0,2)
Aby sme rozhodli, či môžeme požiadavke vyhovieť najprv skontrolujeme či
požiadavka prístupné (t.j., (1,0,2) (3,3,2) true. Po vyhovení
požiadavke systém prichádza do nasledujúceho stavu:
pridelené
potreby
prístupné
ABC
ABC
ABC
P0
010
743
230
P1
302
020
P2
302
600
P3
211
011
P4
002
431
Vykonávanie bezpečnostného algoritmu preukázalo, že < P1, P3, P4, P0, P2>
uspokojuje bezpečnostné požiadavky.
Môžu byť splnené požiadavky (3,3,0) pre proces P4 ?
Môžu byť splnené požiadavky (0,2,0) pre proces P0 ?
Operating System Concepts
1.31
©2009
Detekcia uviaznutia
Uviaznutie v systéme môže nastať
Detekčný algoritmus, ktorý preskúma stav systému
Algoritmus pre zotavenie sa z uviaznutia
Operating System Concepts
1.32
©2009
Jedna jednotka z každého typu prostriedkov
Čakací graf
Uzly reprezentujú procesy
Pi Pj ak proces Pi čaká na proces Pj
aby uvoľnil prostriedok, ktorý Pi potrebuje.
Periodické vyvolávanie algoritmu, ktorý hľadá cyklus v grafe.
Ak v grafe je cyklus, uviaznutie existuje.
Algoritmus pre odhalenie cyklu v grafe vyžaduje rádovo n2
operácií, kde n je počet uzlov v grafe
Operating System Concepts
1.33
©2009
Graf prideľovania prostriedkov a čakací graf
Graf prideľovania prostriedkov
Operating System Concepts
1.34
Zodpovedajúci čakací graf
©2009
Niekoľko jednotiek z každého typu prostriedkov
Prístupné: Vektor s dĺžkou m, označuje počet prístupných
prostriedkov z každého typu.
Pridelené: matica n x m definuje počet prostriedkov z každého typu,
ktoré sú v danom čase pridelené každému procesu.
Požiadavka (zostáva): Matica n x m definuje počet prostriedkov z
každého typu, ktoré ešte požaduje každý proces. Ak Request [ij] = k,
potom proces Pi žiada k krát viac jednotiek typu prostriedku Rj.
Operating System Concepts
1.35
©2009
Algoritmus detekcie
1. Nech pracovné a pridelené sú vektory s dĺžkou m respektíve n.
2.
Inicializujeme:
(a) pracovné = prístupné
(b)
Pre i = 1,2, …, n platí:
ak pridelenéi 0, potom dokončené[i] = false;
ináč dokončené[i] = true
2. Nájdeme index i pre ktorý platí:
(a) dokončené[i] == false
(b) požadovanéi pracovné
Ak taký index i neexistuje, choď na krok 4
Operating System Concepts
1.36
©2009
Algoritmus detekcie
3. pracovné = pracovné + pridelenéi
dokončené[i] = true
choď na krok 2
4. Ak dokončené[i] == false, pre niektoré i, 1 i n, potom systém je v stave
uviaznutia. Navyše, ak dokončené[i] == false, potom práve proces Pi je
uviaznutý.
Algoritmus vyžaduje rádovo (m x n2) operácií pre odhalenie stavu
uviaznutia
Operating System Concepts
1.37
©2009
Príklad algoritmu detekcie
5 procesov P0 až P4; 3 typy prostriedkov
A (7 jednotiek), B (2 jednotky), a C (6 jednotiek)
V čase T0 je stav systému nasledovný:
pridelené
požadované
ABC
ABC
ABC
P0
010
000
000
P1
200
202
P2
303
000
P3
211
100
P4
002
002
prístupné
Sekvencia procesov <P0, P2, P3, P1, P4> končí tak, že dokončené[i] = true
pre všetky i
Operating System Concepts
1.38
©2009
pokračovanie príkladu
Proces P2 žiada dodatočne o 1 jednotku typu C. Matica požiadavky sa
zmení nasledovne:
požiadavky
ABC
P0
P1
P2
P3
000
201
001
100
P4
002
Aký je stav systému?
Aj keď môžeme získať zdroje držané procesom P0, počet dostupných
zdrojov je nepostačujúci pre splnenie požiadaviek ostatných procesov.
Uviaznutie preto existuje, pozostáva z procesov P1, P2, P3, a P4
Operating System Concepts
1.39
©2009
Použitie detekčného algoritmu
Kedy a ako často vyvolávať použitie detekčného algoritmu:
Ako často vzniká uviaznutie?
Koľko procesov bude ovplyvnených uviaznutím ak nastane?
Ak uviaznutie nastáva často, potom detekčný algoritmus by mal byť volaný
často. Uviaznutia nastávajú len vtedy, ak niektorý proces vyšle požiadavku,
ktorej nemôže byť okamžite vyhovené. Volanie detekčného algoritmu pri
každej požiadavke spôsobí značné náklady v časoch výpočtu.
Operating System Concepts
1.40
©2009
Zotavenie sa z uviaznutia: ukončenie procesu
Predčasne ukončiť (Abort) všetky uviaznuté procesy
Ukončovať procesy po jednom, kým sa nevylúči cyklus
V akom poradí môžeme zvoliť ukončenie?
Priorita procesu
Dĺžka predchádzajúceho výpočtu procesu, koľko času ešte
potrebuje proces na svoje dokončenie
Prostriedky (zdroje) ktoré proces vlastní
Prostriedky ktoré proces ešte potrebuje na svoje dokončenie
Koľko procesov bude potrebné ukončiť
Je proces interaktívny alebo dávkový
Operating System Concepts
1.41
©2009
Zotavenie sa z uviaznutia: odňatie prostriedku
Výber obete – minimalizovať cenu
Návrat späť (Rollback) – návrat do nejakého bezpečného stavu,
reštartovať proces pre tento stav
Starvacia – ten istý proces má stále odobratý prostriedok, (zahrň
počet návratov do faktora „ceny“)
- Kombinovaný prístup
Operating System Concepts
1.42
©2009