Version [22535]
Dies ist eine alte Version von BSys08Dateisystem erstellt von RonnyGertler am 2013-03-27 12:06:37.
Betriebssysteme (Betriebssystemtheorie) - Kapitel 8 - Dateisystem
File | Last modified | Size |
---|---|---|
BSys53.gif | 2023-10-06 18:35 | 4Kb |
BSys54.gif | 2023-10-06 18:35 | 6Kb |
BSys55.gif | 2023-10-06 18:35 | 4Kb |
BSys56.gif | 2023-10-06 18:35 | 7Kb |
BSys57.gif | 2023-10-06 18:35 | 11Kb |
BSys58.gif | 2023-10-06 18:35 | 13Kb |
BSys59.gif | 2023-10-06 18:35 | 8Kb |
BSys60.gif | 2023-10-06 18:35 | 3Kb |
BSys61.gif | 2023-10-06 18:35 | 3Kb |
BSys62.gif | 2023-10-06 18:35 | 4Kb |
BSys63.gif | 2023-10-06 18:35 | 5Kb |
BSys64.gif | 2023-10-06 18:35 | 2Kb |
BSys65.gif | 2023-10-06 18:35 | 15Kb |
BSys66.gif | 2023-10-06 18:35 | 8Kb |
BSys67.gif | 2023-10-06 18:35 | 11Kb |
BSys68.gif | 2023-10-06 18:35 | 9Kb |
BSys69.gif | 2023-10-06 18:35 | 12Kb |
Inhalte von Dr. E. Nadobnyh
8.1. Begriffsdefinition
Sekundärspeicher
Der Speicher eines Rechners ist unterteilt in Primärspeicher und Sekundärspeicher. In der Speicherhierarchie steht der Sekundärspeicher weiter vom Prozessor als Primärspeicher.
1) Der Primärspeicher (interner Speicher) ist der Hauptspeicher (Arbeitsspeicher) für aktiven Programmen, welche vom Prozessor ausgeführt werden.
2) Der Sekundärspeicher (externer Speicher) ist die dauerhafte Datenablage auf Massenspeichern.
Beispiele:
Plattenspeicher (Harddisc), Magnetbänder, CD.
Eigenschaften im Vergleich:
- Der Sekundärspeicher ist nichtflüchtig (persistent), d.h. zulässt eine dauerhafte Speicherung.
- Der Sekundärspeicher ist meist billiger, langsamer und größer als Primärspeicher.
Datei und Dateisystem
Daten in einem Sekundärspeicher werden zu Dateien zusammengefasst.
Eine Datei (file) ist ein logisches Betriebsmittel, welches eine endliche Menge zusammengehöriger Daten beinhaltet. Dateien existieren, um Daten zu speichern und später wieder abzurufen.
Ein Dateisystem (file system, Dateiverwaltung) ist ein Teil des Betriebssystems, der der Verwaltung von Daten auf einem Sekundärspeicher dient.
Alle Dateisysteme zielen auf Geräteunabhängigkeit ab, d. h ein Programm muss sich nicht darum kümmern, ob eine Datei sich auf Platte, Magnetband oder einem anderen Massenspeicher befindet.
⇒ Demo 1
8.2. Dateiattribute
Logische Organisation
Eine Datei besteht aus zwei Teilen:
1) Eine logische Datei ist eine Einheit von Daten, die vom Dateisystem abgelagert wird. Eine physische Datei ist eine Implementierung davon und kann in mehrere Abschnitte aufgeteilt werden und sogar auf mehreren Datenträgern gespeichert werden.
2) Ein Dateideskriptor ist eine Tabelle mit Dateiattributen. Dateideskriptoren werden vom Dateisystem auf dem Datenträger abgelegt.
Dateiattribute sind dateispezifische Informationen für der Verwaltung von Dateien. Einige Dateiattribute sind;
1) Dateiname
2) Dateityp
3) Ablageort
4) Datum der Erstellung usw.
⇒ Demo 2.
Metadaten
Als Metadaten bezeichnet man allgemein Daten, die Informationen über andere Daten enthalten.
Beispiele:
- Der Name des Autors und die Auflage zu einem Buch.
- Attribute zu einer Datei.
Da im Dateideskriptor nur eingeschränkter Platz für die Attribute zur Verfügung steht, können Metadaten zusätzlich direkt in die Datei integriert werden.
Beispiel: ID3-Tags in MP3-Dateien.
Dateinamen
Eine Datei ist bei der Erzeugung zu bezeichnen. Unter ihrem Namen kann eine Datei von verschiedenen Prozessen benutzt werden.
Die Dateinamenserweiterung (filename extension, Dateierweiterung, Dateiendung, Dateisuffix) ist der letzte Teil eines Dateinamens und wird gewöhnlich mit einem Punkt abgetrennt, z.B.: „prog.c“.
Die Erweiterung ist optional und wird oft eingesetzt, um das Format einer Datei erkennbar zu machen, ohne die Datei vorher einlesen zu müssen.
⇒ Demo 3.
Dateitypen und Dateizuordnung
Ein Dateityp (Dateiformat) ist eine Definition der Syntax und Semantik von Daten innerhalb einer Datei. Die Erkennung des Formats einer Datei ist notwendig, um Datei-Inhalte richtig interpretieren zu können.
Jedes Betriebssystem muss zwei Varianten von Dateitypen unterscheiden:
1) ausführbare Programme, die in Form von Dateien (executable files) gespeichert werden. Bei der Auswahl wird dieses Programm gestartet, z.B.: „prog.exe“.
2) nicht ausführbare Dateien (Daten, Dokumente). Diese Dateien werden vom Betriebssystem nicht interpretiert, sondern Anwendungsprogrammen zugeordnet, die die Dateien interpretieren können.
Nach der Art des Inhaltes werden unterschieden:
1) Binärdateien enthalten beliebige Bytewerte (auch nicht-alphabetische Zeichen) und können in der Regel nur durch entsprechende Anwendungen gelesen werden. Dazu gehören auch ausführbare Dateien.
Beispiele: a.xls, a.exe, a.obj.
2) Textdateien (ASCII-Dateien) enthalten nur reinen Text und einfache Steuerzeichen, z.B. Zeilenumbruch. Viele Steuerdateien sind Textdateien.
Beispiele: a.htm , a.txt, a.bpr.
Dateityp-Ermittlung
Das Dateiformat kann auf drei verschiedene Arten automatisch ermittelt werden:
1) Die Ermittlung durch Dateinamenserweiterung ist häufig verwendete Methode.
Beispiel: Beim Doppelklick auf buch.doc startet Windows das zugeordnete Programm Microsoft Word mit dieser Datei als Parameter.
2) Die Ermittlung durch Dateiinhalte. Dabei wird auf bekannte Muster untersucht, z.B.: UNIX identifiziert den Dateityp durch die so genannten „magischen Zahlen“.
3) Die Ermittlung durch Metadaten ist die zuverlässigste Methode, weil das Dateiformat zusammen mit der Datei abgelegt ist.
Die Dateityp-Ermittlung durch die Dateinamenserweiterung kann als Anlockung von Würmer benutzt werden.
1) Beim Umbenennen einer Dateinamenserweiterung ändert sich schließlich nur der Dateiname, das Dateiformat bleibt dabei erhalten.
2) Bei Windows werden einige Dateinamenserweiterung standardmäßig nicht angezeigt, z.B. „.exe“.
3) Ein Benutzer kann z.B. per e-mail die ausführbare Datei „Name.jpg.exe“ erhalten, die beim Aufruf Schaden anrichten kann.
4) Der Benutzer wird so in die Irre geführt, da er den Namen „Name.jpg“ sieht und tatsächlich eine ausführbare Datei statt einer Bilddatei aktivieren kann.
⇒ Demo 4
8.3. Dateioperationen
Datei-Spezifikation
Eine Spezifikation einer logischen Datei (abstrakter Datentyp, ADT-Datei) ist eine formalisierte Beschreibung der grundlegenden Dateioperationen unabhängig vom konkreten Dateisystem.
Es wird von der tatsächlichen Implementierung der Operationen abstrahiert. Die Abbildung der logischen Datei auf reale Speichergeräte (Platte, Band, Drucker, etc.) erfolgt durch das Dateisystem.
Eine logische Datei wird vom Dateisystem wie ein langer char-Vektor behandelt:
1) Eine logische Datei ist ein Behälter für eine Reihenfolge von Bytes.
2) Der Dateiinhalt ist beliebig, da er vom Dateisystem nicht interpretiert wird.
3) Die Dateilänge ist nicht im Voraus abzusehen.
Dateiindex
Zu der Spezifikation einer logischen Datei gehört ein Dateiindex (Schreib-/Lese-Zeiger, Dateizeiger, Byte-Position, Seek-Zeiger, Zeichenposition, aktuelle Position, Dateiposition), der von Dateioperationen benutzt wird.
Alle Bytes in einer Datei sind von 0 bis N-1 durchnummeriert. in Dateiindex ist eine ganzzahlige Variable, die innerhalb einer Datei beliebig positioniert werden kann.
Dateiindex ist die Position eines Bytes, welches als Nächstes gelesen oder geschrieben wird.
Ein Dateiindex wird beim Öffnen einer Datei angelegt und beim Schließen der Datei gelöscht. Grundsätzlich gilt, dass der Dateiindex beim Lesen bzw. Schreiben entsprechend der transferierten Anzahl der Bytes in Richtung Dateiende verschoben wird.
Die Dateiendesituation (End Of File, EOF) wird festgestellt, wenn der Dateiindex das Dateiende erreicht. Beim Lesevorgang wird bei jeder Vorwärtsbewegung geprüft, ob die Dateiendesituation gerade vorliegt.
Begriffsverwirrung: Der Begriff Dateizeiger (File-Pointer) wird auch in ANSI C für die Bezeichnung eines Zeigers vom Typ FILE verwendet.
Grundlegende Dateioperationen
Unabhängig von konkreten Systemen sind folgende grundlegende Dateioperationen spezifiziert:
1. Create und Delete
- Erzeugen einer leeren Datei.
- Löschen einer vorhandenen Datei.
2. Open und Close
- Öffnen einer vorhandene Datei. Ein Dateiindex wird angelegt und positioniert.
- Schließen der Datei. Der entsprechende Dateiindex wird gelöscht.
3. Write und Read
- Schreiben in eine Datei ab einem Dateiindex.
- Lesen aus einer Datei ab einem Dateiindex.
4. Seek - Positionieren des Dateiindexes.
Öffnen und Schließen von Dateien
1) Beim Öffnen einer Datei wird eine Strukturvariable angelegt, die als eine Kennung (Deskriptor, Handle) bezeichnet wird. Eine Kennung enthält u.a. einen Dateiindex. Nach dem Öffnen sind die Zugriffe auf die Datei erlaubt, z.B. Lesen, Schreiben, Positionieren. Nachfolgende Dateioperationen arbeiten mit der Kennung.
Wird eine Datei mehrmals geöffnet, so wird für jedes neue Öffnen eine separate Kennung angelegt.
2) Schließen der Datei ist eine komplementäre Operation zum Öffnen. Danach wird die Kennung gelöscht und keine weiteren Zugriffe auf die Datei erlaubt.
Kanal und Datenstrom
Ein- und Ausgabe wird als Datenstrom (Byte-Strom, stream) behandelt. Streams sind immer unidirektional.
1) Beim Öffnen einer Datei wird ein Kanal (logischer Kanal, Zugriffskanal, Verbindung ) vom Prozess zur vorhandenen logischen Datei angelegt und eine Übertragungsrichtung des Kanals festgelegt:
- unidirektionaler Kanal für Ausgabe,
- unidirektionaler Kanal für Eingabe,
- bidirektionaler Kanal für abwechselnde Eingabe und Ausgabe.
2) Bei der Ausgabe wird eine Folge von Bytes durch den Kanal transportiert und in die Datei geschrieben.
3) Bei der Eingabe kann die gespeicherte Reihenfolge durch den Kanal exakt wieder abgerufen werden.
Prinzipbeispiel
Datei-Öffnen zur Ausgabe
Dateizugriffsschnittstellen
Eine Menge von Dateioperationen einer logischen Datei kann als eine Dateizugriffsschnittstelle bezeichnet werden. Die unterschiedlichen Systeme stellen konkrete Dateizugriffsschnittstellen zur Verfügung.
Zwei Abstraktionsniveaus sind bekannt:
1) Low-Level-Dateizugriff mittels der Operationen von Betriebssystemen. Diese Operationen sind hardwareunabhängig, gehören aber nicht zu dem ANSI C-Standard.
2) High-Level-Dateizugriff mittels der Operationen von Standardbibliotheken. Diese Operationen sind unabhängig von Betriebssystemen bzw. portabel.
Einige Dateioperationen
C-Standardbibliothek (stdio.h) | Unix-Dateisystem | Windows-Dateisystem | Beschreibung |
fopen | open /create | CreateFile | Neue Datei erzeugen |
remove | unlink | DeleteFile | Datei löschen |
fopen | open | CreateFile | Vorhandene Datei öffnen |
fclose | close | CloseHandle | Datei schließen |
fread /fwrite | read /write | ReadFile /WriteFile | Lesen von Datei und Schreiben in Datei |
fseek | lseek | SetFilePointer | Positionieren des Dateizeigers |
fflush | fsync | FlushFileBuffers | Sofortiges Schreiben des Puffers |
feof | - | - | Prüft, ob Dateiende erreicht |
8.4. Einige Dateioperationen der C-Standardbibliothek
Erzeugen und Löschen von Dateien
1) Es gibt keine spezielle Funktion zum Erzeugen einer Datei. Eine Datei kann durch die Funktion „fopen“ implizit erzeugt werden. Prototyp:
FILE* fopen(char* dateiname, char* modus);
Das Argument „modus“ ist die Zugriffsart. Beim bestimmten Modus wird eine Datei mit dem „dateiname“ erzeugt, falls sie noch nicht existiert. Danach wird diese Datei sofort geöffnet.
2) Eine Datei wird durch die Funktion „remove“ gelöscht. Prototyp:
int remove(char* dateiname);
Vor dem Löschen muss die Datei geschlossen werden. Bei fehlerfreier Ausführung liefert „remove“ den Wert 0 zurück.
⇒ Demo 5.
Öffnen von Dateien
FILE* fopen(char* dateiname, char* modus);
1) Betriebssystem sucht oder erzeugt die Datei mit dem „dateiname“.
2) Beim Erfolg wird eine FILE-Struktur (Kennung) erzeugt.
3) Die Eigenschaften der Datei werden in einer FILE-Struktur abgelegt, z.B.:
- ein Dateiindex wird gesetzt,
- ein programminterner Dateipuffer wird angelegt.
4) Die Adresse auf der FILE-Struktur wird zurückgegeben, die beim Dateizugriff verwendet wird.
FILE ist eine spezielle Struktur und ist in stdio.h definiert. Im Normalfall sollte der Programmierer nichts mit den Interna der FILE-Struktur zu tun haben.
High-Level-Dateizugriff
Einige Zugriffsarten beim Öffnen
CategoryBSys