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
Velkommen til Softwarekonstruktion
Advertisements

KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
// 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.
Selve objektet versus referencen til objektet Nedarvning
Semaforer Hvordan virker semop() hvis der er flere operationer ? I hvilken rækkefølge vækkes blokerede semaforer ? man semop.. The system call semantic.
Objektorienteret programmering
Hvordan man skriver koden.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Larman, 2. udgave kap. 11 Grundlæggende Systemudvikling zHvad er systemudvikling ? zHvad er UML ? zHvad er analyse og design ? zHvad er UP ?
Hvorfor trådning? Performance Responsivness. Succeskriterier Forbedring af performance –Opgaverne skal være uafhængige –Jo flere afhængige opgaver, jo.
VPG/Otto Knudsen1 VPR - Repetition Trådning Distribueret Programmering Sprogteori Grafer.
VPG/Otto Knudsen1 VPR - Repetition Trådning Distribueret Programmering Sprogteori Grafer.
Operativsystemer [3]: Synkronisering og baglåse Datalogi 1F: Forår 2003 Jørgen Sværke Hansen
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
11.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Processer Oversigt, principper og teknikker Kapitel 11.
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface.
Fundamentale datastrukturer
FEN KbP/seminar2: design11 Kontraktbaseret programmering Seminar 2 Klassedesign – grundprincipper Eksempler: Stack Dictionary.
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
8.6 Transaktioner1 Transaktioner 8.6 Transactions in SQL.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
Transaktioner og ACID Spørgsmål 8. Transaktioner og ACID ACID (Atomicity, Consistency, Isolation, Durability) ACID-egenskaber er sæt egenskaber, der garanterer.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Uge 14: distribuerede objekter, fjernprocedurekald, RMI Tirsdag: Introduktion Mulige fordele ved distribuerede objekter Introduktion til RMI: - Interfacets.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i.
 Processer og tråde  Implementation af tråde  Trådinterferens  Synkronisering  Atomare aktiviteter.
Per Printz Madsen 1 Linux kernen Monolithic kernel Support for dynamiske moduler Få kerne tråde Preemptive.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Per P. MadsenStyresystemer og tjenester1 Threads.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
8. Transaktioner og låsning/låse. Herunder ACID egenskaberne.
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.
Variabler, klassevariabler, identitet og lighed, collections
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Trinvis forfinelse Systematisk, gradvis udvikling af programmer.
DAIMIProgrammering af Store Systemer1 Concurrency i Java – Samarbejdende tråde.
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
Indledende Programmering Uge 6 - Efterår 2006
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Multiple processer på web-site Web- server filer Kunde 1 Kunde 2 Kunde p1p2p internet.
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
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.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Parallel programming Rasmus D. Lehrmann DM
Forelæsning Uge 2 – Torsdag
Forelæsning Uge 5 – Mandag
Quiz – Uge 3 – mandag – første time
Forelæsning Uge 2 – Mandag
Klasser og objekter (Afsnit i manualen).
Tråde og synkronisering
Tråde & Executors – uge 2.
Tråde & Executors – uge 2.
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.

Race condition class Fork { boolean available; Fork() {available = true}; void take_fork() { if (available) available = false; } void put_fork() { available = true; } To processer kan tro de begge har taget gaflen, hvis begge udfører testen før tildelingen

Race condition undgået med semaforer void take_fork() { down(sem); if (available) available = false; up(sem); } Kun 1 proces ad gangen får lov at udføre koden i den kritiske sektion

Semafor-operationer: down og up skal være atomiske // Forenklet implementation i C af semaforer // Semaforen er repræsenteret ved et heltal. down(int *sem) { if (*sem=0) {SLEEP UNTIL WAKEUP}; *sem = *sem - 1; } up(int *sem){ *sem = *sem + 1; {WAKEUP ONE SLEEPING PROCESS}; } ? sleep *Sem-- *sem++ wakeup

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 i distribuerede systemer Samme grundprincipper. Mange fejlmuligheder som der skal tages højde for. Mere komplekse systemer. Transaktioner i database-systemer, der overholder ACID-kriterierne, og som kan aborteres, giver mulighed for at løse en deadlock. Særlige problemer ved: - centraliseret deadlock-detektion - synkronisering vhja. tidsstempler

Centraliseret deadlock-detektion - risiko for "falsk deadlock" S TR AC B R frigives af B, men besked forsinkes Efter frigivelsen af R, venter B på T (besked forsinkes ikke)

Ressource-grafer: forenklet notation R P1P2 P1P2

Distribueret deadlock-detektion Besked (0,0,1) sendes fra proces 0 til proces 1. Betydning: (Blokeret proces, Afsenderproces, Modtagerproces) (0,5,7)

Wait-die P1P2 Hvis P1 er yngre and P2, slås P1 ihjel.

Filosof-fest PartyFilosof Gaffel

Beskyttelse af kritisk sektion med synchronized class Fork { boolean available; Fork() {available = true}; synchronized void take_fork() { if (available) available = false; } synchronized void put_fork() { available = true; } Synchronized sætter lås på objektet (fork- instansen): ingen andre må udføre en synchronized metode i objektet.

wait() og notify() class Fork { boolean available; Fork() {available = true}; synchronized void take_fork() { while (! available) {wait()} available = false; } void put_fork() { available = true; notify(); } Den tråd, der har kaldt wait() blokeres, og låsen på Fork- objektet fjernes. notify() gen-aktiverer en tråd, der er blokeret (som følge af at tråden har udført en wait() i Fork- objektets metoder)

Er vi færdige ?

Vink til opgave 4 synchronized void take_forks(Fork left,Fork right) { if (! left.available | ! right.available) { wait()};.. } // take_fork() skal kaldes af filosof. // hvor skal metoden placeres ? // og hvordan skal de blokerede filosoffer gen-aktiveres? // Opgave: Er det OK hvis take_forks() // er defineret i class Philosopher, // og kaldes inden 2*take_fork ?

RMI og tråde solver tråd Hvis metodekald i distribuerede objekter skal udføres samtidig, skal metoderne kaldes fra separate tråde i koordinatoren Koordinator

Javas tråd-implementation: Klasser, interfaces, modifier interface Runnable class Thread run() start()stop() sleep() setPriority(..) …. class Object wait()notify() …. Thread(Runnable t) // constructor Implementa- tionen af run() er trådens program En instans af class Thread gør programmet til separat tråd Metode-modifier: synchronized