( für Alles ist eine Datei) beschreibt eine der definierenden Eigenschaften von Unix und seinen Abkömmlingen, demnach Ein-/Ausgabe-Ressourcen wie Dateien, Verzeichnisse, Geräte (z. B. Festplatten, Tastaturen, Drucker) und sogar Interprozess- und Netzwerk-Verbindungen als einfache Byteströme via Dateisystem verfügbar sind.

Der Vorteil dieses Ansatzes ist, dass dieselben Werkzeuge und Programmierschnittstellen für den Zugriff auf all diese Ressourcen genutzt werden können. Wenn eine Datei geöffnet wird, erhält das Programm vom Kernel einen Dateideskriptor. Für alle nachfolgenden Operationen dient dieser als Ein-/Ausgabe-Schnittstelle. Da auch für anonyme Pipes und Netzwerk-Sockets Dateideskriptoren angelegt werden, die jedoch keinen Pfad haben, wird das Prinzip des Öfteren auch (‚Alles ist ein Dateideskriptor‘) oder, nach Linus Torvalds, (‚Alles ist ein Bytestrom‘) genannt.

Zusätzlich existiert eine Reihe von virtuellen Dateisystemen und Pseudodateisystemen, die Informationen über den Systemzustand und Prozesse hierarchisch strukturiert verfügbar machen.

Der Begriff wird durchweg als Schlagwort für die Andersartigkeit von unixoiden Systemen im Umgang mit Dateien verwendet. Er ist jedoch nicht scharf abgegrenzt und zielt, wie oben angedeutet, je nach Verwendung auf verschiedene Aspekte ab. Während die oben genannten Eigenschaften auch heutzutage nur bei unixartigen Betriebssystemen vorzufinden sind und weithin mit verbunden werden, sind von Unix auch Neuerungen ausgegangen, die mittlerweile allgegenwärtig sind. Die folgenden Abschnitte behandeln die Aspekte im Einzelnen.

Verzeichnisstruktur als Namensraum

Die Verzeichnisstruktur ist ein einheitlicher, hierarchisch gegliederter Namensraum, über den eine Datei einen Pfad erhält, unter dessen Namen sie verfügbar ist. Ein Verzeichnis ist eine spezielle Datei, die alle enthaltenen Verzeichniseinträge auflistet. Darunter können sowohl Dateien als auch wieder Verzeichnisse sein. Diese sich so ergebende Verzeichnishierarchie kann sich über verschiedene Geräte erstrecken. In dieser Form war das Dateisystem schon in Multics, einem Vorläufer von Unix, enthalten.R. C. Daley, Peter G. Neumann: A General-Purpose File System For Secondary Storage. In: AFIPS '65 (Fall, part I). Las Vegas 1965, S. 213–229 (online). Derartige Verzeichnisstrukturen sind mittlerweile weit verbreitet, wenn auch mit gewissen Abweichungen. Beispielsweise sind sie bei MS-DOS und Windows nicht einheitlich: Pfade enthalten auch einen gerätespezifischen Laufwerksbuchstaben.

Der Namensraum wird auch von Named Pipes genutzt und dient als Grundlage für die weit verbreitete System-V-IPC-Schnittstelle, bei der existierende Dateien gewissermaßen als Treffpunkt zweier Prozesse fungieren.Siehe ftok() Bibliotheksfunktion Das POSIX-Analogon, POSIX-IPC-Namen, basieren nicht auf Dateien.Marc J. Rochkind: Advanced UNIX Programming. 2. Auflage, Addison-Wesley, 2004, Kapitel 7.6.2.

Sekundärspeicher und Dateien Eine weitereBrian W. Kernighan, Rob Pike: The UNIX Programming Environment. Prentice Hall, 1984, Kapitel 2. Lesart des Prinzips, die heute nicht mehr verbreitet ist, bezieht sich auf die Neuerung, dass Dateien unter UNIX aus einer einfachen Aneinanderreihung von Bytes bestehen und darüber hinaus in ihrem Format keinen Einschränkungen unterworfen sind (im Gegensatz zu damals verbreiteten Datensatz-orientierten Dateisystemen). Ziel war, Gerätespezifika einzuebnen, von der Speicherorganisation zu abstrahieren und möglichst viele Entscheidungen dem Userspace zu überlassen:

Dieses Verständnis von Dateien ist heute selbstverständlich und in den meisten Mainstream-Betriebssystemen vorzufinden.

Geräte

Die Idee, Geräte über Dateien verfügbar zu machen, stammt nach eigenen Angaben von Dennis Ritchie.Dennis Ritchie: The Evolution of the Unix Time-sharing System. In: Language Design and Programming Methodology. 25–35, Springer, Berlin/Heidelberg 1980, (online).

Siehe auch Unix-Philosophie Geschichte von Unix Interprozesskommunikation#(Namenlose) Pipes

Einzelnachweise

Kategorie:Unix Kategorie:Unix-Software Kategorie:Betriebssystemtheorie