Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 7: Deadlocks
1.2 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Deadlock-problemet Ett system består av en begränsad mängd resurser som ska fördelas mellan ett antal processer Deadlock - En mängd blockerade processer som var och en håller en resurs och väntar på att få en resurs som hålls av en annan process i mängden Exempel Systemet har 2 diskar P 1 och P 2 håller var sin disk och behöver den andra disken bägge två Exempel semaforerna A och B, initialiserade till 1 P 0 P 1 wait (A);wait(B) wait (B);wait(A)
1.3 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Systemmodell Resurstyper: R 1, R 2,..., R m CPU-cykler, minne, I/O-enheter Varje resurstyp R i har W i instanser Varje process använder en resurs på följande sätt: request processen får vänta om resursen är upptagen use Release Oftast programmerarens ansvar, speciellt viktigt vid utveckling av multitrådade program
1.4 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Villkor för deadlock Mutual exclusion: en resurs kan bara användas av en process i taget Hold and wait: en process håller minst en resurs och väntar på resurser som hålls av andra processer No preemption: en resurs kan bara släppas frivilligt av den process som håller den Circular wait: det finns en mängd {P 0, P 1, …, P 0 } väntande processer så att P 0 väntar på en resurs som hålls av P 1, P 1 väntar på en resurs som hålls av P 2, …, P n–1 is väntar på en resurs som hålls av P n, och P 0 väntar på en resurs som hålls av P 0. Deadlock kan uppstå om fyra villkor är uppfyllda samtidigt
1.5 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Resursallokeringsgraf V är uppdelad I två typer: P = {P 1, P 2, …, P n }, mängden av alla processer i systemet R = {R 1, R 2, …, R m }, mängden av alla resurstyper I systemet Begäran-pil – P i R j Tilldelnings-pil – R j P i Deadlocks kan beskrivas mer precist med en riktad graf - består av en mängd noder V och en mängd pilar E.
1.6 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Resursallokeringsgraf (forts) Process Resurstyp med 4 instanser P i begär en instans av R j P i håller en instans av R j PiPi PiPi RjRj RjRj
1.7 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Exempel resursallokeringsgraf
1.8 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Resursallokeringsgraf med en deadlock
1.9 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Graf med cykel men utan deadlock
1.10 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Slutsats Om grafen inte innehåller någon cykel ingen deadlock Om grafen innehåller en cykel Om det bara finns en instans av varje resurstyp - deadlock Om det finns flera instanser av varje resurstyp - kanske eller kanske inte deadlock
1.11 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Metoder för att hantera deadlocks Använda ett protokoll som förebygger eller undviker deadlock Använda ett protokoll som upptäcker och återhämtar systemet från en deadlock Ignorera problemet och låtsas som om deadlock inte kan inträffa; används av de flesta OS, inklusive UNIX och Windows
1.12 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Förebygga deadlock Mutual Exclusion – måste vara uppfyllt för resurser som inte är delbara (t ex skrivare) Hold and Wait Antingen får en process alla resurser från början eller så får den bara begära resurser när den inga har Lågt resursutnyttjande; starvation möjligt Se till att något av villkoren inte kan uppfyllas:
1.13 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Förebygga deadlock (forts) No Preemption – Kan användas för resurser såsom CPU-register och minne, men svårare för andra resurser, t ex skrivare Circular Wait – ge ett nummer till alla resurstyper och kräva att processerna begär resurser i stigande nummerordning
1.14 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Undvika deadlock Enklaste modellen – varje process deklarerar det maximala antalet resurser av varje typ den kommer att använda En algoritm undersöker sen dynamiskt tillståndet på resursallokeringen Tillståndet definieras av antalet tillgängliga och allokerade resurser och processernas max-krav Systemet har mer information om hur resurser kommer att efterfrågas
1.15 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Säkert tillstånd (Safe State) När en process begär en tillgänglig resurs måste systemet bestämma om systemet hamnar i ett säkert tillstånd om resursen allokeras till processen Säkert tillstånd – systemet kan allokera resurser till varje process i någon ordning och ändå undvika deadlock Om ingen sådan ordning finns så befinner sig systemet i ett osäkert tillstånd – deadlock kan inträffa
1.16 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Safe, Unsafe, Deadlock State
1.17 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Resursallokeringsgraf En resursallokeringsgraf kan användas när en enda instans av varje resurstyp finns En streckad pil P i R j indikerar att process P j kan komma att begära resurs R j Konverteras till en begäran-pil när processen begär en resurs Begäran kan uppfyllas om ingen cykel finns i grafen – säkert tillstånd Konverteras till en tilldelnings-pil när resursen allokeras till processen
1.18 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Resursallokeringsgraf
1.19 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Osäkert tillstånd i en Resursallokeringsgraf
1.20 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Banker’s Algorithm Används när flera instanser av varje resurstyp finns Varje process deklarerar max antal av varje resurstyp När en process begär en resurs kollar systemet först om allokeringen kommer att lämna systemet i ett säkert tillstånd
1.21 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Datastrukturer för Banker’s Algorithm Available: Vektor av längden m. antal instanser av varje resurs Max: matris med storleken n x m Allocation: matris med storleken n x m Need: matris med storleken n x m Need [i,j] = Max[i,j] – Allocation [i,j] n = antal processer, m = antal resurstyper.
1.22 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Algoritm för säkert tillstånd 1. Låt Work och Finish vara vektorer med längderna m and n. Initialisera: Work = Available Finish [i] = false för i = 0, 1, …, n- 1 2.Hitta ett index i så att både: (a) Finish [i] = false (b) Need i Work Om inget sådant i existerar, gå till steg 4 3.Work = Work + Allocation i Finish[i] = true gå till steg 2 4.Om Finish [i] == true för alla i är systemet i ett säkert tillstånd
1.23 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Algorithm för begäran av resurser Request = vektor för process P i. Om Request i [j] = k vill process P i ha k instanser av resurstyp R j 1.Om Request i Need i gå till steg 2. Om ej, felmeddelande 2.Om Request i Available, gå till steg 3. Om ej måste P i vänta 3.Låtsas att allokera de begärda resurserna till P i genom att göra följande: Available = Available – Request; Allocation i = Allocation i + Request i ; Need i = Need i – Request i ; Om säkert allokera resurserna till Pi Om osäkert Pi måste vänta
1.24 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Exempel på Banker’s Algorithm 5 processer P 0 till P 4 ; 3 resurstyper: A (10 instanser), B (5 instanser), och C (7 instanser) Tillstånd vid tiden T 0 : Allocation MaxAvailable A B C A B C A B C P P P P P
1.25 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Exempel (forts) Innehållet i matrisen Need definieras som Max – Allocation Need A B C P P P P P Systemet är i ett säkert tillstånd eftersom ordningen uppfyller kriterierna
1.26 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Exempel: P 1 begär (1,0,2) Kolla att Request Available (dvs, (1,0,2) (3,3,2) true AllocationNeedAvailable ABCA B CA B C P P P P P Algoritmen visar att ordningen uppfyller villkoren Kan en begäran av (3,3,0) av P 4 beviljas? Kan en begäran av(0,2,0) av P 0 beviljas?
1.27 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Upptäcka deadlock Algoritm när alla resurstyper bara har en instans: Använd en wait-for graf Noderna är processer P i P j om P i väntar på P j Med jämna mellanrum söker algoritmen efter cykler i grafen. Om en cykel finns är systemet i deadlock Hur ofta ska grafen genomsökas?
1.28 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Resursallokeringsgraf och Wait-for graf Resursallokeringsgrafmotsvarande wait-for graf
1.29 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Återhämtning från deadlock: Process-terminering Avsluta alla processer i deadlock Avsluta en process åt gången tills deadlock-cykeln försvinner I vilken ordning skall vi avsluta processerna? Processens prioritet Hur länge processen har exekverat, hur länge den har kvar Resurser som processen har använt Resurser som processen behöver Hur många processer som behöver avslutas Är processen interaktiv eller batch?