[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