Stefan Loidl, 0255886, Reference Counting II Freigeben zyklischer Zellstrukturen.

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung.
Kapitel 11 Deadlocks RW-Systemarchitekur Kap. 11.
Zerlegung von Graphen.
Claudio Moraga; Gisbert Dittrich
FH-Hof Der B-Baum Richard Göbel. FH-Hof Wahl des Verzweigungsgrad Verzweigungsgrad kann größer als 2 sein v Nachfolger für einen Knoten v-1 Werte in einem.
7. Natürliche Binärbäume
Suche in Texten (Stringsuche )
Lösung 6.3 Denksportaufgabe
Semaphore void Passieren (semaphore &s) { if (s > 0) { s--;
Gliederung Motivation / Grundlagen Sortierverfahren
Systeme 1 Kapitel 7 Deadlocks WS 2009/10.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Dynamische Datentypen
Indirekte Adressierung
Garbage Collection Maik Theisen Betreuer: Guido Tack
V AdresseWert public static void main(...){ int[] v; v=new int[2]; } Was veranlasst diese Anweisung im Arbeitsspeicher ? Es wird im Arbeitsspeicher.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Das Maßproblem von Klee
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Union-Find-Strukturen
6 Folgen (Teil II - Datenstrukturen und Algorithmen)
Klausur „Diskrete Mathematik II“
Verkettete Liste Visualisierung. New-Operator Mit dem New-Operator kann zur Laufzeit (dynamisch) Speicherplatz reserviert und angelegt werden Vorteil:
Beispielrelation Buchbestellungen H = Menge der bedeutenden Ziele = {a, d} Schwelle T = 4 Stichprobe S = {a, b, a, a, a, a} mit s = |S| = 6 N = Anzahl.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kapitel 2: Datenstrukturen
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Mark & Sweep Seminar Softwareentwicklung: Garbage Collection Eva Schartner.
Java Garbage Collection Angelika Kusel, Überblick Was ist Garbage Collection? Vor- und Nachteile von GC GC-Algorithmen/Verfahren Java Garbage.
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen
Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Übung Datenbanksysteme II Index- strukturen
Einführung in die Programmiersprache C 4
DIE FARBEN.
2. Zustandsorientiertes Modellieren 2.1 Einfachauswahl
Dynamische Datentypen
Garbage Collection unter .NET
Replikation und Synchronisation
Mark – Compact GC & Performancemessungen Bernhard Prügl,
© 2001 Matthias Bossardt 1 Routing. © 2001 Matthias Bossardt 2 Dienstmodell Findet den günstigsten Pfad um ein Datenpaket vom Sender zum Empfänger zu.
Thomas Negeli | Reference Counting I Folie 1 / 20 Seminar Garbage Collection | WS2005 Reference Counting I Negeli Thomas.
Die Idee hinter Copying Garbage Collection (1) Aufteilung des Heaps in zwei Teile: To-Space und From-Space Nutzung eines Teiles durch das Programm Ist.
Betriebssysteme Übung Tutorium „TLB & Virtual Memory“
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
JAVA/DSM A Platform for Heterogeneous Computing Serge F. Possono M. Technische Universität Muenchen (TUM) Lehr- und Forschungseinheit Informatik X Rechnertechnik.
Welche Farbe ist das? Das ist
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Der Train-Algorithmus
Distributed Database Systems Parallele Datenbanksysteme von Stefan Schneider.
Algorithmen und Datenstrukturen
5 Memory Leaks, die auch in Ihrer.NET Anwendung sein könnten André Krämer Softwareentwickler, Trainer, Berater.
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
Tutorium Software-Engineering SS14 Florian Manghofer.
© 2016 TravelTainment Einführung in die Garbage Collection Seminarvortrag Lars Frauenrath 1.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
Dr. Wolfram Amme, Automatische Speicherverwaltung, Informatik II, FSU Jena, SS Automatische Speicherverwaltung.
Klausur „Diskrete Mathematik II“
Zwei Denkansätze zur Klasse Schlange
 Präsentation transkript:

Stefan Loidl, , Reference Counting II Freigeben zyklischer Zellstrukturen

Stefan Loidl, , Wurzel Wie entstehen Zyklen? Systemebene? Programmebene? Wie lassen sich Zyklen vermeiden?

Stefan Loidl, , Bobrows Technik Ansatzpunkt Behandle einen Zyklus wie eine einzelnes Objekt GG G externe Zelle 1 RC Gruppe G: 3 RC Gruppe H: 1 … externe Zelle 2 externe Zelle 3 Aber wie wird ein Zyklus erkannt?

Stefan Loidl, , Bobrows Technik Realisierungstechniken der Gruppen Zonenbasiertes Gruppieren: z.B.: Ableiten der Gruppe aus der Adresse Speicherverschnitt Beschriftende Gruppierungsverfahren: Zellenbeschriftung Zeiger auf das RC Feld Beide fix oder variabel Verschmelzen von Gruppen G G G externe Zelle 1 RC Gruppe G: 3 RC Gruppe H: 1 … externe Zelle 2 externe Zelle 3 Gruppe G Gruppe F Gruppe H

Stefan Loidl, , Weak- Pointer Algorithmen Grundidee: Unterteilen in 2 Kategorien von Pointern Normale RC- Verfahren auch für Zyklen Arbeiten von: Brownbridge, Salkild und Pepels. Invarianten: Jeder aktive Knoten kann vom der Wurzel her über einen Pfad von starken Referenzen erreicht werden. starke Referenzen dürfen niemals einen Zyklus schließen Wurzel

Stefan Loidl, , Brownbridges Algorithmus Eckdaten: Zwei Reference Count Felder. Ein Zeiger auf eine neue Zelle ist immer stark. Kopieren eines Pointers kann zu starken Zyklus führen! Brownbridge beschäftige sich nicht mit allgemeinen Pointer Systemen! Problemillustration: B Wurzel A C D E

Stefan Loidl, , Salkilds Modifikationen Ein kopierter Zeiger ist immer schwach Das Löschen gestaltet sich komplizierter (3 Fälle) //Fall 3: nur noch schwache Referenzen else if(SRC(P) == 0 && WRC(P) > 0){ invertStrength(P); forall(Children C of P){ suicide(P,C); } if(SRC(P) == 0){ forall(Children C of P){ delete(C); } free(T); } B Wurzel A C D E

Stefan Loidl, , Salkilds Modifikationen /** * Suchroutine die starke Zyklen von * einem Knoten Start aus findet und * Diese beseitigt. */ void suicide(pointer Start, pointer N){ if(isStrong(N)){ if(N == Start || SRC(N) > 1){ weaken(N); } else{ forall(Children T of N)){ suicide(Start, T); } B Wurzel A C D E

Stefan Loidl, , Pepelss Modifikationen Lösen Salkilds Terminierngsproblem Verwendet ein doppeltes Markierungsschema 1. verhindert unendliche Anzahl von Suchen 2. garantiert das Terminieren einer Suche größerer Speicherbedarf Problem mit der Laufzeitkomplexität (exponentiell)

Stefan Loidl, , Brownbridges Realisierung Jedes Objekt und jeder Pointer wird mit einem Stärkebit versehen Bitwert Pointer = Bitwert Objekt starker Pointer Der Stärkewert einer Zelle bestimmt was SRC bzw. WRC ist Stärkewert alle eingehenden Pointer kann damit in einer Operation invertiert werden Aufgrund der Systemoperationen Vorteilhaft

Stefan Loidl, , Partielle Mark-Sweep Algorithmen Hybride Algorithmen (Reference Counting Mark-Sweep) Mark-Sweep ist nur für Zyklen zuständig Mark-Sweep soll so wenig als möglich zum Einsatz kommen Dreiphasiges Verfahren: 1. Einfluss interner Pointer aufheben 2. Traversieren und Reference Counts wieder herstellen 3. Entfernen der nicht erreichbaren Zellen 11 2 Externer Knoten

Stefan Loidl, , Linss Algorithmus Lazy cyclic Reference Counting 1. Aufschieben durch Einsatz eines Control Sets 2. Einfach referenzierte Zellen werden sofort freigegeben 3. Sammeln potentiell freizugebender Zellen 4. Zustände in Form eines Farbschemas (hier: schwarz, grau, weiß, violett) Farbübergänge 1. weiß schwarz: Reservieren der Zelle, beim Collection cycle 2. schwarz violett: Löschen eines mehrfach ref. Pointers 3. violett schwarz: Update auf Zelle 4. violett, schwarz grau: markGrey Phase (1) 5. grau schwarz: scanBlack Phase (2) Vermeiden von Mehrfachreferenzen im Control Set

Stefan Loidl, , Linss Algorithmus Mark-Sweep Collection Cycle void markGrey(cell C){ if(colour(C) != grey){ colour(C) = grey; forall(Children T of C){ RC(T) = RC(T) - 1; markGrey(T); } void scan(cell C){ if(colour(C) == grey){ if(RC(C) > 0){ scanBlack(C); } else{ colour(C) = white; forall(Children T of C){ scan(T); } void scanBlack(cell C){ colour(C) = black; forall(Children T of C){ RC(T) = RC(T) + 1; if(colour(T) != black){ scanBlack(T); } void collectControlSet(){ cell C = ControlSet.getCell(); if(colour(C) == violet){ marGrey(C); scan(C); collectWhite(C); } else if(!ControlSet.empty()){ collectControlSet(); }

Stefan Loidl, , Linss Algorithmus B Wurzel A C D E B A C D E Phase 1: markGrey

Stefan Loidl, , Linss Algorithmus B Wurzel A C D E 1 1 D E Phase 3: collectWhite

Stefan Loidl, , Linss Algorithmus Control Set Strategien Bewirtschaftungsstrategie Teil Abarbeitungsstrategie Realisierungstechnik des Control Sets collectWhite Strategien Erfolgsrezept großteils einmalige Referenzierung Zyklen hinreichend klein violette Phase hält nicht allzu lange an

Stefan Loidl, , Linss Algorithmus Kombination mit gewichtetem RC Wenig Kommunikation- Garbagecollection in verteilten Systemen Synchronisation der Phasen notwendig Variabilität des Verfahrens wegen unterschiedlichen Synchronisationen noch größer 16 A B C A B C 8 8 Erzeugen des Pointers

Stefan Loidl, , Resümee Pro Einfach und verständlich Kann mit programmiertechnischer Freigabe vermischt werden Rechenaufwand verzahnt gut mit Nutzprogramm Contra Sehr anfällig wenn ein Fehler aufgetreten ist Selten bis nie in großen kommerziellen Systemen Zyklen in den Zellen bedeuten erhöhte Rechenzeit

Stefan Loidl, , Literatur [Bobrow80] Bobrow, D.: Managing Reentrant Structures Using Reference Counts. ACM TOPLAS 2(3): , 1980 [Jones92] Jones, R, Lins, R.: Cyclic weighted reference counting without delay. Computing Laboratory, The University of Kent at Canterbury. Technical Report [Jones96] Jones, R, Lins, R.: Garbage Collection: Algorithms for Automatic Dynamic Memory Management. John Wiley 1996 [Bacon01] Bacon, D., Attanasio, C., Loc, H, and Smith, S. Java without the Coffee Breaks: A Nonintrusive Multiprocessor Garbage Collector. PLDI'01, SIGPLAN Notices, 2001