Dazu muß ich etwas weiter ausholen. Das AmigaOS ist in Schichten eingeteilt. Bevor ein Anwendungsprogramm die Daten einer Datei von der Festplatte oder Diskette bekommt, müssen alle diese Schichten durchlaufen werden.
- Device (genauer: Exec-Device, gehört zur exec.library)
Dies ist sozusagen der Hardwaretreiber, es übernimmt auf der einen Seite die Kommunikation mit der Hardware und muß über Zylinder, Spuren (Tracks) und Sektoren (Sectors, Blocks) bescheid wissen.
Auf der anderen Seite stellt es den verfügbaren Speicher als einen großen zusammenhängenden Datenstrom zur Verfügung. D.h. man hat z.B. 512MB Speicher, durchnumeriert von 0 bis 536.870.911. Wie dieser in Zylinder etc. aufgeteilt ist, ist im groben egal.
Beispiel: scsi.device, trackdisk.device
- FileSystem
Das Dateisystem teilt den vom Device zur Verfügung gestellten Speicher in Dateien und Verzeichnisse auf. Es ist dafür zuständig, den freien Speicher zu verwalten und für Datenintegrität zu sorgen.
Außerdem ist es dem FileSystem möglich, nur einen Teil des Device-Speichers zu benutzen (eine Partition).
Beispiel: FastFileSystem, CrossDOSFileSystem, SFS, PFS, Fat95
- DOSDriver (auch DOS-Device, deshalb Verwechslungsgefahr mit dem Exec-Device)
Dies ist ein logisches Laufwerk. Es stellt nicht wirklich eine Schicht des AmigaOS dar, sondern beinhaltet im wesentlichen die Information, welches FileSystem und welches Exec-Device für dieses Laufwerk benutzt werden soll, sowie die Grenzen (falls es sich um eine Partition handelt).
Neue DOSDriver können in Form einer Mountliste mit dem Befehl Mount angemeldet werden. Einige DOSDriver werden bereits beim Systemstart angemeldet (z.B. DF0, RAM), andere werden vom Festplatten-Controller eingebunden (aus den Partitionstabellen aller Festplatten), einige werden während des Bootvorgangs eingebunden (die Mount-Dateien im Verzeichnis Devs:DosDrivers).
Bei der Anmeldung des DosDrivers wird das FileSystem gestartet und ihm mitgeteilt, auf welches Device es zugreifen soll und welchen Speicherbereich es davon benutzen darf.
Beispiel: DF0, RAM, DH0
- dos.library
Die dos.library stellt die Programmierschnittstelle für die Anwendungsprogramme dar. Sie bietet eine einheitliche Schnittstelle für den Zugriff auf alle Arten von Laufwerken. U.a. auch auf Shell-Fenster, serielle und parallele Schnittstelle usw.
Wenn das Anwendungsprogramm eine Datei namens DF0:Hugo öffnen möchte, sucht die dos.library in der Liste der DosDriver nach dem mit dem Namen DF0, erkennt daraus, welches FileSystem benutzt wird, und schickt diesem den Auftrag, die Datei Hugo zu öffnen. Alles weitere übernimmt das FileSystem, das Anwendungsprogramm wartet solange.
- Das Anwendungsprogramm
Durch die Funktionen der dos.library ist es sehr einfach, Dateien und Verzeichnisse zu verarbeiten, man muß sich keine Gedanken über deren Aufbau machen, ja er ist sogar austauschbar, ohne das Programm zu ändern.
In den Shell-Befehlen findet man fast für jede DOS-Funktion ein entsprechendes Programm, sodaß man die Funktionen der dos.library einfach in Scripten verwenden kann.
Beispiel: Workbench, die Shell-Befehle, jedes Programm, das Dateien verarbeitet.
Der Vorteil des Schichtenmodells ist, daß jede Schicht als Task realisiert ist und die Aufträge an die weiter unten liegenden Schichten asynchron abgearbeitet werden können. D.h. das Anwendungsprogramm muß nicht warten, bis ein Lese-Auftrag ausgeführt ist, sondern kann solange etwas anderes tun, z.B. auf Benutzereingaben reagieren.