Tongji University CS "Betriebssystem" Kursedesign: Dateisystem
Dieses Projekt ist für den Betriebssystemverlauf der Abteilung für Informatik und Technologie der Tongji University im Jahr 2021 ausgelegt. Implementieren von Unix-ähnliches Dateisystem.

Der einfachste große Auftrag in diesem Semester (hauptsächlich ohne GUI) dauerte es 10 Tage, um das Dateisystem zu entwickeln
Wenn Ihnen dieses Lager hilft, gib mir einen Stern?
Wenn Sie Fragen haben, können Sie sie auch in dem Thema aufwerfen, damit andere Personen sie gemeinsam beziehen oder diskutieren können?
Repository folgt dem MIT Open Source -Protokoll
Diese Variable wird hauptsächlich verwendet, um die aktuell gelesene Dateilänge aufzuzeichnen. Die Existenz dieser Variablen verringert die Schwierigkeit der gemischten Dateiindizierung. Funktionen müssen nicht berechnen, wie viele Indexblöcke die Datei verwendet werden, und sie müssen auch nicht wissen, was die gemischte Indexstruktur der Datei ist. Sie betrachten die Indexdatei direkt als eine riesige Datei mit allen Indexblöcken, die die maximale Größe erreichen. Starten Sie die Datei aus dem direkten Index, dann zum Index der ersten Ebene und dann zum Index der zweiten Ebene. Wenn die Länge die Dateigröße erreicht, können Sie den Traversal von Dateien einer beliebigen Größe direkt beenden. Der Nachteil dieser Methode besteht jedoch darin, dass sie jedes Mal, wenn Sie eine Datei lesen, mit dem Dateiheader startet, wodurch die Effizienz des zufälligen Lesens und Schreibens verringert wird.
Diese Variable wird hauptsächlich verwendet, um anzugeben, in welcher Zeile der Editor beginnt, Text anzuzeigen. Diese Variable wird wirksam, wenn die Anzahl der Dateileitungen die Konsolenhöhe überschreitet. Die Anzahl der Zeilen, die dem tatsächlichen Text des Konsolencursors zugeordnet sind, muss der Variablen start_line hinzugefügt werden. Wenn sich der Cursor zum Endergebnis bewegt, drücken Sie erneut die Pfeiltaste, start_line fügt eine Seite nach unten des Textes im Editor hinzu und umgekehrt.
Diese Variable gehört zur Befehlszeile -Benutzeroberfläche der Benutzeroberfläche und zeichnet hauptsächlich den Pfad des Benutzer im Dateisystem auf. Da im Dateisystem alle Betriebsoberflächen auf dem absoluten Pfad basieren und die vom Benutzer in der Befehlszeilenschnittstelle eingegebenen Befehle auf dem relativen Pfad cur_dir basieren. Wenn die Benutzeroberfläche die Dateisystemschnittstelle verwendet, sollte CUR_DIR mit der Pfadeingabe vom Benutzer gespleißt werden und der absolute Pfad sollte als Parameter an die Schnittstellenfunktion des ruhigen Systems übergeben werden.


