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