Operativsystem - Baklås

Operativsystem
- Baklås
Mats Björkman
2016-02-04
Lärandemål
n 
n 
n 
Vad är baklås?
Villkor för baklås
Strategier för att hantera baklås
Operativsystem, © Mats Björkman, MDH
2
Vad är baklås?
Exempel:
A
S1
B
S2
Teckenförklaring:
Process
Resurs
A
S
A håller S
A begär S
“Pilen pekar mot den
kontrollerande noden”
A
Operativsystem, © Mats Björkman, MDH
S
3
Formell definition av baklås
A set of processes is deadlocked if each
process in the set is waiting for an event
that only another process in the set can
cause
Operativsystem, © Mats Björkman, MDH
4
Resurser
n 
n 
Hårdvaruenhet, delat data, semafor, …
Två typer:
n 
n 
n 
n 
Preemptable
Non-preemptable
Baklås kan bara uppstå med resurser som är
non-preemptable
Resursen används så här:
n 
n 
n 
Begär resursen
Utnyttja resursen
Släpp resursen
Operativsystem, © Mats Björkman, MDH
5
Villkor för baklås
1. 
Ömsesidigt uteslutande
n 
2. 
Hold and wait (håll-och-vänta)
n 
3. 
En process kan hålla en resurs (ha den allokerad) och begära
(vänta på) en annan
Non-preemption
n 
4. 
En resurs är antingen allokerad av 1 process eller tillgänglig
Resurser kan inte tas ifrån en process ofrivilligt
Cirkulär väntan
n 
Varje process i en cirkel väntar på en annan i cirkeln
Alla fyra villkoren måste vara uppfyllda för att baklås skall
kunna uppstå!
Operativsystem, © Mats Björkman, MDH
6
Problemet med de ätande
filosoferna
5 filosofer
1 runt bord
5 gafflar
En tallrik hal spaghetti
En filosof kan antingen äta
eller tänka
Procedur att äta:
n 
n 
n 
n 
n 
n 
1. 
2. 
3. 
4. 
Ta upp vänster gaffel
Ta upp höger gaffel
Ät
Lägg ner båda gafflarna
Operativsystem, © Mats Björkman, MDH
Hur kan problemet
hanteras?
7
Strategier för baklåshantering
1. 
2. 
3. 
4. 
Strutsalgoritmen
Deadlock detection (upptäck baklås
och åtgärda)
Deadlock avoidance (undvik genom
försiktighet vid allokering)
Deadlock prevention (undvik genom
design)
Operativsystem, © Mats Björkman, MDH
8
Strutsalgoritmen
Enklaste sättet att hantera problemet:
Stick huvudet i sanden och låtsas
att problemet inte existerar
Hur kan man komma på en sådan strategi?
n 
n 
Andra fel uppstår mycket oftare
Slipper begränsningar i OS:et
The ostrich algorithm is both Windows and UNIX approved!! J
Operativsystem, © Mats Björkman, MDH
9
Deadlock Detection
Inga begränsningar på resursallokering
Använd en algoritm för att upptäcka baklås
n 
n 
Två fall:
1. 
En resurs av varje typ
2. 
Flera resurser av varje typ
Lös upp baklås som hittas
När skall en sådan algoritm köras?
n 
n 
n 
n 
n 
När en resurs begärs
Periodiskt, varje N tidsenheter
När systemet är idle
Operativsystem, © Mats Björkman, MDH
10
Deadlock Detection
- En resurs av varje typ
n 
n 
n 
Gör en resursgraf
Finn eventuella cykler
Bryt upp funna cykler
Process
Resurs
A
S
A håller S
A
S
A begär S
“Pilen pekar mot den
kontrollerande noden”
Operativsystem, © Mats Björkman, MDH
Övning:
PA håller R och begär S
PB begär T
PC håller S
PD håller U och begär S och T
PE håller T och begär V
PF håller W och begär S
PG håller V och begär U
Är systemet i baklås?
11
Deadlock Detection
- En resurs av varje typ
R
PA
PC
S
PD
T
PE
PF
U
BAKLÅS!!!
V
W
Operativsystem, © Mats Björkman, MDH
PB
PG
12
Deadlock Detection
- En resurs av varje typ
Algoritm för att hitta cykler:
1. 
2. 
3. 
4. 
5. 
6. 
För varje nod N i grafen, utför följande steg med N som startnod:
Initiera L som den tomma mängden och avmarkera alla bågar, sätt N
som nuvarande nod.
Om nuvarande nod inte är i mängden, addera noden till mängden. Om
nuvarande nod är i mängden, så har vi upptäckt ett baklås, vi noterar
detta (typ spara L) och algoritmen kan därefter termineras
Om det finns omarkerade bågar utgående från nuvarande nod, gå till 5,
annars gå till 6.
Välj en omarkerad båge och markera den. Följ den sedan. Sätt den nya
noden till nuvarande nod. Gå till 3.
Om vi står vid startnoden, gå till 1 och använd en ny startnod. Om inte:
Vi har hamnat i en återvändsgränd. Ta bort nuvarande nod ur L, backa
till föregående nod, gör denna till nuvarande nod och gå till 4.
Operativsystem, © Mats Björkman, MDH
13
Deadlock Detection
- En resurs av varje typ
R
PA
PC
S
PD
PF
U
W
N=PB L={} =>L={PB} =>L={PB, T}
PB
PG
T
PE
V
=>L={PB, T, PE}
=>L={PB, T, PE, V}
=>L={PB, T, PE, V, PG}
=>L={PB, T, PE, V, PG, U}
=>L={PB, T, PE, V, PG, U, PD}
=>L={PB, T, PE, V, PG, U, PD, S}
=>L={PB, T, PE, V, PG, U, PD, S, PC}
=>L={PB, T, PE, V, PG, U, PD, S}
=>L={PB, T, PE, V, PG, U, PD}
=>L={PB, T, PE, V, PG, U, PD, T}
Baklås!!
Operativsystem, © Mats Björkman, MDH
14
Deadlock Detection
- Flera resurser av varje typ
n 
Lösning med matriser
E = [e1
e2
...
en ]
A = [a1
a2
...
an ]
⎡ c11
⎢ c
C = ⎢ 21
⎢ 
⎢
⎣cm1
c12
c22
…


