Deadlock Definition deadlock (baglås) er en tilstand som en mængde af processer kan være i en mængde processer er i deadlock hvis alle processerne står.

Slides:



Advertisements
Lignende præsentationer
Om et øjeblik kommer Du ind i en magisk verden!. Om et øjeblik...
Advertisements

Dagens program Hvad er frivillig.dk Hvordan er frivillig.dk bygget op
Svingninger & Bølger Sidste Chance.
Kontaktfænomener opstår i relation, og kan kun forstås i den kontekst.
Første gang du logger på, skal du bestille ny adgangskode her
Hvordan programmerer man?? STREAM - en model. Programmører arbejder ofte i teams Hver programmør arbejder på sin del af en større helhed.
Status for Datakonsistens
•For 2 år siden var mine børn og jeg på et krydstogt i Middelhavet om bord på Sea Princess. •Under aftensmiddagen så vi en ældre dame, som sad alene.
Mind:lab Patrik Gustavsson Culture Manager. mind:lab Økonomi og Erhvervsministeriets kreative væksthus for afprøvning og udvikling af nye ideer Projekthotel.
Vejledning i blog-værktøjet WordPress Opdateret august 2009.
Vejledning i blog-værktøjet WordPress Opdateret oktober 2012.
Vejledning i blog-værktøjet WordPress Opdateret februar 2009.
Iterativ udvikling og UP
Test First Development
Beskrivelsesværktøjer
Kommunikation.
Almindelige ("hårde") links (i filsystemer med i-noder) opg.txt jens: pia: ln /home/pia/opg.txt /home/jens/opg.txt hård link: ny post får i-node-nummer.
Velkommen Lars Johansson ProjectForce. Program: Lidt omkring Athena IT-Group A/S Introduktion til ProjectForce – Microsoft Sharepoint Lidt teori omkring.
1 Rekursion og algoritmedesign. 2 Rekursion Rekursiv definition af X: X defineres i termer af sig selv. Rekursion er nyttig, når en generel version af.
SOSI – Monitor (SOSI-MON) Typer af relationer Behandlerrelation Samtykkerelation Bemyndigelses- relation.
For 2 år siden var mine børn og jeg på et krydstogt i Middelhavet om bord på Sea Princess.For 2 år siden var mine børn og jeg på et krydstogt i Middelhavet.
// Semaphore.java package semaphore; public class Semaphore { int resources = 1; // Constructors Semaphore() {} Semaphore(int i) { resources = i; } synchronized.
Flerbrugermaskine Fælles maskine Root: webserver Peter: uploader filer Pia: programudvikling 1 langvarig proces, evt. med børneprocesser skiftende behov.
Semaforer Hvordan virker semop() hvis der er flere operationer ? I hvilken rækkefølge vækkes blokerede semaforer ? man semop.. The system call semantic.
Arkitektur - Sikkerhed
FORTROLIGT. Må kun distribueres til partnere med aftale om hemmeligholdelse. Microsoft giver ingen garantier, hverken udtrykkeligt eller stiltiende. ©
Hvorfor trådning? Performance Responsivness. Succeskriterier Forbedring af performance –Opgaverne skal være uafhængige –Jo flere afhængige opgaver, jo.
Adresserum Adresserum: Det interval af adresser, der kan arbejdes med i den samme proces (fra 0 til største adresse) Lippiatt++: adresser fylder 8 bit.
Den Kreative arbejdsform
GP 10, 7/ Grundlæggende programmering Efterår 2001 Forelæsning 10 onsdag 7/ kl. 9:15 – 12:00.
Operativsystemer [3]: Synkronisering og baglåse Datalogi 1F: Forår 2003 Jørgen Sværke Hansen
11.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Processer Oversigt, principper og teknikker Kapitel 11.
P0 erfaringsopsamling Program 8.15: Introduktion
ØVELSE 3 BIDG-E2013 · Interaktionsdesign: genrer og kontekster.
Introduktion til Lync Windows Store-appen
To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface.
Beskeder/beskedkøer Afsender- proces hej Modtager- proces.. msgsnd(..,"hej",..);.. msgrcv(..);.. Afsender skal bl.a. angive den besked der ønskes afsendt.
Simulering af spisende filosoffer
Design, verifikation og analyse
1 Design, analyse og verifikation. 2 Design Bevisteknikker Design ved hjælp at matematisk induktion Analyse O-notation Logaritmer Binær søgning Verifikation.
8.6 Transaktioner1 Transaktioner 8.6 Transactions in SQL.
Procestræ under afvikling af cp init login shell cp cp src dest.
Delphi-evaluering og Green Field
Transaktioner og ACID Spørgsmål 8. Transaktioner og ACID ACID (Atomicity, Consistency, Isolation, Durability) ACID-egenskaber er sæt egenskaber, der garanterer.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
 Processer og tråde  Implementation af tråde  Trådinterferens  Synkronisering  Atomare aktiviteter.
