Skip to main content.

Navigation:

Aufgabe 3: Dateisystem

Lernziel

Aufgabenbeschreibung

Ziel der dritten Aufgabe ist es, den bisher implementierten Kommandointerpreter um ein Dateisystem und die zur Verwendung dieses Dateisystems notwendigen Kommandos zu erweitern. Die Funktionalität des Dateisystems soll mit Hilfe eines in der Vorgabe enthaltenen Images, das als Basis für das Testdateisystem verwendet wird, nachgewiesen werden.

Nach dem Hinzufügen des Dateisystems soll der Kommandointerpreter die Kommandos pwd(1), ls(1), less(1), rm(1), cd, mkdir(1) und rmdir(1) unterstützen und so die Sequenz folgender Aufrufe ermöglichen.

bsshell> pwd
bsshell> ls
bsshell> less testfile
bsshell> mkdir test
bsshell> cd test
bsshell> cd ..
bsshell> rmdir test
bsshell> rm testfile
bsshell> ls

Damit der Kommandointerpreter auch weiterhin möglichst flexibel verwendet werden kann, soll der Pfad zum Image, das für den Test des Dateisystems benutzt wird, beim Start des Kommandointerpreters durch einen Parameter bestimmt werden.

prompt> bsshell [-m size] [-s bitmask | bestfit | firstfit | nextfit | worstfit] [-i path]

Implementierungshinweise

Wie bisher kann die Aufgabe in drei Teilaufgaben, die eine einfache Bearbeitung der Aufgabe ermöglichen, untergliedert werden.

Teil A
Wie in der vorigen Aufgabe solltet ihr damit beginnen, die Vorgabe so zu erweitern, dass beim Aufruf des Kommandointerpreters der Parameter -i path akzeptiert wird. Dann müsst ihr den Konstruktor der Klasse BSShell so ändern, dass er den Pfad des verwendeten Images (Image enthält das Testdateisystem) als Parameter erwartet und mit ihm eine Instanz des verwendeten Dateisystems erzeugt.

Hinweis: Um ein Dateisystem im Interpreter nutzen zu können, muss der Interpreter ein von der Klasse FS abgeleitetes Objekt enthalten, über das die Zugriffe auf das Dateisystem erfolgen.
Weitere Infos: getopt(3)
Teil B
Nachdem ihr den Aufruf des Interpreters um den entsprechenden Parameter erweitert hab, könnt ihr das Dateisystem selbst implementieren. Nähere Informationen zu dem von euch zu implementierenden Dateisystem (VFAT) erhaltet ihr in der Übung und unter den Links in der Hilfestellung.

Hinweis: Zum Testen eures implementierten Dateisystems könnt ihr das in der Vorgabe enthaltene Testprogramm verwenden. Um dieses Programm zu erzeugen, müsst ihr make nur mit dem Parameter testfs aufrufen.
Teil C
Abschließend könnt ihr die zum Nachweis der Funktionalität des Dateisystems notwendigen Kommandos implementieren.

Hinweis: Um die Tests des Dateisystems zu vereinfachen, verwenden wir als Delimiter zwischen der Verzeichnis- und Dateinamen einen Slash '/'.
Weitere Infos: pwd(1), ls(1), mkdir(1), rmdir(1), cp(1), less(1) und mv(1)

Vorgabe

Wie zu den bisherigen Aufgaben erhaltet ihr wieder eine Vorgabe, die aus den bisherigen Vorgaben und den für die Aufgabe relevanten Klassen besteht.

Hilfestellung