Deadlocks. detektera och undvik

Relevanta dokument
Realtidssystem. - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 5

Synkronisering. Föreläsning 8

Deadlock. Deadlock uppstår när två eller flera processer hamnar i ett cirkelberoende. Resurs 1. Processen vill ha resursen. Processen äger resursen

Tentamen i TDIU16 Process- och operativsystemprogrammering

Operativsystem - Baklås

Exam Concurrent and Real-Time Programming

Hjälpmedel: Inga hjälpmedel förutom penna, suddgummi och glatt humör.

Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson Plot och rekursion

Karlstads Universitet, Datavetenskap 1

Formell Verifiering. Hur vet man att ett system fungerar korrekt? Lisa Kaati

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Synkronisering. Ordning och reda

Mekanismer. (implementation)

Lättläst om Victor Classic X

Summering av fält. Synkronisering. Summering av fält. Bounded Buffer. Bounded Buffer (get) Bounded Buffer (put)

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

Problem: FIL File Paths

Lösningar Datastrukturer TDA

TNK049 Optimeringslära

ÖVERVAKNING AV SQL SERVER

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

MegTax CardCenterPro

Datastrukturer och Algoritmer D0041D

Föreläsningsanteckningar F6

Föreläsning 5: Grafer Del 1

Realtidssystem HT03. Vad är realtidssystem? Inbyggda system. Att programmera, Tasks (Uppgifter) Realtidssystem kräver analys

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

ALGORITMER, OPTIMERING OCH LABYRINTER

Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

! "# # # $ # " % & # # '(") " " )## (")"#*+*(, ( - " ' # (") #. % % /

Tentamen i Realtidsprogrammering

Värmedistribution i plåt

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Datorsystem. Laboration 3: Operativsystem Senast uppdaterad: 14 oktober 2012 Version 1.3. Student: Underskrift: Underskrift: Datum:

, S(6, 2). = = = =

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

Absolutstabilitet. Bakåt Euler Framåt Euler

Operative system. LRU-algoritm (2 p) Svar: 7 fel. c) Optimal algoritm (2 p) Svar: 6 fel

Känguru 2016 Cadet (åk 8 och 9)

Grafer. 1 Grafer. Grunder i matematik och logik (2015) 1.1 Oriktade grafer. Marco Kuhlmann

UPPGIFT 1 VÄNSKAPLIGA REKTANGLAR

syftar till att förbättra prestanda. Den kan avse något eller flera av följande mått.

Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer

a = a a a a a a ± ± ± ±500

UPPGIFT 1 TVÅPOTENSER. UPPGIFT 2 HISSEN I LUSTIGA HUSET.

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

Uppgift 1 (vadå sortering?)

Programmeringsolympiaden 2010 Kvalificering

TENTAMEN. HF1002, 6H3120, 6H3117 Diskret Matematik. Skrivtid 13:15-17:15. Måndag 19 december Tentamen består av 5 sidor.

UPPGIFT 1 FORTSÄTT TALFÖLJDEN

Robotarm och algebra

En typisk medianmorot

Lathund Victor Reader Stream

Vinjetter TDDC91 Datastrukturer och algoritmer

1. Starta om din Mac. 2. Kontrollera din Internetuppkoppling

DN1240, numo08 Stefan Knutas, Fredrik Båberg, B.10: Nalle-Maja gungar

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

TDDI16: Datastrukturer och algoritmer

Operativsystem (ID2200/06) XX XX:00-XX:00

FACIT. Version

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen Datastrukturer (DAT036)

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Regression med Genetiska Algoritmer

Ungefär lika stora tal

Föreläsning 5: Dynamisk programmering

Föreläsning 11. Giriga algoritmer

Transaktioner och samtidighet

Skärminspelningsprogram Screencast-o-matic (med stimulated recall)

Frågan om P=NP? Är P=NP? Bakgrund. "Snabb lösning"?!

Föreläsning 9: NP-fullständighet

Algoritmer, datastrukturer och komplexitet

4 augusti (G) Programmering: Lego

Kvalificeringstävling den 30 september 2008

Den intelligenta dammsugaren

5-2 Likformighet-reguladetri

Lässtrategier för att förstå och tolka texter samt för att anpassa läsningen efter textens form och innehåll. (SV åk 1 3)

Hur kommer jag igång?

SNOOKER. Introduktion och de viktigaste reglerna

Spelplan/räkna förlorare

