Grundlagen Algorithmen und Datenstrukturen Kapitel 13

Ähnliche Dokumente
Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Kapitel 3. Speicherhierachie. Beispiel für Cache Effekte. Motivation Externspeicheralgorithmen. Motivation Für Beachtung von Cache Effekten

Grundlagen der Rechnerarchitektur

Algorithmen & Datenstrukturen 1. Klausur

Datenstrukturen & Algorithmen

3. Übung Algorithmen I

Datenstrukturen & Algorithmen

Hausübung 5 (Musterlösung )

Cacheoptimierung durch Anpassung der Speicheranordnung

One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:

Abschnitt: Algorithmendesign und Laufzeitanalyse

Übung zur Vorlesung Algorithmische Geometrie

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2013/14. Prof. Dr. Sándor Fekete

Sortierte Folgen 250

WS 2009/10. Diskrete Strukturen

Informatik II, SS 2014

15 Optimales Kodieren


Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.

Methoden des Algorithmenentwurfs Kapitel 2.2: Randomisierte Online Algorithmen

Suchen und Sortieren Sortieren. Heaps

Systeme 1. Kapitel 3 Dateisysteme WS 2009/10 1

Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass

Programmieren I. Kapitel 7. Sortieren und Suchen

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Tutorium Rechnerorganisation

Einführung in die technische Informatik

Komplexität von Algorithmen

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

Approximationsalgorithmen

Informatik II, SS 2014

B-Bäume I. Algorithmen und Datenstrukturen 220 DATABASE SYSTEMS GROUP

Übung Algorithmen I

Algorithmische Intelligenz. Amortisierung. Stefan Edelkamp

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

Grundlagen der Künstlichen Intelligenz

! DBMS organisiert die Daten so, dass minimal viele Plattenzugriffe nötig sind.

Besprechung des 8. Übungsblattes Einführung in Caches Cache-Organisation Cache-Ersetzungsstrategien Aufgaben (an der Tafel) Testklausur

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)

Algorithmen II Vorlesung am

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Datenstrukturen und Algorithmen

OPERATIONEN AUF EINER DATENBANK

Wie groß ist die Page Table?

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Balancierte Bäume. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer. SS 06

Definition. Gnutella. Gnutella. Kriterien für P2P-Netzwerke. Gnutella = +

Lenstras Algorithmus für Faktorisierung

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Einstieg in die Informatik mit Java

Speicher und Adressraum

MMU Virtualisierung. ISE Seminar Thomas Schaefer 1

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Klausur Algorithmen und Datenstrukturen

Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Amortisierte Analysen

Programmiertechnik II

Praktikum Diskrete Optimierung (Teil 11)

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl (gbs-ws11@mailschlichter.informatik.tu-muenchen.de)

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

Kapitel 3: Variablen

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Algorithmen und Datenstrukturen Suchbaum

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

Algorithmentheorie Randomisierung. Robert Elsässer

Netzsicherheit I, WS 2008/2009 Übung 6. Prof. Dr. Jörg Schwenk





