15 KiB
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
- Bilden einen Namensraum
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
- Nutzer müssen Details der Speicherung verborgen bleiben
- 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
- Sequenzielle Dateien konnten zurückgespult 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
- sind heute Voraussetzung für viele Anwendungen
- Möglichkeit die Bytes oder Datensätze in beliebiger Reihenfolge auslesen
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
- absolute Pfadnamen
- Gesamter Pfad von Wurzel bis Datei
- relative Pfadnamen
- In Verbindung mit dem Konzept des Arbeitsverzeichnisses
- ./
- aktuelles Verzeichnis
- ../
- übergeordnetes Verzeichnis
- ./
- In Verbindung mit dem Konzept des Arbeitsverzeichnisses
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
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
- MBR-Programm
- 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
- Magische Zahl
- wird bei Start in den Speicher geladen
- enthält alle Schlüsselparameter des Dateisystems
- Danach
- Freie Blöcke
- Bitmap oder Liste von Zeigern
- I-Nodes
- Feld von Datenstrukturen
- Jede beinhaltet Informationen über je eine Datei
- Feld von Datenstrukturen
- Wurzelverzeichnis
- Spitze des Dateibaums
- Freie Blöcke
Methoden zur Belegungsverkettung
Zusammenhängende Belegung
- Einfachstes Belegungsschema
- Speicherung als zusammenhängende Menge von Plattenblöcken
- Jede Datei beginnt mit neuem Block
- 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
- CD-ROM
Verkettete Listen
- Jede Datei ist verkettete Liste von Plattenblöcken
- Erstes Wort = Zeiger auf den nächsten
- Rest = Daten
-
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 nehmenFeld, das die I-Nodes enthält benötigt nur n*k Byte
Dateinamen
- Keine festgelegte Länge
- variable Dateinamenlängen verwalten?
- Nachteil:
- Lücke variabler Länge
- entsteht, wenn eine Datei entfernt wird und nächste Lücke nicht genau passt
- Lücke variabler Länge
- Es ist möglich Verzeichniseinträge zu verschieben
- Nachteil:
- 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 :/
- Für alle Dateinamen nur feste Längen zulassen
- Lineare Suche → sehr langsam
- Verwendung einer Hashtabelle in jedem Verzeichnis
- Vorteil einer viel schnelleren Suche
- Nachteil: komplizierte Verwaltung
- Zwischenspeichern der Resultate vorangegangener Suchen
- Verwendung einer Hashtabelle in jedem Verzeichnis
- variable Dateinamenlängen verwalten?
Gemeinsam genutzte Dateien
Symbolische Links
- 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 PfadDatei 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 :)
- Viele Lesezugriffe direkt aus Platten-Cache
- 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
- Einzelnes Segment kann in beliebiger Reihenfolge I-Nodes, Verzeichnisblöcke und Datenblöcke enthalten
- An Ende des Logs schreiben
- Alle noch ausstehenden im Speicher gepufferten Schreibaufträge regelmäßig sammeln
- 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
- Log wird ohne Reorganisation immer größer
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
- Bei Neustart im Log nachschauen, was gerade vor sich ging
- 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
- Gruppe von Aktionen klammern
- 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
- Transaktion wird als Ganzes behandelt
- 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
- Nach Abschluss einer erfolgreichen Transaktion
- Transaktionen werden von einem in einen andern konsistenten Zustand überführt
- 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
- einmal abgeschlossene Transaktion dauerhaft in DB gespeichert
- Atomarität (Atomicity)
- Datenbankkonzept der atomaren Transaktion
Virtuelle Dateisysteme (VFS)
- 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
- Liste der Adressen von Funktionen dem VFS zur Verfügung stellen
- VFS legt im RAM V-Nodes an
- weitere Dateisysteme jetzt oder während Ausführung
- Wurzeldateisystem beim VFS registrieren