89 - 1.2. Speicherung von Dateien [ID:28811]
50 von 227 angezeigt

Im nächsten Abschnitt möchte ich mich jetzt damit beschäftigen, wie man auf so einem Medium

nun Dateien wirklich speichert. Dateien benötigen ja oft mehr als einen Block auf der Festplatte.

Und die Frage ist natürlich, welche Blöcke nennt man jetzt konkret für die Speicherung einer

Datei. Und da gibt es eine ganze Reihe von verschiedenen Möglichkeiten und vor allem

auch verschiedene Möglichkeiten, wie man diese Blöcke verwaltet, wo man sich aufschreibt,

welche Blöcke das sind. Die erste Möglichkeit ist eine kontinuierliche Speicherung, das heißt,

die Datei wird in Blöcken mit aufsteigender Blocknummer gespeichert. Die Nummer des ersten

Blocks und die Anzahl der Folgeblöcke muss dann auch irgendwo gespeichert werden. Das könnte man

zum Beispiel dann im Dateiverzeichnis, im Direktory machen, dass man zum Dateinamen einfach die Nummer

des ersten Blocks mitspeichert und die Länge der Datei speichert. Sehr viel mehr Information

brauchen wir eigentlich nicht. Der große Vorteil davon ist natürlich, gerade bei einer Harddisk,

dass ich auf alle Blöcke mit minimaler Positionierzeit des Schwenkarms zugreifen kann.

Ich muss letztlich ja nur einmal den Schwenkarm auf den richtigen Zylinder positionieren und solange

die Blöcke alle in einer Spur oder auch mehreren Spuren auf verschiedenen Plattenoberflächen mit

gleichem Radius, also in einem Zylinder, Platz haben, kann ich also einmal positionieren und kann

dann im Raum einer Umdrehung eigentlich alle Blöcke lesen oder schreiben. Man hat damit auch

einen relativ schnellen direkten Zugriff auf eine bestimmte Dateiposition. Man kann sich ja ausrechnen,

welcher Block das dann ist und weiß dann eben welchen man lesen muss. Solche Systeme oder solche

Dateisysteme gibt es in der Praxis durchaus, gerade bei Systemen mit Echtzeitanforderungen,

wo ich Vorhersagen machen möchte, wie lange es eben dauert, um einen Block zu lesen oder zu schreiben.

Weil das ja dann für die Echtzeitbedingungen des Systems unter Umständen ein wichtiger Parameter

ist und in dem Moment, wo das eine vorherbesagbare Zeit ist, kann ich das eben in meine Zeitabschätzungen

im System sehr präzise mit aufnehmen. Das Problem bei dieser Art von Dateisystem ist allerdings,

dass ich ja diesen freien Platz auf der Festplatte, also eine Menge von aufeinander

folgen und freien Datenblöcken erstmal finden muss. Ich muss ihn vor allem haben. Und in dem

Moment, wo eine Platte länger in Benutzung ist und ich habe dann immer wieder mal Dateien angelegt,

habe kleine Dateien angelegt, die dann natürlich hintereinander möglicherweise auf der Platte

liegen, dann lösche ich zwischendrin mal so eine kleine Datei raus, dann habe ich dann ein kleines

Loch drin. Das reicht aber natürlich nicht für eine große Datei. Damit habe ich im Prinzip genau

das gleiche Fragmentierungsproblem, das wir auch vom Kapitel der Speicherverwaltung schon kennen.

Ich habe externen Verschnitt. Ich habe eventuell irgendwann eine genügende Zahl von Blöcken auf

der Platte frei, aber die sind nicht am Stück und damit habe ich nicht genügend Platz für eine

Datei, die ich da anlegen möchte. Dann ist auch das Problem, dass bei neuen Dateien die Größe

im Voraus oft gar nicht bekannt ist und wenn ich sie dann erweitern möchte, also ich muss beim

Anlegen natürlich die Größe angeben, und wenn das dann nicht ausreicht, wenn ich möchte die Datei

erweitern, dann kann das ein Problem geben, falls im Anschluss an diese Datei bereits eine

andere Datei liegt. Und dann muss ich die Datei umgruppieren in einen größeren Bereich.

Es gibt Variationen von dieser Art der Datei-Speicherung und das am weitesten

verbreitete und heute auch wirklich sehr gebräuchliche ist das unterteilen einer

Datei in Folgen von Blöcken. Diese Blöcke liegen dann schon am Stück auf der Platte,

aber es können mehrere solche Blockfolgen zu einer Datei gehören und so eine Folge von Blöcken

nennt man auch Chunks oder Extents. Diese Blockfolgen werden also kontinuierlich

gespeichert, haben also dann alle Vorteile von kontinuierlicher Speicherung, aber wenn ich die

Datei verlängern möchte, dann kann ich halt einfach einen weiteren Chunk hinzunehmen,

der dann auch wieder kontinuierlich, aber an anderer Stelle auf der Platte gespeichert ist.

Da habe ich dann natürlich Positionierzeiten dazwischen, ist also so ein bisschen Kompromiss

zwischen alles liegt am Stück und es liegt genügend am Stück, um einfach die Vorteile von schnellem

Zugriff zumindest schon mal zu haben. Pro Datei muss natürlich jeweils der erste Block und die

Länge von jedem einzelnen Chunk gespeichert werden. Also ich habe mehr Verwaltungsinformation.

Das Problem hierbei ist eventuell, dass ich innerhalb so einer Folge dann wieder verschnitt habe,

Teil eines Kapitels:
13 Dateisystem

Zugänglich über

Offener Zugang

Dauer

00:22:05 Min

Aufnahmedatum

2021-01-26

Hochgeladen am

2021-01-26 11:49:55

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen