Nebenläufige Programmierung: Praxis und Semantik. Zugriff auf mehrere Ressourcen

Ähnliche Dokumente
6.3 Verteilte Transaktionen

Synchronisierung von Transaktionen ohne Sperren. Annahme: Es gibt eine Methode, zu erkennen, wann eine Transaktion die serielle Ordnung verletzt.

Deadlocks. System hat nur begrenzte Ressourcen (Ressourcentypen) Hauptspeicher Externer Speicher Drucker File

Verklemmungen - Deadlocks

Betriebssysteme. Vorlesung im Herbstsemester 2010 Universität Mannheim. Kapitel 6: Speicherbasierte Prozessinteraktion

In diesem Abschnitt stehen Transaktionen im Mittelpunkt. Hierbei geht es darum, wie bei Mehrbenutzerbetrieb die Integrität von Datenbanken

Inhaltsverzeichnis. 4.1 Systemmodell und notwendige Bedingungen. 4.2 Gegenmaßnahmen

Deadlocks. Christoph Lindemann. Betriebssysteme. Betriebssysteme WS 2004/05. Fahrplan. Inhalt. Das Deadlock Problem

P.A. Bernstein, V. Hadzilacos, N. Goodman

Datenbanksysteme Technische Grundlagen Transaktions-Konzept, Mehrbenutzer-Synchronisation, Fehlerbehandlung

Konfliktgraph. Satz und Definition

Softwarelösungen: Versuch 4

Synchronisation in Datenbanksystemen in a nutshell

Tag 8 Repetitorium Informatik (Java)

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL

Software-Engineering und Datenbanken

Kapitel 5 Verklemmungsprobleme. Verklemmungsprobleme

Inhaltsverzeichnis. Inhaltsverzeichnis

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Übungen zur Vorlesung. Datenbanken I. WS 2002/2003 Blatt 4 MUSTERLÖSUNG

3. Übungsblatt zu Algorithmen I im SoSe 2017

9. Transaktionsverwaltung 9.3. Fehlerbehandlung Seite 1

Systemprogrammierung (Lehramt) Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2006 G-Verklemmungen.fm

Übung zu Grundlagen der Betriebssysteme. 10. Übung

CADSTAR MRP-Link. MRP-Link ist erstellt von:

Universität Karlsruhe (TH)

Übungen zur Vorlesung. Mobile und Verteilte Datenbanken. WS 2008/2009 Blatt 4. Lösung

Tafelübung zu BSRvS1. 3. Philosophen. Fortsetzung Grundlagen C-Programmierung

3. Philosophen. Tafelübung zu BSRvS1. Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund

Transactional Memory. Robert Brunel Technische Universität München

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben

Abschnitt 11: Korrektheit von imperativen Programmen

Vorlesung "Verteilte Systeme" Sommersemester Verteilte Systeme. Adreßraum. Rechner. Verteilte Systeme, Sommersemester 1999 Folie 19.

View. Arbeiten mit den Sichten:

2 Eine einfache Programmiersprache

Tag 3 Repetitorium Informatik (Java)

2 Teil 2: Nassi-Schneiderman

Datenbanken Konsistenz und Mehrnutzerbetrieb III

Übersicht. Nebenläufige Programmierung: Praxis und Semantik. Synchronisation (5) Bisher. Jetzt. Aktuelle Themen zu Informatik der Systeme: WS 2011/12

Prozessor (CPU, Central Processing Unit)

TAV Übung 3. Übung 3: Verteilte Datenhaltung

Klausur Nichtsequentielle Programmierung

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Klausur zur Vorlesung Grundlagen der Betriebssysteme

2.3 Prozessverwaltung

Datenbank- Verwaltungssysteme

Aufgaben zum Thema Verklemmungen

Parallele Prozesse. Prozeß wartet

Datenbanken: Transaktionskonzept und Concurrency Control

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

Berechenbarkeit und Komplexität Vorlesung 11

Multicore Programming: Transactional Memory

Verteilte Systeme. Replikation & Konsistenz I. Prof. Dr. Oliver Haase

Wechselseitiger Ausschluss in verteilten Systemen / Elektionsalgorithmen. Özden Urganci Ulf Sigmund Ömer Ekinci

Transaktionskonzept Eine Transaktion ist eine Folge von Operationen mit folgenden ACID Eigenschaften: Atomicity: Es werden alle Operationen oder gar k

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Dank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung

Greedy Algorithms - Gierige Algorithmen

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann

9 Verteilte Verklemmungserkennung

Tag 7 Repetitorium Informatik (Java)

Algorithmen implementieren. Implementieren von Algorithmen

JJ Prozesse und Nebenläufigkeit

Transaktionsverwaltung

Universität Karlsruhe (TH) Software Transactional Memory

Technische Informatik II

Einführung in Subversion

Datenbanken: Ablaufpläne und Serialisierbarkeit

Welche Informatik-Kenntnisse bringen Sie mit?

Invalidierungs- und Update-basierte Cache-Kohärenz-Protokolle

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel

Übungen zu Datenbanksysteme

Tag 4 Inhaltsverzeichnis

Übungen zur Vorlesung. Datenbanken I

Schleifen: Immer wieder dasselbe tun

Nebenläufige Programme mit Python

Ausnahmebehandlung in Java

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Linked Lists The Role of Locking

