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

Relevanta dokument
Deadlocks. detektera och undvik

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

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

Tentamen i TDIU16 Process- och operativsystemprogrammering

Synkronisering. Föreläsning 8

Karlstads Universitet, Datavetenskap 1

Operativsystem - Baklås

JAVAUTVECKLING LEKTION 4

1.1 Runnable och Thread

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

Realtidssystem. - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp

Realtidssystem. - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 2

Operativsystem. Informationsteknologi sommarkurs 5p, Agenda. Slideset 7. Exempel på operativsystem. Operativsystem

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

Objektorienterad Programkonstruktion. Föreläsning dec 2015

Föreläsning 3-4 Innehåll

Flera processer. Minneshantering. Trashing kan uppstå ändå. Ersätta globalt

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

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

Pipelining i Intel 80486

Exempeltentamen Datorteknik, EIT070,

Kort om World Wide Web (webben)

Bygg en entransistors Booster till datorn eller MP3-spelaren

ÖVERVAKNING AV SQL SERVER

Systemnära programmering Tentamen. Systemnära programmering, 7.5hp 5 november 2012

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

2D1339 Programkonstruktion för F1, ht 2003

Hantering av hazards i multi-pipelines

It s all about survival

made in China C1000E IB-leaflet.indd 1 6/27/13 2:18 PM

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

Föreläsnings 9 - Exceptions, I/O

Föreläsning 6. Sökträd: AVL-träd, Multi-Way -sökträd, B-träd TDDC70/91: DALG. Innehåll. Innehåll. 1 AVL-träd

DRAFT. CVS kurs laboration 1 Checka in, ut och uppdatera. Marcus Rejås. 17 november 2002

"if"-satsen. Inledande programmering med C# (1DV402)

Hemligheten med framgång är att veta hur man ska förmå andra att ändra sig. Det är en stor skillnad mellan att vara dirigent eller solist.

Synkronisering - Semaforen. Om att vänta men inte i onödan

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Säkerhet. Vad är det vi pratar om??

Inledande programmering med C# (1DV402) Tärningarna ska kastas

Öppna händer ett säkrare koncept av obeväpnad självförsvar

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

FÖRENKLINGSFORUM FOKUS PÅ FÖRETAGARNA

Att uppgradera från Informix 7.31 och kanske lite annat. Johan Backlund

Relationsdatabashanteringssystem RDBHS

Tentamen, EDA501 Programmering M L TM W K V

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

Användarmanual. Innehållsförteckning Överblick av El-cykeln

Filsystem. Varför? Hur? För att kunna lagra data mer permanent än i RAM. Vettig organisation Vettiga namn

Transportlogistik 104

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

Parallellism, återblick

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 11. Giriga algoritmer

INSTALLATIONSGUIDE. Design Collaboration Suite

Exam Concurrent and Real-Time Programming

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

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Teenage Brain Development

Översikt av kapitlet. Ge databasen ett lösenord. Förhindra ändringar av koden i databasen

Sharpdesk V3.5. Push - installationsguide: produktnyckelversion. Version 1.0

Introduktion av aktiv generaliserad kunskap i Businss Process Support System (BPSS)

Hur ska jag hinna med allt? Informationspass för nya studenter 5 september 2019

Concurrency Saker händer samtidigt. Process En instans av ett program

ANVÄNDARGUDIE FÖR ARRANGÖRER OCH PLATSÄGARE MALMÖ EVENEMANGSKALENDER

Kom ihåg! Träff 3 Pass 2. Faktablad: Muskelträning. Låt dina muskler hjälpa ditt hjärta

DVG A06. Operativsystem, mm. Karlstads universitet Datavetenskap. DVG A06 Johan Eklund. Datavetenskap, Karlstads universitet 1

Föreläsning 2. AVL-träd, Multi-Way -sökträd, B-träd TDDD71: DALG. Innehåll. Innehåll. 1 Binära sökträd

Tfn Telephone. Kontr Checked. Skapa PDF-filer i Windows

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Viv.Kontroll 6. 1 Viktigt Var vänlig notera

Operativsystem Lektion 1. Lärare. Schema. Kurssajten Finns på adressen. Jan Erik Moström. Set Norman

SMD 134 Objektorienterad programmering

Hårddiskenhet (med monteringskonsol) Bruksanvisning

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim

Trust 56K USB Modem TRUST 56K USB MODEM. Anvisningar för snabb installation. Version 1.0

Objektorienterad programmering. Telefonboken igen, en bättre version. En jämförelse. Föreläsning 4