Dieses Dateisystem wird mit einem 64-Bit-Windows-Betriebssystem ausgeführt. Die simulierte Dateivolumengröße des Dateisystems beträgt 128 MB. Bitte stellen Sie sicher, dass im Programmverzeichnis genügend freien Speicherplatz vorhanden ist.
Es ist verboten, das Programm direkt beim Verlassen des Programms zu schließen. Sie müssen den Befehl exit verwenden, um das Dateisystem zu beenden, andernfalls kann er Fehler oder Abstürze von Dateisystemen verursachen.
Ändern Sie sorgfältig die Dateien /etc/users.txt und /etc/groups.txt. Diese beiden Dateien beziehen sich auf die Benutzerverwaltung. Wenn das Format nicht ordnungsgemäß geändert wird, kann es dazu führen, dass das Dateisystem nicht in der Lage ist, sich an oder andere Berechtigungsprobleme anzumelden.
Wenn die beiden oben genannten Probleme auftreten, versuchen Sie bitte, das Dateisystem zu formatieren.
Befehle verfügbar, wenn sie nicht angemeldet sind:
| Befehl | Parameter | Funktion |
|---|---|---|
| Login | Benutzername (String) | Benutzeranmeldung |
| Ausfahrt | Verlassen Sie das System | |
| Format | Formatdateisystem | |
| helfen | Eingabeaufforderung anzeigen Liste |
Befehle im Anmeldestatus erhältlich:
| Befehl | Parameter | Funktion |
|---|---|---|
| Abmelden | Benutzeranmeldung | |
| Ausfahrt | Verlassen Sie das System | |
| Mkdir | Verzeichnisname (Zeichenfolge, Länge weniger als 28 Bytes, kann kein mehrstufiges Verzeichnis sein) | Erstellen Sie ein Unterverzeichnis |
| CD | Verzeichnisname (Zeichenfolge, Länge weniger als 28 Bytes, Unterverzeichnisname im aktuellen Verzeichnis kann kein mehrstufiges Verzeichnis sein. | Gehen Sie zum Unterverzeichnis |
| ls | Zeigen Sie die aktuelle Verzeichnisliste an | |
| rmdir | Verzeichnisname (Zeichenfolge, Länge weniger als 28 Bytes, Unterverzeichnisname im aktuellen Verzeichnis kann kein mehrstufiges Verzeichnis sein. | Unterverzeichnisse löschen |
| berühren | Dateiname (Zeichenfolge, Länge weniger als 28 Bytes, kann kein mehrstufiges Verzeichnis sein) | Erstellen Sie eine neue Datei |
| Chmod | Dateiname (Zeichenfolge, Länge weniger als 28 Bytes, Dateiname im aktuellen Verzeichnis kann kein mehrstufiges Verzeichnis sein) Berechtigung (dreistellige Oktalnummer) | Ändern Sie die Datei- oder Verzeichnisberechtigungen |
| rm | Dateiname (Zeichenfolge, Länge weniger als 28 Bytes, Dateiname im aktuellen Verzeichnis kann kein mehrstufiges Verzeichnis sein) | Dateien löschen |
| UserAdd | Benutzername (String) Benutzergruppenname (String, Benutzergruppe muss bereits existieren) | Fügen Sie einen Benutzer hinzu |
| UserDel | Benutzername (String, der Benutzer muss bereits existieren) | Benutzer löschen |
| GroupAdd | Benutzergruppenname (Zeichenfolge) | Fügen Sie eine Benutzergruppe hinzu |
| Groupdel | Benutzergruppenname (Zeichenfolge, Benutzergruppe muss bereits existieren) | Benutzergruppe löschen |
| df | Überprüfen Sie die Disk -Nutzung | |
| zeigen | Dateiname (Zeichenfolge, Länge weniger als 28 Bytes, Dateiname im aktuellen Verzeichnis kann kein mehrstufiges Verzeichnis sein) | Drucken Sie den Dateiinhalt. Wenn die Datei keine Zeichendatei ist, kann sie Fehler verursachen |
| vi | Dateiname (Zeichenfolge, Länge weniger als 28 Bytes, Dateiname im aktuellen Verzeichnis kann kein mehrstufiges Verzeichnis sein) | Öffnen Sie eine Datei mit einem Editor |
| Format | Formatdateisystem | |
| win2fs | Dateipfad unter Windows (Zeichenfolge, entspricht den Dateispfadspathungsnamen der Windows-Datei) unter dem aktuellen Verzeichnis des FS-Dateisystems (Zeichenfolge, Länge weniger als 28 Bytes, der Dateiname unter dem aktuellen Verzeichnis kann kein mehrstufiges Verzeichnis sein) | Kopieren Sie die Windows -Dateiinhalte in FS -Dateisystemdateien |
| FS2WIN | Dateiname im aktuellen Verzeichnis des FS-Dateisystems (Zeichenfolge, Länge weniger als 28 Bytes, Dateiname im aktuellen Verzeichnis kann kein mehrstufiger Verzeichnis sein) Dateipfad in Windows (Zeichenfolge, entspricht den Windows-Dateipfadspezifikationen) | Kopieren Sie den Inhalt des FS -Dateisystems in die Windows -Datei |
| Cls | Den Bildschirm löschen | |
| helfen | Eingabeaufforderung anzeigen Liste |
Herausgeber Anweisungen:
Nach dem Eintritt in den Editor können Sie den Cursor durch die Pfeiltasten verschieben. Wenn sich der Cursor an den oberen und unteren Grenzen befindet, können Sie den Cursor erneut an die Grenze verschieben, um die Seite zu vervollständigen, um den Textinhalt zu drehen, die Eingabetaste einzugeben, um die Zeichen vor dem Cursor zu löschen, andere Zeichen einzugeben, um Zeichen in den Cursor einzuführen, die ESC -Taste zu beenden und den Text zu speichern. "□" im Editor gibt die Eingabetaste an, und "#" zeigt das Ende der Datei an. Beachten Sie, dass der Editor nur ASCII -Zeichen verarbeiten kann.
Das Programm kann aufgrund unangemessener Befehlseingaben, vollständiger Dateisystemraum, illegalen Berechtigungen usw. verschiedene Ausnahmen verursachen. Wenn eine Ausnahme eintritt, gibt das Programm die Ausnahmeinformationen an die Konsole aus. Bitte beheben Sie die Ausnahme anhand der Ausgabeinformationen. Wenn die Ausnahme niemals behoben ist, versuchen Sie, das Dateisystem zu formatieren.
Die Makrodefinition der einstellbaren Parameter befindet sich im Dateisystem.h -Datei
| Parameter | veranschaulichen |
|---|---|
| VERSION | Dateisystemversion |
| Disk_NAME | Simulieren |
| Disk_size | Die Dateivolumenscheibengröße beträgt mindestens 1024*512 Bytes. Es wird empfohlen, es auf (261120+1024) *512 Bytes einzustellen, dh 128 MB |
| Dateiname | veranschaulichen |
|---|---|
| Dateisystem.h | Dateisystem -Header -Datei |
| Dateisystem.cpp | Dateisystem C ++ Dateien |
| main.cpp | Hauptprogramm C ++ - Datei (Befehlszeilen Benutzeroberfläche) |
| test.cpp | Die Datei -Testdatei der Dateidatei wird nicht in das endgültige ausführbare Programm zusammengestellt. |
| Fs.data | Simulieren Sie die Dateimengen |
| Dateisystem.exe | Ausführbares Programm (Befehlszeilen Benutzeroberfläche) |