e) Welche Aussage zu Speicherzuteilungsverfahren ist falsch?

Transaktionen. Michael Löwe 04/15/16. FHDW Hannover, Freundallee 15, Hannover address:

Mächtigkeit von 2PL. Geben Sie einen Schedule S an, der. konfliktserialisierbar, jedoch nicht bei Anwendung von 2PL entstehbar. ist.

leave: mov flag, 0 ; 0 in flag speichern: Lock freigeben ret

Übung zu Grundlagen der Betriebssysteme. 11. Übung

Proseminar Nichtsequentielle Programmiersprachen

Die Anweisungen zweier Prozesse werden parallel bearbeitet, wenn die Anweisungen unabhängig voneinander zur gleichen Zeit ausgeführt werden.

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus

Entwurfsmuster und Softwarearchitekturen für sicherheitskritische Systeme

9. Foliensatz Betriebssysteme

Recovery- und Buffermanager

2.2 Der Algorithmus von Knuth, Morris und Pratt

VHDL Simulation. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011

Verteilte Systeme - 5. Übung

9. Vorlesung Betriebssysteme

Kapitel 4. Kontrollstrukturen

Nebenläufigkeit mit Java

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Verteilte Systeme. Verteilte Systeme. 7 Koordination SS 2017

Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik

Transkript:

Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik Zugriff auf mehrere Ressourcen WS 2009/10

Deadlocks bei mehreren Ressourcen Transactional Memory Übersicht 1 Deadlocks bei mehreren Ressourcen Einleitung Deadlock-Verhinderung Deadlock-Vermeidung 2 Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale TIDS Globale Deadlocks WS 2009/10 D. Sabel 2/60

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 möchte Kommt dem Belegen einer Ressource frei TIDS Globale Deadlocks WS 2009/10 D. Sabel 3/60

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, dass nur eine anderer Prozess herbei führen kann. TIDS Globale Deadlocks WS 2009/10 D. Sabel 4/60

Beispiele Mutual-Exclusion Problem: Deadlock, wenn es nicht mehr möglich ist, dass irgendein Prozess den kritischen Abschnitt betritt, obwohl alle Prozesse in den kritischen Abschnitt möchten TIDS Globale Deadlocks WS 2009/10 D. Sabel 5/60

Beispiele (2) Zwei Prozesse machen Umbuchungen zwischen Konto A und Konto B. Vorgehensweise: Sperren des ersten Kontos Sperren des zweiten Kontos Überweisung von erstem Konto auf zweites Konto durchführen Entsperren der Konten. Prozess P wait(kontoa); wait(kontob); buche von A nach B signal(kontoa); signal(kontob); Prozess Q wait(kontob); wait(kontoa); buche von B nach A signal(kontob); signal(kontoa); TIDS Globale Deadlocks WS 2009/10 D. Sabel 6/60

Beispiele (2) Zwei Prozesse machen Umbuchungen zwischen Konto A und Konto B. Vorgehensweise: Sperren des ersten Kontos Sperren des zweiten Kontos Überweisung von erstem Konto auf zweites Konto durchführen Entsperren der Konten. Prozess P wait(kontoa); wait(kontob); buche von A nach B signal(kontoa); signal(kontob); Prozess Q wait(kontob); wait(kontoa); buche von B nach A signal(kontob); signal(kontoa); TIDS Globale Deadlocks WS 2009/10 D. Sabel 6/60

Beispiele (2) Zwei Prozesse machen Umbuchungen zwischen Konto A und Konto B. Vorgehensweise: Sperren des ersten Kontos Sperren des zweiten Kontos Überweisung von erstem Konto auf zweites Konto durchführen Entsperren der Konten. Prozess P wait(kontoa); wait(kontob); buche von A nach B signal(kontoa); signal(kontob); Prozess Q wait(kontob); wait(kontoa); buche von B nach A signal(kontob); signal(kontoa); TIDS Globale Deadlocks WS 2009/10 D. Sabel 6/60

Beispiele (2) Zwei Prozesse machen Umbuchungen zwischen Konto A und Konto B. Vorgehensweise: Sperren des ersten Kontos Sperren des zweiten Kontos Überweisung von erstem Konto auf zweites Konto durchführen Entsperren der Konten. Prozess P wait(kontoa); wait(kontob); buche von A nach B signal(kontoa); signal(kontob); Deadlock! Prozess Q wait(kontob); wait(kontoa); buche von B nach A signal(kontob); signal(kontoa); TIDS Globale Deadlocks WS 2009/10 D. Sabel 6/60

Beispiele (3) Funktionierende Lösung (Deadlock-frei) Prozess P Prozess Q wait(kontoa); wait(kontoa); wait(kontob); wait(kontob); buche von A nach B buche von B nach A signal(kontoa); signal(kontoa); signal(kontob); signal(kontob); TIDS Globale Deadlocks WS 2009/10 D. Sabel 7/60

Beispiele (3) Funktionierende Lösung (Deadlock-frei) Prozess P Prozess Q wait(kontoa); wait(kontoa); wait(kontob); wait(kontob); buche von A nach B buche von B nach A signal(kontoa); signal(kontoa); signal(kontob); signal(kontob); TIDS Globale Deadlocks WS 2009/10 D. Sabel 7/60

