+ All Categories
Home > Documents > Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die...

Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die...

Date post: 23-May-2019
Category:
Upload: truongtruc
View: 212 times
Download: 0 times
Share this document with a friend
17
1 Stand der Folien: 20. Dezember 2011 Aktuelle Themen zu Informatik der Systeme: Nebenl¨ aufige Programmierung: Praxis und Semantik Zugriff auf mehrere Ressourcen WS 2011/12 Deadlocks bei mehreren Ressourcen Transactional Memory ¨ Ubersicht 1 Deadlocks bei mehreren Ressourcen Einleitung Deadlock-Verhinderung Deadlock-Vermeidung 2 Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 2/67 Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung Deadlocks bei mehreren Ressourcen Deadlock beim Mutual Exclusion Problem Deadlock: Kein Prozess kommt in den kritischen Abschnitt, obwohl mindestens ein Prozess in den kritischen Abschnitt ochte Kommt dem Belegen einer Ressource gleich TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 3/67 Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung Deadlocks bei mehreren Ressourcen (2) Deadlocks allgemeiner (bei mehreren Ressourcen) Definition Eine Menge von Prozessen ist deadlocked (verklemmt), wenn jeder (nicht beendete) Prozess auf ein Ereignis wartet, das nur ein anderer Prozess herbeif¨ uhren kann. TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 4/67
Transcript
Page 1: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

1

Stand der Folien: 20. Dezember 2011

Aktuelle Themen zu Informatik der Systeme:

Nebenlaufige Programmierung:Praxis und Semantik

Zugriff auf mehrere Ressourcen

WS 2011/12

Deadlocks bei mehreren Ressourcen Transactional Memory

Ubersicht

1 Deadlocks bei mehreren RessourcenEinleitungDeadlock-VerhinderungDeadlock-Vermeidung

2 Transactional MemoryEinleitungACID-EigenschaftenOperationenMerkmale

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 2/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Deadlocks bei mehreren Ressourcen

Deadlock beim Mutual Exclusion Problem

Deadlock: Kein Prozess kommt in den kritischen Abschnitt,obwohl mindestens ein Prozess in den kritischen Abschnittmochte

Kommt dem Belegen einer Ressource gleich

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 3/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Deadlocks bei mehreren Ressourcen (2)

Deadlocks allgemeiner (bei mehreren Ressourcen)

Definition

Eine Menge von Prozessen ist deadlocked (verklemmt), wenn jeder(nicht beendete) Prozess auf ein Ereignis wartet, das nur einanderer Prozess herbeifuhren kann.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 4/67

Page 2: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Beispiele

Mutual-Exclusion Problem: Deadlock, wenn es nicht mehrmoglich ist, dass irgendein Prozess den kritischen Abschnittbetritt, obwohl alle Prozesse in den kritischen Abschnittmochten

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 5/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Beispiele (2)

Zwei Prozesse machen Umbuchungen zwischen Konto A undKonto B.

Vorgehensweise:

Sperren des ersten KontosSperren des zweiten KontosUberweisung von erstem Konto auf zweites Konto durchfuhrenEntsperren der Konten.

Prozess P Prozess Qwait(KontoA); wait(KontoB);wait(KontoB); wait(KontoA);buche von A nach B buche von B nach Asignal(KontoA); signal(KontoB);signal(KontoB); signal(KontoA);

Deadlock!

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 6/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Beispiele (3)

Funktionierende Losung (Deadlock-frei)

Prozess P Prozess Qwait(KontoA); wait(KontoA);wait(KontoB); wait(KontoB);buche von A nach B buche von B nach Asignal(KontoA); signal(KontoA);signal(KontoB); signal(KontoB);

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 7/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Beispiele (4)

Ahnliches Problem bei: Speisende Philosophen

Deadlock moglich, wenn alle Philosophen unsychronisiert

Alle haben die linke Gabel keiner die rechte.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 8/67

Page 3: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Beispiele (5)

Engstelle

