Ladda ner presentationen
Presentation laddar. Vänta.
1
Operativsystem - Baklås Mats Björkman 2016-02-04
2
Operativsystem, © Mats Björkman, MDH 2 Lärandemål Vad är baklås? Villkor för baklås Strategier för att hantera baklås
3
Operativsystem, © Mats Björkman, MDH 3 Vad är baklås? Exempel: A B S1 S2 Process Resurs Teckenförklaring: A S A håller S A S A begär S “Pilen pekar mot den kontrollerande noden”
4
Operativsystem, © Mats Björkman, MDH 4 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
5
Operativsystem, © Mats Björkman, MDH 5 Resurser Hårdvaruenhet, delat data, semafor, … Två typer: Preemptable Non-preemptable Baklås kan bara uppstå med resurser som är non-preemptable Resursen används så här: Begär resursen Utnyttja resursen Släpp resursen
6
Operativsystem, © Mats Björkman, MDH 6 Villkor för baklås 1. Ömsesidigt uteslutande En resurs är antingen allokerad av 1 process eller tillgänglig 2. Hold and wait (håll-och-vänta) En process kan hålla en resurs (ha den allokerad) och begära (vänta på) en annan 3. Non-preemption Resurser kan inte tas ifrån en process ofrivilligt 4. Cirkulär väntan 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å!
7
Operativsystem, © Mats Björkman, MDH 7 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: 1. Ta upp vänster gaffel 2. Ta upp höger gaffel 3. Ät 4. Lägg ner båda gafflarna Hur kan problemet hanteras?
8
Operativsystem, © Mats Björkman, MDH 8 Strategier för baklåshantering 1. Strutsalgoritmen 2. Deadlock detection (upptäck baklås och åtgärda) 3. Deadlock avoidance (undvik genom försiktighet vid allokering) 4. Deadlock prevention (undvik genom design)
9
Operativsystem, © Mats Björkman, MDH 9 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? Andra fel uppstår mycket oftare Slipper begränsningar i OS:et The ostrich algorithm is both Windows and UNIX approved!!
10
Operativsystem, © Mats Björkman, MDH 10 Deadlock Detection Inga begränsningar på resursallokering Använd en algoritm för att upptäcka baklås 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är en resurs begärs Periodiskt, varje N tidsenheter När systemet är idle
11
Operativsystem, © Mats Björkman, MDH 11 Deadlock Detection - En resurs av varje typ Gör en resursgraf Finn eventuella cykler Bryt upp funna cykler Övning: P A håller R och begär S P B begär T P C håller S P D håller U och begär S och T P E håller T och begär V P F håller W och begär S P G håller V och begär U Är systemet i baklås? Process Resurs A S A håller S A S A begär S “Pilen pekar mot den kontrollerande noden”
12
Operativsystem, © Mats Björkman, MDH 12 BAKLÅS!!! Deadlock Detection - En resurs av varje typ
13
Operativsystem, © Mats Björkman, MDH 13 Algoritm för att hitta cykler: 1. För varje nod N i grafen, utför följande steg med N som startnod: 2. Initiera L som den tomma mängden och avmarkera alla bågar, sätt N som nuvarande nod. 3. 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 4. Om det finns omarkerade bågar utgående från nuvarande nod, gå till 5, annars gå till 6. 5. Välj en omarkerad båge och markera den. Följ den sedan. Sätt den nya noden till nuvarande nod. Gå till 3. 6. 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. Deadlock Detection - En resurs av varje typ
14
Operativsystem, © Mats Björkman, MDH 14 N=P B L={} =>L={P B }=>L={P B, T} =>L={P B, T, P E } =>L={P B, T, P E, V} =>L={P B, T, P E, V, P G } =>L={P B, T, P E, V, P G, U} =>L={P B, T, P E, V, P G, U, P D, T} Baklås!! =>L={P B, T, P E, V, P G, U, P D } Deadlock Detection - En resurs av varje typ =>L={P B, T, P E, V, P G, U, P D, S} =>L={P B, T, P E, V, P G, U, P D, S, P C } =>L={P B, T, P E, V, P G, U, P D, S} =>L={P B, T, P E, V, P G, U, P D }
15
Operativsystem, © Mats Björkman, MDH 15 Lösning med matriser Vektor med existerande resurser av typ e x Vektor med tillgängliga (available) resurser av typ a x 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) Vi kan se att: Deadlock Detection - Flera resurser av varje typ
16
Operativsystem, © Mats Björkman, MDH 16 För två vektorer, X och Y omm för Exempel: Deadlock Detection - Flera resurser av varje typ
17
Operativsystem, © Mats Björkman, MDH 17 Följande algoritm körs regelbundet: 1. Finn en omarkerad process P i där R i A. 2. Om en sådan process finns, addera C i 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 Hur fungerar detta? Deadlock Detection - Flera resurser av varje typ
18
Operativsystem, © Mats Björkman, MDH 18 Övning: Finns det baklås i systemet? 1 2 3 INGET BAKLÅS!!! Deadlock Detection - Flera resurser av varje typ
19
Operativsystem, © Mats Björkman, MDH 19 Deadlock Detection Hur återhämta sig från baklås? Preemption Process rollback Terminera en av processerna som är i baklås
20
Operativsystem, © Mats Björkman, MDH 20 Deadlock Avoidance 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
21
Operativsystem, © Mats Björkman, MDH 21 Deadlock Avoidance - Säkra och osäkra tillstånd (fig. 6-8)
22
Operativsystem, © Mats Björkman, MDH 22 Algoritmer för att beräkna tillståndet Baseras på E,A,C och R-matriserna. Exempel: Totalt 10 resurser, med följande allokering: ProcHarMax A39 B24 C27 Är systemet i ett säkert eller osäkert tillstånd? Ledigt 3 1 5 2 7 3 10 SÄKERT!!! Deadlock Avoidance - Säkra och osäkra tillstånd
23
Operativsystem, © Mats Björkman, MDH 23 Deadlock Avoidance -Banker’s Algorithm 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: En typ av resurs Flera typer av resurser
24
Operativsystem, © Mats Björkman, MDH 24 Exempel med en typ av resurs: 72C 42B 93A MaxHarProc Ledigt: 3 Initialt tillstånd SÄKERT! A begär 1 72C 42B 94A MaxHarProc Ledigt: 2 OSÄKERT! TILLÅTS EJ! B begär 1 72C 43B 93A MaxHarProc Ledigt: 2 SÄKERT! TILLÅTS! C begär 1 73C 43B 93A MaxHarProc Ledigt: 1 SÄKERT! TILLÅTS! Deadlock Avoidance -Banker’s Algorithm
25
Operativsystem, © Mats Björkman, MDH 25 Deadlock Prevention Svårt att åstadkomma Angrip ett av villkoren för baklås Angrip Ömsesidigt uteslutande Angrip Hold and Wait Angrip Non-preemption Angrip Cirkulär väntan
26
Operativsystem, © Mats Björkman, MDH 26 Hur skulle du göra? I ett vanligt OS? I ett realtids-OS? Angrip Ömsesidigt uteslutande Angrip Hold and Wait Angrip Non-preemption Angrip Cirkulär väntan
27
Operativsystem, © Mats Björkman, MDH 27 Filosofernas återkomst Summa summarum: OS:et hanterar sällan baklås Alltså: Du som programmerare behöver hantera dem! En enkel regel: Ta alltid semaforerna i en viss ordning! Låt en filosof ta höger gaffel först! 1 2 3 4 5 1-2 2-33-4 4-5 5-1 1-5
28
Operativsystem, © Mats Björkman, MDH 28 Summering Vad är baklås? 4 villkor för att baklås skall riskeras: Ömsesidigt uteslutande Hold and wait Non-preemption Cirkulär väntan
29
Operativsystem, © Mats Björkman, MDH 29 Summering Strategier för att hantera baklås 4 strategier: Strutsalgoritmen Deadlock detections and recovery Deadlock avoidance Deadlock prevention
30
Operativsystem, © Mats Björkman, MDH 30 Lärandemål Vad är baklås? Villkor för baklås Strategier för att hantera baklås
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.