Conception de cours "Système d'exploitation" de l'Université Tongji CS: Système de fichiers
Ce projet est conçu pour le cours du système d'exploitation du Département d'informatique et de technologie de l'Université Tongji en 2021. Mise en œuvre du système de fichiers de type Unix.

La grande affectation la plus simple ce semestre (principalement sans interface graphique), il a fallu 10 jours pour développer le système de fichiers
Si cet entrepôt vous aide, donnez-moi une étoile?
Si vous avez des questions, vous pouvez également les soulever dans la question pour que d'autres personnes puissent les référer ensemble?
Le référentiel suit le protocole open source du MIT
Cette variable est principalement utilisée pour enregistrer la longueur de fichier actuellement lue. L'existence de cette variable réduit la difficulté de l'indexation des fichiers mixtes. Les fonctions n'ont pas besoin de calculer le nombre de blocs d'index le fichier utilisé, et ils n'ont pas besoin de savoir quelle est la structure d'index mixte du fichier. Ils considèrent directement le fichier d'index comme un fichier géant avec tous les blocs d'index atteignant la taille maximale. Commencez à traverser le fichier de l'index direct, puis à l'index de premier niveau, puis à l'index de deuxième niveau. Lorsque la longueur atteint la taille du fichier, vous pouvez quitter directement la traversée des fichiers de toute taille. Cependant, l'inconvénient de cette méthode est que chaque fois que vous lisez un fichier, il commence à partir de l'en-tête de fichier, ce qui réduit l'efficacité de la lecture et de l'écriture aléatoires.
Cette variable est principalement utilisée pour indiquer la ligne que l'éditeur commence à afficher le texte. Cette variable commence à prendre effet lorsque le nombre de lignes de fichiers dépasse la hauteur de la console. Le nombre de lignes mappés au texte réel du curseur de la console doit être ajouté à la variable start_line. Lorsque le curseur se déplace vers la ligne de fond, appuyez à nouveau sur la touche flèche, Start_line ajoutera une page-down du texte dans l'éditeur, et vice versa.
Cette variable appartient à la classe d'interface utilisateur de la ligne de commande et enregistre principalement le chemin d'accès de l'utilisateur dans le système de fichiers. Parce que dans le système de fichiers, toutes les interfaces de fonctionnement sont basées sur le chemin absolu, et les commandes entrées par l'utilisateur dans l'interface de ligne de commande sont basées sur le chemin relatif Cur_DIR. Par conséquent, lorsque l'interface utilisateur utilise l'interface du système de fichiers, Cur_DIR doit être épissé avec l'entrée de chemin par l'utilisateur, et le chemin absolu doit être passé comme paramètre à la fonction d'interface du système silencieux.


