Die Daten jedes Speichergeräts beginnen bei
der Adresse "0" mit einem Inhaltsverzeichnis,
das alle Dateien und Ordner/Verzeichnisse
auflistet, die auf ihm gespeichert sind.
Das Inhaltsverzeichnis gibt für jedes Element an:
- die ID seines übergeordneten Verzeichnisses
("0" = "Stammverzeichnis")
- die Verzeichnis-ID (beginnend bei "1"),
wenn es keine Datei ist
- seinen Namen (mit optionaler Typ-Erweiterung)
- die Startadresse der eigentlichen Datei-Daten
- die Länge (Größe) der Datei in Bytes
sowie, je nach Betriebssystem:
- ein Nur-lesen-Schreibschutz-Flag
- Zugriffs-Flags nach Nutzergruppen
(oder "System", "versteckt" usw.)
- Daturm/Uhrzeit-Einträge für "letzte Änderung",
eventuell auch "angelegt", "zuletzt geöffnet" usw.
Um für physische Laufwerke die Zugriffszeiten, den
Energieverbrauch und den mechanischen Verschleiß
zu minimieren, kann das Inhaltsverzeichnis je nach
Betriebssystem auch segmentiert werden und
Extra-Einträge zur Suchbeschleunigung enthalten.
Es erfasst zudem die Summe aller von Dateien
belegten Bytes, so dass immer bekannt ist, wieviel
freier Speicherplatz noch zur Verfügung steht.
Um den Inhalt des Stammverzeichnisses aufzulisten,
durchsucht dein Computer das Inhaltsverzeichnis
nach allen Einträgen, deren ID des übergeordneten
Verzeichnisses auf "0" gesetzt ist.
Um den Inhalt eines anderen Verzeichnisses
aufzulisten, durchsucht er das Inhaltsverzeichnis
nach allen Einträgen, die dessen Verzeichnis-ID als
die ID ihres übergeordneten Verzeichnisses haben.
Wenn du eine Datei löschst, entfernt das
Betriebssysem typischerweise nur einfach seinen
Eintrag im Inhaltsverzeichnis, die eigentlichen
Datei-Daten verbleiben hingegen auf dem
Speichergerät, bis sie irgendwann von einer
neuen Datei überschrieben werden.
Deswegen können verlorengegangene Dateien
manchmal wiederhergestellt werden, wenn ein
spezielles Programm nach Datei-Daten sucht,
die keinen Inhaltsverzeichnis-Eintrag haben.
Wenn du eine Datei innerhalb der Verzeichnisstruktur
desselben Speichergeräts verschiebst, wird einzig
die ID seines übergeordneten Verzeichnisses im
Inhaltsverzeichnis geändert, weswegen in diesem Fall
das Verschieben ohne Zeitverzögerung erfolgt.
Wenn du hingegen eine Datei kopierst, müssen
all ihre Datenbytes gelesen und kopiert werden,
was bei großen Dateien etwas dauern kann.
Wenn du eine Datei von einem Speichergerät auf ein
anderes verschiebst, wird die Datei zuerst kopiert
(dauert etwas) und dann am Originalort gelöscht
(dies geht ruckzuck, siehe oben).
Manche Betriebssysteme können Speichergeräte in
mehrere kleinere "virtuelle" Speichergeräte aufteilen.
Dabei erhält jede solche "Partition" auf dem
Speichergerät ihr eigenes Inhaltsverzeichnis.
Dateien von einer Partition auf eine andere zu
verschieben dauert dann ebenso lange wie zwischen
physischen Geräten, denn nun muss auch hier
erst kopiert und dann gelöscht werden.
Wenn Dateien gelöscht werden, entstehen ungenutzte
"Löcher" im Speicher. Ein kleineres Loch entsteht,
wenn eine Datei verkleinert aktualisiert (gespeichert)
wird. Und wenn sie größer geworden ist, muss das
Betriebssystem sie mitunter in einem noch unbenutzten
Bereich des Speichers ganz neu erstellen und seine
Startadresse darauf setzen, wobei der Ort der alten
Datei-Daten dann wiederum als Loch verbleibt.
Der Nutzer kann ein Systemprogramm ausführen,
um das Dateisystem zu defragmentieren, was die
Datenblöcke sämtlicher Dateien so verschiebt,
dass keine Löcher mehr übrigbleiben — was durch
das viele Umherkopieren von Daten und das häufige
Aktualisieren des Inhaltsverzeichnisses
natürlich sehr lange dauert.
Das Dateisystem mag zudem sogar einzelne Dateien
fragmentieren, indem sie auf Teilblöcke verteilt
kreuz und quer auf dem Speichergerät verteilt
abgelegt werden (wozu weiterre Strukturdaten
zusätzlich zum Inhaltsverzeichnis notwendig sind),
was beim Defragmentieren ebenfalls entwirrt wird.