Beispiele (3) Funktionierende Lösung (Deadlock-frei) Prozess P Prozess Q wait(kontoa); wait(kontoa); wait(kontob); wait(kontob); buche von A nach B buche von B nach A signal(kontoa); signal(kontoa); signal(kontob); signal(kontob); TIDS Globale Deadlocks WS 2009/10 D. Sabel 7/60

Beispiele (3) Funktionierende Lösung (Deadlock-frei) Prozess P Prozess Q wait(kontoa); wait(kontoa); wait(kontob); wait(kontob); buche von A nach B buche von B nach A signal(kontoa); signal(kontoa); signal(kontob); signal(kontob); TIDS Globale Deadlocks WS 2009/10 D. Sabel 7/60

Beispiele (4) Ähnliches Problem bei: Speisende Philosophen Deadlock möglich, wenn alle Philosophen unsychronisiert Alle haben die linke Gabel keiner die rechte. TIDS Globale Deadlocks WS 2009/10 D. Sabel 8/60

Beispiele (5) Engstelle Nur ein Fahrzeug kann passieren TIDS Globale Deadlocks WS 2009/10 D. Sabel 9/60

Deadlock-Behandlung Vier Ansätze 1 Ignorieren: Keine Vorkehrungen, Hoffnung, dass Deadlocks nur selten auftreten. TIDS Globale Deadlocks WS 2009/10 D. Sabel 10/60

Deadlock-Behandlung Vier Ansätze 1 Ignorieren: Keine Vorkehrungen, Hoffnung, dass Deadlocks nur selten auftreten. 2 Deadlock-Erkennung und -Beseitigung: Laufzeitsystem erkennt Deadlocks und beseitigt sie. Problem: Finde Algorithmus der Deadlocks erkennt. TIDS Globale Deadlocks WS 2009/10 D. Sabel 10/60

Deadlock-Behandlung Vier Ansätze 1 Ignorieren: Keine Vorkehrungen, Hoffnung, dass Deadlocks nur selten auftreten. 2 Deadlock-Erkennung und -Beseitigung: Laufzeitsystem erkennt Deadlocks und beseitigt sie. Problem: Finde Algorithmus der Deadlocks erkennt. 3 Deadlock-Vermeidung: Algorithmus verwaltet Ressourcen und lässt Situation nicht zu, die zu einem Deadlock führen können. TIDS Globale Deadlocks WS 2009/10 D. Sabel 10/60

Deadlock-Behandlung Vier Ansätze 1 Ignorieren: Keine Vorkehrungen, Hoffnung, dass Deadlocks nur selten auftreten. 2 Deadlock-Erkennung und -Beseitigung: Laufzeitsystem erkennt Deadlocks und beseitigt sie. Problem: Finde Algorithmus der Deadlocks erkennt. 3 Deadlock-Vermeidung: Algorithmus verwaltet Ressourcen und lässt Situation nicht zu, die zu einem Deadlock führen können. 4 Deadlock-Verhinderung: Der Programmierer entwirft die Programme so, dass Deadlocks nicht auftreten können. TIDS Globale Deadlocks WS 2009/10 D. Sabel 10/60

Deadlock-Behandlung (2) Offensichtlich: Beste Methode: Deadlock-Verhinderung Dafür muss man wissen: Unter welchen Umständen kann ein Deadlock auftreten? Im folgenden: Bedingungen für Deadlock und Deadlock-Verhinderung TIDS Globale Deadlocks WS 2009/10 D. Sabel 11/60

Wann tritt Deadlock auf? Vier notwendige Bedingungen (alle gleichzeitig erfüllt): 1 Wechselseitiger Ausschluss (Mutual Exclusion): Nur ein Prozess kann gleichzeitig auf eine Ressource zugreifen, TIDS Globale Deadlocks WS 2009/10 D. Sabel 12/60

Wann tritt Deadlock auf? Vier notwendige Bedingungen (alle gleichzeitig erfüllt): 1 Wechselseitiger Ausschluss (Mutual Exclusion): Nur ein Prozess kann gleichzeitig auf eine Ressource zugreifen, 2 Halten und Warten (Hold and Wait): Ein Prozess kann eine Ressource anfordern (auf eine Ressource warten), während er eine andere Ressource bereits belegt hat. TIDS Globale Deadlocks WS 2009/10 D. Sabel 12/60

Wann tritt Deadlock auf? Vier notwendige Bedingungen (alle gleichzeitig erfüllt): 1 Wechselseitiger Ausschluss (Mutual Exclusion): Nur ein Prozess kann gleichzeitig auf eine Ressource zugreifen, 2 Halten und Warten (Hold and Wait): Ein Prozess kann eine Ressource anfordern (auf eine Ressource warten), während er eine andere Ressource bereits belegt hat. 3 Keine Bevorzugung (No Preemption): Jede Ressource kann nur durch den Prozess freigegeben (entsperrt) werden, der sie belegt hat. TIDS Globale Deadlocks WS 2009/10 D. Sabel 12/60

