Mark & Sweep Seminar Softwareentwicklung: Garbage Collection Eva Schartner.

Slides:



Advertisements
Ähnliche Präsentationen
Vorbereitung: struct knoten { int x; struct knoten *l, *r; } *b, *bh, **bp; b: Zeiger auf Wurzel bh: Hilfszeiger bp: Zeiger auf Zeiger auf knoten b bp.
Advertisements

DGC 1. 2 Motivation x new(x) delete(x) Speicher DGC 3 Inhalt Einführung GC / DGC Der ideale DGC Algorithmen Zusammenfassung.
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Sortieren I - Bubblesort -
Kapitel 6: Klassifizierung von Sortiertechniken
Suche in Texten (Stringsuche )
Kapitel 7. Sortier-Algorithmen
Synonyme: Stapel, Keller, LIFO-Liste usw.
der Universität Oldenburg
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
DINAMISCHE STRUKTUREN FACHBEGRIFFE 1. DER POINTERDER POINTER 2. DER BUFFERDER BUFFER 3. DER KNOTENDER KNOTEN DIE EINFACHVERKETTETE LISTE DEFINITION DEFINITION.
Programmieren 2 Future Car Projekt Praktikum 6
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Garbage Collection Maik Theisen Betreuer: Guido Tack
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (06 - Anwendungen von Stapeln und Schlangen) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (24 – Fibonacci-Heaps) T. Lauer.
Das Maßproblem von Klee
Algorithmen und Datenstrukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
WS Algorithmentheorie 15 – Fibonacci-Heaps Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Fibonacci-Heaps) Tobias Lauer.
WS Algorithmentheorie 15 – Fibonacci-Heaps Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
6 Folgen (Teil II - Datenstrukturen und Algorithmen)
3.1.7 Korrektheit von Objekten Voraussetzung für die Diskussion der Korrektheit von nichtsequentiell benutzten abstrakten Objekten: Modellbasierte Spezifikation:
Übung Datenbanksysteme WS 2003/ Übung Datenbanksysteme Hierarchische DBMS
Verkettete Liste Visualisierung. New-Operator Mit dem New-Operator kann zur Laufzeit (dynamisch) Speicherplatz reserviert und angelegt werden Vorteil:
Katja Losemann Chris Schwiegelshohn
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.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Java Garbage Collection Angelika Kusel, Überblick Was ist Garbage Collection? Vor- und Nachteile von GC GC-Algorithmen/Verfahren Java Garbage.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Diskrete Mathematik II
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
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 Fakultät.
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
1.6 Die Datenstruktur Stapel Ein Stapel (Stack) ist ein Sonderfall einer Liste. Die Elemente werden nach dem Prinzip LIFO (Last In First Out) angefügt.
Garbage Collection unter .NET
Stefan Loidl, , Reference Counting II Freigeben zyklischer Zellstrukturen.
Algorithmen und Datenstrukturen Übungsmodul 8
Mark – Compact GC & Performancemessungen Bernhard Prügl,
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.
Informatik Datenstruktur Graph 3.3 Durchlaufen von Graphen
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.
1 // 13_2_ADT_Unger_Graph // ungerichteter, knotenmarkierter Graph als ADT // #include struct Knoten { public: void Erzeuge_Kn (int, char*); char* Get_Marke.
A&D Persa K TB Herzlich Willkommen zum Flash 4 - Seminar.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Algorithmen und Datenstrukturen 1 SS 2002
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Suche des kürzesten Weges in einem Netz.
Programmiersprachen II Graph_Algorithmen Einführung Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
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.
Zwei Denkansätze zur Klasse Schlange
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

Mark & Sweep Seminar Softwareentwicklung: Garbage Collection Eva Schartner

Übersicht Grundprinzip Mark & Sweep Stärken/Schwächen Rekursion Umkehrung von Zeigern Lazy Sweeping Mark During Sweep Very Concurrent Garbage Collection

Wie funktioniert Mark & Sweep GC wird erst aufgerufen, wenn allocate zuwenig Speicherplatz findet Normale Berechnung angehalten während M&S Heap durchlaufen um unerreichbare Zellen aufzuspüren Diese werden zum free_pool hinzugefügt

Mark & Sweep Algorithmus Mark_sweep() For R in Roots Mark(R) Sweep() If free_pool is empty Abort since Memory exhausted Free_pool: Implementation frei wählbar Liste: nur Pointer umleiten

2 Phasen: Marking root...Mark bit

2 Phasen: Sweeping...Mark bit root

Stärken und Schwächen Zyklische Datenstrukturen Zeiger Manipulation Unterbrechendes Verfahren Hohe Komplexität Mark: jede aktive Zelle Sweep: jede Zelle Gut ausgelasteter Heap: Thrashing

Rekursion explizit machen Rekursion nicht effizient => Stack gc() = mark_heap() sweep() mark_heap() = mark_stack=empty for R in Roots mark_bit(R) = marked push(R, mark_stack) mark() mark() = while mark_stack not empty N = pop(mark_stack) for M in Children(N) do if mark_bit(*M) == unmarked mark_bit(*M) = mark if not atom(*M) push(*M, mark_stack)

Stack overflow Boehm-Demer-Weis Methode Stack overflow merken Kein Push mehr Neuer Stack mit doppelter Größe Suche nach markierten Knoten mit unmarkierten Kindern Knuth Kurokawa

Zeiger umkehren Deutsch-Schorr-Waite: 3 Phasen Advance Setze mark_bit Linkes Feld von child zeigt auf parent Switch Setze Flag bit von parent Originalwert von links wiederhergestellt Rechtes Feld von child zeigt auf parent Retreat Flag bit gelöscht Originalwert von rechts wiederhergestellt Eine Ebene hinauf root

Lazy Sweeping Während Allokation nach freiem Speicher sucht läuft Sweep Zelle markiert => zurücksetzen Zelle unmarkiert => zurückgeben an Allokation Heap durchwandert => voller GC Durchlauf da Heap voll mutator mutator + sweep mark

Mark During Sweep 2 Generationen mit je eigenen Farben schwarz: aktiv, weiß: garbage grau: Zwischenstufe Marker markiert aktuelle Generation Sweeper löscht vorherige Generation Hoher Overhead für Synchronisation mark N+1 mark N+2 sweep N sweep N+1 mutator

Very Concurrent GC 3 Farben, dargestellt durch epochs Keine Fein-Synchronisation mehr nötig 3 nebenläufige Threads mutator marker Sweeper Hinkt 2 epochs hinterher

Very Concurrent GC int epoch = 2; root_set roots = {}; thread mutator, marker, sweeper; forever{ mutator = New mutator(COLOR(epoch));// Hauptprogramm marker = New marker(COLOR(epoch));// markiert aktive sweeper = New sweeper(COLOR(epoch – 2));// sammelt vorvorige Daten barrier_sync {marker, sweeper}; // aller erreichbaren Daten haben COLOR(epoch) suspend_thread mutator; roots = getRoots(mutator); deleteThreads(mutator, marker, sweeper); epoch++; }

Danke für Ihre Aufmerksamkeit Fragen?