Grundlagen der Dateisysteme und Speicherverwaltung
Eingeordnet in Informatik
Geschrieben am in
mit einer Größe von 5,95 KB
1. Grundlagen der Dateisysteme
Das Dateisystem stellt den visuellen Aspekt des Betriebssystems (OS) dar. Dateisysteme bestehen aus zwei wesentlichen Teilen: einer Sammlung von Dateien, die jeweils verwandte Daten enthalten, und einer Verzeichnisstruktur, welche die Informationen zu allen Dateien organisiert und bereitstellt.
2. Anforderungen an die langfristige Speicherung
Für die langfristige Speicherung gibt es drei Hauptanforderungen:
- Es sollte möglich sein, eine sehr große Menge an Informationen zu speichern.
- Die Informationen müssen auch nach Abschluss der Prozesse, die sie verwenden, erhalten bleiben.
- Mehrere Prozesse müssen in der Lage sein, gleichzeitig auf die Informationen zuzugreifen.
Die Lösung liegt im Laden der Daten in den Massenspeicher, organisiert in Einheiten namens Dateien mit spezifischen Namen. Die in den Dateien gespeicherten Informationen sind persistent (sie werden nicht durch die Erzeugung oder Beendigung von Prozessen beeinflusst). Eine Datei verschwindet nur, wenn der Eigentümer sie entfernt.
Das File System ist der Teil des Betriebssystems, der für die Verwaltung von Dateien zuständig ist. Eine Datei ist die kleinste logische Einheit des Sekundärspeichers. Im Allgemeinen enthält eine Datei einfach strukturierte Informationen, die dem jeweiligen Anwendungsfall entsprechen.
3. Attribute von Dateien
Die Attribute einer Datei variieren von einem Betriebssystem zum anderen:
- Name: Der der Datei zugeordnete Name.
- Typ: Wenn das Betriebssystem den Typ erkennen kann, kann es entsprechend damit operieren. Der Name ist in der Regel in zwei Teile unterteilt: den Namen und die Erweiterung (Typ).
- Location (Speicherort): Gibt die Adresse (Zylinder und Sektoren) des Dateianfangs auf der Festplatte an.
- Größe: Die aktuelle Dateigröße.
- Schutz: Regelt die Zugriffsrechte für die Benutzer.
- Datum und Zeit: Zeitpunkt der Erstellung oder letzten Änderung der Datei.
4. Dateioperationen
- Creation (Erstellung): Erfolgt in zwei Schritten: Zuweisung von Speicherplatz und Erstellung eines entsprechenden Eintrags im Verzeichnis.
- Schreiben: Zum Schreiben in eine Datei wird ein Systemaufruf unter Angabe des Namens und der zu schreibenden Informationen ausgeführt.
- Lesen: Der Benutzer muss den Namen der Datei sowie die Adresse eines lokalen Pufferspeichers angeben, um den gelesenen Inhalt zu hinterlegen.
- Positioning (Positionierung): Setzt den Zeiger für Lese- oder Schreibvorgänge (L/E) innerhalb der Datei.
- Löschen: Zum Löschen einer Datei muss lediglich ihr Name angegeben werden.
Da viele dieser Operationen zeitaufwendig sind (Suche im Verzeichnis), nutzt das Betriebssystem die Operation Datei öffnen. Dabei wird der Verzeichniseintrag von der Festplatte in die geöffnete Dateitabelle im Hauptspeicher kopiert, um ständige Festplattenzugriffe zu vermeiden. Dies liefert ein Datei-Schlagwort (Handle), welches den schnellen Zugriff auf die Tabelle ermöglicht.
In Mehrbenutzersystemen existieren zwei Ebenen von Tabellen: die Prozesstabelle (lokal) und die Systemtabelle. Beim Öffnen wird ein Eintrag in beiden erstellt. Ein Zähler in der Systemtabelle verfolgt die Zugriffe; erst wenn dieser Null erreicht, wird der Eintrag gelöscht.
5. Verzeichnisstrukturen
Ein Verzeichnis pro Partition
Alle Dateien befinden sich im selben Verzeichnis. Dies ist einfach zu implementieren und zu warten, führt jedoch zu Problemen bei mehreren Benutzern, da alle Dateinamen eindeutig sein müssen. Mit steigender Dateianzahl wird die Vergabe eindeutiger Namen schwierig.
Zwei-Ebenen-Verzeichnisse
Es gibt ein Master-Verzeichnis und mehrere User-Verzeichnisse (DU). Jeder Benutzer hat sein eigenes Verzeichnis, was gleiche Dateinamen bei verschiedenen Benutzern erlaubt. Ein Nachteil ist die erschwerte Zusammenarbeit, wenn Gruppen gemeinsamen Zugriff auf Dateien benötigen.
Verzeichnisbaum
Ermöglicht Benutzern, eigene Verzeichnisse mit beliebiger Struktur zu erstellen. Das Root-Verzeichnis ist eine spezielle Datei, die vom Betriebssystem verwaltet wird. Ein Eintrag im Verzeichnis gibt an, ob es sich um eine Datei oder ein Unterverzeichnis handelt.
6. Zuweisung von freiem Speicherplatz
Das Hauptproblem ist die effiziente Zuweisung von Speicherplatz ohne Verschwendung bei hoher Zugriffsgeschwindigkeit.
Zusammenhängende Zuweisung
Jede Datei belegt eine Reihe aufeinanderfolgender Blöcke. Dies führt jedoch zu externer Fragmentierung. Die Lösung hierfür ist die Verdichtung (Compaction). Zudem muss die maximale Dateigröße oft im Voraus bekannt sein.
Verkettete Liste
Jede Datei besteht aus einer Liste verketteter Blöcke. Es gibt keine externe Fragmentierung, und Dateien können dynamisch wachsen. Nachteile sind, dass dies nur für sequenziellen Zugriff effizient ist und die Zeiger Speicherplatz verbrauchen. Zudem führt der Verlust eines Zeigers zum Datenverlust der restlichen Kette.
Indizierte Zuweisung
Alle Zeiger einer Datei werden an einem Ort gesammelt: dem Indexblock. Dies löst Probleme des Direktzugriffs. Ein Problem ist die mögliche Platzverschwendung bei kleinen Dateien oder Platzmangel bei sehr großen Dateien. Unix löst dies durch I-Nodes mit direkten und indirekten Zeigern, die auf weitere Indexblöcke verweisen können.