Delphi-evaluering og Green Field Evaluering af event Som start på Green Field.
Process Control Hardware baggrund Process begrebet i et OS Process tilstande Context switching.
Per P. MadsenStyresystemer og tjenester1 Threads.
Deadlock Definition deadlock (baglås) er en tilstand som en mængde af processer kan være i en mængde processer er i deadlock hvis alle processerne står.
1 Processer. 2 fork int fork(); Danner en ny proces med samme indhold som forældre processen. I begge processer er programtælleren placeret lige efter.
Samtidighed. Disposition Formål med tråde Eksempel på fordel ved tråde Thread-pooling Livscyklus Problemstillinger Algoritmer ◦Dekkers ◦Peterson Opsumering.
Trinvis forfinelse Systematisk, gradvis udvikling af programmer.
DAIMIProgrammering af Store Systemer1 Concurrency i Java – Samarbejdende tråde.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
Multiple processer på web-site Web- server filer Kunde 1 Kunde 2 Kunde p1p2p internet.
Kapsejladsregler Kort opsummering. Materiale Kapsejladsreglerne og yderligere forklaringer findes i Dansk Sejlunions regelkursus:
Forretningsmodellering 2. Modul Foråret 2008 Nord LBP.
Quiz Uge 2 – torsdag. Hvorfor har vi clicker quizzer? Formålet med quizzerne er –at afveksle undervisningsformen – så I ikke falder i søvn –at tvinge.
Power up Your PowerPoint Udarbejdet af Irene Krainer Larsen Irla.
Status for Datakonsistens
Abstraktioner.
Quiz Uge 2 – mandag.
Quiz Uge 2 – mandag.
Quiz Uge 2 – mandag.
Nye ACE regler pr. 1. december 2012
Anvendt Statistik Lektion 6
ROBOTTERNE KOMMER - OZOBOTTERNE.
Robotterne kommer - Ozobotterne.
Quiz Uge 2 – mandag.
Præsentationens transcript:

Deadlock Definition deadlock (baglås) er en tilstand som en mængde af processer kan være i en mængde processer er i deadlock hvis alle processerne står i følgende situation: processen venter på en hændelse som kun en anden af processerne kan udføre. Typisk: "vente" = processen er blokeret fordi der ventes på adgang til en ressource "hændelse" = en anden proces frigiver ressourcen.

Ressourcer I relation til deadlock er de interessante ressourcer dem som kun 1 proces må bruge ad gangen. Ydre enheder printer skærm Filer/databaser reservationssystem kundekonti lagerstyring