Wann tritt Deadlock auf? Vier notwendige Bedingungen (alle gleichzeitig erfüllt): 1 Wechselseitiger Ausschluss (Mutual Exclusion): Nur ein Prozess kann gleichzeitig auf eine Ressource zugreifen, 2 Halten und Warten (Hold and Wait): Ein Prozess kann eine Ressource anfordern (auf eine Ressource warten), während er eine andere Ressource bereits belegt hat. 3 Keine Bevorzugung (No Preemption): Jede Ressource kann nur durch den Prozess freigegeben (entsperrt) werden, der sie belegt hat. 4 Zirkuläres Warten: Es gibt zyklische Abhängigheit zwischen wartenden Prozessen: Jeder wartende Prozesse möchte Zugriff auf die Ressource, die der nächste Prozesse im Zyklus belegt hat. TIDS Globale Deadlocks WS 2009/10 D. Sabel 12/60

Deadlock-Verhinderung Ansatz: Greife eine der vier Bedingungen an, so dass sie nie wahr wird. Mutual Exclusion: Im allgemeinen schwer möglich, manchmal aber schon: Bsp. Druckerzugriff wird durch Spooler geregelt. No Preemption: Schwierig, man kann z.b. nicht den Zugriff auf den Drucker entziehen, wenn Prozess noch nicht fertig gedruckt usw. TIDS Globale Deadlocks WS 2009/10 D. Sabel 13/60

Verhindern von Hold and Wait Möglichkeit: Prozess fordert zu Beginn alle Ressourcen an, die er benötigt. Philosophen: Exklusiver Zugriff auf alle Gabeln 1. Problem: Evtl. zu sequentiell 2. Problem: Oft nicht klar, welche Ressourcen Prozess braucht Variation dieser Lösung: 2-Phasen Sperrprotokoll TIDS Globale Deadlocks WS 2009/10 D. Sabel 14/60

2-Phasen Sperrprotokoll Die Prozesse arbeiten in zwei Phasen 1. Phase: Alle Prozesse versuchen alle benötigen Ressourcen zu belegen. Ist eine benötigte Ressource nicht frei, so gibt der Prozess alle belegten Ressourcen zurück. 2. Phase: Nachdem die Prozesse (welche die benötigten Ressourcen in Phase 1 erhalten haben), fertig gerechnet haben, geben sie alle Ressourcen frei. TIDS Globale Deadlocks WS 2009/10 D. Sabel 15/60

Beispiel: Speisende Philosophen Initial alle Gabeln (Semaphoren) mit 1 initialisiert trywait: Nicht-blockierende Implementierung von wait trywait liefert True, wenn Semaphore belegt werden konnte, ansonsten False Phase 1, Phase 2 Philosoph i loop 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 TIDS Globale Deadlocks WS 2009/10 D. Sabel 16/60

Beispiel: Speisende Philosophen Initial alle Gabeln (Semaphoren) mit 1 initialisiert trywait: Nicht-blockierende Implementierung von wait trywait liefert True, wenn Semaphore belegt werden konnte, ansonsten False Phase 1, Phase 2 Philosoph i loop 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 Deadlock nicht möglich! TIDS Globale Deadlocks WS 2009/10 D. Sabel 16/60

Beispiel: Speisende Philosophen Initial alle Gabeln (Semaphoren) mit 1 initialisiert trywait: Nicht-blockierende Implementierung von wait trywait liefert True, wenn Semaphore belegt werden konnte, ansonsten False Phase 1, Phase 2 Philosoph i loop 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 Deadlock nicht möglich! Aber Livelock! TIDS Globale Deadlocks WS 2009/10 D. Sabel 16/60

Timestamping-Ordering Prozesse erhalten eindeutigen Zeitstempel, wenn sie beginnen. Zwei-Phasen Sperrprotokoll mit Timestamping 1. Phase: Jeder Prozess versucht alle benötigten Ressourcen auf einmal zu sperren. Ist benötigte Ressource belegt mit kleinerem Zeitstempel, dann gibt Prozess alle Ressourcen frei. Ist eigener Zeitstempel kleiner, dann wartet Prozess auf die restlichen Ressourcen. 2. Phase: Wie vorher. TIDS Globale Deadlocks WS 2009/10 D. Sabel 17/60

Timestamping-Ordering (2) Deadlock-frei Livelock nicht möglich Starvation-frei. Definition Starvation ist eine Situation, in der ein Prozess niemals (nach beliebig vielen Berechnungsschritten) in der Lage ist, alle benötigten Ressourcen zu belegen. TIDS Globale Deadlocks WS 2009/10 D. Sabel 18/60

Zirkuläres Warten verhindern Versuche das zirkuläre Warten zu verhindern. Philosophen-Problem: N. Prozess hebt zuerst rechte Gabel Dann kann kein zirkuläres Warten enstehen Denn die Gabel wurden total geordnet: 1 < 2... N. Und Philosophen haben Ressourcen entsprechend dieser Ordnung belegt. TIDS Globale Deadlocks WS 2009/10 D. Sabel 19/60

Total-Order Theorem Allgemein gilt: Total-Order Theorem Sind alle gemeinsamen Ressourcen durch eine totale Ordnung geordnet und jeder Prozess belegt seine benötigten Ressourcen in aufsteigender Reihenfolge bezüglich der totalen Ordnung, dann ist ein Deadlock unmöglich. Beweis: Die Bedingung des zirkulären Wartens kann in diesem Fall niemals erfüllt werden. TIDS Globale Deadlocks WS 2009/10 D. Sabel 20/60

