zusammenfassungen/Writerside/topics/BS/16_Dateisysteme.md
David Schirrmeister 48fe0a3c57 update
2024-07-05 12:18:10 +02:00

15 KiB

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

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
  • absolute Pfadnamen
    • Gesamter Pfad von Wurzel bis Datei
  • relative Pfadnamen
    • In Verbindung mit dem Konzept des Arbeitsverzeichnisses
      • ./
        • aktuelles Verzeichnis
      • ../
        • übergeordnetes Verzeichnis
  • 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)

  • 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
  • Verzeichniseintrag wird entfernt
    • Falls nur in einem Verzeichnis → löschen

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

Methoden zur Belegungsverkettung

Zusammenhängende Belegung

  • Einfachstes Belegungsschema
  • Speicherung als zusammenhängende Menge von Plattenblöcken
    • Jede Datei beginnt mit neuem Block
  • image_351.png
  • Vorteile Nachteile
    Einfach zu implementieren
    Lokalisierung der Dateiblöcke basiert auf zwei Zahlen
    Im Laufe der Zeit wird die Platte fragmentiert
    hervorragende Leseleistung
    Gesamte Datei kann mit einer Operation von der Platte gelesen werden
    image_352.png
  • In manchen Situationen praktikabel
    • CD-ROM
      • alle Dateigrößen sind bekannt, werden sich niemals während Gebrauch ändern
    • DVD
      • Kann als eine Datei gespeichert werden
      • meistens ~4 1GB Dateien

Verkettete Listen

  • Jede Datei ist verkettete Liste von Plattenblöcken
    • Erstes Wort = Zeiger auf den nächsten
    • Rest = Daten
  • image_353.png
  • Vorteile Nachteile
    Kein verlorener Speicherplatz durch Fragmentierung sequenzielles Lesen zwar schnell, wahlfreier Zugriff sehr langsam
    Für Verzeichniseintrag ist Plattenadresse des ersten Blocks ausreichend

File Allocation Table (FAT)

  • Zeiger jedes Plattenblocks in einer Tabelle im Arbeitsspeicher
  • Vorteile Nachteile
    Gesamter Block steht für Daten zur Verfügung Gesamte Tabelle muss durchgehend im Speicher sein
    Obwohl Kette verfolgt werden muss, kann das im RAM ohne Zugriffe auf Platte geschehen Bei einer !TB Festplatte mit einer Blockgröße von 1KB benötigt die Tabelle 1Mia*3Byte ~ 3GB des RAM
    Es reicht für Verzeichniseintrag einen einzigen ganzzahligen Wert des Startblocks zu speichern

I-Nodes (Index Node)

  • Datenstruktur, die Informationen über eine Datei oder ein Verzeichnis auf einem Dateisystem enthält
    • Jede/s Datei/Verzeichnis ist durch einen eindeutigen I-Node identifiziert
  • Vorteile Nachteile
    I-Node muss nur im Speicher sein, solange Datei geöffnet ist Jeder Node kann nur begrenzte Anzahl von Plattenadressen
    Sobald das Limit erreicht ist, müsste man die letzte Adresse als Zeiger auf den nächsten Node nehmen
    Feld, das die I-Nodes enthält benötigt nur n*k Byte
  • image_354.png

Dateinamen

  • Keine festgelegte Länge
    • variable Dateinamenlängen verwalten?
      • image_355.png
        • Nachteil:
          • Lücke variabler Länge
            • entsteht, wenn eine Datei entfernt wird und nächste Lücke nicht genau passt
        • Es ist möglich Verzeichniseinträge zu verschieben
      • image_356.png
        • Für alle Dateinamen nur feste Längen zulassen
          • Gemeinsam auf einem Heap am Ende des Verzeichnisses speichern
        • Vorteil:
          • nach Entfernen einer Datei passt nächste immer rein
        • Heap muss mitverwaltet werden :/
      • Lineare Suche → sehr langsam
        • Verwendung einer Hashtabelle in jedem Verzeichnis
          • Vorteil einer viel schnelleren Suche
          • Nachteil: komplizierte Verwaltung
        • Zwischenspeichern der Resultate vorangegangener Suchen