Nur ein Fahrzeug kann passieren

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 9/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Beispiele (6)

Alle warten, dass “rechts frei” ist

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 10/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Beispiele (7)

Gleiches Problem, aber etwas komplizierter

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 11/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Deadlock-Behandlung

Vier Ansatze

1 Ignorieren: Keine Vorkehrungen, Hoffnung, dass Deadlocksnur selten auftreten.

2 Deadlock-Erkennung und -Beseitigung: Laufzeitsystemerkennt Deadlocks und beseitigt sie. Problem: FindeAlgorithmus der Deadlocks erkennt.

3 Deadlock-Vermeidung: Algorithmus verwaltet Ressourcen undlasst Situation nicht zu, die zu einem Deadlock fuhren konnen.

4 Deadlock-Verhinderung: Der Programmierer entwirft dieProgramme so, dass Deadlocks nicht auftreten konnen.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 12/67

Page 4: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Deadlock-Behandlung (2)

Offensichtlich: Beste Methode: Deadlock-Verhinderung

Dafur muss man wissen:Unter welchen Umstanden kann ein Deadlock auftreten?

Im folgenden: Bedingungen fur Deadlock

und Deadlock-Verhinderung

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 13/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Wann tritt Deadlock auf?

Vier notwendige Bedingungen (alle gleichzeitig erfullt):

1 Wechselseitiger Ausschluss (Mutual Exclusion): Nur einProzess kann gleichzeitig auf eine Ressource zugreifen,

2 Halten und Warten (Hold and Wait): Ein Prozess kann eineRessource anfordern (auf eine Ressource warten), wahrend ereine andere Ressource bereits belegt hat.

3 Keine Bevorzugung (No Preemption): Jede Ressource kannnur durch den Prozess freigegeben (entsperrt) werden, der siebelegt hat.

4 Zirkulares Warten: Es gibt zyklische Abhangigkeit zwischenwartenden Prozessen: Jeder wartende Prozess mochte Zugriffauf die Ressource, die der nachste Prozesse im Zyklus belegthat.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 14/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Veranschaulichung

Prozess P1 will Ressource R1 belegen (hat sie aber nicht):

P1 R1

Prozess P1 hat Ressource R1 belegt:

P1 R1

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 15/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Veranschaulichung der 4 Bedingungen

1 Wechselseitiger Ausschluss (Mutual Exclusion): Nur einausgehender (gruner) Pfeil pro Ressource

2 Halten und Warten (Hold and Wait): Rote und grune Pfeilefur einen Prozess moglich

3 Keine Bevorzugung (No Preemption): Grune Pfeile konnennicht verandert werden (außer vom Prozess, der den Pfeil hat)

4 Zirkulares Warten: Zyklus im Graphen

Verboten:

P2

R1P1

Erlaubt:

R1P1

R3

P2

R1P1

R3

P3 R2

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 16/67

Page 5: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Beispiel

Prozess 1: Prozess 2: Prozess 3:Request R1 Request R2 Request R3

Request R2 Request R3 Request R1

Release R1 Release R2 Release R3

Release R2 Release R3 Release R1

P1 P2 P3

R1 R2 R3

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 17/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Beispiel: Anderes Scheduling

Prozess 1: Prozess 2: Prozess 3:Request R1 Request R2 Request R3

Request R2 Request R3 Request R1

Release R1 Release R2 Release R3

Release R2 Release R3 Release R1

P1 P2 P3

R1 R2 R3

Deadlock-Verhinderung: Programm so erstellt, dass unabhangigvom Scheduling kein Deadlock auftritt

Deadlock-Vermeidung: Scheduler erkennt Deadlock-Gefahr undschließt diese Schedulings aus

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 18/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Deadlock-Verhinderung

Ansatz: Greife eine der vier Bedingungen an, so dass sie nie wahrwird.

Mutual Exclusion: Im allgemeinen schwer moglich, manchmalaber schon:Bsp. Druckerzugriff wird durch Spooler geregelt.

