260 likes | 412 Views
Organizing Files for Performance. Universität zu Köln Historisch- Kulturwissenschaftliche Informationsverarbeitung Hauptseminar: Intelligente Dateisysteme Dozent: Prof. Manfred Thaller Referent/in: Corinna Asselborn Wintersemester 2013/14. Überblick. 1. Datenkompression
E N D
Organizing Files for Performance Universität zu Köln Historisch- Kulturwissenschaftliche Informationsverarbeitung Hauptseminar: Intelligente Dateisysteme Dozent: Prof. Manfred Thaller Referent/in: Corinna Asselborn Wintersemester 2013/14
Überblick • 1. Datenkompression • 1.1 Was ist das? • 1.2 Reversible Kompression – Irreversible Kompression • 1.3 Reversible Kompression – run-lengthencoding • 1. 4Variable-length records: Huffman Code • 1.5 Irreversible Kompression • 2. Regenerierung von Speicherplatz& Datenorganisation • 2.1 Datenorganisation Einstieg • 2.2 RecordDeletionbei Fixed-length records • 2.3 RecordDeletionbei Variable-length records • 2.4 Probleme der Datenoragnisation: Fragmentierung • 2.5 Defragmentierung & Placement strategies • 3. Suchverfahren • 3.1 Internal sortingvs. Binäre Suche • 3.2 Probleme bei der binären Suche • 4. Keysorting • 4.1 Funktionsweise + Vorteile • 4.2 Index files • 4.3 Pinnedrecords • 5. Literatur
1.1 Datenkompression • 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.2 Datenkompression Reversible Kompression: Verlustfrei Kompression; Dateiinformationen bleiben vollständig erhalten redundancyreduction 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.3 Reversible Kompressionen • Run-lengthencoding(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.4 Reversible Kompressionen • Huffmancode(Statistische Kompression): • Kompression über Binärbaum • Ziel: 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.5 Irreversible Kompressionen Irreversible Kompression = Verlustbehaftete Kompression, bei der Daten innerhalb einerDatei 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.
2. Regenerierung von Speicherplatz & Datenorganisation 2.1Einstieg: Wie kann man Dateien auf einem PC ökonomisch organisieren? • Recorddeletion, recordaddition & recordupdating Bsp.: Auf dem PC werden ständig Daten gespeichert, gelöscht oder ergänzt. Wie kann man die Informationen bestmöglich koordinieren? • Linkedlists, availlistsetc. Zieleiner Datenorganisation: neu gewonnener Speicherplatz durch bspw. gelöschte Dateien sollen schnellstmöglich wieder genutzt werden können. • storagecompaction= Verfahren bei dem Speicherplatz für Dateien gesucht wird, in dem man leere Stellen innerhalb vonDatei aufsucht und belegt. Datenorganisation anwendbar auf: • Fixed-lengthrecords= Dateien welche in gleich großen Stacks gespeichert werden • Variable-length records= Dateien mit unterschiedlicher Größe (Bsp. Morsezeichenkodierung)
2.2 RecordDeletion – Fixed-Length Records • Fixed-length recordsbestehen aus gleich großen Einheiten. • Für eine erfolgreiches recorddeletionund schnellstmögliche Wiederverwendung von Speicherplatz sind zwei Punkte bedeutsam: 1.) Gelöschte Dateien müssen markiert werden 2.) Man braucht eine Möglichkeit, dieses Dateien zu finden, damit man den neu gewonnenen Speicherplatz direkt wiederverwenden kann. • Nachteil: das Verfahren der storagecompactionerfolgt sequentiell. Die Datei wird Schritt für Schritt auf leere Plätze durchsucht. Resultat: langsamer Prozess
2.2 RecordDeletion – Fixed-Length Records • Beispiel für die Markierung einer gelöschten Information:
2.2 RecordDeletion – 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 Linkedlistmit headpointerund Endpunkt)
2.2 RecordDeletion– Fixed-Length Records • Wenn eine linkedlistgelöschte Dateien (availablespace) enthält, wird sie umbenannt zu: availlist • Solche availlistsbestehen aus gleich großen stacks (Ausnahme: variable-length records) (Abb. 5 Hinzufügen einer RRN in eine Liste) • pushedtostack: Hinzukommende Informationen die am Anfang der availlistzugeführt werden • poppingtostack: Wegnehmen des neuen Eintrages: 3RRN.
2.2 RecordDeletion – Fixed-Length Records • Hinzufügen von neuen Informationen in eine availlist: • Liste kann mit neuen Informationen gefüllt werden, ohne dass sich die Größe der Liste verändert. Wenn die Liste voll (bzw. die availlistleer ist), wird ein neuer Eintrag der Liste hinzugefügt.
2.3 RecordDeletion – Variable-Length Records • Gleiches Funktionsweise wie bei fixed-length records, jedoch mit einigen komplexen Problemen. • Die Abspeicherung der Daten in einer availlistmit unterschiedlich großen Einheiten wird ermöglicht, indem man die Größe der Einheiten vorab im Bytecode notiert.
2.4 Probleme der Datenorganisation • 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: Defragmentierung • Lösung: placementstrategies
2.5 Defragmentierung: Neuanordnung von fragmentierten Datenblöcken
2.5 Placement Strategien: • 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 recordsund interner Fragmentierung); so dass der Speicher komplett ausgenutzt wird. • Worst fit Strategie: In einer availlistwird 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 dieexterner Fragmentierungzu mindern.
3. Sucheverfahren • 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 finden Bsp.: Lexikon Nachteil: Funktioniert nur bei sortierten Listen; bei unsortierten Listen muss Sortierungsalgorithmus gefunden werden
3.2 Problem der binären Suche • Problem: Eine binäre Suche kann nur auf geordnete Listen angewendet werden. Aber ein memorysortkann nur bei relativ kleinen Dateien vorgenommen werden. Für größere Dateien muss eine anderer Sortierungsalgorithmus gefunden werden. • Lösung: KeysortVerfahren!
4. Keysorting • Auch: tag sortgenannt Funktionsweise: Daten bekommen keys zugeweisen. Diese keyswerden 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 keysverwendet 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.2 Keysort – Index Files • Beim keysorting wird lediglich eine geordnete Liste der keynotes[] erstellt. Eine Sortierte Liste der kompletten Dateien erfolgt nicht. • Es wird also eine indexfileerstellt, in welcher die Verlinkungen zu den original Dateien erfolgt.
4.2Keysorting – Index Files Index file:
4.3 Keysorting – Pinnedrecords • Pinnedrecords= davon spricht man, wenn Querverweise zwischenDateien 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. • DanglingPointers= Dateien bei denen die Referenzen gelöscht wurden, indem sie bspw. verschoben wurden. Durch die Nutzung von pinnedrecordswird die Sortierung von Dateien erheblich erschwert, oder sogar komplett unmöglich.
5. Literatur: • Michael J. Folk, Bill Zoellick, Greg Riccardi: File Structures, 1998. Chapter 6, p. 201-246