OS_FILESYSTEM - Un système de fichiers virtuel (C ++)
Introduction
Il s'agit d'un système de fichiers virtuel qui imite Linux. Le système est hébergé par un fichier de disque virtuel. Il simule la lecture et l'écriture du disque avec la lecture et l'écriture de fichiers sans impliquer le pilote sous-jacent.
Pour écrire un système de fichiers Linux d'imitation simple, vous devez d'abord concevoir un framework de base qui comprend l'inode, le bloc, le superblock, la disposition du disque virtuel, l'allocation d'espace et d'autres informations. Le début du système de fichiers est un superblock qui contient des informations importantes sur le système, y compris le nombre et la taille de l'inode et des blocs. Pour Inode, il doit généralement occuper un pour cent de l'espace disque, mais il s'agit d'un petit système avec une taille totale de seulement 5 m, il y a donc très peu d'espace alloué à la zone Inode, et la majeure partie de l'espace restant est la zone de bloc.
Le plan global de ce système de fichiers est le suivant:

Parce que le temps est serré lors de la rédaction du programme, je ne l'ai écrit que pendant 4 jours avant de l'accepter, donc le code n'a pas eu le temps de l'optimiser, et certains endroits semblent redondants, alors ne soyez pas surpris.
Bien que le temps soit limité, il met également en œuvre la fonction d'un éditeur VI. L'écriture est relativement simple et le code est très désordonné. Si vous avez le temps de l'améliorer.
En général, le code doit encore être optimisé. Bienvenue pour donner plus de suggestions et trouver plus de défauts.
Comment utiliser
Étape 1: Téléchargez le projet
git clone https://github.com/windcode/os_filesystem.git
Étape 2: Ouvrez le projet avec VC ++ 6.0
Double-cliquez sur le fichier mingos.dsw dans le répertoire ou faites glisser le fichier dans l'interface VC ++ 6.0.
Étape 3: compiler, lier, exécuter

ou
Étape 1: Exécutez le fichier Mingos.exe directement dans le dossier / de débogage
caractéristiques
- Exécutez d'abord, créez des fichiers de disque virtuel

- Connectez-vous au système
L'utilisateur par défaut est root et le mot de passe est root


- Utilisateur Ajouter, Supprimer, Connexion, Connexion (UserAdd, UserDel, Logout)

- Modifier les autorisations de fichiers ou de répertoires (CHMOD)

- Écrire et lire sont limités par les autorisations

- Ajouter et supprimer des fichiers / dossiers (Touch, RM, MKDIR, RMDIR)

- Afficher les informations du système (super, inode, bloc)

- Imiter un éditeur de texte vi (vi)

Inode gère les informations sur les fichiers et les répertoires
Utilisez la méthode de liaison du groupe pour gérer l'allocation des blocs de ralenti
- Processus d'allocation de bloc: Lorsqu'un bloc doit être alloué, le haut de la pile de blocs libre élimine une adresse de bloc inactif comme bloc nouvellement alloué. Lorsque la pile est vide, la pile dans le bloc libre représenté par l'adresse de pile inférieure est utilisée comme nouvelle pile de blocs libre.
- Processus de recyclage du bloc: lors du recyclage d'un bloc, vérifiez si la pile est pleine. S'il n'est pas satisfait, le pointeur de pile actuel sera déplacé vers le haut et l'adresse de bloc à recycler est placée sur le dessus de la nouvelle pile. Si la pile est pleine, le bloc à recycler sera utilisé comme nouvelle pile de blocs gratuite, et l'adresse de l'élément inférieur de cette pile de blocs gratuite est définie sur la pile de blocs gratuite tout à l'heure.
- Le bloc bitmap et superblock doivent être mis à jour lors de l'allocation et du recyclage.
Distribution / recyclage de l'inode
- L'allocation et le recyclage de l'inode sont relativement simples, et l'allocation et le recyclage séquentiels sont adoptés.
- Lorsque l'allocation est requise, trouvez un inode inactif à partir du bitmap inode dans l'ordre et trouvez le numéro qui renvoie l'inode avec succès.
- Lors du recyclage, mettez simplement à jour le bitmap inode.
- L'allocation et le recyclage nécessitent une mise à jour du bitmap inode.
Avis
- L'environnement de course est VC ++ 6.0