[SOS] Re: VFS
Thomas Petazzoni
thomas.petazzoni at enix.org
Sam 8 Jan 20:35:47 CET 2005
Salut,
Cyril Dupuit wrote:
> Pour des raisons évidentes, je ne passe pas par la liste de diffusion.
Je réponds sur la liste, j'espère que ça ne t'ennuie pas. Je pense que
les informations peuvent intéresser tout le monde.
> J'ai commencé à m'intéresser au VFS de Linux 2.0, mais le souci, c'est
> que je n'y comprend pas grand chose. C'est franchement balaise. Il y a
> beaucoup de lignes de code, et du coup, je m'y perd.
> J'ai quand même lu le livre "Le noyau Linux" mais, ça ne viens pas. Il
> me manque beaucoup d'informations.
> Donc, ma question, et ça, vous vous en doutiez, où pourrai-je trouver de
> la doc ou des codes sources écrit en C concernant le VFS. Bien entendu,
> plus simple que Linux 2.0.
> Je sais que SOS va implémenter le VFS dans peu de temps, mais j'aimerai
> en savoir plus s'il vous plait.
Le VFS, c'est beaucoup de code, mais conceptuellement, je pense que
c'est quand même plus simple à comprendre que la pagination, la mémoire
virtuelle ou le changement de contexte par exemple.
En gros, il s'agit d'une infrastructure permettant d'uniformiser l'accès
aux systèmes de fichiers. Dans systèmes de fichiers, j'entends systèmes
de fichiers au sens Unix, c'est à dire au sens large : à la fois les
systèmes de fichiers "réels" qui stockent les documents, mais aussi les
systèmes de fichiers plus "virtuels" tel que /dev ou /proc.
Vous trouverez une introduction au VFS dans un précédent article que
David et moi-même avions écrit pour un Linux Magazine Hors Série. Cet
article est disponible à l'adresse
http://thomas.enix.org/pub/articles/lmhs-article-1.pdf et la partie
concernant le VFS est la 2.4
Comme il est dit dans cet article, le VFS sert à :
1) Assurer la cohérence de l'espace de nommage : sous Unix, dans une
seule arboresence, on peut avoir de multiples systèmes de fichiers,
montés à des endroits différents. Le VFS met en place cet espace de
nommage global et "redirige" les appels de lecture/écriture/... sur un
fichier vers le système de fichiers concernés (entre autres).
2) Assurer l'interaction uniforme avec les applications utilisateur au
travers d'une interface de programmation unique. Le paradigme Unix "tout
est fichier" est réalisé grâce à une interface unique d'accès à tous les
fichiers, avec notamment les primitives read/write/seek/ioctl/stat,
etc... C'est le VFS qui implémente toutes ces primitives en s'appuyant
sur les systèmes de fichiers sous-jacents pour fonctionner.
3) Assurer l'intégration du système de fichiers avec d'autres
sous-systèmes, notamment la gestion de la mémoire virtuelle, ce qui est
nécessaire pour le "file mapping" dont nous n'avons pas encore parlé
dans la série SOS.
La figure 5 de l'article donne un schéma général des structures de
données manipulées par le VFS, et les parties 2.4.2 et 2.4.3 expliquent
précisement comment se déroulent l'ouverture et la manipulation d'un
fichier au travers du VFS.
Quelques références sur le Web au sujet du VFS :
- A tour of the Linux VFS
http://www.tldp.org/LDP/khg/HyperNews/get/fs/vfstour.html
- The Linux Virtual File-system Layer
http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/vfs.html
- A small trail through the Linux kernel
http://www.win.tue.nl/~aeb/linux/vfs/trail.html
Ces articles sont assez anciens, et le code a certainement un peu changé
dans les noyaux plus récents (2.4, 2.6), mais le principe reste le même.
A noter que le sujet du VFS sera abordé dans le cadre de l'article 8 de
la série consacrée à SOS.
Bonne soirée,
Thomas
--
PETAZZONI Thomas - thomas.petazzoni at enix.org
http://thomas.enix.org - Jabber: thomas.petazzoni at jabber.dk
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E 1624 F653 CB30 98D3 F7A7
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 256 bytes
Desc: OpenPGP digital signature
Url : http://the-doors.enix.org/pipermail/sos/attachments/20050108/2d109f1f/signature-0001.pgp
Plus d'informations sur la liste de diffusion Sos