next up previous contents
Next: File system in spazio Up: I file system Previous: reperimento informazioni e manipolazione   Indice


Il Virtual File System (VFS)

Il Virtual File System (conosciuto anche con il nome di Virtual File System Switch), è lo strato software nel kernel che definisce ed implementa l'interfaccia al file system per i programmi in spazio utente. Esso stesso funge da livello di astrazione per molti tipi di file system, permettendo così la loro coesistenza.

In Linux per attivare un file system è necessario effettuare la cosiddetta operazione di mount: quest'ultima consiste nell'associare un percorso alla radice del nuovo file system. Tale percorso è detto punto di mount.

Il Virtual File System (d'ora in avanti VFS), deve saper gestire in qualunque momento tutti i file system attivi. La relazione che intercorre fra esso e le altre componenti del sistema è illustrata in figura 3.2.

Figura 3.2: Interazione del Virtual File System (VFS) con le altre componenti del sistema
\includegraphics{immagini/VFSDefinitivo.eps}

Ogni volta che un file system è inizializzato compie una registrazione presso il VFS. Questa è un'operazione che avviene all'avvio del sistema se il supporto per il file system è direttamente inserito nel kernel, oppure al caricamento del modulo specifico se è stato compilato come modulo. Il risultato della registrazione è quello di rendere il VFS capace di leggere il superblocco del nuovo tipo di file system. È in tale blocco, infatti, che sono memorizzate le informazioni basilari ed in particolare le operazioni specifiche per accederne il contenuto.

Esaminando in dettaglio l'operazione di registrazione, si notano subito la sua semplicità ed efficacia. Essa consiste nell'inserimento di una struttura denominata $ \texttt{file\_system\_type}$ nella lista dei file system supportati. Tale lista è rappresentata nella figura 3.3.

La struttura $ \texttt{file\_system\_type}$ contiene le seguenti informazioni[Aiv02] :

Dopo che la struttura è stata inserita nella lista, il VFS provvede ad
inoltrare le operazioni specifiche al file system interessato.

Questa posizione privilegiata permette al VFS di agire da filtro per le chiamate di sistema: non solo ha la possibilità di effettuare alcuni controlli, ma dispone anche di una serie routine per soddisfare autonomamente alcune richieste. Quindi, sebbene ogni file system abbia le sue peculiarità, essi devono sempre permettere alle proprie entità base di essere mappate nelle strutture del VFS. Fra le funzioni approfondite nella sezione 3.3, il VFS è in grado di gestire autonomamente lseek, chdir, getcwd, chown, chmod e lchown.

Figura 3.3: Lista dei file system registrati.
\includegraphics{immagini/filesystemtype.eps}


next up previous contents
Next: File system in spazio Up: I file system Previous: reperimento informazioni e manipolazione   Indice
2004-11-19