No Preemption: Schwierig, man kann z.B. nicht den Zugriffauf den Drucker entziehen, wenn Prozess noch nicht fertiggedruckt hat usw.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 19/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Verhindern von Hold and Wait

Moglichkeit: Prozess fordert zu Beginn alle Ressourcen an, dieer benotigt.

Philosophen: Exklusiver Zugriff auf alle Gabeln

1. Problem: Evtl. zu sequentiell

2. Problem: Oft nicht klar, welche Ressourcen jeder Prozessbraucht

Variation dieser Losung: 2-Phasen Sperrprotokoll

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 20/67

Page 6: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

2-Phasen Sperrprotokoll

Die Prozesse arbeiten in zwei Phasen

Jeder Prozess fuhrt dabei aus:

1. Phase: Der Prozess versucht alle benotigen Ressourcen zubelegen.Ist eine benotigte Ressource nicht frei, so gibt der Prozessalle belegten Ressourcen zuruck und der Prozess startet vonneuem mit Phase 1.

2. Phase: Der Prozess hat alle benotigten RessourcenNachdem er fertig mit seiner Berechnung ist, gibt er alleRessourcen wieder frei.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 21/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Beispiel: Speisende Philosophen

Initial alle Gabeln (Semaphoren) mit 1 initialisiert

tryWait: Nicht-blockierende Implementierung von wait:

