Universität zu Köln Historisch- Kulturwissenschaftliche Informationsverarbeitung Hauptseminar: Intelligente Dateisysteme Dozent: Prof. Manfred Thaller Referent/in: Corinna Asselborn Wintersemester 2013/14 Organizing Files for Performance
Feb 04, 2016
Universität zu Köln
Historisch- Kulturwissenschaftliche Informationsverarbeitung
Hauptseminar: Intelligente Dateisysteme
Dozent: Prof. Manfred Thaller
Referent/in: Corinna Asselborn
Wintersemester 2013/14
Organizing Files for Performance
1. Datenkompression- 1.1 Was ist das?- 1.2 Reversible Kompression – Irreversible Kompression- 1.3 Reversible Kompression – run-length encoding- 1. 4Variable-length records: Huffman Code- 1.5 Irreversible Kompression 2. Regenerierung von Speicherplatz & Datenorganisation- 2.1 Datenorganisation Einstieg- 2.2 Record Deletion bei Fixed-length records - 2.3 Record Deletion bei Variable-length records- 2.4 Probleme der Datenoragnisation: Fragmentierung - 2.5 Defragmentierung & Placement strategies 3. Suchverfahren- 3.1 Internal sorting vs. Binäre Suche- 3.2 Probleme bei der binären Suche 4. Keysorting- 4.1 Funktionsweise + Vorteile- 4.2 Index files- 4.3 Pinned records 5. Literatur
Überblick
Was ist Datenkompression? Und wofür wird es verwendet?
Datenkompression wird verwendet um Dateien zu verkleinern, welche dann weniger Speicherplatz benötigen. Eine Kompression kann auf Bilder, Texte und viele weitere Formate angewendet werden.
Komprimierte Dateien haben außerdem eine schnellere Verarbeitungszeit, so dass das Thema Datenkompression besonders in der Zukunft immer lukrativer wird.
1.1 Datenkompression
Reversible Kompression: Verlustfrei Kompression; Dateiinformationen
bleiben vollständig erhalten redundancy reduction
Irreversible Kompression: Kompression bei der Informationen innerhalb der
Datei verloren gehen. Oftmals sind dies belanglose Informationen, dennoch kann kein Original mehr daraus gebildet werden. Dieser Art von Kompression wird beispielsweise bei der Kodierung von Sprachmaterial (voice coding) benutzt.
1.2 Datenkompression
Run-length encoding (Lauflängenkodierung):
(Abb 1:http://www.pagus.de/seminar/skript/bmpcomp.html)
Zusammenfassung gleicher aufeinander folgender Farbwerte. Die Kodierung innerhalb einer Zeile erfolgt von rechts nach links.
Funktioniert am besten bei homogenen Daten
1.3 Reversible Kompressionen
Huffman code (Statistische Kompression):Kompression über BinärbaumZiel: Häufig genutzte Symbole bekommen eine kurze
Codierung, seltener genutzte Symbole erhalten eine längere Codierung.
(Abb. 2 http://www.itwissen.info/definition/lexikon/Huffman-Codierung-Huffman-encoding.html)
1.4 Reversible Kompressionen
Irreversible Kompression = Verlustbehaftete Kompression, bei der Daten innerhalb einer Datei verloren gehen.
Irreversible Datenkompression ist weniger verbreitet als die reversible Kompression, wird aber unter anderem genutzt, um Sprachmaterial zu komprimieren (voice coding). Wenn eine Datei eine irreversible Kompression durchläuft, ist es möglich dass nur überflüssige, oder irrelevante Informationen verloren gehen. Ein Original kann aus der neu gewonnen Datei allerdings nicht mehr hergestellt werden. Die gelöschten Informationen sind nicht wieder herstellbar.
1.5 Irreversible Kompressionen
2.1Einstieg: Wie kann man Dateien auf einem PC ökonomisch organisieren? Record deletion, record addition & record updatingBsp.: Auf dem PC werden ständig Daten gespeichert, gelöscht oder
ergänzt. Wie kann man die Informationen bestmöglich koordinieren? Linked lists, avail lists etc. Zieleiner Datenorganisation: neu gewonnener Speicherplatz durch
bspw. gelöschte Dateien sollen schnellstmöglich wieder genutzt werden können.
storage compaction = Verfahren bei dem Speicherplatz für Dateien gesucht wird, in dem man leere Stellen innerhalb von Datei aufsucht und belegt.
Datenorganisation anwendbar auf: Fixed-length records = Dateien welche in gleich großen Stacks
gespeichert werden Variable-length records = Dateien mit unterschiedlicher Größe (Bsp.
Morsezeichenkodierung)
2. Regenerierung von Speicherplatz & Datenorganisation
Fixed-length records bestehen aus gleich großen Einheiten.
Für eine erfolgreiches record deletion und schnellstmögliche Wiederverwendung von Speicherplatz sind zwei Punkte bedeutsam:
1.) Gelöschte Dateien müssen markiert werden2.) Man braucht eine Möglichkeit, dieses Dateien
zu finden, damit man den neu gewonnenen Speicherplatz direkt wiederverwenden kann.
Nachteil: das Verfahren der storage compaction erfolgt sequentiell. Die Datei wird Schritt für Schritt auf leere Plätze durchsucht. Resultat: langsamer Prozess
2.2 Record Deletion – Fixed-Length Records
Beispiel für die Markierung einer gelöschten Information:
2.2 Record Deletion – Fixed-Length Records
Lösungsansatz: Man muss wissen ob in einem Ordner gelöschte Dateien vorhanden sind, und wenn ja, die Möglichkeit bekommen direkt auf diese zugreifen zu können.
Linked Lists
(Abb. 4 Linked list mit head pointer und Endpunkt)
2.2 Record Deletion – Fixed-Length records
Wenn eine linked list gelöschte Dateien (available space) enthält, wird sie umbenannt zu: avail list
Solche avail lists bestehen aus gleich großen stacks (Ausnahme: variable-length records)
(Abb. 5 Hinzufügen einer RRN in eine Liste)
pushed to stack: Hinzukommende Informationen die am Anfang der avail list zugeführt werden
popping to stack: Wegnehmen des neuen Eintrages: 3RRN.
2.2 Record Deletion – Fixed-Length Records
Hinzufügen von neuen Informationen in eine avail list:
Liste kann mit neuen Informationen gefüllt werden, ohne dass sich die Größe der Liste verändert. Wenn die Liste voll (bzw. die avail list leer ist), wird ein neuer Eintrag der Liste hinzugefügt.
2.2 RecordDeletion – Fixed-Length Records
Gleiches Funktionsweise wie bei fixed-length records, jedoch mit einigen komplexen Problemen.
Die Abspeicherung der Daten in einer avail list mit unterschiedlich großen Einheiten wird ermöglicht, indem man die Größe der Einheiten vorab im Bytecode notiert.
2.3 Record Deletion – Variable-Length Records
Fragmente & fragmentierter Speicher: Wenn Fragmente nicht direkt aneinander liegen, sondern Lücken haben von freien Speicherplätzen, spricht man fragmentierten Speicher. Manche Fragmente bleiben immer ungenutzt weil sie nicht groß genug für andere Dateien sind.
Interne Fragmentierung: Verteilung von Daten auf Speicherblöcke (Stacks) welche nicht vollkommend belegt sind; daraus resultiert eine ineffiziente Speicherverwaltung
Externe Fragmentierung: Aneinanderreihung von Fragmenten; diese Fragmente können belegt sein oder freien Speicherplatz aufweisen. (Siehe auch: fragmentierter Speicher)
Lösung: DefragmentierungLösung: placement strategies
2.4 Probleme der Datenorganisation
2.5 Defragmentierung:
Neuanordnung von fragmentierten Datenblöcken
First fit Strategie:Wenn ein Speicherfragment groß genug ist, soll dieses auch
direkt genutzt werden! Best fit Strategie:Neue Information wird in ein Fragment geladen das gerade
noch groß genug ist, und den Speicher fast völlig belegt (oft bei variable-length records und interner Fragmentierung); so dass der Speicher komplett ausgenutzt wird.
Worst fit Strategie:In einer avail list wird der größte freie Platz gewählt, egal
wie klein die eigentliche neue Datei ist. Ziel: der übrig gebliebene Speicherplatz soll so groß wie möglich sein, um die externer Fragmentierung zu mindern.
2.5 Placement Strategien:
Sequentielle Suche: Einfachster Suchalgorithmus; Man geht die Liste von eine Menge n
Einträgen nach und nach durch und vergleicht sie mit dem gesuchten Element.
Nachteil: sehr lange Suchzeiten
Internal Sort: Eine Sortierung von Daten erfolgt direkt im memory ohne unnötiges Hin und Her switschen von verschiedenen Dateien.
Binäre Suche:Schnellerer Suchalgorithmus als die sequentielle Suche O(log₂n) Versuche um Datei zu findenBsp.: Lexikon Nachteil: Funktioniert nur bei sortierten Listen; bei unsortierten
Listen muss Sortierungsalgorithmus gefunden werden
3. Sucheverfahren
Problem: Eine binäre Suche kann nur auf geordnete Listen angewendet werden. Aber ein memory sort kann nur bei relativ kleinen Dateien vorgenommen werden. Für größere Dateien muss eine anderer Sortierungsalgorithmus gefunden werden.
Lösung: Keysort Verfahren!
3.2 Problem der binären Suche
Auch: tag sort genanntFunktionsweise: Daten bekommen keys zugeweisen. Diese
keys werden genutzt um die Dateien zu sortieren, damit man bspw. eine binäre Suche anwenden kann. Es findet nur eine Sortierung der keys und nicht der ganzen Datei statt.
Aus der Anzahl der keys wird eine neue Datei erzeugt, welche eine geordnete Liste dieser keys herbergt.
Keynodes= Daten die in Arrays gespeichert, und deren keys verwendet werden
Vorteil: Größere Dateien können eingelesen und sortiert werden. Zudem wird weniger Arbeitsplatz verbraucht wenn die Sortierung lediglich durch keys geschieht.
Nachteil: Durch das Erzeugen einer neuen Datei, entsteht das Problem, dass man die Verbindungen zwischen den Dateien suchen muss.
4. Keysorting
Beim keysorting wird lediglich eine geordnete Liste der keynotes[] erstellt. Eine Sortierte Liste der kompletten Dateien erfolgt nicht.
Es wird also eine index file erstellt, in welcher die Verlinkungen zu den original Dateien erfolgt.
4.2 Keysort – Index Files
Index file:
4.2 Keysorting – Index Files
Pinned records = davon spricht man, wenn Querverweise zwischen Dateien vorhanden sind, so dass man den physikalischen Ort der gegebenen Datei nicht verändern darf, da sonst die Referenz der beiden jeweiligen Datei zerstört werden.
Dangling Pointers = Dateien bei denen die Referenzen gelöscht wurden, indem sie bspw. verschoben wurden.
Durch die Nutzung von pinned records wird die Sortierung von Dateien erheblich erschwert, oder sogar komplett unmöglich.
4.3 Keysorting – Pinned records
Michael J. Folk, Bill Zoellick, Greg Riccardi: File Structures, 1998. Chapter 6, p. 201-246
5. Literatur:
Vielen Dank für die Aufmerksamkeit!