Kritisk region reserver() { if reserveret < pladser // fejlmulighed then reserveret = reserveret + 1; // ved samtidighed } indsæt(beløb) { // fejlmulighed saldo = saldo + beløb; // ved samtidighed } // OBS - pseudokode, der ikke nævner filoperationer ! Kritisk region er en del af et program udførelse svarer til at besidde en ressource kun en proces ad gangen må udføre denne region af programmet har ikke præcis definition (modsat eks. deadlock)

Hvorfor procesblokering ? Multiple processer Automatisk ("preemptive") skedulering Tilgængelige, fælles ressourcer Race conditions (kritisk region) Procesblokering f.eks. v.hj.a. semaforer Fejl, inkonsistens Deadlock

Proces-blokering med semaforer..; down(sem); up(sem); Kritisk region Semaforer tilbyder: down, p: tester om ressource er ledig blokerer proces hvis ikke ledig up, v: frigiver ressource igen vækker blokerede processer Udføres atomisk Semaforens heltalsværdi udtrykker antallet af ledige ressourcer normalt 0 eller 1 kan generaliseres til n ressourcer af samme type

Filosof-problem uden blokering philosopher(int i) { while (TRUE) { think(); take_fork(i); take_fork((i+1) % 5); eat(); put_fork(i); put_fork(i+1); } take_fork(int f) { printf("Taking fork %d",f); } put_fork(int f) {..}

Filosof-problem med 1 ressource philosopher(int i) { while (TRUE) { think(); take_fork(i); take_fork((i+1) % 5); eat(); put_fork(i); put_fork(i+1); } down(sem); up(sem); Kritisk region Gaflerne opfattes som 1 (udelelig) ressource Maksimal 1 filosof ad gangen kan spise Deadlock ? (4 filosoffer udfører "down" mens 1 filosof er i kritisk region)

Betingelser for deadlock 1. Gensidig udelukkelse kun 1 proces ad gangen kan besidde en given ressource 2. "Hold and Wait" en proces der besidder en ressource kan forespørge efter andre ressourcer og evt. blokere 3. "No preemption" man kan ikke tvinge processer til at afgive ressourcer 4. Cirkulær venten (Hvis betingelse 4 er opfyldt, er betingelse 2 også)

Deadlock: graf-notation R1R2 P1P2 Proces P1 "besidder" ressource R1 Proces P2 venter på ressource R2. (Proces P2 er blokeret)

Cirkulær sti svarer til deadlock R1R2 P1P2 Grafen er et øjebliksbillede af programudførelsen

Deadlock ? A, B, C: Processer X, Y, Z: Ressourcer A besidder X og Y. C venter på Z. B venter på Y. A venter på Z.

Filosof-problem med 5 ressourcer philosopher(int i) { while (TRUE) { think(); take_fork(i); take_fork((i+1)%5); eat(); put_fork(i); put_fork(i+1); } take_fork(int f) { down(sem_f); printf("Taking fork %d",f); // pseudokode } put_fork(int f) { printf("Putting fork %d",f); up(sem_f); } Kan der opstå deadlock ? 5 filosoffer Definer selv værst tænkelige situation

Fjernelse af opstået deadlock Nedlæg en proces så den nedlagte proces' ressourcer bliver ledige Rollback "checkpoints", øjebliksbilleder kan ses som procesnedlæggelse efterfulgt af genstart databasesystemer "Ekspropriation" af ressource

Forebyggelse af deadlock Undersøg dit design: Kan du vise at ressource-grafen aldrig vil have cirkulære stier ? Brug en generel metode som forhindrer en af de fire betingelser: Gensidig udelukkelse ? Hold and wait Metode: bestil alle ressourcer på forhånd "No preemption" ? Cirkulær venten Metode: forespørg ressourcer i bestemt rækkefølge

"Forhånds-bestilling" philosopher(int i) { while (TRUE) { think(); take_forks(i); eat(); put_forks(i+1); } take_forks(int i) { int left = i, right = (i+1) % 5; down(sem_left,sem_right); } semop() tilbyder flere semafor-operationer i samme kald til semop() semafor-værdier ændres kun hvis alle ændringer kan gennemføres uden blokering læs detaljer på man-sider

Sortering af ressourcer philosopher(int i) { while (TRUE) { think(); take_forks(i); eat(); put_forks(i+1); } take_forks(int i) { int left =.., right =.., first = min(left,right), second = max(left,right); down(first); down(second); } Alle ressourcer nummereres og sorteres Ressource med mindste nummer bestilles først

Deadlock og udsultning Hvis en ventende proces er blokeret, bruger processen ikke cpu-tid. Hvis en ventende proces udfører "busy waiting", bruger processen cpu-tid. Kaldes "udsultning" jf. filosofferne. Processerne er også i deadlock. Jf. "test og sæt lås" ved hjælp af låsefiler: char lock[] = "LockFile" while (open(lock,O_RDWR|O_CREAT|O_EXCL,0666)<0) { sleep(1); }

Hvilke beskeder sendes ? kunde Over- tjener filosof kunde Besked: Jeg søger en plads ved bordet Filosofproces startes hvis der er plads Overtjener gives besked når plads bliver ledig Beskeder sendes tilbage med status ("spiser", "tænker")

Overtjener: 2 ventepunkter ?? // overtjener.c {opret beskedkø 1 til kunder} {opret beskedkø 2 til filosoffer} while (TRUE) { msgrcv(1,..); // ventepunkt 1 help_customer(..); msgrcv(2,..); // ventepunkt 2 opdater_plads_oversigt(..); }; // bedre at bruge 1 beskedkø: // msgrcv(..,mess,..); // if (bestilling(mess)) {

Overtjener: 1 ventepunkt // overtjener.c {opret beskedkø til kunder og filosoffer} while (TRUE) { msgrcv(..,mess,..); // 1 ventepunkt if (kundebesked(mess)) help_customer(mess); else opdater_plads_oversigt(mess); };