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
© Copyright 2024