160 lines
5.1 KiB
Markdown
160 lines
5.1 KiB
Markdown
# Dateisysteme
|
|
## Warum Dateisysteme
|
|
- Neben Verwaltung des Hauptspeichers und Cache
|
|
- Verwaltung des Massenspeichers (bspw. SSD, Festplatte)
|
|
- Organisation der Ablage von Dateien
|
|
- Dateisysteme verwalten die Namen und Attribute (Metadaten) der Dateien
|
|
- Bilden einen Namensraum
|
|
- Hierarchie von Verzeichnissen und Dateien
|
|
|
|
## Dateien
|
|
- Datei dient der Abstraktion
|
|
- Bietet Möglichkeit Informationen auf einer Platte zu speichern/lesen
|
|
- Nutzer müssen Details der Speicherung verborgen bleiben
|
|
- _Wo_ und _Wie_
|
|
- Wichtigstes Merkmal ist Art und Weise wie verwaltete Objekte benannt werden
|
|
- Wenn Prozess Datei erzeugt, vergibt er ihr einen Namen
|
|
- Bei einigen Systemen (bspw UNIX)
|
|
- Dateiendungen lediglich Konventionen, die vom Betriebssystem nicht erzwungen
|
|
- Datei _file.txt_ kann Textdatei sein, Name dient mehr dazu den User zu erinnern
|
|
- Andererseits könnte ein C-Compiler darauf bestehen, dass Eingabedateien Endung ".c" haben
|
|
- Für BS ist das egal
|
|
- Dateien können in verschiedenster Art und Weise strukturiert sein
|
|
- **Bytefolge**
|
|
- **Datensätze**
|
|
- **Baumstrukturen**
|
|
- In den meisten Fällen werden Dateien als Bytefolgen angesehen
|
|
- Maximum an Flexibilität
|
|
- Interpretation der Inhalte erfolgt auf Anwendungsebene
|
|
|
|
## Sequenzieller Dateizugriff
|
|
- Prozess kann alle Bytes oder Datensätze einer Datei nacheinander lesen
|
|
- Überspringen oder Zugriffe außerhalb der Reihenfolge nicht möglich
|
|
- Sequenzielle Dateien konnten zurückgespult werden
|
|
- können so oft wie nötig gelesen werden
|
|
|
|
## Wahlfreier Dateizugriff
|
|
- Mit Einführung der Platte als Speichermedium
|
|
- Möglichkeit die Bytes oder Datensätze in beliebiger Reihenfolge auslesen
|
|
- über Schlüssel statt Positionsangabe zugreifen
|
|
- Dateien, bei denen das geht = Dateien mit _wahlfreiem Zugriff_ (random access file)
|
|
- sind heute Voraussetzung für viele Anwendungen
|
|
- bspw. für Datenbanksysteme
|
|
|
|
## Dateiattribute
|
|
- Eigenschaften / Metadaten
|
|
- Können von BS / Dateisystem verwaltet werden
|
|
- enthalten Größe, Erstellungsdatum, Zugriffsrechte ...
|
|
|
|
## Dateioperationen
|
|
### Create
|
|
- Datei wird ohne Datum erzeugt
|
|
- Entstehung der Datei ankündigen und eigene Attribute festlegen
|
|
|
|
### Delete
|
|
- Wird eine Datei nicht länger benötigt, muss sie gelöscht werden
|
|
|
|
### Open
|
|
- Bevor eine Datei benutzt werden kann, muss ein Prozess sie öffnen
|
|
- Open ermöglicht Laden in Arbeitsspeicher
|
|
|
|
### Close
|
|
- Freigeben des internen Tabellenspeichers
|
|
|
|
### Read
|
|
- Daten werden aus Datei gelesen
|
|
- Bytes von der aktuellen Position
|
|
- Aufrufer muss angeben wie viele Daten benötigt werden
|
|
- Puffer für Daten zur Verfügung stellen
|
|
|
|
### Write
|
|
- Wenn aktuelle Position an Ende der Datei
|
|
- Dateigröße erhöht sich
|
|
- Befindet sich Position in der Mitte der Datei
|
|
- vorhandene Daten werden überschrieben
|
|
|
|
### Append
|
|
- Eingeschränkte Form von [Write](#write)
|
|
|
|
### Seek
|
|
- Bei Dateien mit wahlfreiem Zugriff
|
|
- Von wo Daten holen?
|
|
- Seek positioniert Dateizeiger an einer bestimmten Stelle in der Datei
|
|
- Danach lesen/schreiben an Position
|
|
|
|
### Rename
|
|
- Name der Datei ändern
|
|
- nicht zwingend notwendig
|
|
- normalerweise in eine neue Datei mit anderem Namen umkopieren
|
|
- alte löschen
|
|
|
|
### Get attributes
|
|
|
|
### Set attributes
|
|
|
|
## Verzeichnisse
|
|
- Verzeichnissystem mit nur einer Ebene ist angemessen für sehr einfache Anwendungen
|
|
- 
|
|
- **absolute Pfadnamen**
|
|
- Gesamter Pfad von Wurzel bis Datei
|
|
- **relative Pfadnamen**
|
|
- In Verbindung mit dem Konzept des Arbeitsverzeichnisses
|
|
- ./
|
|
- aktuelles Verzeichnis
|
|
- ../
|
|
- übergeordnetes Verzeichnis
|
|
- 
|
|
|
|
## Verzeichnisoperationen
|
|
### Create (Verzeichnis)
|
|
|
|
### Delete (Verzeichnis)
|
|
- Es kann immer nur ein leeres Verzeichnis gelöscht werden
|
|
- (., .. dürfen enthalten sein)
|
|
|
|
### Opendir
|
|
- Um beispielsweise alle Dateien in einem Verzeichnis aufzulisten
|
|
|
|
### Closedir
|
|
|
|
### Readdir
|
|
- Aufruf gibt nächsten Eintrag eines geöffneten Verzeichnisses zurück
|
|
|
|
### Rename (Verzeichnis)
|
|
|
|
### Link
|
|
- Durch Technik des Verlinkens können Dateien in mehr als einem Verzeichnis vorkommen
|
|
- Spezifiziert eine vorhandene Datei und erzeugt Verbindung von dieser Datei zu dem Namen
|
|
|
|
### Unlink
|
|
- Verzeichniseintrag wird entfernt
|
|
- Falls nur in einem Verzeichnis → [löschen](#delete)
|
|
|
|
## Implementierung
|
|
- BIOS liest MBR ein, führt aus
|
|
- MBR-Programm
|
|
- lokalisiert aktive Partition
|
|
- liest ersten Block (Boot-Block)
|
|
- führt aus
|
|
- lädt BS, das in Partition gespeichert ist
|
|
- Dateisystem enthält häufig noch Superblock
|
|
- enthält alle _Schlüsselparameter_ des Dateisystems
|
|
- **Magische Zahl**
|
|
- identifiziert Typ des DS
|
|
- **Anzahl der Blöcke**
|
|
- **Weitere administrative Schlüsselinformationen**
|
|
- wird bei Start in den Speicher geladen
|
|
- Danach
|
|
- **Freie Blöcke**
|
|
- Bitmap oder Liste von Zeigern
|
|
- **I-Nodes**
|
|
- Feld von Datenstrukturen
|
|
- Jede beinhaltet Informationen über je eine Datei
|
|
- **Wurzelverzeichnis**
|
|
- Spitze des Dateibaums
|
|
- 
|
|
|
|
### Methoden zur Belegungsverkettung
|
|
#### Zusammenhängende Belegung
|
|
|