tryWait(S) ={

True, wenn Semaphore belegt werden konnteFalse, sonst

Phase 1, Phase 2

Philosoph iloop forever(1) l := tryWait(gabel[i]);(2) if l then(3) r:=tryWait(gabel[i+1]);(4) if r then(5) Philosoph isst(6) signal(gabel[i + 1]);(7) signal(gabel[i]);(8) else signal(gabel[i]);(9) Philosoph denkt;end loop

P3

gabel[1]P1

gabel[2]

P2 gabel[3]

Deadlock nicht moglich!

Aber Livelock!

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 22/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Timestamping-Ordering

Prozesse erhalten eindeutigen Zeitstempel, wenn sie beginnen.

Zwei-Phasen Sperrprotokoll mit Timestamping

Jeder Prozess geht dabei so vor:

1. Phase: Der Prozess versucht alle benotigten Ressourcen aufeinmal zu sperren.Ist eine benotigte Ressource belegt mit kleineremZeitstempel, dann gibt Prozess alle Ressourcen frei undstartet von neuem.Ist eigener Zeitstempel kleiner, dann wartet der Prozess aufdie restlichen Ressourcen.

2. Phase: Wie vorher.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 23/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Timestamping-Ordering (2)

Deadlock-frei

Livelock nicht moglich

Starvation-frei.

Definition

Starvation ist eine Situation, in der ein Prozess niemals (nachbeliebig vielen Berechnungsschritten) in der Lage ist, allebenotigten Ressourcen zu belegen.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 24/67

Page 7: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Zirkulares Warten verhindern

Versuche das zirkulare Warten zu verhindern.

Philosophen-Problem: N. Prozess hebt zuerst rechte Gabel

Dann kann kein zirkulares Warten enstehen

Denn die Gabeln wurden total geordnet: 1 < 2 . . . N .

Und die Philosophen haben die Ressourcen entsprechenddieser Ordnung belegt.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 25/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Total-Order Theorem

Allgemein gilt:

Total-Order Theorem

Sind alle gemeinsamen Ressourcen durch eine totale Ordnunggeordnet und jeder Prozess belegt seine benotigten Ressourcen inaufsteigender Reihenfolge bezuglich der totalen Ordnung, dann istein Deadlock unmoglich.

Beweis: durch Widerspruch. Annahme: Es gibt einen Deadlock.D.h. es gibt Ressoucen R1, . . . , Rn und Prozesse P1, . . . , Pn mit

Prozess Pi hat Ressource Ri−1 belegt

Prozess Pi wartet auf Ressource Ri

Sei Rj die kleinste Ressource aus {R1, . . . , Rn} bezuglich dertotalen Ordnung. Dann wartet Prozess Pj auf Ressource Rj , wobeier Ressource Rj−1 schon belegt hat. Widerspruch.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 26/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Total Order Theorem (2)

Man kann nachweisen:

Lemma

Ein Deadlock-freies System, indem die Belegung von (allen)einzelnen Ressourcen Starvation-frei ist, ist auch insgesamtStarvation-frei

Mit dem Total Order Theorem lasst sich folgern:

Wenn es eine totale Ordnung der Ressourcen gibt, die Ressourcenentsprechend dieser Ordnung belegt werden und die Belegungeinzelner Ressourcen Starvation-frei ist, dann ist das GesamtsystemStarvation-frei.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 27/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Deadlock-Vermeidung

Erinnerung:

Deadlock-Vermeidung: Algorithmus verwaltet Ressourcen undlasst Situation nicht zu, die zu einem Deadlock fuhren konnen.

Im folgenden:

Beispiel von Dijkstra zur Deadlock-Vermeidung:

Problem des Deadly Embrace

Losung: Bankier-Algorithmus

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 28/67

Page 8: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Deadly Embrace

Annahme:

Es gibt m gleiche Ressourcen

Jeder Prozesse Pi benotigt eine gewisse Zahl mi ≤ m dieserRessource

Prozesse fordern Ressourcen nach und nach an

Die maximal benotigte Anzahl mi ist beim Start bekannt

Hat ein Prozess seine maximale Anzahl, terminiert er und gibtdie Ressourcen zuruck.

Problem: Implementiere Ressourcenverwalter

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 29/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Dijkstra’s Veranschaulichung

Ressource: Geld

Prozesse sind Bankkunden

Ressourcenverwalter: Bankier

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 30/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Deadlock-Vermeidung: Beispiel

Vorhandene Ressourcen am Anfang: 98 EUR

2 Kunden, beide benotigen 50 EUR

Beide Kunden haben bereits 48 EUR erhalten

Beide Kunden fordern 1 EUR an.

Soll der Bankier beide Anforderungen zulassen?

Nein: Dann haben beide Kunden 49 EUR, die Bank 0 EUR

Ein Deadlock ist eingetreten.

Ein Kunde fordert 1 EUR an

Soll er das Geld bekommen?

Ja, denn danach ist der Zustand immer noch sicher

sicher = Deadlock noch vermeidbar (muss nicht eintreten)

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 31/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Losungsversuch

Naive Losung:

Kunden erhalten Reihenfolge

Bankier bedient immer einen Kunden, bis er seinen maximalenBetrag erhalten hat

Alle andere Kunden mussen warten

Schlecht, da sequentieller Algorithmus

Deshalb:

Zusatzliche Anforderung: Erlaube soviel Nebenlaufigkeit wiemoglich

Lehne nur dann Anfrage ab, wenn der Zustand dann unsicherwurde,d.h. ein Deadlock eintreten muss

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 32/67

Page 9: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Bankier-Algorithmus: Datenstrukturen

Annahme: Verschiedene Ressourcen, z.B. mehrere Wahrungen

Vektor−→A : Aktueller Vorrat in der Bank. Jede Komponente

von−→A ist nicht-negative Ganzzahl und stellt Vorrat einer

Wahrung dar

P Menge der Kunden (Prozesse). Fur P ∈ P sei:

−−→MP der Vektor der maximal durch Prozess P anzuforderndenRessourcen−→CP der Vektor der bereits an Prozess P vergebenenRessourcen

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 33/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Bankier-Algorithmus: Sicherer Zustandsicher = Deadlock in der Zukunft vermeidbar

Ein Zustand (mit all seinen Vektoren) ist sicher,wenn es eine Permutation π der Prozesse P1, . . . , Pn ∈ P gibt,sodass es fur jeden Prozesse Pi entsprechend der Reihenfolge derPermutation genugend Ressourcen gibt, wenn er dran ist.

Genugend Ressourcen bedeutet hierbei:

−→A +

∑π(j)<π(i)

−−−→CPπ(j)

−−−→MPi +

−→CPi ≥

−→0

Zu den aktuell verfugbaren Ressourcen−→A

durfen momentan vergebenen Ressourcen hinzuaddiertwerden, deren zugehorige Prozesse entsprechend derPermutation vor Pi vollstandig bedient werden.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 34/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Bankier-Algorithmus: Grundgerust

Bankier erhalt eine Ressourcenanfrage−→LP eines Prozesses

P ∈ P.

Konsistenzbedingung:−→LP +

−→CP ≤

−−→MP

Bankier berechnet den Folgezustand, alsob P die Ressourcenerhalt, d.h. −→

A :=−→A −

−→LP−→

CP :=−→CP +

−→LP

Anschließend: Teste ob Zustand noch sicher

Wenn unsicher, dann stelle Ursprungszustand her und lasse Pwarten

Wenn Kunde maximale Ressourcen erhalt wird−→A automatisch

angepasst,

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 35/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Bankier-Algorithmus: Test auf Sicherheit

function testeZustand(P,−→A ):

if P = ∅ thenreturn “sicher”

else

if ∃P ∈ P mit−−→MP −

−→CP ≤

−→A then

−→A :=

−→A +

−→CP ;

P := P \ {P};testeZustand(P,

−→A )

elsereturn “unsicher”

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 36/67

Page 10: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Eigenschaften

Algorithmus berechnet eine der gesuchten Permutationen

Laufzeit O(|P|2)!Kriterium ist ausschließlich

”Kein Deadlock“ sonst keine

”Optimierung“

kleine Verbesserung:

Wenn−→A ≥

−−→MP −

−→CP (genugend Ressourcen vorhanden um P

komplett zu bedienen) dann ist nach Anfrage−→LP der Zustand

immer sicher (Test muss nicht ausgefuhrt werden)

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 37/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Beispiel

4 Ressourcen (EUR, USD, JYN, SFR)4 Prozesse A, B, C, DAktueller Zustand

Maximal-Werte Erhaltene Werte Verfugbare Ressourcen−−→MA = (4, 7, 1, 1)

−→CA = (1, 1, 0, 0)

−→A = (2, 2, 3, 3)

−−→MB = (0, 8, 1, 5)

−→CB = (0, 5, 0, 3)

−−→MC = (2, 2, 4, 2)

−→CC = (0, 2, 1, 0)

−−→MD = (2, 0, 0, 2)

−→CD = (1, 0, 0, 1)

Ist der Zustand sicher?

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 38/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung Deadlock-Verhinderung Deadlock-Vermeidung

Beispiel (2)

Wir betrachten nun die Anfrage LA = (2, 2, 0, 0), d.h. Prozess Amochte zwei weitere EUR und zwei weitere USD belegen.

Nach Aktualisierung (−→A :=

−→A −

−→LA und

−→CA :=

−→CA +

−→LA)

erhalten wir den Zustand:

Maximal-Werte Erhaltene Werte Verfugbare Ressourcen−−→MA = (4, 7, 1, 1)

−→CA = (3, 3, 0, 0)

−→A = (0, 0, 3, 3)

−−→MB = (0, 8, 1, 5)

−→CB = (0, 5, 0, 3)

−−→MC = (2, 2, 4, 2)

−→CC = (0, 2, 1, 0)

−−→MD = (2, 0, 0, 2)

−→CD = (1, 0, 0, 1)

Bleibt der Zustand sicher?

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 39/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Transactional Memory

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 40/67

Page 11: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Transactional Memory

Neuer Programmieransatz

Ziel: Programmier schreibt mehr oder weniger sequentiellenCode

System garantiert Deadlockfreiheit und evtl. noch mehr

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 41/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Motivation: Beispiel

Uberweisungen zwischen Konto A und B

Losung: Sperre Konten entsprechend einer totalen Ordnung

Erweiterung: Buche nur dann ab, wenn Konto gedeckt

Losung 1: Abort und Restart: Wenn Konto nicht gedeckt,starte von neuem. Birgt die Gefahr, immer wieder neu zustarten.

Losung 2: Warte bis Konto gedeckt (Sperren mussenaufgehoben werden!)

Fazit: Kleine Erweiterungen erfordern große Anderungen

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 42/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Lock-basierte Programmierung ist schlecht . . .

(Argumente von S. L. Peyton Jones)

Setzen zu weniger Locks: Programmierer vergisst eine Sperrezu setzen, Folge: Race Condition

Setzen zu vieler Locks: Programmierer ubervorsichtig:Folgen:

Programm unnotig sequentiell (Best-Case),Deadlock (Wort-Case)

Setzen der falschen Locks: Beziehung zwischen Sperren undDaten kennt nur der Programmierer. Compiler oder andereProgrammierer kennen die Beziehung evtl. nicht.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 43/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Lock-basierte Programmierung ist schlecht . . . (2)

Setzen von Locks in der falschen Reihenfolge: Das Total-OrderTheorem kann nur eingehalten werden, wenn jederProgrammierer weiß, wie die Ordnung der Locks aussieht.

Fehlerbehandlung schwierig, da bei Fehlerbehandlung Locksentsperrt werden mussen.

Vergessene signal-Operationen oder vergessenes erneutesPrufen von Bedingungen fuhrt zu fehlerhaften Systemen.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 44/67

Page 12: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Ein schlagendes Argument

Lock-basierte Programmierung ist nicht modular

Beispiel:

Buche von Konto A1 oder A2 auf Konto B, je nachdemwelches Konto gedeckt ist.

kann nicht aus den bestehenden Programmenzusammengesetzt werden

sondern erfordert neues Programm

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 45/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Transactional Memory: Idee

Datenbanksysteme sind nebenlaufig

Aus Anwendersicht jedoch: Kein Sperren o.a. notig

Anwender schreibt Anfragen, die als Transaktionen auf derDatenbank ausgefuhrt werden

Idee: Ubertrage dieses Modell fur die nebenlaufigeProgrammierung

Transaktionen auf dem gemeinsamen Speicher

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 46/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Transactional Memory: Stand der Technik

Es gibt einige (prototypische) Implementierungen

Es gibt Software Transactional Memory aber auchHardware Transactional Memory

Jede Menge Designunterschiede

Praxistauglichkeit noch nicht erwiesen

Transaktionsverwaltung ist Zeit- und Platzintensiv

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 47/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

ACID-Eigenschaften

Zunachst betrachten wir Datenbanktransaktionen.Diese mussen die ACID-Eigenschaften erfullen:

Atomicity: Alle Operationen einer Transaktion werdendurchgefuhrt, oder keine Operationen wird durchgefuhrt.Verboten: Operation schlagt fehl, aber Transaktion erfolgreichVerboten: fehlgeschlagene Transaktion hinterlasstbeobachtbare UnterschiedeEine erfolgreiche Transaktion commits,eine fehlgeschlagene Transaktion aborts

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 48/67

Page 13: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

ACID-Eigenschaften (2)

Consistency: Eine Transaktion verandert den Zustand derDatenbank. Diese Anderung muss konsistent sein.Konsistenz einer commited Transaktion hangt von derjeweiligen Anwendung ab. (z.B. der Kontostand einesBankkontos darf nicht beliebig groß negativ sein, oder ein neuhinzugefugtes Konto muss eine eindeutige Kontonummererhalten, usw.).

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 49/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

ACID-Eigenschaften (3)

Isolation: Eine Transaktion liefert ein korrektes Resultatunabhangig davon, wieviele weitere nebenlaufigeTransaktionen durchgefuhrt werden.

Durability: Das Ergebnis einer commited Transaktion istpermanent. D.h. es wird auf der Festplatte oder ahnlichespermant geschrieben, bevor die Transaktion als commitedgekennzeichnet werden darf.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 50/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Speichertransaktionen

A,C,I wunschenswert

Durability nicht moglich, da Hauptspeicher fluchtig.

Atomaritat nur gewahrleistet, wenn alle Operationen alsTransaktionen durchgefuhrt werden.

Weitere Anforderungen an TM:

Datenbanken konnen Zugriffszeiten auf Festplatten mitRechenzeit gegenrechnen, im Hauptspeicher geht das nicht,da Zugriffszeiten viel kurzer

TM muss in bestehende Programmiersprachen integriertwerden.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 51/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Basisoperationen von TM

atomic-Blocke:

atomic {Code der Transaktion

}

Code wird als Transaktion durchgefuhrt

Vorteil gegenuber Monitoren: Variablen mussen nicht explizitaufgezahlt werden.

Problem: Was passiert wenn gleiche Variable auch vonaußerhalb geandert wird?

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 52/67

Page 14: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Atomaritat ist nicht garantierbar

Transaktionen mussen abbrechen oder comitten, aber:

atomic {while True do skip;

}

Deswegen andere Semantik (anders als bei Datenbanken): DieAusfuhrung einer Transaktion (atomaren Blocks) hat drei moglicheErgebnisse:

commit, wenn die Transaktion erfolgreich war,

abort, wenn die Transaktion abgebrochen wurde

undefiniert, wenn die Transaktion nicht terminiert

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 53/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Abbrechen von Transaktion

Transaktionen brechen ab, wenn

Ein Konflikt auftritt, und der Transaktionsmanager aufAbbruch (und Roll-Back) entscheidetVerhalten normalerweise: Manager versucht die Transaktionerneut durchzufuhren

ein expliziter abort-Befehl aufgerufen wird.Verhalten normalerweise: Transaktion wird abgebrochen

atomic {Guthaben := Guthaben + Zins;if Guthaben < 0 then abort;

}

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 54/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Semantik von atomic

Programm verhalt sich, alsob fur alle atomic-Blocke einglobaler Lock verwendet wird.

Zugriff auf Transaktionsvariablen außerhalb von Transaktionenkann beliebigen Unsinn anstellen

Schreibender Zugriff: Variable wird verandert

Lesender Zugriff: Kann Werte beobachten, die noch nichtcomitted sind!

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 55/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Basisoperationen (2)

Der retry-BefehlErmoglicht es Transaktionen zu koordinieren

retry: Transaktion wird abgebrochen (Roll-back) und erneutgestartet

Beispiel: Bounded Buffer:

atomic{if isEmpty(buffer) then retry;Lese erstes Element des Puffers usw.

}

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 56/67

Page 15: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Basisoperationen (3)

Der orElse-BefehlGibt Alternativen vor, wenn Transaktionen abbrechen

T1 orElse T2.

Zunachst wird T1 durchfuhrt. Falls T1 commited oder T1

explizit via Befehl abgebrochen wird, dann wird T2 nichtausgefuhrt. Die Transaktion T1orElseT2 commited oderaborts, je nachdem was die Ausfuhrung von T1 macht.Falls T1 durch den Transaktionsmanager abgebrochen wirdoder retry ausgefuhrt wird, dann startet dieser T1 nicht neu,sondern versucht T2 durchzufuhren.Falls T2 explizit aborted oder commited, dann ist die gesamteTransaktion beendet.Falls T2 ein retry durchfuhrt (oder vom System abgebrochenwird), dann wird wieder mit T1orElseT2 gestartet.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 57/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

orElse-Schaubild

T1 orElse T2

T1 T2

T1orElseT2 commited T1orElseT2 aborted

T1 commitsT1 aborts

T1 retries

T2 aborts

T2 retries

T2 commits

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 58/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

orElse-Beispiel

atomic {{if A1 ≤ 0 then retry;B := B + Betrag;A1 := A1 - Betrag;

}orElse{if A2 ≤ 0 then retry;B := B + Betrag;A2 := A2 - Betrag;

}

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 59/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Merkmale von TM-Systemen

Weak / Strong Isolation

Weak Isolation: Speicherplatze konnen auch außerhalb vonTransaktionen manipuliert werden

Strong Isolation: Trennung in Transaktionsvariablen undandere Variable. System schutzt den Zugriff aufTransaktionsvariablen. Z.B. fugt der Compiler atomic-Blockeautomatisch ein.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 60/67

Page 16: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Merkmale von TM-Systemen (2)

Geschachtelte Transaktionen

x := 1atomic {

x:=2;atomic {

x:= 3;abort;

}}

Geglattete Transaktionen: Verhalten, alsob das innere atomicStatement fehlt. Beispiel ergibt abort (x=1).

Geschlossene Transaktionen: Verhalten wie bei geglatteten,aber innerer Abbruch fuhrt nicht zum Abbruch der außerenTransaktion. Beispiel ergibt x=2.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 61/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Merkmale von TM-Systemen (3)

Offene Transaktionen: Innere Transaktion sind eigenstandig.Sobald innere Transaktion committed, ist deren Effekt fur allesichtbar und bleibt sichtbar, selbst dann, wenn die außereTransaktion abbricht

x := 1atomic {

x:=2;atomic {

x:= 3;}abort;

}

Ergebnis: x = 3!

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 62/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Merkmale von TM-Systemen (4)

Granularitat

Welche Einheiten werden auf Konflikte uberwacht?

Wort-/ Blockgranularitat: Wenn paralleler Zugriff aufSpeicherworte, dann Konflikt

Objektgranularitat: Paralleler Zugriff auf ein Objekt fuhrt zumKonflikt

Beachte bei Objektgranularitat: Konflikt auch dann, wennunterschiedliche Objektattribute geandert werden

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 63/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Merkmale von TM-Systemen (5)

Direktes und verzogertes Update

Direktes Update:

Ausfuhrende Transaktionen modifizieren Objekte sofort.Erfordert Schutz vor gleichzeitigem Zugriff (ConcurrencyControl)Alte Werte werden in einem Log gespeichertAbbruch der Transaktion: Roll-Back und Recovery:Wiederherstellen der Daten aus dem Log

Verzogertes Update

Transaktionen erhalten lokale Kopien der ObjekteModifikation zunachst an den KopienBeim Commit: Originale werden durch lokale Kopien ersetztLogging: Wer hat welche Kopien, wer darf committen?

Direktes Update ist optimistisch, verzogertes Updatepessimistisch

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 64/67

Page 17: Nebenl¨aufige Programmierung: Praxis und Semantik Zugriff ... · l¨asst Situation nicht zu, die zu einem Deadlock f¨uhren k ¨onnen. 4 Deadlock-Verhinderung:Der Programmierer

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Merkmale von TM-Systemen (6)

Zeitpunkt der Konflikterkennung

Beim ersten Zugriff (Logging: Wer hat schon zugegriffen)

Iteratives Prufen (in Zeitabstanden)

Am Ende: Erst beim committen wird gepruft, ob ein Konfliktvorliegt

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 65/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Merkmale von TM-Systemen (7)

Konfliktmanagement

Beim Konflikt: Welche Transaktion wird abgebrochen?

Viele verschiedene Strategien

Ziel: Fortschritt des Gesamtsystems

Dadurch verboten: Breche alle Transaktionen ab

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 66/67

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale

Fazit

Transactional Memory noch in den Kinderschuhen

Hoffnung fur die Zukunft: Leichtere Programmierung mit TM

Problem: Transaktionen konnen nur Operationen sicherverarbeiten, die umkehrbar sind

Beispiele: Drucke”Hallo“,

”Launch Missiles“ etc.

TIDS – Globale Deadlocks – WS 2011/12 – D. Sabel 67/67


Recommended