cm1


c1n ⎤
c2 n ⎥
⎥
 ⎥
⎥
cmn ⎦
⎡ r11
⎢ r
R = ⎢ 21
⎢ 
⎢
⎣rm1
r12
r22

rm1
…



r1n ⎤
r2 n ⎥
⎥
 ⎥
⎥
rmn ⎦
Vi kan se att:
Vektor med existerande resurser av typ ex
Vektor med tillgängliga (available)
resurser av typ ax
Matris med antalet resurser av typ n som
process m håller (claimed)
Matris med antalet resurser av typ n som
process m begär (requested)
m
∑c
ij
+ aj = ej
i =1
Operativsystem, © Mats Björkman, MDH
15
Deadlock Detection
- Flera resurser av varje typ
För två vektorer, X och Y
X ≤ Y omm xi ≤ yi för 0 ≤ i ≤ n
Exempel:
[1
[1
2 3 4] ≤ [2 3 4 4]
2 3 4] ≤ [2 3 2 4]
Operativsystem, © Mats Björkman, MDH
16
Deadlock Detection
- Flera resurser av varje typ
n 
Följande algoritm körs regelbundet:
Finn en omarkerad process Pi där Ri ≤ A.
2. 
Om en sådan process finns, addera Ci till A.
Markera processen och gå till steg 1.
3. 
När ingen omarkerad process uppfyller villkoret i 1,
terminera.
Alla omarkerade processer är i baklås
1. 
Hur fungerar detta?
Operativsystem, © Mats Björkman, MDH
17
Deadlock Detection
- Flera resurser av varje typ
n 
Övning:
E = [4 2
⎡0
C = ⎢
⎢2
⎢
⎣0
3 1]
0
1
0
0
1
2
A = [2
1
0
0]
0⎤
⎡2
⎢1
1⎥
R
=
⎥
⎢
⎢
0⎥
⎦
⎣2
0
0
0
1
1
0
1⎤
0⎥
⎥
0⎥
⎦
3
2
1
Finns det baklås i systemet?
A' = [2 2 2 0]
A' ' = [4 2 2 1]
A' ' ' = [4 2 3 1]
Operativsystem, © Mats Björkman, MDH
INGET BAKLÅS!!!
18
Deadlock Detection
n 
Hur återhämta sig från baklås?
Preemption
n  Process rollback
n  Terminera en av processerna som är i
baklås
n 
Operativsystem, © Mats Björkman, MDH
19
Deadlock Avoidance
n 
n 
n 
Undviker baklås genom försiktighet vid
allokering
Arbetar med säkra och osäkra tillstånd
En allokering tillåts endast om systemet
hamnar i ett säkert tillstånd efter
allokeringen
Operativsystem, © Mats Björkman, MDH
20
Deadlock Avoidance
- Säkra och osäkra tillstånd (fig. 6-8)
B
Both
Finished
I8
Unreachable
Safe
Pri
nte
r
I7
Plo
tter
Safe
I6
Unsafe
Safe
I5
r
p
s
q
I1
Safe
I2
Safe
I3
I4
A
Printer
Plotter
Operativsystem, © Mats Björkman, MDH
21
Deadlock Avoidance
- Säkra och osäkra tillstånd
Algoritmer för att beräkna tillståndet
Baseras på E,A,C och R-matriserna.
Exempel:
Totalt 10 resurser, med följande allokering:
Proc
Har
Max
A
3
9
3
B
2
4
1
C
2
7
2
SÄKERT!!!
Ledigt 3 5 7 10
Är systemet i ett säkert eller osäkert tillstånd?
Operativsystem, © Mats Björkman, MDH
22
Deadlock Avoidance
-Banker’s Algorithm
n 
n 
n 
n 
n 
Av Edsger Dijkstra
Ursprungstanken från lån i en bank
Avgör om en allokering leder till ett säkert
eller osäkert tillstånd
Körs varje gång en resurs begärs
Två fall:
n 
n 
En typ av resurs
Flera typer av resurser
Operativsystem, © Mats Björkman, MDH
23
Deadlock Avoidance
-Banker’s Algorithm
Exempel med en typ av resurs:
Initialt tillstånd
Proc
A
B
C
Har
3
2
2
Max
9
4
7
Ledigt: 3 SÄKERT!
B begär 1
Proc
A
B
C
Har
3
3
2
Max
9
4
7
Ledigt: 2 SÄKERT!
Operativsystem, © Mats Björkman, MDH
A begär 1
Proc
A
B
C
Har
4
2
2
Max
9
4
7
Ledigt: 2
OSÄKERT!
C begär 1
Proc
A
B
C
Har
3
3
3
Max
9
4
7
Ledigt: 1 SÄKERT!
24
Deadlock Prevention
n 
n 
Svårt att åstadkomma
Angrip ett av villkoren för baklås
n 
n 
n 
n 
Angrip
Angrip
Angrip
Angrip
Ömsesidigt uteslutande
Hold and Wait
Non-preemption
Cirkulär väntan
Operativsystem, © Mats Björkman, MDH
25
Hur skulle du göra?
n 
n 
I ett vanligt OS?
I ett realtids-OS?
n 
n 
n 
n 
Angrip
Angrip
Angrip
Angrip
Ömsesidigt uteslutande
Hold and Wait
Non-preemption
Cirkulär väntan
Operativsystem, © Mats Björkman, MDH
26
Filosofernas återkomst
Summa summarum: OS:et hanterar sällan baklås
n 
n 
Alltså: Du som programmerare behöver hantera dem!
En enkel regel:
n 
n 
n 
5-1
1-5
Ta alltid semaforerna i en
1
viss ordning!
1-2
Låt en filosof ta höger
2
gaffel först!
2-3
Operativsystem, © Mats Björkman, MDH
5
4-5
4
3
3-4
27
Summering
n 
Vad är baklås?
n 
n 
n 
n 
n 
4 villkor för att baklås skall riskeras:
Ömsesidigt uteslutande
Hold and wait
Non-preemption
Cirkulär väntan
Operativsystem, © Mats Björkman, MDH
28
Summering
n 
Strategier för att hantera baklås
n 
n 
n 
n 
n 
4 strategier:
Strutsalgoritmen
Deadlock detections and recovery
Deadlock avoidance
Deadlock prevention
Operativsystem, © Mats Björkman, MDH
29
Lärandemål
n 
n 
n 
Vad är baklås?
Villkor för baklås
Strategier för att hantera baklås
Operativsystem, © Mats Björkman, MDH
30