TUD Logo

TUD Home » ... » Teaching » Operating Systems and Security » File Systems

Operating Systems

Exercise: File Systems

Dateisysteme

Geplante Bearbeitungszeit: eine Woche

1. Aufgabe:

In klassischen Unix-Dateisystemen gibt es „harte“ und „symbolische“ Verknüpfungen (hard links, symbolic links). Worin besteht der Unterschied zwischen beiden? Welche Rolle spielen Inodes (auch I-Nodes oder I-Knoten genannt) in diesem Zusammenhang?

2. Aufgabe:

In einem Unix-Dateisystem beträgt die Blockgröße 4 KiB. Eine Allokations-Bitmap dient der Verwaltung belegter Blöcke. In diesem Dateisystem befindet sich eine Datei /tmp/A der Länge 3000 Byte, welche von einem Programm zum Schreiben geöffnet wird. Das Programm hängt an die bereits vorhandenen Inhalte der Datei weitere 16 KiB Daten und schließt die Datei danach wieder.
  1. Welche Blöcke muss das Dateisystem lesen, wenn die Datei wie oben beschrieben geöffnet wird?
  2. Welche Änderungen müssen an den Metadaten in den Dateisystemstrukturen vorgenommen werden, um die neu geschriebenen Inhalte im Dateisystem abzulegen?
  3. Was wäre eine sichere Reihenfolge in der alle modifizierten und neuen Blöcke geschrieben werden können, wenn man die in der Vorlesung diskutierte Methode des „Synchronen Schreibens“ verwendet? Welche Inkonsistenzen können bei Abstürzen nach wie vor auftreten und wie können diese korrigiert werden.
  4. Welche Vor- und Nachteile hat der Einsatz des Journaling-Verfahrens gegenüber„Synchronem Schreiben“? Erläutern Sie das Verfahren am Beispiel der Dateioperationen aus Teilaufgabe (b).

3. Aufgabe:

Eine Anwendung muss umfangreiche Änderungen an einem bereits vorhandenen großen Dokument speichern. Der Entwickler der Anwendung möchte dabei sicherstellen, dass die Änderungen atomar vorgenommen werden. Das heißt, wenn das System während der Speicheroperation abstürzt, soll die Dokumentendatei nach dem anschließenden Neustart entweder den alten oder den neuen Inhalt haben, nicht aber eine Mischung aus beiden. Dazu legt das Programm zunächst eine Kopie der neuen Datei unter einem temporären Namen an und ersetzt anschließend die alte Version durch die neue Datei.
  1. Welche Dateisystemoperationen muss das Programm in welcher Reihenfolge durchführen um die geforderte Atomizität zu erreichen? Welche Randbedingungen müssen außerdem gelten und gegebenenfalls vom Programm durch geeignete Systemaufrufe durchgesetzt werden?
  2. Welche Annahme trifft der Entwickler über die Semantik des rename()-Systemaufrufs? Gibt es im Hinblick auf rename() prinzipielle Unterschiede zwischen den in der Vorlesung diskutierten Verfahren „Synchrones Schreiben“, „Soft Updates“, „Journaling“ und dem log-strukturierten Ansatz für Dateisystemkonsistenz?
Last modified: 9th Jan 2019, 1.36 AM
Author: Jan Bierbaum