Total Order Theorem (2) Man kann nachweisen: Lemma Ein Deadlock-freies System, indem die Belegung von (allen) einzelnen Ressourcen Starvation-frei ist, ist auch insgesamt Starvation-frei Mit dem Total Order Theorem lässt sich folgern: Wenn es eine totale Ordnung der Ressourcen gibt, die Ressourcen entsprechend dieser Ordnung belegt werden und die Belegung einzelner Ressourcen Starvation-frei ist, dann ist das Gesamtsystem Starvation-frei. TIDS Globale Deadlocks WS 2009/10 D. Sabel 21/60

Deadlock-Vermeidung Erinnerung: Deadlock-Vermeidung: Algorithmus verwaltet Ressourcen und lässt Situation nicht zu, die zu einem Deadlock führen können. Im folgenden: Beispiel von Dijkstra zur Deadlock-Vermeidung: Problem des Deadly Embrace Lösung: Bankier-Algorithmus TIDS Globale Deadlocks WS 2009/10 D. Sabel 22/60

Deadly Embrace Annahme: Es gibt m gleiche Ressourcen Jeder Prozesse P i benötigt eine gewisse Zahl m i m dieser Ressource Prozesse fordern Ressourcen nach und nach an Die maximal benötigte Anzahl m i ist beim Start bekannt Hat ein Prozess seine maximale Anzahl, terminiert er und gibt die Ressourcen zurück. Problem: Implementiere Ressourcenverwalter TIDS Globale Deadlocks WS 2009/10 D. Sabel 23/60

Dijkstra s Veranschaulichung Ressource: Geld Prozesse sind Bankkunden Ressourcenverwalter: Bankier TIDS Globale Deadlocks WS 2009/10 D. Sabel 24/60

Deadlock-Vermeidung: Beispiel Vorhandene Ressourcen am Anfang: 98 EUR 2 Kunden, beide benötigen 50 EUR Beide Kunden haben bereits 48 EUR erhalten Beide Kunden fordern 1 EUR an. Soll der Bankier beide Anforderungen zulassen? TIDS Globale Deadlocks WS 2009/10 D. Sabel 25/60

Deadlock-Vermeidung: Beispiel Vorhandene Ressourcen am Anfang: 98 EUR 2 Kunden, beide benötigen 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. TIDS Globale Deadlocks WS 2009/10 D. Sabel 25/60

Deadlock-Vermeidung: Beispiel Vorhandene Ressourcen am Anfang: 98 EUR 2 Kunden, beide benötigen 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? TIDS Globale Deadlocks WS 2009/10 D. Sabel 25/60

Deadlock-Vermeidung: Beispiel Vorhandene Ressourcen am Anfang: 98 EUR 2 Kunden, beide benötigen 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 muss nicht eintreten TIDS Globale Deadlocks WS 2009/10 D. Sabel 25/60

Lösungsversuch Naive Lösung: Kunden erhalten Reihenfolge Bankier bedient immer einen Kunden, bis er seinen maximalen Betrag erhalten hat Alle andere Kunden müssen warten TIDS Globale Deadlocks WS 2009/10 D. Sabel 26/60

Lösungsversuch Naive Lösung: Kunden erhalten Reihenfolge Bankier bedient immer einen Kunden, bis er seinen maximalen Betrag erhalten hat Alle andere Kunden müssen warten Schlecht, da sequentieller Algorithmus TIDS Globale Deadlocks WS 2009/10 D. Sabel 26/60

Lösungsversuch Naive Lösung: Deshalb: Kunden erhalten Reihenfolge Bankier bedient immer einen Kunden, bis er seinen maximalen Betrag erhalten hat Alle andere Kunden müssen warten Schlecht, da sequentieller Algorithmus Zusätzliche Anforderung: Erlaube soviel Nebenläufigkeit wie möglich Lehne nur dann Anfrage ab, wenn der Zustand dann unsicher würde, d.h. ein Deadlock eintreten muss TIDS Globale Deadlocks WS 2009/10 D. Sabel 26/60

Bankier-Algorithmus: Datenstrukturen Annahme: Verschiedene Ressourcen, z.b. mehrere Währungen Vektor A: Aktueller Vorrat in der Bank. Jede Komponente von A ist nicht-negative Ganzzahl und stellt Vorrat einer Währung dar P Menge der Kunden (Prozesse). Für P P sei: M P der Vektor der maximal durch Prozess P anzufordernden Ressourcen C P der Vektor der bereits an Prozess P vergebenen Ressourcen TIDS Globale Deadlocks WS 2009/10 D. Sabel 27/60

Bankier-Algorithmus: Sicherer Zustand sicher = es kann kein Deadlock in der Zukunft eintreten Ein Zustand (mit all seinen Vektoren) ist sicher, wenn es eine Permutation π der Prozesse P 1,..., P n P gibt, sodass es für jeden Prozesse P i entsprechend der Reihenfolge der Permutation genügend Ressourcen gibt, wenn er dran ist. Genügend Ressourcen bedeutet hierbei: A + M Pi + C Pi 0 π(j)<π(i) C Pπj Zu den aktuell verfügbaren Ressourcen A dürfen momentan vergebenen Ressourcen hinzuaddiert werden, deren zugehörige Prozesse entsprechend der Permutation vor P i vollständig bedient werden. TIDS Globale Deadlocks WS 2009/10 D. Sabel 28/60