const och pekare Output: char *unsafe(char *s) { // Returnerar pekare till det andra tecknet i s printf("%s \n", s);

Mekanismer. (implementation)

Databaser & databasdesign. Personuppgiftslagen, säkerhet och transaktioner.

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Information om personuppgiftsbehandling

TRUST USB VIDEO EDITOR

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

ASS 84, , Sverige är personuppgiftsansvarig för behandlingen av dina personuppgifter.

Databaser - Design och programmering. Säkerhetsproblem. SQL-injektion. Databashanteraren. Transaktion. Exempel. Transaktionshantering och säkerhet

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

Så blir den nya lagstiftningen om hållbar upphandling. Hållbar upphandling 14 mars 2016 Lisa Sennström

COMPUTABILITY BERÄKNINGSBARHET. Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall

Bruksanvisning Milestone 311 Daisy

Föreläsning 3. Stack

TIDS- OCH RUMSKOMPLEXITET

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Föreläsning 2: Grafer. Exempel på graf

Taxa för utlämnande av allmänna handlingar

Grundläggande utskrift

WordPress Multisite. Christian Ohlsson

LÄRA AV SVÅRA SITUATIONER

Transkript:

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

Fyra villkor för att deadlock ska uppstå Ömsesidig uteslutning. En resurs kan användas av ett begränsat antal processer. Väntar på resurser. En process som redan har en resurs väntar på en annan resurs. Kan inte ta bort en resurs från en process (preemptive) Cirkulärberoende.

semaphore r1, r2; void processa(){ down(r1); down(r2); OK semaphore r1, r2; void processa(){ down(r1); down(r2); /* Använd resurser */ /* Använd resurser */ } up(r2); up(r1); } up(r2); up(r1); void processb(){ down(r1); down(r2); NIX void processb(){ down(r2); down(r1); /* Använd resurser */ /* Använd resurser */ } up(r2); up(r1); } up(r1); up(r2);

Hur löser man problemet? Strunta i det. Det är så många andra problem som kan sänka en process så det är inte värt kostnaden att hantera deadlock. Försök hitta deadlocks och lös upp dem. Om man kan hitta deadlock så kan man kanske hitta nåt sätt att knyta upp knuten. Undvik genom att vara försiktig vid resurstilldelningen. Om man inte delar ut resurser när det finns risk för deadlock så undviker man ju problemet. Designa så att de fyra villkoren aldrig uppstår

Strunta i problemet Vanlig och lättimplementerad lösning som används av tex Unix och Windows

Hitta och fixa R A B C S D T E F U Y W G Algoritm för att upptäcka cirkelberoenden finns i boken på sidan 170

Hitta och fixa Resurser som finns totalt (E 1, E 2, E 3,, E m ) Resurser som är tillgängliga (A 1, A 2, A 3,, A m ) C 11 C 12 C 13 C 1m R 11 R 12 R 13 R 1m Process har C 21 C 22 C 23 C 2m Process vill ha R 21 R 22 R 23 R 2m C k1 C k2 C k3 C km R k1 R k2 R k3 R km

Exempel Anta att de existerande resurserna är (4,3,4) av de tre resurstyperna Vid en viss tidpunkt så har de tre processerna följande resurser tilldelande 1 2 0 0 0 3 1 0 0 För att kunna avsluta så behöver processerna följande resurser 1 0 1 2 1 0 1 3 0 Tillgängligt är alltså (2,1,1). Ta den första begäran som passar, dvs (1,2,0) P1 kan avsluta och lämna igen resurser, dvs (3,3,1) P2s begäran passar, dvs (3,3,4) P3s begäran passar. OK Tillstånd 2 2 0 0 1 3 1 0 1 Tillgängligt (1,0,1) => P3 passar => (2,0,2) => varken P1 eller P2 passar Behöver 1 2 0 0 0 3 1 0 0

Hur återhämtar man sig?? (inte lätt) Avbryta en exekverande process. Är det möjligt att på nåt sätt rycka bort en resurs från en process? Hoppa tillbaka till ett tidigare tillstånd. Processerna får spara sitt tillstånd då och då, när deadlock uppstår så får nån/några processer backa tillbaka. Slå ihjäl en process. Brutalt och i vissa lägen omöjligt.

Se till att det aldrig uppstår deadlock Finns det nåt säkert sätt att tilldela resurserna?

Bankers Algorithm Samma sak som för att upptäcka deadlocks Men hur vet man vilka resurser en process behöver? Vad händer om en ny process startas? Och en process låser antagligen inte upp alla resurser hela livstiden.

Förhindra genom att angripa de fyra villkoren Ta bort möjligheten att låsa resurser Låsanordning Lämna ifrån sig jobb... funkar dock inte generellt Skrivare Skrivare

Inte göra det möjligt att ta resurser och vänta på flera Begära att få alla resurser då man startar... men hur vet man vilka resurser en process behöver? Reursslöseri!! Innan man får nåt nytt så får man släppa det man har och begära allt på nytt (på en gång)

Se till att man kan ta bort resurser Svårt

Göra det möjligt att ta tillbaka resurser Svårt

Se till att inte cirkelberoenden uppstår Bara använda en resurs i taget!! (jojo) Numrera resurserna och tillåt endast att man tar resurserna i nummerordning 1. Skrivare 2. Scanner 3. CD-ROM 4. DVD spelare Men vilken ordning ska man ha dem i??

För vissa speciella tillämpningar så kan man göra speciallösningar, t.ex. two-phase locking för databaser Ett annat problem är svält There is still a little research on distributed deadlock detection... Its main function seems to be keeping otherwise unemployed graph theorists off the streets