Gemeinsam genutzte Dateien

  • image_357.png
  • Probleme:
    • image_358.png
    • Enthält Verzeichnis Plattenadressen, dann muss Kopie der Adressen im Verzeichnis B angelegt werden
    • Wenn B/C Daten an Datei anhängen
      • neue Blöcke werden nur im Verzeichnis, in dem Änderung stattfand, aufgelistet
      • Zweck gemeinsamer Verwendung verfehlt
  • Enthält Pfadnamen zur gewünschten Datei
  • Wenn B Datei liest, sucht BS direkt im angegebenen Pfad
  • Vorteil Nachteile
    Dateien auf entfernten, vernetzten Maschinen verlinken zusätzlicher Aufwand
    eigener Plattenblock für Pfad
    Datei mit Pfadnamen muss gelesen werden, Pfad analysieren, Komponente bis I-Node verfolgen
    Falls in Unterverzeichnissen wird Datei evtl. mehrfach gefunden
    Bei Einspielung auf anderen Computer → Link wird zur Kopie der selben Datei

Log-basiertes Dateisystem (LFS)

  • Schreibzugriffe sind effizienter als Lesezugriffe
  • Schreibleistungs- und Fragmentierungsprobleme überwinden
    • Schreibvorgänge werden protokolliert
  • Mit schnelleren CPUs, größerem RAM wächst Platten-Cache schneller
    • Viele Lesezugriffe direkt aus Platten-Cache
      • Ohne Festplattenzugriffe
      • Meiste Plattenzugriffe = Schreibzugriffe :)
  • Probleme
    • Schreibzugriffe meist in Stückchen → ineffektiv
    • Abhängig von
      • Spurwechselzeit (seek time)
      • Latenzzeit (latency)
      • Kommando-Latenz (controller overhead)
    • Inkonsistenzen bei Systemabstürzen
  • Lösungsansatz
    • Alle noch ausstehenden im Speicher gepufferten Schreibaufträge regelmäßig sammeln
      • An Ende des Logs schreiben
        • Einzelnes Segment kann in beliebiger Reihenfolge I-Nodes, Verzeichnisblöcke und Datenblöcke enthalten
          • Am Anfang Zusammenfassung über Inhalt
  • Probleme Lösungsansatz
    • Log wird ohne Reorganisation immer größer
      • Bereinigungsvorgang wird benötigt
    • Über alle Vorgänge Protokoll zu führen erfordert logistischen Aufwand
    • LFS sind hochgradig inkompatibel zu bestehenden Dateisystemen
      • können Inkonsistenz bei Systemabstürzen nicht abfangen

Journaling

  • mit Grundgedanken von LFS Robustheit DS erhöhen
    • Log ist Protokoll über geplante Aktionen
  • Bei Systemabsturz vor Beendigung einer geplanten Arbeit
    • Bei Neustart im Log nachschauen, was gerade vor sich ging
      • Vorgang sauber beenden
  • Beispiel:
    • NTFS, ext3, macOS Extended
  • Für zusätzliche Zuverlässigkeit
    • Datenbankkonzept der atomaren Transaktion
      • Gruppe von Aktionen klammern
        • Anfangstransaktion (begin transaction)
        • Endtransaktion (end transaction)
      • Dateisystem weiß, das es alle eingeklammerten oder keine ausführen muss
    • ACID-Eigenschaften
      • Atomarität (Atomicity)
        • Transaktion wird als Ganzes behandelt
          • alle oder keine Operationen in Transaktion ausführen
          • Wenn eine fehlschlägt Rest rückgängig machen
      • Konsistenz (Consistency)
        • Transaktionen werden von einem in einen andern konsistenten Zustand überführt
          • Nach Abschluss einer erfolgreichen Transaktion
            • DB in Zusatnd, der Integritätsregeln entspricht
      • Isolation (Isolation)
        • mehrere gleichzeitige Transaktionen unabhängig, gleichzeitig ausführen
      • Dauerhaftigkeit (Durability)
        • einmal abgeschlossene Transaktion dauerhaft in DB gespeichert
          • Änderung auch nach Systemabsturz / Neustart erhalten

Virtuelle Dateisysteme (VFS)

  • image_359.png
  • Abstraktionsschicht im BS
    • dient zur Vereinheitlichung der Dateisysteme und deren Zugriffsmethoden
  • Anwendungen können auf Dateien zugreifen
    • ohne auf Details der zugrunde liegenden physischen Dateisysteme zu achten
    • erleichtert Portabilität, flexiblere Verwaltung der Dateisystemressourcen
  • Wenn System hochgefahren
    • Wurzeldateisystem beim VFS registrieren
      • Liste der Adressen von Funktionen dem VFS zur Verfügung stellen
        • Entweder lange Aufruftabelle oder eine Tabelle pro VFS-Objekt
    • VFS legt im RAM V-Nodes an
    • weitere Dateisysteme jetzt oder während Ausführung