1 / 75

Ausschluss-Synchronisation zusammengesetzter Objekte

Ausschluss-Synchronisation zusammengesetzter Objekte. Seminar Objektorientierte Programmiersprachen Sofoklis Papadopoulos. Gliederung. 1. Einleitung 2. Ausschlußalgebra 2.1 Ausschlußpaare, Ausschlußausdrücke 2.2 Sperrsynchronisation

yule
Download Presentation

Ausschluss-Synchronisation zusammengesetzter Objekte

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ausschluss-Synchronisation zusammengesetzter Objekte Seminar Objektorientierte Programmiersprachen Sofoklis Papadopoulos WS 2003/04 24.11.2003

  2. 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 Erweiterung der Algebra mit Objekten 3.2 Objektkomposition (zusammengesetztes Objekt) 3.3 Splitten von Objekten 3.4 Abwärtskomposition 3.5 Aufwärtskomposition 4. Aktive Objekte (herausgenommen) 5. Vererbung 6. Deadlock 7. Praktische Anwendungen 7.1 Design-Notation 7.2 Tool Support 7.3 Programmiersprachenunterstützung und Optimierung Ausschlußsynchronisation zusammengsetzter Objekte

  3. 1. Einleitung Ausschlußsynchronisation zusammengsetzter Objekte

  4. 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-plus-objects“- 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

  5. 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üssenAusgewogenheit 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

  6. 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

  7. 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 Objek-ten, falls nötig • Ausschlußschema gesamte System entwickeln, dass individuelle Locks benutzt , um Nebenläufigkeitsan-forderungen der Komponenten zu erfüllen und dabei einen hohen Grad an Nebenläufigkeit realisiert Ausschlußsynchronisation zusammengsetzter Objekte

  8. 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

  9. 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 Erweiterung der Algebra mit Objekten 3.2 Objektkomposition (zusammengesetztes Objekt) 3.3 Splitten von Objekten 3.4 Abwärtskomposition 3.5 Aufwärtskomposition 4. Aktive Objekte 5. Vererbung 6. Deadlock 7. Praktische Anwendungen 7.1 Design-Notation 7.2 Tool Support 7.3 Programmiersprachenunterstützung und Optimierung Ausschlußsynchronisation zusammengsetzter Objekte

  10. 2. Ausschlußalgebra Ausschlußsynchronisation zusammengsetzter Objekte

  11. 2. Ausschlußalgebra • Wissenschaftliche Arbeit von: • James Noble • David Holmes • John Potter • aus dem Jahre 2000 Ausschlußsynchronisation zusammengsetzter Objekte

  12. 2. Ausschlußalgebra Lösung des Design-Problems:DieAusschluß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

  13. 2. Ausschlußalgebra • basierend auf diesen Anforderungen bestimmt die Algebra wie explizit die Ausschlußbedingung dem zusammenge-setzten Objekt beigefügt wird • Ausschlußbedingungen können innerhalb von zusammen-gesetzten 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

  14. 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 Kompo-nenten auszudrücken Ausschlußsynchronisation zusammengsetzter Objekte

  15. 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“ Zu- stand ist verzögert - koordinationsbedingt: kontrollieren multipler Methodenaufrufe durch versch. Objekte Ausschlußsynchronisation zusammengsetzter Objekte

  16. 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 nichtausgefü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

  17. 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 Erweiterung der Algebra mit Objekten 3.2 Objektkomposition (zusammengesetztes Objekt) 3.3 Splitten von Objekten 3.4 Abwärtskomposition 3.5 Aufwärtskomposition 4. Aktive Objekte 5. Vererbung 6. Deadlock 7. Praktische Anwendungen 7.1 Design-Notation 7.2 Tool Support 7.3 Programmiersprachenunterstützung und Optimierung Ausschlußsynchronisation zusammengsetzter Objekte

  18. 2. Ausschlußalgebra2.1 Ausschlußpaare, Ausschlußausdrücke • Modellierung von Methodenausschluß durch Mengen von Ausschlußpaaren (oder äquivalente Ausschlußmatrix) Complex Number Class: Class Complex { private long re; private long im; public long a() {return re;} 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

  19. 2. Ausschlußalgebra2.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 ausge-fü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 cschließ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 abausschließt, dann muß b auch a ausschließen Ausschlußsynchronisation zusammengsetzter Objekte

  20. 2. Ausschlußalgebra2.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

  21. 2. Ausschlußalgebra2.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 die-sem Ausdruck • Paare, ist die Menge der Ausschlußpaare, die durch die Ausschluß-operatoren beschrieben werden Ausschlußsynchronisation zusammengsetzter Objekte

  22. 2. Ausschlußalgebra2.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 ist e1e2…e1 Ausschlußsynchronisation zusammengsetzter Objekte

  23. 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 Erweiterung der Algebra mit Objekten 3.2 Objektkomposition (zusammengesetztes Objekt) 3.3 Splitten von Objekten 3.4 Abwärtskomposition 3.5 Aufwärtskomposition 4. Aktive Objekte 5. Vererbung 6. Deadlock 7. Praktische Anwendungen 7.1 Design-Notation 7.2 Tool Support 7.3 Programmiersprachenunterstützung und Optimierung Ausschlußsynchronisation zusammengsetzter Objekte

  24. 2. Ausschlußalgebra2.2 Sperrsynchronisation • Mit den Operatoren lassen sich Sperrsynchronisationspolicen be-schreiben, 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 selbstaus- schließend und schließt jede andere Nachricht aus Ausschlußsynchronisation zusammengsetzter Objekte

  25. 2. Ausschlußalgebra2.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

  26. 2. Ausschlußalgebra2.2 Sperrsynchronisation • Erweiterung zur Lese/Schreibe-Menge jede Anzahl an Lese-Methoden 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

  27. 2. Ausschlußalgebra2.2 Sperrsynchronisation • Algebra kann verschiedene Möglichkeiten von Lese/Schreibe- Mengen illustrieren • z.B. zwei Lese/Schreibe-Mengen, die dieselbe Menge an Schreibern teilen ( ≙ mit einer einzigen MengeSchreibern 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

  28. 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 Erweiterung der Algebra mit Objekten 3.2 Objektkomposition (zusammengesetztes Objekt) 3.3 Splitten von Objekten 3.4 Abwärtskomposition 3.5 Aufwärtskomposition 4. Aktive Objekte 5. Vererbung 6. Deadlock 7. Praktische Anwendungen 7.1 Design-Notation 7.2 Tool Support 7.3 Programmiersprachenunterstützung und Optimierung Ausschlußsynchronisation zusammengsetzter Objekte

  29. 2. Ausschlußalgebra2.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: e ⊑ f • z.B.: a X b ⊑ a X b X c , 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

  30. 2. Ausschlußalgebra2.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 Aus-fü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

  31. 2. Ausschlußalgebra2.3 Verfeinerung von Ausschlußausdrücken • Beispiel: r1 X w1 | r2 X w2 ⊑ (|) (r1 | r2) X w1 | (r1 | r2) X w2 ⊑ (X) (r1 | r2) X (w1 X w2) | (r1 | r2) X (w1 | w2) ≡ (idem) (r1 | r2) X (w1 X w2) ≡ r1r2 X w1 w2 • 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

  32. 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 Erweiterung der Algebra mit Objekten 3.2 Objektkomposition (zusammengesetztes Objekt) 3.3 Splitten von Objekten 3.4 Abwärtskomposition 3.5 Aufwärtskomposition 4. Aktive Objekte 5. Vererbung 6. Deadlock 7. Praktische Anwendungen 7.1 Design-Notation 7.2 Tool Support 7.3 Programmiersprachenunterstützung und Optimierung Ausschlußsynchronisation zusammengsetzter Objekte

  33. 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

  34. 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 Erweiterung der Algebra mit Objekten 3.2 Objektkomposition (zusammengesetztes Objekt) 3.3 Splitten von Objekten 3.4 Abwärtskomposition 3.5 Aufwärtskomposition 4. Aktive Objekte 5. Vererbung 6. Deadlock 7. Praktische Anwendungen 7.1 Design-Notation 7.2 Tool Support 7.3 Programmiersprachenunterstützung und Optimierung Ausschlußsynchronisation zusammengsetzter Objekte

  35. 3. Objektkomposition3.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 ge-fordert wird • Ein anderer Ausschlußausdruck e, der die aktuell implemen-tierte Ausschlußbedingung angibt • Mögliche interne Komponenten Ausschlußsynchronisation zusammengsetzter Objekte

  36. 3. Objektkomposition3.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…) m X n ☽ 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

  37. 3. Objektkomposition3.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 „|“-Opera-tor • Haben die Methoden der Objekte gleiche Namen, dann Methoden-namen durch prefixing mit Objektnamen definieren(renaming) Ausschlußsynchronisation zusammengsetzter Objekte

  38. 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 Erweiterung der Algebra mit Objekten 3.2 Objektkomposition (zusammengesetztes Objekt) 3.3 Splitten von Objekten 3.4 Abwärtskomposition 3.5 Aufwärtskomposition 4. Aktive Objekte 5. Vererbung 6. Deadlock 7. Praktische Anwendungen 7.1 Design-Notation 7.2 Tool Support 7.3 Programmiersprachenunterstützung und Optimierung Ausschlußsynchronisation zusammengsetzter Objekte

  39. 3. Objektkomposition3.2 Objektkomposition (zusammenges. Objekt) • Objekte können selber wieder aus Objekten bestehen, die wieder-um 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…) m X n ☽ b = ☾ m = (…) n = (…) mn ☽ y = (a.n;b.n) z = (a.m;b.m ☽ Ausschlußsynchronisation zusammengsetzter Objekte

  40. 3. Objektkomposition3.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

  41. 3. Objektkomposition3.2 Objektkomposition (zusammenges. Objekt) • Eine Implementation der Algebra folgend könnte in der Praxis flex-ibler 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 Komponen-ten aufrufen und Komponenten-Methoden können nur vom um-schließenden Container aufgerufen werden Ausschlußsynchronisation zusammengsetzter Objekte

  42. 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 Erweiterung der Algebra mit Objekten 3.2 Objektkomposition (zusammengesetztes Objekt) 3.3 Splitten von Objekten 3.4 Abwärtskomposition 3.5 Aufwärtskomposition 4. Aktive Objekte 5. Vererbung 6. Deadlock 7. Praktische Anwendungen 7.1 Design-Notation 7.2 Tool Support 7.3 Programmiersprachenunterstützung und Optimierung Ausschlußsynchronisation zusammengsetzter Objekte

  43. 3. Objektkomposition3.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 Con-tainer 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

  44. 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 3. Objektkomposition3.3 Splitten von Objekten Ausschlußsynchronisation zusammengsetzter Objekte

  45. 3. Objektkomposition3.3 Splitten von Objekten • Ausschlußanforderungen splitten sich in 2 unabhängige Teilaus-drü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

  46. 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 Erweiterung der Algebra mit Objekten 3.2 Objektkomposition (zusammengesetztes Objekt) 3.3 Splitten von Objekten 3.4 Abwärtskomposition 3.5 Aufwärtskomposition 4. Aktive Objekte 5. Vererbung 6. Deadlock 7. Praktische Anwendungen 7.1 Design-Notation 7.2 Tool Support 7.3 Programmiersprachenunterstützung und Optimierung Ausschlußsynchronisation zusammengsetzter Objekte

  47. 3. Objektkomposition3.4 Abwärtskomposition • Abwärtskomposition erlaubt einem Container-Objekt seinen inter-nen 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 Kom- ponenten-Anforderungen getroffen werden Ausschlußsynchronisation zusammengsetzter Objekte

  48. 3. Objektkomposition3.4 Abwärtskomposition • Beispiel: Zusammengesetztes Objekt mit unsynch. Methoden c =☾ o1 = ☾ x = (…)☽ o2 = ☾ y = (…) ☽ a = (o1.x) b = (o1.x; o2.y) a X b ☽ • 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 Ausschlußsynchronisation zusammengsetzter Objekte

  49. 3. Objektkomposition3.4 Abwärtskomposition • Regel für die Abwärtskomposition: Für eine Komponentenmethode o.m1, die andere Komponentenme- thode 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

  50. 3. Objektkomposition3.4 Abwärtskomposition • Eine Komponente erhält einen o^downward-Ausschluß seines um- schließ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

More Related