Bankier-Algorithmus: Grundgerüst Bankier erhält eine Ressourcenanfrage L P eines Prozesses P P. Konsitenzbedingung: L P + C P MP Bankier berechnet den Folgezustand, alsob P die Ressourcen erhält, d.h. A := A LP C P := C P + L P Anschließend: Teste ob Zustand noch sicher Wenn unsicher, dann stelle Ursprungszustand her und lasse P warten Wenn Kunde maximale Ressourcen erhält wird A automatisch angepasst, TIDS Globale Deadlocks WS 2009/10 D. Sabel 29/60

Bankier-Algorithmus: Test auf Sicherheit while (P 0) do found := False; foreach P P do if MP C P A then // Wenn P komplett ausführbar, // dann führe P komplett aus // und passe A an A := A + CP ; // entferne P P := P \ {P }; found := True; if found = False then return unsafe return safe TIDS Globale Deadlocks WS 2009/10 D. Sabel 30/60

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 C P (genügend Ressourcen vorhanden um P komplett zu bedienen) dann ist nach Anfrage L P der Zustand immer sicher (Test muss nicht ausgeführt werden) TIDS Globale Deadlocks WS 2009/10 D. Sabel 31/60

Beispiel 4 Ressourcen (EUR, USD, JYN, SFR) 4 Prozesse A, B, C, D Aktueller Zustand Maximal-Werte Erhaltene Werte Verfügbare Ressourcen M A = (4, 7, 1, 1) C A = (1, 1, 0, 0) A = (2, 2, 3, 3) M B = (0, 8, 1, 5) C B = (0, 5, 0, 3) M C = (2, 2, 4, 2) C C = (0, 2, 1, 0) M D = (2, 0, 0, 2) C D = (1, 0, 0, 1) Ist der Zustand sicher? TIDS Globale Deadlocks WS 2009/10 D. Sabel 32/60

