Operativsystem - Baklås Mats Björkma 2017-02-01
Lärademål Vad är baklås? Villkor för baklås Strategier för att hatera baklås Operativsystem, Mats Björkma, MDH 2
Defiitio av baklås (boke 6.2) A set of processes is deadlocked if each process i the set is waitig for a evet that oly aother process i the set ca cause Operativsystem, Mats Björkma, MDH 3
Evet som vätas på Nästa alltid att e upptage resurs skall bli ledig Taebaum ämer äve (i 6.7) kommuikatiosbaklås där processer vätar på meddelade som har kommit bort Operativsystem, Mats Björkma, MDH 4
Resurser som vätas på Hårdvarueheter (skrivarexemplet) Delat data (kritiska avsitt) Sykroiserig (semaforer, mailboxes) Nätverkshädelser (köer, buffertar, paket, ) Semaforer och likade mekaismer som aväds för att skydda resursera ova Operativsystem, Mats Björkma, MDH 5
Resurser Två typer: Preemptable No-preemptable Baklås ka bara uppstå med resurser som är o-preemptable Resurse aväds så här: Begär resurse exv. wait(resource_semaphore); Utyttja resurse kritiskt avsitt... Släpp resurse exv. sigal(resource_semaphore); Operativsystem, Mats Björkma, MDH 6
Villkor för baklås 1. Ömsesidigt uteslutade E resurs är atige allokerad av 1 process eller tillgäglig 2. Hold ad wait (håll-och-väta) E process ka ha e resurs allokerad (hålla de) och begära (väta på) e aa 3. No-preemptio Resurser ka ite tas ifrå e process ofrivilligt 4. Cirkulär väta Varje process i e cirkel vätar på e aa i cirkel Alla fyra villkore måste vara uppfyllda för att baklås skall kua uppstå! Operativsystem, Mats Björkma, MDH 7
Att rita resursgrafer A S2 S1 B Exempel: Teckeförklarig: Process Resurs A S S hålls av A A S A begär S Pile pekar mot de kotrollerade ode Operativsystem, Mats Björkma, MDH 8
Att rita resursgrafer A S2 Exempel på mer ä bara e cykel: S1 B Äve C och D är i mägde av processer som befier sig i baklås eftersom de vätar på e resurs som edast e aa process ka släppa frå sig C S3 D Operativsystem, Mats Björkma, MDH 9
Problemet med de ätade filosofera Klassiskt sykroiserigsproblem Urspruglige formulerat av Edsger Dijksta (samme ma som amgav P och V som semaforoperatioer) Operativsystem, Mats Björkma, MDH 10
Problemet med de ätade filosofera 5 filosofer 1 rut bord E tallrik hal spaghetti 5 gafflar E filosof ka atige äta eller täka Procedur att äta: 1. Ta upp väster gaffel 2. Ta upp höger gaffel 3. Ät 4. Lägg er båda gafflara Hur ka problemet hateras? Operativsystem, Mats Björkma, MDH 11
Strategier för baklåshaterig 1. Strutsalgoritme 2. Deadlock detectio (upptäck baklås och åtgärda) 3. Deadlock avoidace (udvik geom försiktighet vid allokerig) 4. Deadlock prevetio (udvik geom desig) Operativsystem, Mats Björkma, MDH 12
Strutsalgoritme Eklaste sättet att hatera problemet på OS-ivå: Stick huvudet i sade och låtsas att problemet ite existerar Hur ka ma es komma på e såda strategi? Adra fel uppstår mycket oftare Slipper begräsigar i OS:et Avädara vet bäst hur udvika baklås i deras tillämpigar The ostrich algorithm is both Widows ad UNIX approved!! J Operativsystem, Mats Björkma, MDH 13
Deadlock Detectio Iga begräsigar på resursallokerig Aväd e algoritm för att upptäcka baklås Två fall: 1. E resurs av varje typ 2. Flera resurser av varje typ Lös upp baklås som hittas När skall e såda algoritm köras? När e resurs begärs Periodiskt, varje N tidseheter När systemet är idle Operativsystem, Mats Björkma, MDH 14
Deadlock Detectio - E resurs av varje typ Gör e resursgraf Fi evetuella cykler Bryt upp fua cykler Process Resurs A S S hålls av A A S A begär S Pile pekar mot de kotrollerade ode Övig: 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? Operativsystem, Mats Björkma, MDH 15
Deadlock Detectio - E resurs av varje typ R P A P B P C S P D T P E P F U BAKLÅS!!! V W P G Operativsystem, Mats Björkma, MDH 16
Deadlock Detectio - E resurs av varje typ Algoritm för att hitta cykler: 1. För varje od N i grafe, utför följade steg med N som startod: 2. Iitiera L som de tomma mägde och avmarkera alla bågar, sätt N som uvarade od. 3. Addera uvarade od till mägde L. Om uvarade od reda tidigare är i mägde, så har vi upptäckt ett baklås, vi oterar detta (typ spara L) och algoritme ka därefter termieras 4. Om det fis omarkerade bågar utgåede frå uvarade od, gå till 5, aars gå till 6. 5. Välj e omarkerad båge och markera de. Följ de seda. Sätt de ya ode till uvarade od. Gå till 3. 6. Om vi står vid startode, gå till 1 och aväd e y startod. Om ite: Vi har hamat i e återvädsgräd. Ta bort uvarade od ur L, backa till föregåede od, gör dea till uvarade od och gå till 4. Operativsystem, Mats Björkma, MDH 17
Deadlock Detectio - E resurs av varje typ R P A P B PC S P D P T E P F W U V P G 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 } =>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 =>L={P B, T, P E, V, P G, U, P G, U, P D } D, T} Baklås!! Operativsystem, Mats Björkma, MDH 18
Deadlock Detectio - Alterativ uta baklås R P A P B PC S P D P T E P F W U V P G N=P B L={} =>L={P B } =>L={P B, T}. =>L={P B, T, P E, V, P G, U} =>L={P B, T, P E, V, P G } =>L={P B, T, P E, V} =>L={P B, T, P E } =>L={P B, T} =>L={P B } (iget baklås utgåede frå P B ) dito med N=P A, P C, P D, P E, P F, resp. P G Slutsats: Iget baklås existerar Operativsystem, Mats Björkma, MDH 19
Deadlock Detectio - Flera resurser av varje typ Lösig med matriser [ e e ] E... = 1 2 e Vektor med Existerade resurser av typ e x = [ a1 a2 a ] Vektor med tillgägliga (Available) c11 c12 c1 resurser av typ a x A... c C = R = " cm 21 1 r r " rm 11 21 1 c c 22 " m1 r r r 12 22 " m1! #!! #! Vi ka se att: c c r r 2 " m 1 r 2 " m Matris med atalet resurser av typ som process m håller (Claimed) Matris med atalet resurser av typ som process m begär (Requested) m i=1 c + a = ij Operativsystem, Mats Björkma, MDH 20 j e j
Deadlock Detectio - Flera resurser av varje typ För två vektorer, X och Y gäller att X Y omm x i y i för 0 i <! "! " Exempel: 1 2 3 4 1 2 3 4 # $! " 2 3 4 4 # $! " 2 3 2 4 # $ # $ Operativsystem, Mats Björkma, MDH 21
Deadlock Detectio - Flera resurser av varje typ Följade algoritm körs regelbudet: 1. Hitta e omarkerad process P i där R i A. 2. Om e såda process fis, markera processe (de har möjlighet att exekvera klart), addera C i till A, och gå till steg 1. 3. När ige omarkerad process uppfyller villkoret i 1, termiera. Alla omarkerade processer är i baklås Hur fugerar detta? Operativsystem, Mats Björkma, MDH 22
Operativsystem, Mats Björkma, MDH 23 Övig 1: [ ] 1 3 2 4 = E [ ] 0 0 1 2 A = = 0 2 1 0 1 0 0 2 0 1 0 0 C Fis det baklås i systemet? = 0 0 1 2 0 1 0 1 1 0 0 2 R 1 [ ] 0 2 2 2 A'= 2 [ ] 1 2 2 4 ' A' = 3 [ ] 1 3 2 4 '' A' = INGET BAKLÅS!!! Deadlock Detectio - Flera resurser av varje typ
Övig 2: E = [ 4 2 3 1] A = [ 2 1 0 0] C = Deadlock Detectio - Flera resurser av varje typ 0 0 3 0 2 0 0 1 0 1 0 0 R = Fis det baklås i systemet? 2 0 0 1 1 0 1 0 2 1 0 0 1 A' = 2 2 0 0 SYSTEMET ÄR I BAKLÅS!!! Operativsystem, Mats Björkma, MDH 24
Deadlock Detectio Hur återhämta sig frå baklås? Preemptio Process rollback Termiera e av processera som är i baklås Operativsystem, Mats Björkma, MDH 25
Deadlock Avoidace Udviker baklås geom försiktighet vid allokerig Arbetar med säkra och osäkra tillståd E allokerig tillåts edast om systemet hamar i ett säkert tillståd efter allokerige Operativsystem, Mats Björkma, MDH 26
Deadlock Avoidace - Säkra och osäkra tillståd (fig. 6-8) B Both Fiished Pri t er Pl ot ter I8 I7 I6 I5 Safe Safe Safe Usafe Ureachable r s Safe Safe p q I1 I2 I3 I4 A Priter Plotter Operativsystem, Mats Björkma, MDH 27
Deadlock Avoidace - Säkra och osäkra tillståd Algoritmer för att beräka tillstådet Förutsäger ett värstafallsbeteede Vad är värsta fallet? Om e process vill ha alla resurser de överhuvudtaget ka täkas vilja ha i framtide, u och alla samtidigt Fråga är: Skulle systemet då gå i baklås? Svår uppgift: skatta maxatalet Operativsystem, Mats Björkma, MDH 28
Deadlock Avoidace - Säkra och osäkra tillståd Algoritmer för att beräka tillstådet Motsvarar baklåsdetekterig med E, A, C och R-matrisera. Exempel 1: Totalt 10 resurser, med följade allokerig: Proc Har Max A 3 9 B 2 4 C 2 7 Ledigt 3 5 7 10 3 1 2 SÄKERT!!! Är systemet i ett säkert eller osäkert tillståd? Operativsystem, Mats Björkma, MDH 29
Deadlock Avoidace - Säkra och osäkra tillståd Algoritmer för att beräka tillstådet Motsvarar baklåsdetekterig med E, A, C och R-matrisera. Exempel 2: Totalt 10 resurser, med följade allokerig: Proc Har Max A 3 9 B 2 4 C 2 8 Ledigt 3 5 1 OSÄKERT!!! Är systemet i ett säkert eller osäkert tillståd? Operativsystem, Mats Björkma, MDH 30
Deadlock Avoidace - Säkra och osäkra tillståd Observera att ett osäkert tillståd här ite måste leda till baklås! Maxallokerige är ett värsta fall som kaske aldrig iträffar vid e exekverig Däremot är tillstådet osäkert eftersom det fis e risk att tillstådet leder till baklås Operativsystem, Mats Björkma, MDH 31
Deadlock Avoidace - Baker s Algorithm Av Edsger Dijkstra Ursprugstake frå lå i e bak Avgör om e allokerig leder till ett säkert eller osäkert tillståd Körs varje gåg e resurs begärs Två fall: E typ av resurs Flera typer av resurser Operativsystem, Mats Björkma, MDH 32
Deadlock Avoidace - Baker s Algorithm Fråga är ifall vi skall tillåta process P att allokera e begärd resurs eller ite Take är att studera värsta fallet: OM vi tillåter process P att allokera e begärd resurs, och OM därefter alla processer vill allokera det maximala atalet resurser på e gåg, är systemet fortfarade i ett säkert tillståd? Proc Har Max A 3 9 B 2 4 C 2 7 Operativsystem, Mats Björkma, MDH 33
Deadlock Avoidace - Baker s Algorithm Exempel med e typ av resurs: Proc A B C Iitialt tillståd Har 3 9 2 4 2 7 Ledigt: 3 Max B begär 1 Proc Har Max A B C SÄKERT! 3 9 3 4 2 7 Ledigt: 2 SÄKERT! Proc A begär 1 4 9 2 4 2 7 Ledigt: 2 OSÄKERT! Operativsystem, Mats Björkma, MDH 34 A B C Har Max C begär 1 Proc Har Max A B C 3 9 3 4 3 7 Ledigt: 1 SÄKERT!
Deadlock Avoidace - Baker s Algorithm Motsvarade för flera typer av resurser lämas om e övig (boke 6.5.4) Aväd samma typ av matriser som vid deadlock detectio för flera resurser, och applicera Baker s Algorithm d.v.s.: OM vi tillåter e begära om resurser, och OM alla processer seda vill ha maxatalet, kommer då systemet att gå i baklås? Om ja, eka de begärda allokerige Operativsystem, Mats Björkma, MDH 35
Deadlock Avoidace - Baker s Algorithm Värt att otera ige är att ett osäkert tillståd ite måste leda till baklås Det är bara om alla processer verklige vill allokera maxatalet resurser som det blir ett baklås Baker s algorithm är alltså koservativ eftersom de alltid atar värsta fallet Operativsystem, Mats Björkma, MDH 36
Deadlock Prevetio Svårt att åstadkomma Agrip ett av villkore för baklås Agrip Ömsesidigt uteslutade Agrip Hold ad Wait Agrip No-preemptio Agrip Cirkulär väta Operativsystem, Mats Björkma, MDH 37
Hur skulle du göra? I ett valigt OS? I ett realtids-os? Agrip Ömsesidigt uteslutade Agrip Hold ad Wait Agrip No-preemptio Agrip Cirkulär väta Operativsystem, Mats Björkma, MDH 38
Filosoferas återkomst Summa summarum: OS:et haterar sälla baklås Alltså: Du som programmerare behöver hatera dem! E ekel regel: Ta alltid semaforera i e viss ordig! Låt e filosof ta höger gaffel först! 1-2 2 1 1-5 5-1 5 4 4-5 2-3 3 3-4 Operativsystem, Mats Björkma, MDH 39
Summerig Vad är baklås? 4 villkor för att baklås skall riskeras: Ömsesidigt uteslutade Hold ad wait No-preemptio Cirkulär väta Operativsystem, Mats Björkma, MDH 40
Summerig Strategier för att hatera baklås 4 strategier: Strutsalgoritme Deadlock detectio (ad recovery) Deadlock avoidace Deadlock prevetio Operativsystem, Mats Björkma, MDH 41
Lärademål Vad är baklås? Villkor för baklås Strategier för att hatera baklås Operativsystem, Mats Björkma, MDH 42