Dieser Artikel von Wikipedia ist u.U. veraltet. Die neue Version gibt es hier. Ein Dateisystem ist ein System um Dateien in einem Computer zu speichern und zu verwalten. Die Betriebssysteme verwenden Dateisysteme. Historisch wurden Dateisysteme zur des Zugriffs auf Massenspeicher wie Festplattenlaufwerke entwickelt. Jede Datei belegte Teil des Massenspeichers. Das Konzept der Dateisysteme dann abstrahiert so dass auch Zugriffe auf im Netz und Geräte die virtuell als verwaltet werden über Dateisysteme geregelt werden können.
Dateien haben in einem Dateisystem fast mindestens einen Dateinamen sowie Attribute die nähere Informationen über die Datei Die Dateinamen sind in speziellen Dateien den abgelegt. Über diese Verzeichnisse kann ein Dateiname damit eine Datei vom System gefunden werden.
Massenspeichergeräte wie Festplatten- CD-ROM- und Diskettenlaufwerke normalerweise eine Blockstruktur d.h. aus Betriebssystemsicht lassen Daten nur als ganze Blöcke lesen oder Ein Block hat dabei eine feste Größe früher 512 (2 9 ) Bytes heute meist 4096 (2 12 )oder 8192 (2 13 ) Bytes umfasst. Die Speichergeräte präsentieren sich große Fläche mit vielen Blöcken.
Blockstruktur eines Massenspeichergeräts (jeder Block besteht aus 8192 Bytes):
Block0
Block1
Block2
Block3
...
Ein Programm greift auf die Massenspeicher das Dateisystem zu. Unter UNIX und ähnlichen Betriebssysteme werden dazu Systemrufe Verfügung gestellt. Die wichtigsten Systemrufe sind hier:
open close - Öffnen und Schließen einer Datei
read write - Lesen und Schreiben
creat unlink - Erzeugen und Löschen
mkdir rmdir - Erzeugen und Löschen eines Verzeichnisses
readdir - Lesen von Verzeichniseinträgen
Eine Datei ist eine Speicherfläche beliebiger die auf dem Gerät aus mehreren Blöcken Jede Datei erhält außerdem eine Beschreibungsstruktur die tatsächliche Größe Referenzen auf die verwendeten Blöcke evtl. weitere Informationen wie Dateityp Eigentümer Zugriffsrechte kann.
Verzeichnisse enthalten Dateinamen und Referenzen zu jeweiligen Beschreibungsblock. Da Verzeichnisse auch Speicherflächen sind meist speziell gekennzeichnete Dateien als Verzeichnisse verwendet. erste Beschreibungsblock kann dabei das Ausgangsverzeichnis enthalten. ist der erste Block für einen Bootblock reserviert der für das Hochfahren des verwendet werden kann. Er ist nicht Teil eigentlichen Dateisystems.
Aufteilung eines Massenspeichers für ein Dateisystem:
Boot
Beschreibungsblöcke
Freiliste
Blöcke mit Dateien und Verzeichnissen
Die Umsetzung der Systemrufe eines Programms vom Kernel eines Betriebssystems implementiert und unterscheiden sich den verschiedenen Dateisystemen. Der Kernel übersetzt die dann in die Blockoperationen des jeweiligen Massenspeichers.
Wenn ein Programm eine Datei mittels open öffnet wird der Dateiname im Verzeichnis Die Blöcke auf dem Massenspeicher ermittelt der aus den entsprechenden Beschreibungsstrukturen. Falls eine Datei Verzeichnis gefunden wird erhält man auch ihre und damit Referenzen zu den Blöcken.
Mit read kann das Programm dann auf die der Datei zugreifen. Falls mit write die Datei vergrößert wird wird bei ein neuer Block aus der Freiliste entnommen in der Beschreibungsstruktur der Datei hinzugefügt. Auch anderen Systemrufe lassen sich in Blockzugriffe übersetzen.
Frühe Dateisysteme hatten nur ein einzelnes das dann Verweise auf alle Dateien des enthielt. In den meisten modernen Dateisystemen ist Verzeichnis das Wurzelverzeichnis. Hier können Verzeichnisse neben Dateien auch Verweise auf weitere Verzeichnisse die enthalten. Auch diese dürfen wieder Unterverzeichnisse haben.
Dadurch entsteht eine Verzeichnishierarchie die oft Verzeichnisbaum dargestellt wird. Das Festplattenlaufwerk C unter Windows beinhaltet beispielsweise neben Dateien wie Io.sys Boot.ini auch Verzeichnisse wie Programme Eigene Dateien usw. Das Verzeichnis Eigene Dateien kann dann wieder Unterverzeichnisse wie Bilder oder Texte enthalten. In Texte können dann beispielsweise die normalen Dateien Brief1.txt und Brief2.txt stehen.
Die Verzeichnisse werden auch Ordner genannt sind je nach Betriebssystem durch \ oder getrennt. Da sich eine Hierarchie von Verzeichnissen Dateien ergibt spricht man hier von hierarchischen Auf die Datei Brief1.txt kann man etwa mit
Die Systemrufe wie open read ... können auch über ein Netzwerk einen Server übertragen werden. Dieser führt dann Zugriffe auf seine Massenspeicher durch und liefert angeforderte Information an den Client zurück.
Da dieselben Systemrufe verwendet werden unterscheiden die Zugriffe aus Programm- und Anwendersicht nicht der auf die lokalen Geräte. Für Netzwerkdateisysteme spezielle Netzwerkprotokolle zur Verfügung.
Das open - read -Modell lässt sich auch auf Geräte und anwenden die normalerweise nicht über Dateisysteme angesprochen Dadurch wird der Zugriff auf diese Objekte mit dem Zugriff auf normale Dateien was Vorteile bringt.
Unter Linux lassen sich System- und Prozessinformation über virtuelle proc -Dateisystem abfragen und ändern. Die virtuelle Datei /proc/cpu liefert Informationen über den Prozessor. Der gaukelt hier quasi die Existenz einer Datei wie sie auch auf einem Massenspeicher vorhanden kann.
Unter Unix erhalten auch die Tastatur Maus und Schnittstellen spezielle Dateinamen auf die mit open read write zugegriffen werden kann. Sogar der Speicher einen Dateinamen ( /dev/mem )
Alles ist eine Datei und wenn nicht es eine Datei sein
Neue Konzepte für Dateiverwaltung sind Datenbank-basierende Statt in einer hierarchisch aufgebauten Verwaltung werden anhand ihrer Eigenschaften wie Dateityp Thema Autor ähnlichen Meta-Informationen identifiziert. Die Formulierung einer Dateisuche daher in SQL oder in natürlicher Sprache erfolgen. Erste dafür sind GNOME Storage und WinFS .
Bei einigen der oben genannten Dateisysteme es sich um Journaling-Dateisysteme . Alle Dateisysteme haben gemeinsam dass auf auch von Fremdsystemen zugegriffen werden kann sofern Betriebssystem dies direkt unterstützt oder es dem über entsprechende Treibersoftware ermöglicht wird. Ausnahmen bilden Dateisysteme die erweiterte Berechtigung unterstützen die Möglichkeit der Verschlüsselung bieten oder deren genaue Funktionsweise ein ist (z.B. NTFS ).