Dateisystem
Ein Dateisystem ist ein System, um Dateien in einem Computer zu speichern und zu verwalten. Die meisten Betriebssysteme verwenden Dateisysteme. Historisch wurden Dateisysteme zur Organisation des Zugriffs auf Massenspeicher wie Festplattenlaufwerke entwickelt. Jede Datei belegte einen Teil des Massenspeichers. Das Konzept der Dateisysteme wurde dann abstrahiert, so dass auch Zugriffe auf Dateien im Netz und Geräte, die virtuell als Datei verwaltet werden, über Dateisysteme geregelt werden können.Dateien haben in einem Dateisystem fast immer mindestens einen Dateinamen sowie Attribute, die nähere Informationen über die Datei geben. Die Dateinamen sind in speziellen Dateien, den Verzeichnissen, abgelegt. Über diese Verzeichnisse kann ein Dateiname und damit eine Datei vom System gefunden werden.
Table of contents |
2 Arten von Dateisystemen 3 Beispiele für Dateisysteme |
Block0 | Block1 | Block2 | Block3 | ... |
Ein Programm greift auf die Massenspeicher über das Dateisystem zu. Unter UNIX und ähnlichen Betriebssysteme werden dazu Systemrufe zur 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
Verzeichnisse enthalten Dateinamen und Referenzen zu dem jeweiligen Beschreibungsblock. Da Verzeichnisse auch Speicherflächen sind, werden meist speziell gekennzeichnete Dateien als Verzeichnisse verwendet. Der erste Beschreibungsblock kann dabei das Ausgangsverzeichnis enthalten. Oft ist der erste Block für einen Bootblock reserviert, der für das Hochfahren des Systems verwendet werden kann. Er ist nicht Teil des 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 werden vom Kernel eines Betriebssystems implementiert und unterscheiden sich bei den verschiedenen Dateisystemen. Der Kernel übersetzt die Zugriffe dann in die Blockoperationen des jeweiligen Massenspeichers.
Wenn ein Programm eine Datei mittels open öffnet, wird der Dateiname im Verzeichnis gesucht. Die Blöcke auf dem Massenspeicher ermittelt der Kernel aus den entsprechenden Beschreibungsstrukturen. Falls eine Datei im Verzeichnis gefunden wird, erhält man auch ihre Beschreibungsstruktur und damit Referenzen zu den Blöcken.
Mit read kann das Programm dann auf die Blöcke der Datei zugreifen. Falls mit write die Datei vergrößert wird, wird bei Bedarf ein neuer Block aus der Freiliste entnommen und in der Beschreibungsstruktur der Datei hinzugefügt. Auch die anderen Systemrufe lassen sich in Blockzugriffe übersetzen.
Dadurch entsteht eine Verzeichnishierarchie, die oft als 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 Eigene Bilder oder Texte enthalten. In Texte können dann beispielsweise die normalen Dateien Brief1.txt und Brief2.txt stehen.
Da dieselben Systemrufe verwendet werden, unterscheiden sich die Zugriffe aus Programm- und Anwendersicht nicht von der auf die lokalen Geräte. Für Netzwerkdateisysteme stehen spezielle Netzwerkprotokolle zur Verfügung.
Unter Linux lassen sich System- und Prozessinformation über das virtuelle proc-Dateisystem abfragen und ändern. Die virtuelle Datei /proc/cpu liefert Informationen über den Prozessor. Der Kernel gaukelt hier quasi die Existenz einer Datei vor, wie sie auch auf einem Massenspeicher vorhanden sein kann.
Unter Unix erhalten auch die Tastatur, Maus und die Schnittstellen spezielle Dateinamen, auf die mit open, read, write zugegriffen werden kann. Sogar der Speicher hat einen Dateinamen (/dev/mem)
Alles ist eine Datei, und wenn nicht, sollte es eine Datei sein
Neue Konzepte für Dateiverwaltung sind Datenbank-basierende Dateisysteme. Statt in einer hierarchisch aufgebauten Verwaltung, werden Dateien anhand ihrer Eigenschaften, wie Dateityp, Thema, Autor oder ähnlichen Meta-Informationen identifiziert. Die Formulierung einer Dateisuche kann daher in SQL oder in natürlicher Sprache erfolgen. Das Beispiel rechts zeigt eine begonnene Abfrage nach movies that were directed by spielberg.
Erste Ansätze dafür sind GNOME Storage und WinFS.
Modernere Betriebssysteme:
Arten von Dateisystemen
Hierarchische Dateisysteme
Frühe Dateisysteme hatten nur ein einzelnes Verzeichnis, das dann Verweise auf alle Dateien des Massenspeichers enthielt. In den meisten modernen Dateisystemen ist dieses Verzeichnis das Wurzelverzeichnis. Hier können Verzeichnisse neben normalen Dateien auch Verweise auf weitere Verzeichnisse, die Unterverzeichnisse, enthalten. Auch diese dürfen wieder Unterverzeichnisse haben.Windows 95-Me: Windows 2000/XP: UNIX/Linux:
[Laufwerk C:] [Laufwerk C:] [Wurzelverzeichnis]
+- IO.SYS +- boot.ini +- [boot]
+- MSDOS.SYS +- ntldr +- [etc]
+- [Eigene Dateien] +- [Dokumente und Einstellungen] +- [home]
| +- [Eigene Bilder] | +- [benutzername] | +- [benutzername]
| | +- Bild1.png | +- [Eigene Dateien] | +- [Dokumente]
| | | +- [Eigene Bilder] | +- [Bilder]
| +- [Texte] | | +- Bild1.png | | +- Bild1.png
| +- Brief1.txt | | | |
| +- Brief2.txt | +- [Texte] | +- [Texte]
| | +- Brief1.txt | +- Brief1.txt
+- [Programme] | +- Brief2.txt | +- Brief2.txt
| |
+- [Programme] +- [usr]
Verzeichnisse sind mit [eckigen Klammern] gekennzeichnet.
Die Verzeichnisse werden auch Ordner genannt und sind je nach Betriebssystem durch \\ oder / getrennt. Da sich eine Hierarchie von Verzeichnissen und Dateien ergibt, spricht man hier von hierarchischen Dateisystemen. Auf die Datei Brief1.txt kann man alsC:\\Eigene Dateien\\Texte\\Brief1.txt (Windows 95-Me)
C:\\Dokumente und Einstellungen\\benutzername\\Eigene Dateien\\Texte\\Brief1.txt (Windows 2000/XP)
/home/benutzername/Dokumente/Texte/Brief1.txt (UNIX/Linux)
zugreifen.Netzwerkdateisysteme
Die Systemrufe wie open, read, ... können auch über ein Netzwerk an einen Server übertragen werden. Dieser führt dann die Zugriffe auf seine Massenspeicher durch und liefert die angeforderte Information an den Client zurück.Spezielle Dateien und Dateisysteme
Das open-read-Modell lässt sich auch auf Geräte und Objekte anwenden, die normalerweise nicht über Dateisysteme angesprochen werden. Dadurch wird der Zugriff auf diese Objekte identisch mit dem Zugriff auf normale Dateien, was meist Vorteile bringt.Datenbank-Dateisysteme
Beispiele für Dateisysteme
Viele frühe Betriebssysteme (z.B. CP/M, Apple DOS, Commodore DOS) hatten jeweils nur ein Dateisystem, welches keinen eigenen Namen trug.
DOS:
Apple Macintosh
OS/2:
- ISO9660 (Dateisystem für CD-ROMs nach dem Motto "kleinster gemeinsamer Nenner")
- Joliet (Erweiterung des ISO9660 von der Firma Microsoft)
- Rockridge (Erweiterung des ISO9660 für UNIX)
- UDF (Universal Disc Format, u.a. auf DVDs aller Typen gebräuchlich)
- NFS (Network File System; ein über Netzwerke angeschlossenes Dateisystem v.a. für Unix-artige Systeme)
- Coda (ein fortgeschrittenes Netzwerk-Dateisystem ähnlich zu NFS)
- SMBFS (Samba-Dateisystem; ein über Netzwerke angeschlossenes Dateisystem v.a. für Windows-Systeme)
- xFS (ein verteiltes und dezentrales Netzwerk-Dateisystem)
- AFS (Andrew File System)
- NCP (NetWare Core Protocol)