Wirtschaftsinformatik (Bachelor-Studiengang): Rechnerarchitketur & Betriebssysteme (1. Semester)
Sie sind hier: Startseite › Wirtschaftsinformatik › Rechnerarchitektur/Betriebssysteme: Dateisysteme
BM / CM, Kurs vom 01.04.2002 - 30.09.2002
- Dateisysteme auf Massenspeichern
- Dateisystem (File-System)
- Montieren (Mount)
- MS-DOS: FAT16 und FAT32
Dateisysteme auf Massenspeichern
Die Organisation von Daten auf Speichermedien wird durch ein Dateisystem (File-System) realisiert. Dieses Dateisystem ist - mit wenigen Ausnahmen - für verschiedene Medien gleich:
- Floppy disc
- CD-ROM
- CD-RW oder DVD-RAM
- Festplatten
- Wechselplatten bzw. Wechselmedien
- Es können auch einige Magnetbänder so organisiert sein
Im folgenden wird stellvertretend für diese Medien bzw. Geräte Festplatten betrachtet.
Logische Sektoren (Blöcke)
Aus der Hardware-Struktur (Zylinder, Spuren, Sektoren) wird durch Software ein Feld von Blöcken gebildet, dessen Index die Blocknummer auf dem Gerät bildet.
Die Platte kann dann als Feld mit der Blocknummer (Index) von 0 beginnend bis zu höchsten Block benutzt werden.
Das Berechnen der Zylinder, Spuren, Sektoren anhand der Blocknummer (sowie der umgekehrte Weg) erledigt ein Treiber (device driver) mit einer für alle Geräte gleichen Kernel internen Schnittstelle.
Treiberschnittstelle
Alle Treiber haben innerhalb des Kernel eine einheitliche Schnittstelle (API), die im Prinzip wie folgt aufgebaut ist:
- Init() - Initialisieren des Geräts
- Open() und Release(): Beginn und Ende der Verarbeitung
- Read(): Lesen von Sektoren
- Write(): Schreiben von Sektoren
- Control(): Modi, Statuswerte
- Poll(): Nachfragen, ob I/O-Vorgang beendet
- Lseek(): Positionieren
Dadurch wird es sehr einfach, unterschiedliche Geräte in den Kernel einzubinden, da alle Besonderheiten der Geräte in den Treibern versteckt sind.
Der Kernel ist in zwei Bereiche eingeteilt:
- Geräte-unabhängiger Teil: dieser ist für alle Geräte gleich; hier ist der globale Algorithmus der Syscalls realisiert.
- Treiber (geräteabhängig)
Die Treiberroutinen sind die, die an die Geräte-Register gehen, den Interrupt-Handler stellen, die DMA-Operationen veranlassen ... [die Schnittstelle zum Geräte-unabhängigen Teil des Kernel ist in Wirklichkeit etwas komplizierter].
Diese Routinen werden in der Regel von dem Hersteller der I/O-Hardware programmiert und müssen zur Installation des Geräts installiert, d.h. dem Betriebssystem zugänglich gemacht werden.
Dateisystem (File-System)
Ein Dateisystem (File-System) ist eine Organisation von Blöcken auf dem Gerät zur Ablage von
- Verzeichnis für das ganze Dateisystem
- Verzeichnis für Beschreibungen aller Dateien
- Verzeichnis von Verkettungen von Blöcken
- Mit Nutzdaten belegte Blöcke sowie freie Blöcke
Eine Datei besteht damit aus:
- Ein Eintrag im Verzeichnis der Beschreibungen
- Ein Eintrag in einem Ordner (Directory)
- Verkettete Blöcke
Inhalt der Beschreibungen:
- Wem die Datei gehört
- Art und Größe
- Attribute, wie z.B. "archiviert" oder "sichtbar"
Struktur eines typischen Unix-File-Systems:
Bildbeschreibung "Struktur eines typischen Unix-File-Systems": Eine Reihe von Blöcken. Block 1 = Boot-Block. Block 2 = Superblock. Dem folgen Blöcke, die ein Array von Beschreibungen bilden. Danach kommen Blöcke, die ein Array mit Daten und Hinweisen enthalten. Und zuletzt noch ein paar Blöcke.
Da nur in den wenigsten Fälle eine Datei in einen Block passt, muss eine Datei als Kette von Blöcken verwaltet werden.
D.h. irgendwo muss für jeden Block (außer am Ende) vermerkt werden, welcher Block der folgende ist.
Dies sollte aus Performance-Gründen nicht im Block selbst, sondern außerhalb sein. Daher werden die Verweise auf die ersten Blöcke in der Beschreibung selbst abgelegt, dann ein Verweis auf einen Block, in dem Verweise auf Blöcke stehen (2. Stufe), dann ein Verweis auf einen Block, in dem Verweise auf Blöcke stehen, in denen sich Verweise auf Blöcke befinden (3. Stufe) ...
Die Anwendung dieser Möglichkeiten hängt natürlich von der Länge der Datei ab.
Blockverkettungen (Beispiel):
Bildbeschreibung "Blockverkettungen": Grafische Darstellung des vorangehend beschriebenen Stufenprinzips.
Der Boot-Block dient zur Ablage des Codes, der zum Booten (Hochfahren) eines Kerns benötigt wird. Dieser Code sucht den Betriebssystemkern und kopiert dessen Blöcke in den RAM. Danach springt der Booter in den gerade kopierten RAM-Bereich.
Der Superblock ist eine Art globales Inhaltsverzeichnis, das den Aufbau, insbesondere die Länge der Abschnitte im Dateisystem festlegt.
Darüber hinaus wird die Liste der freien Blöcke über den Superblock verwaltet (Freiliste, free list). Wenn dieser Superblock verloren geht, ist das Dateisystem meist nicht mehr zu retten. Daher werden Kopien der Superblöcke auf der Platte verteilt.
Partitionen ( Partitions)
Einteilung einer großen Platte in mehrere logische Platten, die Partitionen genannt werden.
Eine Tabelle der Zylinderbereiche der Partitionen befindet sich vorne im Boot-Bereich.
Bildbeschreibung "Partitionen": Einteilung einer großen Platte in mehrere logische Platten.
Es wird empfohlen, für das Swapping ein eigenes File-System anzulegen, für die Programme ein weiteres und für jeden größeren Anwendungsbereich auch.
Montieren ( Mount)
Ein Mount (Montieren) zweier Dateisysteme ist ein Zusammensetzen, so dass von einem Wurzel-Dateisystem ausgehend alle Dateien über Pfade erreichbar sind. Das Wurzel-File-System ist das, von dem "gebootet" wurde.
Montieren bei Unix
- Das Montieren von B in A besteht darin, dass ein Ordner von A (Mount Point) durch das Wurzelverzeichnis von B samt allen daran hängenden Verzeichnissen überdeckt wird.
- Der überdeckte Ordner in A sowie alle an diesen hängenden Dateien bzw. Ordner (von A) sind nach dem Montieren von B nicht mehr zugreifbar.
Montieren (Unix) - Vorher:
Bildbeschreibung "Montieren (Unix) - Vorher": Das Montieren von B in A besteht darin, dass ein Ordner von A durch das Wurzelverzeichnis von B samt allen daran hängenden Verzeichnissen überdeckt wird.
Montieren (Unix) - Nachher:
Bildbeschreibung "Montieren (Unix) - Nachher": Der überdeckte Ordner in A sowie alle an diesen hängenden Dateien bzw. Ordner (von A) sind nach dem Montieren von B nicht mehr zugreifbar.
MS-DOS-Dateisysteme
Bei den Dateisystemen der MS-DOS-Serie: Windows 95..ME, Windows NT bis XP ist das Montieren anders realisiert:
- Die Dateisysteme werden unter verschiedenen Buchstaben an den Wurzelordner angehängt; was bedeutet, dass sie alle aus der Sicht des Baums als Geschwister angesehen werden können.
- Die Dateisysteme erhalten eine Buchstaben, der im absoluten
Pfadnamen einer Datei als erstes gefolgt von einem Doppelpunkt
genannt werden müssen: Beispiel:
c:\windows
. - Die Trennsymbole zwischen Ordnern ist der Backslash ("\").
MS-DOS: FAT16 und FAT32
Von Microsoft ab 1977 entwickelt. FAT = File Allocation Table.
Verschiedene Versionen:
- FAT12 (12 bit FAT)
- FAT16 (16 bit FAT)
- VFAT/FAT32 (32 bit FAT)
Kleinste adressierbare Einheit: Cluster bestehen aus mehreren Blöcken.
- Blöcke haben die Länge von 512 Byte
- Maximale Blockzahl pro Cluster: 64
- Maximale FAT16-Dateisystemgröße: 2 GB
Dateisystemgrößen (Beispiele):
- Blöcke pro Cluster: 1, Clustergröße: 512 Byte, Dateisystemgröße: 32 MB
- Blöcke pro Cluster: 2, Clustergröße: 1 KB, Dateisystemgröße: 64 MB
- Blöcke pro Cluster: 64, Clustergröße: 32 KB, Dateisystemgröße: 2 GB
MS-DOS-File-Systeme FAT16/32
FAT32:
- Blockadressen sind 32 bit, wobei nur 28 bit benutzt werden
- Dateisystemgröße 8 GB bei Clustergröße von 4 KB
- Ab Windows 95 OSR2, kein DOS-Diskettenformat
- Dateinamen im 8.3-Format
FAT32 (Weiterentwicklung), VFAT (Virtualized File Allocation Table):
- Wie FAT32
- Lange Dateinamen
Klassischer Aufbau:
Bildbeschreibung "Klassischer Aufbau": Volumen Boot Sector, FAT, FAT (Kopie), Wurzelverzeichnis, ... (Blöcke für Dateien und Verzeichnisse).
Im ersten Sektor (Block) befindet sich der Volumen Boot Sector, der nur für das betreffende Dateisystem gilt.
Dieser enthält:
- Boot Code, der vom Boot Code des Master Boot Record (MBR) angesprungen wird.
- Tabellen mit Größenangaben dieses File-Systems (Disk Parameter Block, Media Parameter Block)
Der Master Boot Record befindet sich im 1. Sektor des gesamten Mediums und enthält die Partitionstabellen. Partitionstabellen enthalten die Größenangaben der Partitions des Mediums.
Ordner werden wie Dateien durch einfach vorwärts verkettete lineare Listen von Clustern realisiert. Cluster für Dateien/Ordner werden aus der Menge der Cluster hinter der zweiten FAT geholt.
Weil die FAT wichtige Daten enthält, wird eine Kopie angelegt, was in der Praxis wenig hilft, da die Kopie sich zu dicht am Original befindet.
Ordner bestehen aus einem Feld von Strukturen, in denen auch der Dateiname abgelegt ist. Da Dateiname und Dateiverwaltungsinformation zusammen an einer Stelle stehen, sind Links (Verknüpfungen) nicht möglich (bei Unix steht die Verwaltungsinformation in den Beschreibungen und die Dateinamen in den Ordnern).
Directory-Eintrag:
Bildbeschreibung "Directory-Eintrag": Offset 0 = Filename, Offset 8 = Extension, Offset 11 = Attribute, ..., Offset 22 = Änderungsdatum, Offset 26 = Erster Cluster, Offset 28 = Dateigröße.
Ordner bestehen aus einer Aneinanderreihung von 32-byte-langen Einträgen. Jeder Ordner enthält die Datei ".", welche die Clusterverkettung für den eigenen Ordner enthält. Jeder Ordner enthält die Datei "..", welche die Clusterverkettung für den Elternordners enthält. Unterverzeichnisse sind Einträge mit gesetztem Attribut "Directory".
Das erste Byte des Dateinamens zeigt den Status der Ordnereintrags
(Belegt, Gelöscht:0xE5
) - dieses Byte ist auch das 1. des
Dateinamens.
Um das Booten für ältere Systeme einfacher zu machen:
- Wurzelordner muss direkt nach der 2. FAT folgen
- Darf max. 224 (Floppy) 512 (Platte) Einträge besitzen
Diese Beschränkungen haben spätere Systeme nicht. Dass die FAT auch als Kopie vorliegt ist sehr gut, nicht gut ist, dass die Kopie unmittelbar dem Original folgt, da in der Praxis bei Zerstörungen der Original-FAT meist auch die Kopie zerstört ist.
Aufbau der FAT:
Die FAT ist ein Feld von Verweisen auf Cluster, wobei jedem Block genau ein Eintrag in der FAT zugeordnet ist, d.h. dem Cluster N ist der N. Eintrag in der FAT zugeordnet, so dass von der Clusternummer schnell auf den FAT-Eintrag zugegriffen werden kann.
In dem FAT-Eintrag steht:
- Die Clusternummer des folgenden Cluster oder
- Ein Flag, dass der korrespondierende Cluster der letzte der
Datei ist (
EOF: 0xFFFF
) oder - Ein Flag, dass der korrespondierende Cluster frei ist (
Free list: 0x0000
) oder - Ein Flag, dass der korrespondierende Cluster defekt ist.
VFAT/FAT32:
Einführung langer Dateinamen sowie größerer Zeichensatz:
- Bis 255 Zeichen
- Zeichen "+ , ; = [ ]" gehen auch
Realisierung:
- Der erste Ordnereintrag ist wie bei FAT16/FAT32-Alt mit einem Ersatz-MS-DOS-Namen, z.B. "Bueche~1.doc"
- Anschließend werden die darauf folgenden Directory-Einträge für den Rest des langen Namens verwendet
- Damit diese nicht mit richtigen Einträgen verwechselt werden, erhalten diese eine unsinnige Attribut-Kombination.
- Beginn/Ende werden durch eine laufende Nummer und einem Ende-Flag gekennzeichnet.