Ce système de fichiers s'exécute avec un système d'exploitation Windows 64 bits. La taille du volume de fichiers simulé du système de fichiers est de 128 Mo. Veuillez vous assurer qu'il y a suffisamment d'espace libre dans le répertoire du programme.
Il est interdit de fermer directement le programme lors de la sortie du programme. Vous devez utiliser la commande de sortie pour quitter le système de fichiers, sinon il peut entraîner des erreurs ou des plantages du système de fichiers.
Modifiez soigneusement les fichiers /etc/users.txt et /etc/groups.txt. Ces deux fichiers sont liés à la gestion des utilisateurs. Si le format n'est pas modifié correctement, il peut entraîner la connexion du système de fichiers ou d'autres problèmes d'autorisation.
Si les deux problèmes ci-dessus se produisent, veuillez essayer de formater le système de fichiers.
Commandes disponibles lorsqu'ils ne sont pas connectés:
| Commande | paramètre | Fonction |
|---|---|---|
| se connecter | Nom d'utilisateur (String) | Connexion de l'utilisateur |
| sortie | Quitter le système | |
| format | Système de fichiers de format | |
| aide | Afficher la liste d'invites de commande |
Commandes disponibles à l'état de connexion:
| Commande | paramètre | Fonction |
|---|---|---|
| Déconnexion | Déconnexion des utilisateurs | |
| sortie | Quitter le système | |
| mkdir | Nom du répertoire (chaîne, longueur inférieure à 28 octets, ne peut pas être un répertoire à plusieurs niveaux) | Créer un sous-répertoire |
| CD | Nom du répertoire (chaîne, longueur de moins de 28 octets, nom de sous-répertoire dans le répertoire actuel ne peut pas être un répertoire à plusieurs niveaux) | Aller au sous-répertoire |
| LS | Afficher la liste des répertoires actuels | |
| rmdir | Nom du répertoire (chaîne, longueur de moins de 28 octets, nom de sous-répertoire dans le répertoire actuel ne peut pas être un répertoire à plusieurs niveaux) | Supprimer les sous-répertoires |
| touche | Nom de fichier (chaîne, longueur inférieure à 28 octets, ne peut pas être un répertoire à plusieurs niveaux) | Créer un nouveau fichier |
| chod | Nom de fichier (chaîne, longueur de moins de 28 octets, le nom de fichier dans le répertoire actuel ne peut pas être un répertoire à plusieurs niveaux) (numéro octal à trois chiffres) | Modifier les autorisations de fichiers ou de répertoires |
| RM | Nom de fichier (chaîne, longueur inférieure à 28 octets, le nom de fichier dans le répertoire actuel ne peut pas être un répertoire à plusieurs niveaux) | Supprimer les fichiers |
| userAdd | Nom d'utilisateur (chaîne) Nom du groupe d'utilisateurs (chaîne, groupe d'utilisateurs doit déjà exister) | Ajouter un utilisateur |
| userdel | Nom d'utilisateur (chaîne, l'utilisateur doit déjà exister) | Supprimer les utilisateurs |
| groupadd | Nom du groupe d'utilisateurs (chaîne) | Ajouter un groupe d'utilisateurs |
| groupdel | Nom du groupe d'utilisateurs (chaîne, groupe d'utilisateurs doit déjà exister) | Supprimer le groupe d'utilisateurs |
| df | Vérifier l'utilisation du disque | |
| montrer | Nom de fichier (chaîne, longueur inférieure à 28 octets, le nom de fichier dans le répertoire actuel ne peut pas être un répertoire à plusieurs niveaux) | Imprimez le contenu du fichier. Si le fichier n'est pas un fichier de caractères, il peut provoquer des erreurs |
| vi | Nom de fichier (chaîne, longueur inférieure à 28 octets, le nom de fichier dans le répertoire actuel ne peut pas être un répertoire à plusieurs niveaux) | Ouvrez un fichier avec un éditeur |
| format | Système de fichiers de format | |
| win2fs | Chemin de fichier sous Windows (String, se conforme aux spécifications du chemin du fichier Windows) Nom de fichier sous le répertoire actuel du système de fichiers FS (chaîne, longueur inférieure à 28 octets, le nom de fichier sous le répertoire actuel ne peut pas être un répertoire à plusieurs niveaux) | Copiez le contenu des fichiers Windows dans les fichiers du système de fichiers FS |
| fs2win | Nom de fichier dans le répertoire actuel du système de fichiers FS (chaîne, longueur inférieure à 28 octets, le nom de fichier dans le répertoire actuel ne peut pas être un répertoire à plusieurs niveaux) le chemin de fichier dans Windows (String, conforme aux spécifications du chemin du fichier Windows) | Copiez le contenu du système de fichiers FS dans le fichier Windows |
| CLS | Effacer l'écran | |
| aide | Afficher la liste d'invites de commande |
Instructions de l'éditeur:
Après être entré dans l'éditeur, vous pouvez déplacer le curseur à travers les touches de flèche. Lorsque le curseur est situé aux limites supérieure et inférieure, vous pouvez déplacer le curseur vers la limite pour compléter la page de contenu du texte, entrez la touche Entrée pour supprimer les caractères avant le curseur, entrez d'autres caractères pour insérer des caractères au curseur, appuyez sur la touche ESC pour sortir et enregistrer le texte. "□" Dans l'éditeur, indique la touche Entrée, et "#" indique la fin du fichier. Notez que l'éditeur ne peut gérer que les caractères ASCII.
Le programme peut entraîner diverses exceptions en raison d'une entrée de commande inappropriée, d'un espace de système de fichiers complet, d'autorisations illégales, etc. Lorsqu'une exception se produit, le programme affichera les informations d'exception à la console. Veuillez résoudre l'exception en fonction des informations de sortie. Si l'exception n'est jamais résolue, essayez la mise en forme du système de fichiers.
La définition macro des paramètres accordable se trouve dans le fichier fileSystem.h
| paramètre | illustrer |
|---|---|
| VERSION | Version du système de fichiers |
| Disque | Simuler le nom du fichier de volume de fichier |
| Disque | La taille du disque de volume de fichier est au moins supérieure à 1024 * 512 octets. Il est recommandé de le régler sur (261120 + 1024) * 512 octets, c'est-à-dire 128 Mo |
| nom de fichier | illustrer |
|---|---|
| Filesystem.h | Fichier d'en-tête du système de fichiers |
| filesystem.cpp | Système de fichiers C ++ Fichiers |
| main.cpp | Fichier principal du programme C ++ (interface utilisateur de ligne de commande) |
| test.cpp | Le fichier de test d'interface de fichier de fichiers n'est pas compilé dans le programme exécutable final. |
| Fs.Data | Simuler les volumes de fichiers de disque |
| Système de fichiers.exe | Programme exécutable (interface utilisateur de ligne de commande) |