(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert?

MATHEMATISCHE ANALYSE VON ALGORITHMEN

Digitale Magazine ohne eigenen Speicher

Paging. Einfaches Paging. Paging mit virtuellem Speicher

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Algorithmen und Datenstrukturen

Algorithmen & Datenstrukturen Lösungen zu Blatt 9 HS 16

Geometrische Algorithmen

Wiederholung: Realisierung von Dateien

Nichtdeterministische Platzklassen

Algorithmische Bioinformatik 1

Besprechung der Probeklausur Übungsscheine, inoffizielle Evaluation Übungsaufgaben Noch Fragen?

Bäume, Suchbäume und Hash-Tabellen

Datenstrukturen und Algorithmen

DATENSTRUKTUREN UND ALGORITHMEN

Transkript:

Grundlagen Algorithmen und Datenstrukturen Kapitel 13 Christian Scheideler + Helmut Seidl SS 2009 18.07.09 Kapitel 6 1

Speicherverwaltung Drei Ansätze: Allokiere neue Objekte auf einem Keller. Gib nie Speicherplatz wieder frei. Versuche, nicht mehr benötigten Platz wieder zu verwenden (C / C++) Automatische Speicherbereinigung (Java) 18.07.09 Kapitel 6 2

Speicherverwaltung Drei Ansätze: Allokiere neue Objekte auf einem Keller. Gib nie Speicherplatz wieder frei. Versuche, nicht mehr benötigten Platz wieder zu verwenden (C / C++) Automatische Speicherbereinigung (Java) 18.07.09 Kapitel 6 3

Übersicht DS zur Speicherallokation Speicherallokation mit Verschiebung DS zur Bandbreitenallokation 18.07.09 Kapitel 6 4

Das Buddy System Problem: Verwaltung freier Blöcke in einem gegebenen Adressraum {0,,m-1} zur effizienten Allokation und Deallokation. 0 m-1 Vereinfachung: m ist eine Zweierpotenz nur Zweierpotenzen für allokierte Blockgrößen erlaubt 18.07.09 Kapitel 6 5

Das Buddy System M µ {0,,m-1}: freier Adressraum Operationen: Allocate(i): allokiert Block der Größe 2 i, d.h. M = MnB; für einen Block B µ M der Größe 2 i Deallocate(B): gibt Block B wieder frei, d.h. M = M [ B; 18.07.09 Kapitel 6 6

Die Buddy Datenstruktur Physikalischer Adressraum: F: Feld von log m +1 Blocklisten F[i], i>0, speichert Anfangsadressen freier Blöcke der Größe 2 i Verwende das erste Byte von jedem allokierten Block der Größe 2 i zur Speicherung von i+1 (das reicht, da damit Blockgrößen bis zu 2 28-2 = 2 254 möglich). Freie Blöcke haben dieses Byte auf 0 gesetzt. 18.07.09 Kapitel 6 7

Die Buddy Datenstruktur Virtueller Adressraum: F: Feld von log m +1 Blocklisten F[0],,F[log m] T: Hashtabelle mit Einträgen zu freien Blöcken. Jeder Eintrag enthält: Startadresse addr(b) des Blocks B Größe von Block B ( B =2 i : speichere i) 18.07.09 Kapitel 6 8

Das Buddy System F[i]: Liste von Blockgrößen 2 i F: 0 1 2 3 log m B 1 B 3 B 4 B 2 B 5 T: B 2 B 5 B 3 B 1 B 4 18.07.09 Kapitel 6 9

Allocate(3): Das Buddy System F: 0 1 2 3 log m B 1 B 3 B 4 B 2 B 5 T: B 2 B 5 B 3 B 1 B 4 18.07.09 Kapitel 6 10

Allocate(2): Das Buddy System F: 0 1 2 3 log m B 1 B 3 B 6 B 4 B 2 B 7 B 5 T: B 2 B 56 B 3 B 1 B 4 18.07.09 Kapitel 6 11

Das Buddy System Deallocate(B): (Größe von B ist 2 2 ) F: 0 1 2 3 log m B 1 B 3 B B 4 B 2 B 5 T: B 2 B 5 B B 3 B 1 B 4 18.07.09 Kapitel 6 12

Das Buddy System Problem: zunehmende Fragmentierung Definition 6.3: Block B der Größe 2 i ist gültig: Startadresse von B ist 0 für die ersten i Bits Buddy von Block B der Größe 2 i : Block B, für den B [ B einen gültigen Block der Größe 2 i+1 ergibt Invariante: Für jeden freien Block B in Feld F ist der Buddy belegt. 18.07.09 Kapitel 6 13

Das Buddy System Bewahrung der Invariante bei Deallocate(B): while (Buddy(B) frei) B = B [ Buddy(B); speichere B in F und T ab; Schnelle Bestimmung von Buddy(B): berechne Startadresse von B = Buddy(B) (folgt direkt aus Startadresse von B) prüfe mittels T, ob B existiert (beim physikalischem Adressraum reicht es stattdessen, direkt auf das erste Byte von B zuzugreifen) 18.07.09 Kapitel 6 14

Das Buddy System Probleme: 1. trotz Buddy-Ansatz keine garantiert niedrigen Obergrenzen für Fragmentierung 2. Allocate und Deallocate können Θ (log m) viele Schritte laufen (wegen split- oder merge- Operationen) Beispiel: Allocate(0) 0 1 2 log m 0 1 2 log m 18.07.09 Kapitel 6 15

Das Buddy System Probleme: 1. trotz Buddy-Ansatz keine garantiert niedrigen Obergrenzen für Fragmentierung 2. Allocate und Deallocate können Θ (log m) viele Schritte laufen (wegen split- oder merge- Operationen) Beispiel: Deallocate(0) 0 1 2 log m 0 1 2 log m 18.07.09 Kapitel 6 16

Das Buddy System 1. Problem: Fragmentierung Theorem 6.4: Die Anzahl freier Blöcke ist höchstens O(log m Anzahl allokierter Blöcke). Beweis: Freier Block nicht kombinierbar: allokierter Block dafür ein Zeuge Allokierter Block wird von höchstens log m freien Blöcken als Zeuge verwendet. 18.07.09 Kapitel 6 17

Verbessertes Buddy System 2. Problem: Allocate und Deallocate brauchen Zeit Θ (log m): kann effizient gelöst werden. Idee: erlaube Blöcke, die freien Speicher der Form 2 k -2 i (i<k) angeben. belegt frei Solche Blöcke werden in F[k-1] gespeichert. 18.07.09 Kapitel 6 18

Verbessertes Buddy System Allocate(i): führe lazy splitting durch. Fall 1: 2 k -Block B vorhanden, k>i. Schneide aus B vorderen 2 i -Block raus, Rest von B wird 2 k -2 i -Block. Fall 2: nur 2 k -2 j -Block B vorhanden, k>i. Schneide ersten gültigen 2 i -Block aus B raus. Damit teilt sich B in 2 i -2 j -Block und 2 k -2 i+1 -Block auf. Laufzeit: O(1), falls Suche nach 2 k -Block bzw. 2 k -2 j -Block in O(1) Zeit machbar. 18.07.09 Kapitel 6 19

Verbessertes Buddy System O(1) Suchzeit nach passendem Block: Strategie 1: Falls Worte der Größe log m +1 verfügbar, die mit Einheitskosten bearbeitet werden können, dann setze Bit i von Indexwort W auf 1 genau dann, wenn F[i] ein Element enthält. Suche dann nach dem erstem gesetzten Bit k>i bzw. k>i (was mit x86-prozessoren in O(1) Zeit machbar ist). Strategie 2: Tabelle der Größe m ε, die für jede Zahl z 2 {0,,m ε -1} das niedrigste gesetzte Bit in z enthält. Damit maximal 1/ε Zeit, bis passen-der Index k>i bzw. k>i gefunden. 18.07.09 Kapitel 6 20

Verbessertes Buddy System Deallocate(B): führe lazy merging durch. Wiederhole, bis kein Fall mehr eintritt: Fall 1: B hat freien Buddy B =Buddy(B) in F: B = B [ B ; Fall 2: B gehört zu freiem 2 k -2 i -Block B in F, Größe von B ist 2 i : B = B [ B ; Speichere B in F (und T) ab Laufzeit: amortisiert O(1). 18.07.09 Kapitel 6 21

Verbessertes Buddy System Lemma: Die amortisierte Laufzeit der Deallocate- Operation ist O(1). Beweis: Ein Merge wird nur dann auf B und B angewandt, wenn B [ B vorher in einem Allocate in B und B geteilt worden ist. Zahle für jeden Block, der Ergebnis eines Splittings ist, auf ein Konto. Verrechne mit der Einzahlung die Kosten des Mergens. 18.07.09 Kapitel 6 22

Übersicht Union-Find Datenstruktur DS zur Speicherallokation Allokation mit Verschiebung DS zur Bandbreitenallokation 18.07.09 Kapitel 6 23

Buddies mit Reallokation 0 m-1 Situation hier: Speicherreallokationen erlaubt Allocate(i) hat ohne Reallokation 2 i Zeitaufwand (Speicher wird überschrieben) Deallocate(i) hat keinen extra Zeitaufwand (Speicher wird lediglich freigegeben) 18.07.09 Kapitel 6 24

Buddies mit Reallokation Allocate(i): Annahme: zusammen mit neuem 2 i -Block sind (1- ε )m der Speicherzellen belegt. Suche gültigen 2 i -Block B mit Belegung <(1-ε )2 i (muss existieren!) Für alle Blöcke B in B: weise B Allocate(log B ) zu Gib B zurück Deallocate(B): wie im original Buddy-System 18.07.09 Kapitel 6 25

Buddies mit Reallokation Theorem 6.5: Allocate(i) hat einen Zeitaufwand von höchstens O(2 i /ε ). Beweis: Allokation von Block B: Aufwand O(2 i ) Reallokation der belegten Blöcke in B: Aufwand O((1-ε )2 i ) Reallokation der dadurch verdrängten Blöcke O((1-ε ) 2 2 i ) usw. Aufwand insgesamt max. O(2 i j>0 (1-ε )) j = O(2 i /ε ) 18.07.09 Kapitel 6 26

Übersicht DS zur Speicherallokation Allokation mit Verschiebung DS zur Bandbreitenallokation 18.07.09 Kapitel 6 27

Bandbreitenallokation Problem: Verwaltung freier Frequenzen in einem gegebenen Frequenzraum {0,,m-1} zur effizienten Allokation und Deallokation. 0 m-1 Vereinfachung (wie bei Buddy-System): m ist eine Zweierpotenz nur Zweierpotenzen für allokierte Blockgrößen erlaubt 18.07.09 Kapitel 6 28

Bandbreitenallokation Situation hier: Reallokation von zugewiesenen Bandbreiten ist einfach machbar (O(1) Zeit pro Block) Problem beim Buddy System: Reallokation teuer bzw. nicht möglich, da Speicherbereiche umkopiert werden müssen. 18.07.09 Kapitel 6 29

Bandbreitenallokation M µ{0,,m-1}: freier Frequenzraum Operationen: Allocate(i): allokiert Block der Größe 2 i, d.h. M = MnB für einen Block B µ M der Größe 2 i Deallocate(B): gibt Block B wieder frei, d.h. M = M [ B; 18.07.09 Kapitel 6 30

Bandbreitenallokation Naiver Ansatz: Halte die belegten Blöcke sortiert nach Größe. Das kann sehr viel Umorganisation verursachen. Eine Strategie mit maximal 5 Umplatzierungen pro Allocate und Deallocate ist in A Constant- Competitive Algorithm for Online OVSF Code Assignment von F.Y.L. Chin, H.F. Ting und Y. Zhang zu finden. 18.07.09 Kapitel 6 31

Nächstes Kapitel Klausur! 18.07.09 Kapitel 6 32

Bandbreitenallokation Datenstruktur: Binärbaum mit freien ( ) und belegten Blättern ( ) 18.07.09 Kapitel 6 33