zusammenfassungen/Writerside/topics/BS/16_Dateisysteme.md
David Schirrmeister 026bca93fa update
2024-06-10 10:34:02 +02:00

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
- ![image_338.png](image_338.png)
- **absolute Pfadnamen**
- Gesamter Pfad von Wurzel bis Datei
- **relative Pfadnamen**
- In Verbindung mit dem Konzept des Arbeitsverzeichnisses
- ./
- aktuelles Verzeichnis
- ../
- übergeordnetes Verzeichnis
- ![image_339.png](image_339.png)
## 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
- ![image_340.png](image_340.png)
### Methoden zur Belegungsverkettung
#### Zusammenhängende Belegung