I OS moderni devono gestire diversi file system insieme (es. NTFS per Win, FAT-32 per USB drive etc.) :

  • Windows assegna ad ogni fs una lettera di unità diversa (es. C:, D: etc.)
  • UNIX tentano di unire tutti i fs in un’unica struttura gerarchica Virtual File System

L'idea del VFS è astrarre il codice comune tra tutti i fs e inserirla in un livello separato (VFS) :

  • posiziona sopra tutti i fs
  • gestione fs locali e remoti, come quelli in NFS (Network File System)

Interfacce del VFS :

  • superiore : comunica con i processi utente, fornendo le syscall POSIX (es. open, read, write)
  • inferiore : decine di funzioni che il VFS invia ai fs sottostanti

Struttura del VFS

La struttura del VFS :

  • superblock : descrittore di uno specifico fs (info come tipo e dimensione)
  • v-node (virtual-node) : astrazione di un singolo file (o directory) dentro VFS
    • contiene metadati (es. riferimenti sul disco)
    • fornire accesso ai file indipendentemente dal fs
  • directory : organizzazione logica (mapping file e sub-directory)
    • mappa nome file v-node
    • accesso e navigazione semplice (interfaccia unica per i processi e utenti)

FS nuovo

Come fa il VFS a comunicare con un fs nuovo?

  • registrazione : fs fornisce un vettore di funzioni richieste dal VFS, in modo che il VFS sa quale funzione chiamare per operare sui blocchi di quel fs
  • montaggio : fs fornisce il superblock e il VFS crea un v-node per la directory di montaggio
  • gestione I/O : quando si apre un file, il VFS crea un v-node e fa in modo che punti a esso

Aggiungere nuovi file system è molto semplice in questo caso, i progettisti del fs nuovo devono solo garantire il vettore di funzioni che il VFS necessita.


RAID