Comment mettre en œuvre très simple système de fichiers?
Je me demande comment l'OS est en lecture/écriture sur le disque dur.
Je voudrais comme un exercice pour mettre en œuvre un simple système de fichiers avec aucun des répertoires qui peuvent lire et écrire des fichiers.
Où dois-je commencer?
Va C/C++ faire l'affaire ou dois-je aller avec un plus faible niveau d'approche?
Est-ce trop pour une seule personne?
- juste un coup d'oeil au système de fichiers minix concept
- Un système de fichiers n'est pas vraiment trop pour une seule personne. De nombreux systèmes de fichiers ont été écrits en grande partie par une personne (au moins pour le premier bit.
- Q. C.: Laisser un lien à l'réponses.
- un lien pour les ressources? ok: en.wikipedia.org/wiki/MINIX_file_system
- Simple création du système de fichiers à l'aide de busybox linuxseekernel.blogspot.com/2014/06/...
- Étroitement liés, mais avec plus de précision l'exigence de la liste: stackoverflow.com/questions/2189778/...
InformationsquelleAutor the_drow | 2011-01-17
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à FUSIBLE: http://fuse.sourceforge.net/
Cela va vous permettre d'écrire un système de fichiers sans avoir à écrire un pilote de périphérique. À partir de là, j'aimerais commencer avec un seul fichier. Créer un fichier (par exemple) de 100 mo dans la longueur, puis rédigez votre routines à lire et à écrire à partir de ce fichier.
Une fois que vous êtes heureux avec les résultats, alors vous pouvez regarder dans l'écriture d'un pilote de périphérique, et de faire de votre permis de conduire contre un disque physique.
La chose intéressante est que vous pouvez utiliser presque n'importe quelle langue avec FUSIBLE, pas juste C/C++.
Je l'ai trouvé assez facile à comprendre, un simple système de fichiers en utilisant le système de fichiers fat sur le microcontrôleur avr.
http://elm-chan.org/fsw/ff/00index_e.html
Prendre coup d'oeil au code vous permettra de comprendre comment la graisse fonctionne.
structs
. Il sera très limitée dans les fonctionnalités, mais il pourrait suffire dans un système embarqué.Pour l'apprentissage que les idées d'un fichier système, il n'est pas vraiment nécessaire d'utiliser un disque, je pense. Il suffit de créer un tableau de 512 octets octet-tableaux. Imaginez ce un votre Disque dur un de commencer à expérimenter un peu.
Aussi, vous ne voulez hava un coup d'oeil à certains de la norme OS manuels comme http://codex.cs.yale.edu/avi/os-book/OS8/os8c/index.html
La réponse à votre première question, c'est qu'en plus Fusible que quelqu'un d'autre vous a dit, vous pouvez également utiliser Dokan qui fait la même chose pour Windows, et à partir de là est juste une question de faire des Lectures et des Écritures dans une partition physique (http://msdn.microsoft.com/en-us/library/aa363858%28v=vs.85%29.aspx (lire en particulier la section sur la Physique des Disques et des Volumes)).
Bien sûr que sous Linux ou Unix en plus, en utilisant quelque chose comme Fusible, vous n'avez qu'à émettre, d'une lecture ou d'écriture appel à la voulais de périphériques dans /dev/xxx (si vous êtes root), et dans ces conditions les Unices sont plus amicales ou plus d'insécurité selon votre point de vue.
À partir de là, essayer de mettre en œuvre un simple système de fichiers comme Fat, ou quelque chose de plus exotérique comme un tar système de fichiers, ou même un simple système de fichiers basé sur Unix concepts comme les UFS ou Minux, ou juste quelque chose que seuls les journaux d'appels qui sont faits et leurs arguments dans un fichier journal (et cela va vous aider à comprendre, les appels effectués sur le système de fichiers du pilote lors de l'utilisation régulière de votre ordinateur).
Maintenant votre deuxième question (qui est beaucoup plus simple de répondre), oui, C/C++ fera l'affaire, car ils sont la lingua franca de développement du système, aussi beaucoup de votre exemple de code en C/C++ ainsi vous serez à moins de lire C/C++ dans votre développement.
Maintenant pour votre troisième question, oui, c'est faisable par une personne, par exemple le système de fichiers ext (largement connu dans le monde de Linux par ses successeurs comme ext2 ou ext3) a été faite par un seul développeur Theodore Ts'o, donc ne pense pas que ces choses ne sont pas réalisables par une seule personne.
Maintenant les notes finales, n'oubliez pas que un véritable système de fichiers interagit avec un grand nombre d'autres sous-systèmes dans un noyau normal, par exemple, si vous avez un ordinateur portable et mise en veille prolongée le système de fichiers a pour vider toutes les modifications apportées à l'ouverture des fichiers, si vous avez un fichier d'échange sur la partition ou même si le fichier d'échange a son propre système de fichiers, qui aura une incidence sur votre système de fichiers, en particulier la taille des blocs, car ils ont tendance à être égale ou les pouvoirs de la page, la taille du bloc, parce qu'il est facile de placer un bloc depuis le système de fichiers sur la mémoire que par un hasard est égale à la taille de la page (parce que c'est juste un transfert).
Et aussi, la sécurité, puisque vous voulez contrôler les utilisateurs et les fichiers qu'ils en lecture/écriture et cela signifie généralement que, avant l'ouverture d'un fichier, vous devez savoir ce que l'utilisateur est connecté, et que les autorisations qu'il a pour ce fichier. Et, évidemment, sans système de fichiers, les utilisateurs ne peuvent pas exécuter n'importe quel programme ou d'interagir avec la machine. Système de fichiers moderne couches, également interagir avec le sous-système réseau en raison du fait qu'il y a du réseau et des systèmes de fichiers distribués.
Donc, si vous voulez aller pour apprendre à faire du noyau des systèmes de fichiers, ceux-ci sont certaines des choses que vous avez à vous soucier (en plus de la connaissance d'une interface VFS)
P. S.: Si vous voulez faire des permissions Unix sous Windows, vous pouvez utiliser quelque chose comme ce que MS utilise pour NFS sur le serveur versions de windows (http://support.microsoft.com/kb/262965)
Juste un complément à ce que Coyote21 dit. Vous pouvez lire cette thèse http://www.minix3.org/theses/gerofi-minix-vfs.pdf
Dans cette thèse, vous pouvez en apprendre un peu plus à propos de VFS et certains détails y sont décrits. Il y a de très utile à l'annexe B. Il y a une mise en œuvre d'un système de fichier (pas un vrai système de fichier, mais celui qui est en mémoire).