Beispiel (2) Wir betrachten nun die Anfrage L B = (0, 2, 0, 0), d.h. Prozess B möchte zwei weitere USD belegen. Nach Aktualisierung ( A := A L B und C B := C B + L B ) erhalten wir den Zustand: Maximal-Werte Erhaltene Werte Verfügbare Ressourcen M A = (4, 7, 1, 1) C A = (1, 1, 0, 0) A = (2, 0, 3, 3) M B = (0, 8, 1, 5) C B = (0, 7, 0, 3) M C = (2, 2, 4, 2) C C = (0, 2, 1, 0) M D = (2, 0, 0, 2) C D = (1, 0, 0, 1) Bleibt der Zustand sicher? TIDS Globale Deadlocks WS 2009/10 D. Sabel 33/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Transactional Memory TIDS Globale Deadlocks WS 2009/10 D. Sabel 34/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Transactional Memory Neuer Programmieransatz Ziel: Programmier schreibt mehr oder weniger sequentiellen Code System garantiert Deadlockfreiheit und evtl. noch mehr TIDS Globale Deadlocks WS 2009/10 D. Sabel 35/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Motivation: Beispiel Überweiungen zwischen Konto A und B Lösung: Sperre Konten entsprechend einer totalen Ordnung TIDS Globale Deadlocks WS 2009/10 D. Sabel 36/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Motivation: Beispiel Überweiungen zwischen Konto A und B Lösung: Sperre Konten entsprechend einer totalen Ordnung Erweiterung: Buche nur dann ab, wenn Konto gedeckt TIDS Globale Deadlocks WS 2009/10 D. Sabel 36/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Motivation: Beispiel Überweiungen zwischen Konto A und B Lösung: Sperre Konten entsprechend einer totalen Ordnung Erweiterung: Buche nur dann ab, wenn Konto gedeckt Lösung 1: Abort und Restart TIDS Globale Deadlocks WS 2009/10 D. Sabel 36/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Motivation: Beispiel Überweiungen zwischen Konto A und B Lösung: Sperre Konten entsprechend einer totalen Ordnung Erweiterung: Buche nur dann ab, wenn Konto gedeckt Lösung 1: Abort und Restart Lösung 2: Warte bis Konto gedeckt (Sperren müssen aufgehoben werden!) TIDS Globale Deadlocks WS 2009/10 D. Sabel 36/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Motivation: Beispiel Überweiungen zwischen Konto A und B Lösung: Sperre Konten entsprechend einer totalen Ordnung Erweiterung: Buche nur dann ab, wenn Konto gedeckt Lösung 1: Abort und Restart Lösung 2: Warte bis Konto gedeckt (Sperren müssen aufgehoben werden!) Fazit: Kleine Erweiterungen erfordern große Änderungen TIDS Globale Deadlocks WS 2009/10 D. Sabel 36/60

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 Sperre zu setzen, Folge: Race Condition Setzen zu vieler Locks: Programmierer übervorsichtigt: Folgen: Programm unnötig sequentiell (Best-Case), Deadlock (Wort-Case) Setzen der falschen Locks: Beziehung zwischen Sperren und Daten kennt nur der Programmierer. Compiler oder andere Programmierer kennen die Beziehung evtl. nicht. TIDS Globale Deadlocks WS 2009/10 D. Sabel 37/60

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-Order Theorem kann nur eingehalten werden, wenn jeder Programmierer weiß, wie die Ordnung der Locks aussieht. Fehlerbehandlung schwierig, da bei Fehlerbehandlung Locks entsperrt werden müssen. Vergessene signal-operationen oder vergessenes erneutes Prüfen von Bedingungen führt zu fehlerhaften Systemen. TIDS Globale Deadlocks WS 2009/10 D. Sabel 38/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Ein schlagendes Argument Beispiel: Lock-basierte Programmierung ist nicht modular Buche von Konto A 1 oder A 2 auf Konto B, je nachdem welches Konto gedeckt ist. TIDS Globale Deadlocks WS 2009/10 D. Sabel 39/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Ein schlagendes Argument Beispiel: Lock-basierte Programmierung ist nicht modular Buche von Konto A 1 oder A 2 auf Konto B, je nachdem welches Konto gedeckt ist. kann nicht aus den bestehenden Programmen zusammengesetzt werden sondern erfordert neues Programm TIDS Globale Deadlocks WS 2009/10 D. Sabel 39/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Transactional Memory: Idee Datenbanksysteme sind nebenläufig Aus Anwendersicht jedoch: Kein Sperren o.ä. nötig Anwender schreibt Anfragen, die als Transaktionen auf der Datenbank ausgeführt werden Idee: Übertrage dieses Modell für die nebenläufige Programmierung Transaktionen auf dem gemeinsamen Speicher TIDS Globale Deadlocks WS 2009/10 D. Sabel 40/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Transactional Memory: Stand der Technik Es gibt einige prototypische Implementierung Es gibt Software Transactional Memory aber auch Hardware Transactional Memory Jede Menge Designunterschiede Praxistauglichkeit noch nicht erwieden Transaktionsverwaltung ist Zeit- und Platzintensiv TIDS Globale Deadlocks WS 2009/10 D. Sabel 41/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale ACID-Eigenschaften Zunächst betrachten wir Datenbanktransaktionen. Diese müssen die ACID-Eigenschaften erfüllen: Atomicity: Alle Operationen einer Transaktion werden durchgeführt, oder keine Operationen wird durchgeführt. Verboten: Operation schlägt fehl, aber Transaktion erfolgreich Verboten: fehlgeschlagene Transaktion hinterlässt beobachtbare Unterschiede Eine erfolgreiche Transaktion commits, eine fehlgeschlagene Transaktion aborts TIDS Globale Deadlocks WS 2009/10 D. Sabel 42/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale ACID-Eigenschaften (2) Consistency: Eine Transaktion verändert den Zustand der Datenbank. Diese Änderung muss konsistent sein. Konsistenz einer commited Transaktion hängt von der jeweiligen Anwendung ab. (z.b. der Kontostand eines Bankkontos darf nicht beliebig groß negativ sein, oder ein neu hinzugefügtes Konto muss eine eindeutige Kontonummer erhalten, usw.). TIDS Globale Deadlocks WS 2009/10 D. Sabel 43/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale ACID-Eigenschaften (3) Isolation: Eine Transaktion liefert ein korrektes Resultat unabhängig davon, wieviele weitere nebenläufige Transaktion durchgeführt werden. Durability: Das Ergebnis einer commited Transaktion ist permanent. D.h. es wird auf der Festplatte oder ähnliches permant geschrieben, bevor die Transaktion als commited gekennzeichnet werden darf. TIDS Globale Deadlocks WS 2009/10 D. Sabel 44/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Speichertransaktionen A,C,I wünschenswert Durability nicht möglich, da Hauptspeicher flüchtig. Atomarität nur gewährleistet, wenn alle Operationen als Transaktionen durchgeführt werden. Weitere Anforderungen an TM: Datenbanken können Zugriffszeiten auf Festplatten mit Rechenzeit gegenrechnen, im Hauptspeicher geht das nicht, da Zugriffszeiten viel kürzer TM muss in bestehende Programmiersprachen integriert werden. TIDS Globale Deadlocks WS 2009/10 D. Sabel 45/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Basisoperationen von TM atomic-blöcke: atomic { Code der Transaktion } Code wird als Transaktion durchgeführt Vorteil gegenüber Monitoren: Variablen müssen nicht explizit aufgezählt werden. Problem: Was passiert wenn gleiche Variable auch von außerhalb geändert wird? TIDS Globale Deadlocks WS 2009/10 D. Sabel 46/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Atomarität ist nicht garantierbar Transaktionen müssen abbrechen oder comitten, aber: atomic { while True do skip; } Deswegen andere Semantik (anders als bei Datenbanken): Die Ausführung einer Transaktion (atomaren Blocks) hat drei mögliche Ergebnisse: commit, wenn die Transaktion erfolgreich war, abort, wenn die Transaktion abgebrochen wurde undefiniert, wenn die Transaktion nicht terminiert TIDS Globale Deadlocks WS 2009/10 D. Sabel 47/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Abbrechen von Transaktion Transaktionen brechen ab, wenn Ein Konflikt auftritt, und der Transaktionsmanager auf Abbruch (und Roll-Back) entscheidet Verhalten normalerweise: Manager versucht die Transaktion erneut durchzuführen ein expliziter abort-befehl aufgerufen wird. Verhalten normalerweise: Transaktion wird abgebrochen atomic { Guthaben := Guthaben + Zins; if Guthaben < 0 then abort; } TIDS Globale Deadlocks WS 2009/10 D. Sabel 48/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Semantik von atomic Programm verhält sich, alsob für alle atomic-blöcke ein globaler Lock verwendet wird. Zugriff auf Transaktionsvariablen außerhalb von Transaktionen kann beliebigen Unsinn anstellen Schreibender Zugriff: Variable wird verändert Lesender Zugriff: Kann Werte beobachten, die noch nicht comitted sind! TIDS Globale Deadlocks WS 2009/10 D. Sabel 49/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Basisoperationen (2) Der retry-befehl Ermöglicht es Transaktionen zu koordinieren retry: Transaktion wird abgebrochen (Roll-back) und erneut gestartet Beispiel: Bounded Buffer: atomic{ if isempty(buffer) then retry; Lese erstes Element des Puffers usw. } TIDS Globale Deadlocks WS 2009/10 D. Sabel 50/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Basisoperationen (3) Der orelse-befehl Gibt Alternativen vor, wenn Transaktionen abbrechen T 1 orelse T 2. Zunächst wird T 1 durchführt. Falls T 1 commited oder T 1 explizit via Befehl abgebrochen wird, dann wird T 2 nicht ausgeführt. Die Transaktion T 1 orelset 2 commited oder aborts, je nachdem was die Ausführung von T 1 macht. Falls T 1 durch den Transaktionsmanager abgebrochen wird oder retry ausgeführt wird, dann startet dieser T 1 nicht neu, sondern versucht T 2 durchzuführen. Falls T 2 explizit aborted oder commited, dann ist die gesamte Transaktion beendet. Falls T 2 ein retry durchführt (oder vom System abgebrochen wird), dann wird wieder mit T 1 orelset 2 gestartet. TIDS Globale Deadlocks WS 2009/10 D. Sabel 51/60

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 2009/10 D. Sabel 52/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Merkmale von TM-Systemen Weak / Strong Isolation Weak Isolation: Speicherplätze können auch außerhalb von Transaktionen manipuliert werden Strong Isolation: Trennung in Transaktionsvariablen und andere Variable. System schützt den Zugriff auf Transaktionsvariablen. Z.B. fügt der Compiler atomic-blöcke automatisch ein. TIDS Globale Deadlocks WS 2009/10 D. Sabel 53/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Merkmale von TM-Systemen (2) Geschachtelte Transaktionen x := 1 atomic { x:=2; atomic { x:= 3; abort; } } Geglättete Transaktionen: Verhalten, alsob das innere atomic Statement fehlt. Beispiel ergibt abort (x=1). Geschlossene Transaktionen: Verhalten wie bei geglätteten, aber innerer Abbruch führt nicht zum Abbruch der äußeren Transaktion. Beispiel ergibt x=2. TIDS Globale Deadlocks WS 2009/10 D. Sabel 54/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Merkmale von TM-Systemen (3) Offene Transaktionen: Innere Transaktion sind eigenständig. Sobald innere Transaktion committed ist Effekt für alle sichtbar und bleibt sichtbar selbst wenn äußere abbricht Ergebnis: x = 3! x := 1 atomic { x:=2; atomic { x:= 3; } abort; } TIDS Globale Deadlocks WS 2009/10 D. Sabel 55/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Merkmale von TM-Systemen (4) Granularität Welche Einheiten werden auf Konflikte überwacht? Wort-/ Blockgranularität: Wenn paralleler Zugriff auf Speicherworte, dann Konflikt Objektgranularität: Paralleler Zugriff auf ein Objekt führt zum Konflikt Beachte bei Objektgranularität: Konflikt auch dann, wenn unterschiedliche Objektattribute geändert werden TIDS Globale Deadlocks WS 2009/10 D. Sabel 56/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Merkmale von TM-Systemen (5) Direktes und verzögertes Update Direktes Update: Ausführende Transaktionen modifizieren Objekte sofort. Erfordert Schutz vor gleichzeitigem Zugriff (Concurrency Control) Alte Werte werden in einem Log gespeichert Abbruch der Transaktion: Roll-Back und Recovery: Wiederherstellen der Daten aus dem Log Verzögertes Update Transaktionen erhalten lokale Kopien der Objekte Modifikation zunächst an den Kopien Beim Commit: Originale werden durch lokale Kopien ersetzt Logging: Wer hat welche Kopien, wer darf committen? Direktes Update ist optimistisch, verzögertes Update pessimistisch TIDS Globale Deadlocks WS 2009/10 D. Sabel 57/60

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 Prüfen (in Zeitabständen) Am Ende: Erst beim committen wird geprüft, ob ein Konflikt vorliegt TIDS Globale Deadlocks WS 2009/10 D. Sabel 58/60

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 2009/10 D. Sabel 59/60

Deadlocks bei mehreren Ressourcen Transactional Memory Einleitung ACID-Eigenschaften Operationen Merkmale Fazit Transactional Memory noch in den Kinderschuhen Hoffnung für die Zukunft: Leichtere Programmierung mit TM Problem: Transaktionen können nur Operationen sicher verarbeiten, die umkehrbar sind Beispiele: Drucke Hallo, Launch Missiles etc. TIDS Globale Deadlocks WS 2009/10 D. Sabel 60/60