variante von lermen und maurer
play

Variante von Lermen und Maurer Verteiltes Reference-Counting: - PowerPoint PPT Presentation

Variante von Lermen und Maurer Verteiltes Reference-Counting: Lsungen copy p q p q p q --> Jede increment-Nachricht besttigen (warten auf ack bevor das copy losgeschickt wird): ack inc dec copy r r r p q p q p q an q,


  1. Variante von Lermen und Maurer Verteiltes Reference-Counting: Lösungen copy p q p q p q --> Jede increment-Nachricht bestätigen (warten auf ack bevor das copy losgeschickt wird): ack inc dec copy r r r p q p q p q an q, nicht an p! inc Idee: ack r r r Senden einer dec-Nachricht (bei Löschen der Referenz) erst dann, wenn das Objekt bereits eine zugehöriges ack Referenz- 1 2 2 zähler (bzgl. inc) vom Zielobjekt der Referenz empfangen hat ==> Korrektheitskriterium erfüllt - Korrektheitskriterium erfüllt: inc wird vor einem kausal abhängigen dec empfangen - Beachte: Referenz kann stets gelöscht werden, nur das (d.h. Objekt r erfährt über die Existenz einer Kopie einer r-Referenz, Senden von dec muss verzögert werden bevor es vom Löschen dieser oder einer "solchen" Referenz erfährt) - Implementierungsskizze: - Nachteile der Methode: - Zählen von empfangenen copy und ack-Nachrichten - copy wird verzögert --> insgesamt 3 Nachrich- - dec-Nachricht erst senden, wenn Zähler ACK und COPY übereinstimmen ten pro copy-Operation - zusätzliche Nachricht (ack) - dann die Zähler ACK und COPY beide dekrementieren - "individuelle" Zuordnung von copy zu ack nicht notwendig! - Abschwächung |ACK|>0 ∧ |COPY|>0 möglich? Konsequenzen? - Vorteil : kein Verzögern von Basisaktionen wieso? - Nachteil : Ack-Nachricht und FIFO-Kanäle notwendig Vert. Algo. 02/03, F. Ma. 313 Vert. Algo. 02/03, F. Ma. 314

  2. Varianten von Rudalics Die Referenzgewichts-Methode (WRC: "Weighted Reference Counting") 1) 3-Nachrichten-Protokoll ("zyklisch"): 3) ack Idee : q bekommt Referenz auf r von r p q selbst; nachdem r seinen Zähler inkre- Neues Objekt generieren ("new"): mentiert hat (veranlasst durch inc). Bedingung : p darf seine r-Referenz p p erst löschen, wenn alle erwarteten 1) inc 2) copy ack-Nachrichten eingetroffen sind. Reference Weight RW= 8 Frage : Wäre es auch möglich, dass das r ack an p von r (statt q) gesendet wird? RC Reference Count = 8 (obwohl dadurch die Referenzen - Vorteil : kein FIFO notwendig (falls FIFO garantiert ist: ack-Nachricht nicht tatsächlich "gezählt" werden) einsparen ==> nur zwei Nachrichten pro copy!) - Nachteil : Kopieren dauert länger (2 Nachrichten) Referenz kopieren ("copy "): 2) 4-Nachrichten-Protokoll: 3) ack p p q - Idee: ack erst senden, wenn p q beide copy-Nachrichten RW= 8 RW= 4 RW= 4 empfangen wurden 1) copy RC RC Splitten von RW - q installiert die r-Referenz = 8 = 8 2) copy 1) inc (...solange das geht!) bei Empfang der ersten copy-Nachricht ansonsten (hier nicht entspricht genauer behandelt): r "ack" bei - Unter welchen Bedingungen dürfen Lermen / 1) "Recharge" p bzw. q dec-Nachrichten senden? Maurer 2) Indirektionsobjekt - Vorteil: kein FIFO notwendig; keine Verzögerung - Beachte: Es wird keine Increment-Nachricht benötigt! - Nachteil: 4 Nachrichten (aber nur 3 "sequentiell") Vert. Algo. 02/03, F. Ma. 315 Vert. Algo. 02/03, F. Ma. 316

  3. Referenz löschen ("delete"): Kredit-Methode und WRC p q p q RW= 2 RW= 4 RW= 4 Terminierungserkennung WRC- mit der Kreditmethode Garbage-Collection DRC(2) RC RC RC =6 - Senden einer Nachricht - Kopieren einer Referenz =6 =4 (Splitten des RW) (Splitten des Kreditwertes) Decrement-Reference- Count-Nachricht - Passiv werden (Kredit - R-Referenz löschen an Urprozess zurückgeben) (Decrement-Nachricht an R) Invariante : ∑ Kredit =1 Invariante : RC = ∑ RW + ∑ DRC Invariante : RC = ∑ RW + ∑ DRC - Gesamtkredit beim - RC = 0 bei R RC = 0 --> Objekt ist Garbage Urprozess = 2 0 =1 --> alle Referenzen dieses Objektes auf andere Objekte löschen (DRC-Nachrichten senden) Terminierung R ist Garbage Also: Kreditmethode entspricht WRC-Garbage-Collection! - Logarithmische Kompression (2er-Potenzen!) von RW - mit nur 2 Bit pro Zeiger lassen sich so RW bis max. 8 darstellen - statt 8 kann ggf. auch ein (etwas?) grösserer Maximalwert gewählt werden - RC so nicht komprimierbar ==> int-Variable mit "vielen" Bits pro Objekt - Keine Verzögerung bei copy / delete und bei copy keine zusätzlichen Nachrichten! - RW = 1 sollte ein eher seltenes Ereignis sein (--> Zusatzaufwand) - Analogie zur Kredit-Methode bei vert. Terminierung! Vert. Algo. 02/03, F. Ma. 317 Vert. Algo. 02/03, F. Ma. 318

  4. Problemtransformation Garbage-Collection und Terminierung - Es wird das Problem , nicht der Algortihmus transformiert! nicht notwendigerweise verteilte Theorem: Jeder G arbage-Collection -Algorithmus kann automatisch in einen Algorithmus zur Feststellung Terminierungs- Garbage- der verteilten Terminierung transformiert werden entdeckungs- Collection- problem Problem ? Bemerkung: Für beide Probleme wurden viele nicht-triviale (und auch manche falsche!) Lösungen publiziert einfache Transformation Anwendung des Ein Garbage-Collection- (aber wie?) Garbage-Coll. Algorithmus Algorithmus triviale Interpretation ? Lösung des Lösung des Terminierungs- Garbage- entdeckungs- Collection- problems Problems mechanische Transformation automatisch Vereinfachung und Optimierung manuell Lösung des Terminierungs- Terminierungs- entdeckungs- ! entdeckungs- problem problems Ein verteilter Termi- nierungsentdeckungs-Algorithmus Algorithmus zur Feststellung der verteilten Terminierung! Vert. Algo. 02/03, F. Ma. 319 Vert. Algo. 02/03, F. Ma. 320

  5. Vom Ende einer Geheimniskrämerei Die Transformation Die vier goldenen Regeln der Geheimniskrämerei: - Jeder Prozess wird in ein Wurzelobjekt transformiert 1) Es gibt und unein- - Ein zusätzliches virtuelles Objekt R wird hinzugefügt Geheim- geweihte Personen nisträger P1 P2 1) Prozess P aktiv <==> 2) Nur ein Geheimnisträger kann das Geheimnis P besitzt Referenz auf R weiterverbreiten: 2) Jede Nachricht enthält virtuelles R Referenz auf R Objekt - Die beiden Regeln lassen sich ("induktiv") erfüllen: - ein (aktives) Objekt / Prozess sendet eine Kopie seiner R-Referenz mit jeder Nachricht - ein reaktivierter Prozess erhält eine R-Referenz - ein Prozess, der passiv wird, löscht seine R-Referenz Geheimnis: Ort R Garbage <==> Es gibt keine Referenz auf R des Schatzes <==> Alle Prozesse passiv und keine Nachricht 3) Wer das Geheimnis erfährt, wird zum Geheimnisträger unterwegs <==> Verteilte Berechnung terminiert 4) Ein Geheimnisträger kann das Geheimnis (endgültig) vergessen - Also: verwende irgendeinen GC-Algorithmus --> interpretiere Berechnung als GC-Problem --> melde Terminierung, wenn R als Garbage erkannt es gibt keine Geheimnisträger und keine Nachrichten mit dem Geheimnis Geheimniskrämerei terminiert <==> Schatz nicht mehr zugreifbar <==> Schatz ist "Garbage" - Übung: man mache dies für konkrete GC-Algorithmen aus der Literatur - beachte: es entstehen keine Zyklen von Referenzen, daher sind auch --> "watchdog" beim Schatz meldet Terminierung... Referenzzählverfahren anwendbar! Vert. Algo. 02/03, F. Ma. 321 Vert. Algo. 02/03, F. Ma. 322

  6. Dijkstra 2 Die Patent-Story 3 et al. ’78 "Local Refernce Counting" ’90 Variante 1 WRC-Garbage-Collection-Algorithm patentiert: von Ben-Ari Bevan / Watson Europäische Patentnummer 86309082.5 GC-Algo. (WRC) mechanische Transformation Hier u.U. Algo. zur Entdeckung optimieren der verteilten Ist der resultierende Terminierungs- Terminierung erkennungsalgorithmus auch durch Credit das Patent geschützt? 1 Recovery 3 Dijkstra Dijkstra / et al. ’83 Scholten ’80 ("DFG") 2 Bekannte Garbage-Collection-Verfahren werden so in bekannte und brauch- bare Algorithmen zur Erkennung der verteilten Terminierung transformiert! Vert. Algo. 02/03, F. Ma. 323 Vert. Algo. 02/03, F. Ma. 324

Recommend


More recommend