Seminar Objektorientierte Programmierung

Werbung
Ausschluss-Synchronisation
zusammengesetzter Objekte
Seminar
Objektorientierte
Programmiersprachen
Sofoklis Papadopoulos
WS 2003/04
24.11.2003
1
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Sperrsynchronisation
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte (herausgenommen)
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
2
1. Einleitung
Ausschlußsynchronisation
zusammengsetzter Objekte
3
1.
Einleitung
•
Nebenläufige OO-Programmmierung begann in späten 60er Jahre mit Simula
•
erreichte 30 Jahre später durch JAVA einen ersten Höhepunkt
•
Beide Sprachen übernahmen Konzept des „passiven“ -oder „threads-plusobjects“- Modell der Neben-läufigkeit:
– Threads haben keinen klaren Zustand
– Objekte sind solange passiv, bis sie durch Threads animiert werden
•
Aktionen der Threads synchronisieren, um Interferenzen (Störungen) zu
vermeiden
•
Frühe „threads-plus-objects“-Sprachen (z.B. Smalltalk) verwendeten Semaphore
•
Bei Modula-3 und Java basiert Synchronisation zwischen Threads direkt auf
- Objekten, die Threads teilen
- Methoden, die Mechanismus besitzen um andere Methoden
auszuschließen
Ausschlußsynchronisation
zusammengsetzter Objekte
4
1.
Einleitung
• Nebenläufige OO-Programme zu entwickeln ist schwierige &
aufwendige Aufgabe
• Korrekte Programme müssen Koordination zwischen multiplen
Threads, die auf (zusammengesetzte) Objekte zugreifen, korrekt
durchführen
• Effiziente Programme müssen Ausgewogenheit zwischen
Komplexität und Kosten der Koordinationsmechanismen auf der einen
Seite und steigender Performance, möglich durch Nebenläufigkeit, auf
der anderen Seite ausbalancieren
???
Ausschlußsynchronisation
zusammengsetzter Objekte
5
1.
Einleitung
• Das Problem hierbei:
Wie kann man Ausschlußbedingungen für System
zusammengesetzter Objekte designen, die gleichzeitig:
– Interferenzen der Threads vorbeugen
– Nebenläufigkeit im System maximieren
– Die Unkosten, die dabei anfallen minimieren
Ausschlußsynchronisation
zusammengsetzter Objekte
6
1.
Einleitung
• Programmierer, der Nebenläufiges System
implementiert, hat folgende Möglichkeiten:
– Einprozessorzugriff des Systems
– Maximale Nebenläufigkeit auf alle Komponenten des
Systems ermöglichen, mit Locks auf einzelnen Objekten, falls nötig
– Ausschlußschema gesamte System entwickeln, dass
individuelle Locks benutzt , um Nebenläufigkeitsanforderungen der Komponenten zu erfüllen und dabei
einen hohen Grad an Nebenläufigkeit realisiert
Ausschlußsynchronisation
zusammengsetzter Objekte
7
1.
Einleitung
• Einprozessorzugriff des Systems (single threading):
– Keine Interferenzen zwischen Komponenten des Systems
– Geringe Kosten (ein Lock)
– Eliminiert aber Nebenläufigkeit des Systems
• Maximaler Nebenläufigkeitszugriff:
– Erhöht # Threads im Programm
– Erfordert hohen Grad an Sperrsynchronisation, um Interferenzen zu
vermeiden
– Mit dementsprechend hohen Kosten
• Ausschlußschema für das gesamte System:
– Liefert vernünftigen Grad an Nebenläufigkeit
– Vermeidet Interferenzen
– Minimiert Implementierungskosten
Ausschlußsynchronisation
zusammengsetzter Objekte
8
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Sperrsynchronisation
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
9
2. Ausschlußalgebra
Ausschlußsynchronisation
zusammengsetzter Objekte
10
2.
Ausschlußalgebra
• Wissenschaftliche Arbeit von:
– James Noble
– David Holmes
– John Potter
• aus dem Jahre 2000
Ausschlußsynchronisation
zusammengsetzter Objekte
11
2.
Ausschlußalgebra
Lösung des Design-Problems: Die Ausschlußalgebra
Anforderungen
• Einfaches Modell zur Modellierung von
Ausschlußbedingungen
• Ausschlußanforderungen bei zusammengesetzten
Objekten
• Betrachtet werden Methoden und ihre
Ausschlußbedingungen (zusammengesetzter Objekte)
• Beschreibt welche Methoden nebenläufig ausgeführt
werden können & welche nicht
Ausschlußsynchronisation
zusammengsetzter Objekte
12
2.
Ausschlußalgebra
• basierend auf diesen Anforderungen bestimmt die Algebra
wie explizit die Ausschlußbedingung dem zusammengesetzten Objekt beigefügt wird
• Ausschlußbedingungen können innerhalb von zusammengesetzten Objekten aufwärts bzw. abwärts entwickelt
werden
• Entfernen von redundanter Sperrsynchronisation
• Demonstrieren, dass das potentielle Schema wirklich alle
Ausschlußanforderungen eines jeden Objektes erfüllt
Ausschlußsynchronisation
zusammengsetzter Objekte
13
2.
Ausschlußalgebra
• Kalkulationen, werden auf einem abstrakten Level gehalten
• Nutzen beim Design von Nichtsequentiellen OO-Systemen
• Programmierer können Alternativen ausloten & können
Zuversicht in ihr Design gewinnen
• Erlaubt die Anforderungen und Bedingungen von
Container-Objekten (Nebenläufigkeit) und ihrer Komponenten auszudrücken
Ausschlußsynchronisation
zusammengsetzter Objekte
14
2.
Ausschlußalgebra
• Synchronisation von Threads hat verschiedene Aspekte
- ausschlußbedingt
Threads werden ausgeschlossen, falls andere Threads
auf das gleiche Objekt schon zugreifen
- statusbedingt:
Zugriffe, werden solange das Objekt nicht im „korrekten“ Zustand ist verzögert
- koordinationsbedingt:
kontrollieren multipler Methodenaufrufe durch versch. Objekte
Ausschlußsynchronisation
zusammengsetzter Objekte
15
2.
Ausschlußalgebra
• Die Ausschlußalgebra:
– Modelliert methodenbasierten Ausschluß zwischen
Objekten
– man betrachtet die Bedingungen unter denen Methoden
durch Objekte entweder ausgeführt werden oder nicht
ausgeführt werden
– Annahme: multiple Nachrichten können gleichzeitig von
multiplen Threads gesendet werden
– Es werden nur Methoden betrachtet, die innerhalb des
Objekt benutzt werden (nicht der Status des Objektes)
Ausschlußsynchronisation
zusammengsetzter Objekte
16
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Sperrsynchronisation
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
17
2.
Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
• Modellierung von Methodenausschluß durch Mengen von
Ausschlußpaaren (oder äquivalente Ausschlußmatrix)
a b c
Complex Number Class:
Class Complex {
a
x
private long re;
b
x
private long im;
public long a() {return re;} c
x
x x
public long b() {return im;}
public void c(long re_, im_) {re = re_; im = im_;}
}
• Menge von Methodennamen: {a,b,c}
• Menge von Ausschlußpaaren: {(a,c),(b,c),(c,c)}
Ausschlußsynchronisation
zusammengsetzter Objekte
18
2.
Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
• Menge von Methodennamen: {a,b,c} Namen der Methoden
• Menge von Ausschlußpaaren: {(a,c),(b,c),(c,c)}
– (a,c) bedeutet, wenn Methode a innerhalb des Objektes ausgeführt wird, dann muß die Methode c solange ausgeschlossen
werden, bis a seine Ausführung komplettiert hat
– (b,c) dementsprechend die gleiche Bedeutung
– (c,c) hat die Bedeutung des gegenseitigen Ausschlusses
c schließt sich selber aus, falls c im Thread ausgeführt wird,
darf ein anderer Thread zur gleichen Zeit c nicht auf demselben
Objekt ausführen
– Ausschlußrelation und Matrix = symmetrisch, d.h. falls a b
ausschließt, dann muß b auch a ausschließen
Ausschlußsynchronisation
zusammengsetzter Objekte
19
2.
Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
•
•
Ausschlußausdrücke liefern kürzere Beschreibung von
Auschlußbedingungen als Ausschlußpaare
Ausdrücke basieren auf 3 Operatoren:
–
Konjunktion „e | e“
–
Ausschluß „e X e“
–
Gegenseitigen Ausschluß „ e “
–
e1 X e2
sagt aus, dass Methoden benannt in e1 Methoden in
e2 ausschließen (gilt auch andersherum)
Ausschlußsynchronisation
zusammengsetzter Objekte
20
2.
Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
• Bei Gültigkeit dieser Operatoren drückt der Ausdruck (a | b) X c
(dasselbe wie die Matrix von vorhin ausdrückt) folgendes aus:
Paare
Namen
a
{}
{a}
(a | b)
{}
{a,b}
c
{(c,c)}
{c}
(a | b) X c
{(a,b),(b,c),(c,c)}
{a,b,c}
• Namen eines Ausdrucks, sind Namen der Methoden benutzt in diesem Ausdruck
• Paare, ist die Menge der Ausschlußpaare, die durch die Ausschlußoperatoren beschrieben werden
Ausschlußsynchronisation
zusammengsetzter Objekte
21
2.
Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
• Manche Ausdrücke wie a | b besitzen keine Paare aber haben
dafür einen oder mehrere Namen (in diesem Fall {a,b})
• Der Konjunktions-Operator ist („|“):
idempotent, assoziativ und kommutativ
• Der Ausschluß-Operator ist („X“):
assoziativ, kommutativ und X hat höhere Priorität als |
• Beide Binär-Operatoren haben eine Identität „0“, d.h. keine Namen
und Paare
• Syntaktische Abkürzung für e1 | e2 | … | e1
Ausschlußsynchronisation
zusammengsetzter Objekte
ist
e1e2…e1
22
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Sperrsynchronisation
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
23
2.
Ausschlußalgebra
2.2 Sperrsynchronisation
• Mit den Operatoren lassen sich Sperrsynchronisationspolicen beschreiben, z.B.:
- einfache Sperr-Policy, um die Ausführung von Methoden
(m1m2…mN) zu kontrollieren
- eine Methode kann die Sperre halten und Methode ausführen
- also jede Nachricht gebunden an die Sperre ist selbstausschließend und schließt jede andere Nachricht aus
Ausschlußsynchronisation
zusammengsetzter Objekte
24
2.
Ausschlußalgebra
2.2 Sperrsynchronisation
• Solch eine Sperre kann so definiert werden:
LOCK(m1m2…mN) = (m1 X m1) X (m2 X m2) X…X (mN X mN)
• Besitzt folgende Menge von Ausschlußpaaren:
{(mi,mj) | i,j ∈ 1..N}
kürzere Schreibweise
LOCK(m1m2…mN) = m1m2…mN
Ausschlußsynchronisation
zusammengsetzter Objekte
25
2.
Ausschlußalgebra
2.2 Sperrsynchronisation
• Erweiterung zur Lese/Schreibe-Menge jede Anzahl an LeseMethoden kann ausgeführt werden, aber nur eine Schreibe-Meth.
• READ-WRITE-SET(r1r2..rN,w1w2..wM) =
(r1| r2|…| rN) X (w1 X w1) X (w2 X w2) X…X (wM X wM)
• Man nutzt die abkürzende Schreibweise:
READ-WRITE-SET(r1r2...rN,w1w2..wM) = r1r2…rN X w1w2…wM
Ausschlußsynchronisation
zusammengsetzter Objekte
26
2.
Ausschlußalgebra
2.2 Sperrsynchronisation
• Algebra kann verschiedene Möglichkeiten von Lese/SchreibeMengen illustrieren
• z.B. zwei Lese/Schreibe-Mengen, die dieselbe Menge an Schreibern
teilen ( ≙ mit einer einzigen Menge Schreibern und alle Lesemeth.)
r1 X w1 | r2 X w1 ≡ (rwset)
r1 X w1 | w1 X w1 | r2 X w1 | w1 X w1 ≡ (idem)
r1 X w1 | w1 X w1 | r2 X w1 ≡ (rwset)
r1r2 X w1
• Eine Lese/Schreibe-Menge effizienter zu implementieren, obwohl
vielleicht zwei einzelne Ausdrücke einfacher zu spezifizieren
Ausschlußsynchronisation
zusammengsetzter Objekte
27
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Sperrsynchronisation
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
28
2.
Ausschlußalgebra
2.3 Verfeinerung von Ausschlußausdrücken
• Verfeinerung von Ausschlußausdrücken unterliegt der Semantik
der Ausschlußpaare
• Ein Ausschlußausdruck e wird durch einen anderen Ausschlußausdruck f verfeinert, falls die Werte (Namen und Paare) von e eine
Untermenge der Werte von f ist
•
Wir schreiben dann:
• z.B.:
e ⊑ f
aXb⊑ aXbXc,
da die Namen und Paare
des ersten Ausdrucks ({a,b} und {(a,b),(b,a)}) Untermengen der
Namen und Paare des zweiten Ausdrucks ({a,b,c} und {(a,b),(b,a),
(a,c),(c,a),(b,c),(c,b)}) ist
Ausschlußsynchronisation
zusammengsetzter Objekte
29
2.
Ausschlußalgebra
2.3 Verfeinerung von Ausschlußausdrücken
• Beispiel, Verschmelzen von Sperren:
Sperren während Laufzeit teuer, jede Sperre im Programm benötigt
Datenstrukturen, die diese Funktion unterstützen. Kosten zur Ausführung viel Zeit, wenn ein Thread sie anfordert.
-Objekt, dass zwei private long Integer-Variablen v1 und v2 enthält und
mittels zwei Lese-Methoden (r1 und r2) zugreifbar und werden durch
zwei Schreibe-Methoden (w1 und w2) aktualisiert
-Ausschlußanforderungen: r1 X w1 | r2 X w2
Ausschlußsynchronisation
zusammengsetzter Objekte
30
2.
Ausschlußalgebra
2.3 Verfeinerung von Ausschlußausdrücken
• Beispiel:
r1 X w1 | r2 X w2
(r1 | r2) X w1 | (r1 | r2) X w2
(r1 | r2) X (w1 X w2) | (r1 | r2) X (w1 | w2)
(r1 | r2) X (w1 X w2)
r1r2 X w1 w2
⊑ (|)
⊑ (X)
≡ (idem)
≡
• resultierender Ausschlußausdruck beschreibt alle Ausschlußpaare des Originalausdrucks, aber schließt noch andere Paare
mit ein hier: (w1,w2), (r1,w2) und (r2,w1)
Ausschlußsynchronisation
zusammengsetzter Objekte
31
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Sperrsynchronisation
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
32
3. Objektkomposition
• Ausschlußausdrücke bis jetzt Ausschluß eines einzigen,
einfachen Objekts
• Aber in Realität bestehen die meisten OO-Systeme aus mehr als
einem Objekt
• Objekt-Komposition (zusammengestzte Objekte) kann eine bessere
Kontrolle über Objekte und ihre Ausschlußanforderungen liefern
• Als auch die Funktionalität größerer Systeme bewahren
• Wie können Objekte und zusammengesetzte Objekte in der Algebra
explizit behandelt werden ?
Ausschlußsynchronisation
zusammengsetzter Objekte
33
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Sperrsynchronisation
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
34
3. Objektkomposition
3.1 Erweiterung der Algebra mit Objekten
• Modellierung von Systemen mit multiplen Objekten
• Objekte beschrieben in „☾“ -und „☽“-Klammern
• Objekte können folgende Definitionen enthalten:
– req: e = zeigt die Ausschlußbedingung an, die vom Objekt gefordert wird
– Ein anderer Ausschlußausdruck e, der die aktuell implementierte Ausschlußbedingung angibt
– Mögliche interne Komponenten
Ausschlußsynchronisation
zusammengsetzter Objekte
35
3. Objektkomposition
3.1 Erweiterung der Algebra mit Objekten
• Beispiel: zwei einfache unabhängige Objekte a und b
• a = ☾ m = (body of method m…)
n = (body of method n…)
mXn
☽
b = ☾ m = (body of method m…)
n = (body of method n…)
mn
☽
• Gesamtausdruck des einfachen Systems mit 2 Objekten:
(a.m X a.n) | b.m b.n
Ausschlußsynchronisation
zusammengsetzter Objekte
36
3. Objektkomposition
3.1 Erweiterung der Algebra mit Objekten
• Ein Ausschlußausdruck gilt für das Objekt, dass es beinhaltet
• Ein Ausdruck für ein Objekt, ist unabhängig vom Ausdruck eines
anderen Objektes
• Kombinierter Ausdruck von verschiedenen Objekten wird durch
das „joinen“ der einzelnen individuellen Ausdrücke mit „|“-Operator
• Haben die Methoden der Objekte gleiche Namen, dann Methodennamen durch prefixing mit Objektnamen definieren (renaming)
Ausschlußsynchronisation
zusammengsetzter Objekte
37
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Sperrsynchronisation
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
38
3. Objektkomposition
3.2 Objektkomposition (zusammenges. Objekt)
• Objekte können selber wieder aus Objekten bestehen, die wiederum auch Methoden und Ausschlußausdrücke enthalten können
• z.B. 2 unabhängigen Objekte a und b (voriger Abschnitt) könnten
zu einem umschließenden Container-Objekt umdefiniert werden:
c=☾
a = ☾ m = (body of method m…)
n = (body of method n…)
☽
b = ☾ m = (…)
n = (…)
☽
mXn
mn
y = (a.n;b.n)
z = (a.m;b.m
☽
Ausschlußsynchronisation
zusammengsetzter Objekte
39
3. Objektkomposition
3.2 Objektkomposition (zusammenges. Objekt)
• Die Algebra benutzt ein restriktives Modell der Objektkomposition
• Struktur der Komposition ist fix und die Komponentenobjekte
sind nur über ihren direkt umschließenden Container sichtbar und
zugreifbar
• In der Praxis bei jeder Implementation der Komposition muß
Container-Objekt die Komponenten privat speichern und exportiert
keine Referenzen an Komponenten anderer Objekte
• (Obwohl restriktiv soll es sich nah an Programmierstilen, wie
Balloon Types, Confined Types und Flexible Alias Protection
halten)
Ausschlußsynchronisation
zusammengsetzter Objekte
40
3. Objektkomposition
3.2 Objektkomposition (zusammenges. Objekt)
• Eine Implementation der Algebra folgend könnte in der Praxis flexibler sein
• Ausdrücke eher Spezifikationen als finale Beschreibung der Impl.
• Objekte könnten ausgetauscht werde, vorausgesetzt sie erfüllen
die passende Spezifikation
• fixe Struktur unterstützt Analyse und Modellierung
z.B. die Aufrufer einer Methode bestimmen
• Container-Methode kann nur Methoden seiner direkten Komponenten aufrufen und Komponenten-Methoden können nur vom umschließenden Container aufgerufen werden
Ausschlußsynchronisation
zusammengsetzter Objekte
41
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Sperrsynchronisation
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
42
3. Objektkomposition
3.3 Splitten von Objekten
• Ausschlußanforderungen, Verhalten und Invarianten einiger Obj.
können in unabhängige Untermengen partitioniert werden
• In solchen Fällen sinnvoll, wenn man das Original-Objekt in eine
Komposition aufteilt
• Jede Untermenge ist separate Komponente, die von einem Container umschlossen
• Container ruft eigene Methoden der passenden Komponenten auf
Objekt-Splitten Gegenteil von Sperren-Verschmelzung
-Splitten teilt Objekte um Nebenläufigkeit zu erhöhen
-Verschmelzung kombiniert Objekte um Nebenl. zu reduzieren
Ausschlußsynchronisation
zusammengsetzter Objekte
43
3. Objektkomposition
3.3 Splitten von Objekten
•
•
Original-Objekt:
☾
a = (body of method a…)
r1 = (body of method r1…)
r2 = (…)
w = (…)
a = (…)
a | r1 r2 X w
☽
a | r1 r2 X w
Aufgesplittetes Objekt:
☾ c_a = ☾ a = (body of method a…)
a
☽
c_rw = ☾ r1 = (body of method r1…)
r2 = (body of method r2…)
w = (…)
r1r2 X w
☽
a = (c_a.a)
r1 = (c_rw.r1)
r2 = (c_rw.r2)
w = (c_rw.w)
☽
= c_a.a | c_rw.r1 c_rw.r2 X c_rw.w
Ausschlußsynchronisation
zusammengsetzter Objekte
44
3. Objektkomposition
3.3 Splitten von Objekten
• Ausschlußanforderungen splitten sich in 2 unabhängige Teilausdrücke auf in a und r1r2 X w (Original-Objekt)
• Sind unabhängig, da sie keine gemeinsamen Namen besitzen
• In dieser Komposition Container-Methoden unsynchronisiert
(haben keine Ausschlußbedingungen)
• Ausschlußbedingungen für gesamte Komposition berechenbar
solange Komponentenseparat sind, keine Namen gemein haben
und das Container-Objekt keinen Ausschluß definiert
a | r1 r2 X w = c_a.a | c_rw.r1 c_rw.r2 X c_rw.w
Ausschlußsynchronisation
zusammengsetzter Objekte
45
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Sperrsynchronisation
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
46
3. Objektkomposition
3.4 Abwärtskomposition
• Abwärtskomposition erlaubt einem Container-Objekt seinen internen Komponenten Ausschlußbedingungen bereitzustellen
• Kann die Implementation eines zusammengestzten Objektes optim.
• da Komponenten keine expliziten Ausschlußbedingungen benöt.
wenn Container- Ausschlußbedingungen sichern, dass die Komponenten-Anforderungen getroffen werden
Ausschlußsynchronisation
zusammengsetzter Objekte
47
3. Objektkomposition
3.4 Abwärtskomposition
•
Beispiel:
Zusammengesetztes
Objekt mit unsynch.
Methoden
c=☾
o1 = ☾ x = (…)☽
o2 = ☾ y = (…) ☽
a = (o1.x)
b = (o1.x; o2.y)
• Mit der Algebra kann man den effektiven
Ausdruck einer Komponente bestimmen
• Durch inspizieren der aufrufenden
Methoden (callers)
• Container kapselt die Komponenten
-somit einzige Methode die Komponen
tenmethoden aufzurufen durch
Containermethoden
aXb
☽
Ausschlußsynchronisation
zusammengsetzter Objekte
48
3. Objektkomposition
3.4 Abwärtskomposition
• Regel für die Abwärtskomposition:
Für eine Komponentenmethode o.m1, die andere Komponentenmethode o.m2 ausschließt, müssen alle Methoden ihres umschließen
den Containers c, die o.m1 aufrufen, alle Methoden des umschließenden Containers, die o.m2 aufrufen, ausschließen.
callers(o.m1) X callers(o.m2) ⊑ c
Ausschlußsynchronisation
zusammengsetzter Objekte
49
3. Objektkomposition
3.4 Abwärtskomposition
• Eine Komponente erhält einen o^downward-Ausschluß seines umschließenden Containers, wenn:
o^downward [callers(o.m1) / m1, callers(o.m2) / m2, … ,
callers(o.mN) / mN] ⊑ c,
wobei
callers (o.mi) die Konjunktion („|“) aller Container-Methoden,
die o.mi der Komponente o aufrufen
und
e [T1 / t1,…,TN / tN] ist e mit Ti substituiert an Stelle von ti
Ausschlußsynchronisation
zusammengsetzter Objekte
50
3. Objektkomposition
3.4 Abwärtskomposition
• Diese Definition fordert nicht, weder von Komponenten noch vom
Container das sie Single-Threaded sind
• Bedingungen, die es erlauben Multi-Threads auszuführen werden
ebenfalls von dieser Def. Unterstützt (z.B. Lese/Schreibe-Mengen)
• Auch Selbstausschluß wird gesichert
(z.B, wenn Komponente o.mi sich selbst ausschließt, dann müssen
alle Aufrufer von o.mi sich ebenfalls selbst ausschließen)
Ausschlußsynchronisation
zusammengsetzter Objekte
51
3. Objektkomposition
3.4 Abwärtskomposition
c=☾
o1 = ☾ x = (…)☽
o2 = ☾ y = (…) ☽
a = (o1.x)
b = (o1.x; o2.y)
aXb
☽
• y [callers(o2.y) / y] ≡ (callers)
y [b / y] ≡ (subst)
b ⊑ (intro)
aXb
• x [callers(o1.x) / x] ≡ (callers)
x [ab / x] ≡ (subst)
a | b ⊑ (intro)
aXb
•
x [callers(x) / x] ≡ (callers)
x [ab / x] ≡ (subst)
ab ⋢
aXb
Ausschlußsynchronisation
zusammengsetzter Objekte
52
3. Objektkomposition
3.4 Abwärtskomposition
• Löschen redundanter Ausschlußbedingungen:
• cache = ☾ ram = ☾ (req: get X put); get put☽
disk = ☾ (req: get X put); get put☽
get‘ = (ram.get; disk.get)
put‘ = (ram.put; disk.put)
get‘put‘
☽
Manche Synchronisation ist redundant
• disk[callers(disk.get) / get‘, callers(disk.put) / put‘] ≡
get X put[get‘ / get, put‘ / put] ≡
get‘ X put‘ ⊑
get‘ put‘
• cache-Container Objekt-Ausschluß kann sicher zu get‘ X put‘
reduziert werden, da Unterkomponentenanforderungen getroffen
Ausschlußsynchronisation
zusammengsetzter Objekte
53
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Sperrsynchronisation
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
54
3. Objektkomposition
3.5 Aufwärtskomposition
•
•
Aufwärtskomposition erlaubt Container von den Ausschlußbedingungen
seiner internen Komponenten zu profitieren
Beispiel C++-Version der Complex Number-Class:
class RWComplex{
private: long re;
long im;
ReadWriteLock rw;
public:
long a() {Guard guard(rw.readLock); return re;}
long b() {Guard guard(rw.readLock); return im;}
void c(long re_, long im_){
Guard guard(rw.writeLock); re = re_; im = im_;}
Benutzt Aufwärtskomposition um Lese/Schreibe Sperrsynchronisation
zu ermöglichen
Ausschlußsynchronisation
zusammengsetzter Objekte
55
3. Objektkomposition
3.5 Aufwärtskomposition
• Vorteil von Aufwärtskomposition, dass Container seine Methoden
ausführt, während er die Sperrsynchronisation an seine internen
Komponenten deligiert
• Kein Vergleich zu Standard Methodenaufruf, da Container-Methode
Irgendwie eine Sperre der Komponente anfordern muß, sie solange
hält, bis die Methode komplett ausgeführt wurde, um sie dann freizugeben
• In der Algebra modelliert mittels Wächter-Methoden (guarded
methods)
Ausschlußsynchronisation
zusammengsetzter Objekte
56
3. Objektkomposition
3.5 Aufwärtskomposition
• Eine Wächter-Methode beginnt mit einer Serie von Wächtern, gefolgt von einem „“ und einem Methoden-Block
• Eine Wächter-Methode kann nur dann ausgeführt werden, wenn
alle seine Wächter simultan ausgeführt werden dürfen
• Beispiel: m = (o1.a, o2.b  … body of method m)
• o1.a und o2.b simultane Ausführung zulässig, dann m ausführen
• Similar zur C++-Funktion:
public void m(){
Guard guard(o1.a);
Guard guard(o2.b); //…….Block von m
}
Ausschlußsynchronisation
zusammengsetzter Objekte
57
3. Objektkomposition
3.5 Aufwärtskomposition
public void m(){
Guard guard(o1.a);
Guard guard(o2.b);
}
//…….Block von m
• Wächter Modellieren „schützende“ Methodenaufrufe mit spezifizierter Sperrsynchronisation (keine statusbedingte Synchronisation)
co = ☾
l1 = ☾ r X w☽
l2 = ☾ e ☽
a = (l1.r …body of method a)
b = (l1.w…body of method b)
c = (l1.w,l2.e …body of method c)
d = (l2.e …body of method d)
☽
Ausschlußsynchronisation
zusammengsetzter Objekte
58
3. Objektkomposition
3.5 Aufwärtskomposition
• Gegeben:
eine Wächter-Methode
o1.g1,…,oN.gN auf die Ausschlußbedingungen
des Containers schließen, gegeben durch jede Methode oi.gi
• Nicht immer einfach, da Ausschlußbedingungen mehr als eine Methode betreffen können
• Eine Container-Methode oi.gi sollte jede andere Container-Methode
oi.gj ausschließen, falls die oi-te Komponente Methhode oi.gj
ausschließt
Ausschlußsynchronisation
zusammengsetzter Objekte
59
3. Objektkomposition
3.5 Aufwärtskomposition
• Ausschlußbedingungen beigesteuert von Komponente co_i-up
• co_i-up = oi [guards(oi.g1) / m1,…,gurads(oi.gN / mN],
wobei
guards(oi.gj) sind Container-Methoden, die
Wächter Methode gj der oi-ten Komponente
besitzen
Ausschlußsynchronisation
zusammengsetzter Objekte
60
3. Objektkomposition
3.5 Aufwärtskomposition
l1[guards(l1.r) /r,guards(l1.w) /w] ≡ (grds)
co =☾
r X w[a/r,bc/w] ≡ (sub)
l1 = ☾ r X w☽
a X bc
l2 = ☾ e ☽
a = (l1.r …body of method a) • Sichert, dass a und bc eine Lese/
Schreibe-Menge a X bc darstellen
b = (l1.w…body of method
b) l2[guards(l2.e) /e] ≡ (grds)
c = (l1.w,l2.e …body of
e[cd/e] ≡ (sub)
method c)
cd
d = (l2.e …body of method
• Sichert, dass c und d sich gegend)
seitig ausschließen und eine
☽
Schreibe-Menge dartsellen
• Gesamter Ausschlußausdr. ist
Konj. der Ausschlüsse
Ausschlußsynchronisation
zusammengsetzter Objekte
(a X bc) | cd
61
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Nebenläufigkeitskontrolle
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
62
4. Aktive Objekte
• Sind Objekte, die eigene Threads besitzen
• Falls Komponente aktiv, dann ruft sie eigenen internen Thread
• In der Algebra ein „∗“ vor Definition eines aktiven Objektes setzen
• Ausschlußbed. eines aktiven Objektes werden auf Threads intern
und auf Threads extern angewendet
• Alle Mechanismen der Algebra können auf aktive Threads angewendet werden, außer Abwärtskomposition
• ?
Ausschlußsynchronisation
zusammengsetzter Objekte
63
4. Aktive Objekte
• Bei Abwärtskomposition, nehmen wir an, dass Threads eine interne Komponente nur durch ihren dazugehörigen umschließenden
Container ansprechen dürfen !!!!
• Und müssen somit die Ausschlußbedingungen des Containers
treffen
• Gleichzeitig gibt es keine Einschränkung bei der Aufwärtskomposition, da Wächter-Methoden keine Voraussetzungen an ihren
umschließenden Container stellen
Ausschlußsynchronisation
zusammengsetzter Objekte
64
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Nebenläufigkeitskontrolle
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
65
5. Vererbung
• Vererbung wird in der Algebra dadurch dargestellt, dass Kombination der Ausschlußausdrücke von Klassen und ihrer Super-Klassen
JAVA-CLASS (u,s) = u | s , u = unsynchr. & s = synchr.
• Erweiterung der Basisdefinition durch Vererbung
JAVA-CLASS-I (u,v,s,t) = (u | v‘) | (s X t‘)
where v‘ = v [u‘ / u, s‘ / s]
t‘ = t [u‘ / u, s‘ / s ]
• Lokale Definitionen u = unsynchr. & s = synchr. plus geerbte Methoden v (unsynchr.) & t (synchr.)
• Substitution sichert, dass überschriebene Methodennamen mit „‘“
benannt werden
Ausschlußsynchronisation
zusammengsetzter Objekte
66
5. Vererbung
• Similar zu super in Java oder Smalltalk, oder prefixing Basisklassenmethoden mit dem Basisklassenname in C++
• Resultierende Klasse besitzt alle, lokale wie auch geerbte Methoden mit den überschriebenen veerbten Methoden neu benannt
• diese Formulierung impliziert nicht Verfeinerung, da Vererbung den
Status der Methoden verändern kann , z.B.:
JAVA-CLASS(aby, cdz, 0, 0) ≡
aby | cdz
JAVA-CLASS-I(aez, cfy, aby, cdz) ≡
(aez | a‘by‘) | (cfy X c‘dz‘) ≡
aa‘bey‘z | cc‘dfyz‘
!!! Siehe y und z
• aby | cdz ⋢ aa‘bey‘z | cc‘dfyz‘
Ausschlußsynchronisation
zusammengsetzter Objekte
67
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Nebenläufigkeitskontrolle
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
68
6. Deadlock
• Algebra konzentriert sich auf Sicherheitsaspekt (Threads stören
sich nie gegenseitig) und vernachlässigt Lebendigkeit (ein Thread
mindestens schreitet immer fort in seiner Ausführung)
• Verfeinerung fordert, dass jeder Ausdruck egal in welchem Kontext verstärkt wird, obwohl dieses zum Deadlock führen kann
• Sicherheit ist ein lokaler Aspekt, während Lebendigkeit ein globaler Aspekt ist bei der Untersuchung der Objektkomposition und
dem System in das es eingebettet ist
• Deswegen müssen die beiden Punkte individuell analysiert werden
(Sicherheit = lokale Analyse und Lebendigkeit = globale Analyse)
Ausschlußsynchronisation
zusammengsetzter Objekte
69
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Nebenläufigkeitskontrolle
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
70
7. Praktische Anwendungen
7.1 Design-Notation
• Benutzt bei Modellieren von Auschlußbedingungen in existierenden oder geplanten Software-Designs
• In drei Phasen:
– Modellieren der Basis der Unter-Komponenten-Struktur des Systems
– Modellieren der verkürzten Ausschlußanforderungen jeder Komponente
– Verteilung der Sperrsynchronisation auf die Zusammengesetzte Struktur
Ausschlußsynchronisation
zusammengsetzter Objekte
71
Gliederung
1. Einleitung
2. Ausschlußalgebra
2.1 Ausschlußpaare, Ausschlußausdrücke
2.2 Nebenläufigkeitskontrolle
2.3 Verfeinerung von Ausschlußausdrücken
3. Objektkomposition
3.1
3.2
3.3
3.4
3.5
4.
5.
6.
7.
Erweiterung der Algebra mit Objekten
Objektkomposition (zusammengesetztes Objekt)
Splitten von Objekten
Abwärtskomposition
Aufwärtskomposition
Aktive Objekte
Vererbung
Deadlock
Praktische Anwendungen
7.1 Design-Notation
7.2 Tool Support
7.3 Programmiersprachenunterstützung und Optimierung
Ausschlußsynchronisation
zusammengsetzter Objekte
72
7. Praktische Anwendungen
7.2 Tool Support
• Experimente mit Prototyp, der Kalkulationen der Ausdrücke übernimmt
• Erlaubt Benutzer Ausschlußausdrücke zu manipulieren, Verfeinerungen vorzunehmen und sie zu verifizieren
• Werkzeug kann Ausschluß innerhalb der Komposition analysieren
• Kann effektive totale Ausschlußanforderung berechnen
• Wird erweitert um den Prozess visualisiert darzustellen
Ausschlußsynchronisation
zusammengsetzter Objekte
73
Zusammenfassung
• Ausschlußalgebra beschreibt die Ausschlußbedingungen in
zusammengesetzten Objekten
• Durch Upwards-und Downwards-Komposition besteht
Möglichkeit für Programmierer mit ihrem Design zu
experimentieren, es zu verifizieren und es ggf. zu optimieren
 trotz evtl. sehr hohen Grad an Multithreading im Design
• Durch abstrakte Beschreibung des Designs kann die
Ausschlußalgebra als Notation während der gesamten
Software-Entwicklungsphase benutzt werden
Ausschlußsynchronisation
zusammengsetzter Objekte
74
[email protected]
Danke für‘s Zuhören
einen schönen Abend…
Ausschlußsynchronisation
zusammengsetzter Objekte
75
Herunterladen