P(X nk 1 = j k 1,..., X n0 = j 0 ) = j 1, X n0 = j 0 ) P(X n0 = j 0 ) = etc... P(X n0 = j 0 ) ... P(X n 1

Vilken skillnad gör det var du placerar det? Prova båda.

Vad är viktigast? Sammanfattning. Processer och trådar. Processer och trådar. Flerprocessorsystem. Schemaläggning. Interprocesskommunikation.

Sirius II Installation och Bruksanvisning

Föreläsning Datastrukturer (DAT036)

Ett enkelt Kalkylexempel - Fruktaffären

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Programmeringsolympiadens final 2009

Studiehandledning. Riktlinjer för god njursjukvård

************** THE - Purity Test - LITE-version ***********************

Projektdokumentation för Othello

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

N = {i}: noder (hörn) Graf: G = (N, B) Definitioner. Väg: Sekvens av angränsande bågar. Cykel: Väg som startar och slutar i samma nod.

Problemlösning Lösningar

Transkript:

Deadlocks detektera och undvik

Enkla exempel Smal bro med en fil En fyrvägskorsning Fyra vägkorsningar Två lås P: Lock A, Lock B.. Rel. A, Rel. B Q: Lock B, Lock A.. Rel. B, Rel. A Vad motsvarar Resurser? Vad motsvarar Trådar? 1

Dining philosophers Ett runt bort med obegränsad mängd spagetti. Fem tallrikar. Fem gafflar, en mellan varje tallrik. Fem filosofer sitter runt bordet. De antingen äter eller tänker. När de tänker blir de hungriga, när de ätit behöver de tänka. Varje filosof behöver både gaffeln till höger och gaffeln till vänster om sin tallrik. 2

När en filosof blir hungrig Vänta tills höger gaffel är ledig Ta upp höger gaffel Vänta tills vänster gaffel är ledig Ta upp vänster gaffel Ät tills du är mätt Lägg ned vänster gaffel Lägg ned höger gaffel Tänk (filosofera) tills du blir hungrig igen 3

Implementation for ever () { acquire(right_fork) acquire(left_fork) eat() release(left_fork) release(right_fork) think() } 4

Steg 1: Vad händer? (ibland) Filosof 1 tar gaffel 5, trådbyte... Filosof 2 tar gaffel 1, trådbyte... Filosof 3 tar gaffel 2, trådbyte... Filosof 4 tar gaffel 3, trådbyte... Filosof 5 tar gaffel 4, trådbyte... Rita resursallokeringsgraf! 5

Resursallokeringsgrafer Trådar ritas som cirklar Resurser ritas som en fyrkant med en prick för varje resurs av den sorten. En resurs som är reserverad av en tråd ritas med en pil från pricken till trådens cirkel. En tråd som väntar på en resurs ritas med en pil från trådens cirkel till resursens fyrkant. En tråd som vi vet kan komma resevera en resurs ritas som en väntande tråd men med streckad pil. 6

Steg 2: Vad händer? (ibland) Filosof 1 väntar på gaffel 1, trådbyte... Filosof 2 väntar på gaffel 2, trådbyte... Filosof 3 väntar på gaffel 3, trådbyte... Filosof 4 väntar på gaffel 4, trådbyte... Filosof 5 väntar på gaffel 5, trådbyte... Rita resursallokeringsgraf! Varför ritas inte en låda med 5 prickar för gafflarna? Deadlock! Cirkulärt beroende i grafen! 7

En resursallokeringsgraf Det finns tre processer, P1, P2 och P3 Det finns en R1, två R2, en R3 och tre R4 P1 håller en R2, väntar på en R1 P2 håller en R2, R1 och väntar på en R3 P3 håller en R3 P3 väntar på en R2, deadlock uppstår Antag en extra R2 som är allokerad av P4. Är det deadlock? 8

Hantering av deadlock Prevention Förhindra möjligheten att deadlock kan uppstå. Deadlock kan inte uppstå. Avoidance Deadlock kan uppstå i teorin, men vi undviker att det uppstår i praktiken. Detection Deadlock kan uppstå och kommer att uppstå. Men vi upptäcker när det uppstår och reder ut situationen. Do nothing Operativsystemet gör inte ett smack åt saken. Applikationsprogrammerare är smarta nog att själva klara skivan på bästa sätt. En vanlig lösning! (Lösning??) 9

Vad är tillräckligt för deadlock? Circular wait Det finns en kedja av resursallokeringar sådan att: Tråd A har reserverat resurs 1 och väntar på resurs 2. Tråd B har reserverat resurs 2 och väntar på resurs 3. Tråd C har reserverat resurs 3 och väntar på resurs 4. Och så vidare tills... Tråd X har reserverat resurs N och väntar på resurs 1. Detta är tillräckligt för deadlock och innebär att de tre nödvändiga villkoren är uppfyllda. 10

Vad är nödvändigt för circular wait? Mutual exclusion Det finns resurser som kräver att endast en tråd i taget kan använda dem. Systemet har minst en kritisk sektion som kräver mutual exclusion. Hold and wait Det finns trådar som har en resurs reserverad och under tiden behöver (vänta på) en annan resurs. En tråd håller en resurs och väntar på en annan. No preemption of resources En resurs kan endast ges tillbaka frivilligt av den tråd som använder den. Ingen kan tvinga en tråd att ge upp en resurs, eller stjäla en resurs från någon annan. 11

Prevention Några exempel på metoder: Resurser är numrerade och reserveras alltid i ordning med lägst nummer först. (ingen circular wait kan uppstå) Trådar får bara hålla en resurs i taget. (ingen hold and wait kan uppstå) Högre prioriterade trådar kan ta över resurser från lägre prioriterade (som får backa och allokera om resursen). (preemption of resources) 12

Avoidance En algoritm kontrollerar om en resursallokering kan leda till deadlock. Kan deadlock uppstå stoppas resursallokeringen tills den kan göras på ett säkert sätt. Bankers algorithm. Utvecklades ursprungligen för att banker alltid skulle ha tillräckligt med medel att (på sikt) tillfredsställa alla kunders behov. 13

Detection En algoritm kör regelbundet och kontrollerar om nuvarande resursallokeringar och väntande trådar innebär att deadlock finns. Variant av Bankers algorithm kan användas. Eller hitta cykler i resursallokeringsgraf. 14

Bankers algorithm Räkna alla processer som får finnas i systemet. Räkna alla resurser som får finnas i systemet. Lista vilka resurser varje process behöver som mest. 1. Håll reda på vilka resurser som är allokerade och av vilken process i en matris. 2. Finns det någon process där systemets lediga resurser räcker för att processen skall få alla ytterligare resurser den behöver? 3. Antag att den processen kör klart och därmed frigör alla sina resurser. Börja om på 2. 4. Kunde alla processer köra klart? Systemet är då i ett säkert läge där deadlock inte har uppstått. 5. Annars är systemet i ett läge där deadlock kanske har eller kommer uppstå. 15

Bankers algorithm: Max behov RESOURCES TO CLAIM P A B C R ----+---+---+---+ O P 2 0 3 C ----+---+---+---+ E Q 3 2 5 S ----+---+---+---+ S R 1 5 1 E ----+---+---+---+ S TOTAL 4 5 5 16

Bankers algorithm: Allokeringar RESOURCES ALLOCATED P A B C R ---+---+---+---+ O P 2 0 1 C ---+---+---+---+ E Q 2 2 0 S ---+---+---+---+ S R 0 1 0 E ---+---+---+---+ S FREE 0 2 4 17

Bankers algorithm: Kvar behov RESOURCES NEEDED FREE AFTER P A B C FINISHED R ---+---+---+---+ O P 0 0 2 #1 => 2 2 5 C ---+---+---+---+ E Q 1 0 5 #2 => 4 4 5 S ---+---+---+---+ S R 1 4 1 #3 => 4 5 5 E ---+---+---+---+ S FREE 0 2 4 18

Bankers algorithm: Exempel Ställ upp och räkna! Är systemet i ett säkert läge? P försöker allokera en resurs av typ A. Skall det tillåtas? R behöver allokera en resurs av typ C. Skall det tillåtas? 19

Bankers algorithm: nackdelar Förutsätter ett givet antal resurser Ta bort en USB-disk och förutsättningen är bruten Utgår från att alla resurser en tråd behöver är kända på förhand Kan bero på t.ex. indata från användare... Komplexitet O(res_count*process_count 2 ) 20

Bankers för detektering Istället för informationen om en process återstående resursbehov används information om vilka resurser processen begär just nu. I övrigt samma beräkningar. Går det inte ut finns ett deadlock. 21

Rita resursallokeringsgraf Vi vet inte vad som hänt tidigare men får veta att följande är det enda som händer från nu: Många okända händelser P1 reserverar resurs A (ok) P2 försöker reservera resurs A (väntar) P1 reserverar resurs B (ok) P1 försöker reservera resurs C (väntar) Vilka villkor för deadlock är uppfyllda? Kan deadlock ha uppstått? Kan resurs B ingå i ett eventuellt deadlock? 22

Lösning Rita resursallokeringsgrafen. Om P2 sedan tidigare reserverat resurs C så gör givna händelserna att deadlock uppstår förutsatt att endast en resurs finns av A och C. B kan inte ingå i deadlock. Eftersom B var ledig så kan ingen ha väntat på den tidigare. Alltså uppfylls inte hold and wait för resurs B och den kan då inte ingå i circular wait. 23