In tutti i sistemi operativi simili a UNIX , il file system riveste un ruolo di massima importanza. Fin dalla loro origine infatti, gli sviluppatori si sono impegnati per far sì che esso diventasse il principale meccanismo di identificazione delle varie entità del sistema. È proprio per questo che attualmente sono disponibili più tipi di file ed ognuno di essi descrive un oggetto ben definito. Quando ad esempio un'applicazione si collega ad un altro software, locale o remoto che sia, entrambi i sistemi creano una via di comunicazione rappresentata da un file, detto socket (o anche fifo nel caso di collegamento locale). Una volta stabilita la connessione, si agisce sul socket come su un qualunque altro tipo di file.
Un altro esempio molto interessante per comprendere la centralità dell'implementazione dei file system in Linux, è delineato dai file di device. Ogni dispositivo attivo sul computer, ha un corrispondente file speciale all'interno del ramo della gerarchia dei directory. In questo modo è possibile inviare comandi alla periferica da esso identificata effettuandovi operazioni di scrittura, e raccogliere i dati restituiti tramite una semplice lettura. Per realizzare questa implementazione, ogni file di device dispone di due numeri fondamentali detti major e minor number: il primo, definisce il driver che gestisce l'hardware specifico, l'altro descrive univocamente ogni periferica ad esso associata.
Il kernel Linux supporta una moltitudine di file system sia fisici che virtuali. Come si è detto in precedenza, non è questa la sede per approfondire le tecniche di memorizzazione fisica dei dati, quindi si esamineranno, seppur superficialmente, tre dei file system virtuali implementati a livello kernel: il procfs, il sysfs ed il nfs. L'intento di questa breve presentazione è quello di far assimilare concretamente il concetto di file system virtuale (detto anche pseudo file system).
Il procfs fornisce informazioni sullo stato del sistema. È virtuale perché non occupa spazio fisico: i file sono creati ``al volo'' dal kernel quando si tenta di accedere ad essi. Ad esempio il comando visualizza le caratteristiche dei processori attualmente presenti sulla macchina, mentre mostra informazioni utili sullo stato della memoria principale e di swap. Inoltre, per ogni processo in esecuzione viene creato un directory con nome uguale al PID (Process ID). Al suo interno, risiedono alcuni file virtuali che, se letti, restituiscono informazioni riguardo alla linea di comando che ha lanciato il processo, alle variabili d'ambiente impostate al suo avvio, allo stato attuale, ecc. L'evidente potenzialità di questo file system è di costituire una finestra sul kernel che, ad ogni istante, può fornire all'utente risposte aggiornate.
Con il kernel 2.6 è stato introdotto l'elegante e funzionale sysfs, che ricopre una funzione analoga a quella già svolta da una parte del procfs. Esso infatti, provvede ad esportare alcune strutture dati del kernel, i loro attributi, le connessioni fra esse e la loro rappresentazione in spazio utente. Il sysfs è interamente basato sull'infrastruttura kobject, utilizzata per la gestione degli oggetti, delle strutture dati e delle varie sezioni di Linux. Per ogni kobject del kernel, viene creato un directory all'interno di . Poiché in questa versione di Linux esiste una visione gerarchica di tutti i device che compongono una macchina, ogni oggetto del sysfs viene posizionato in un sottodirectory del kobject padre. Sfruttando questo file system, l'amministratore di sistema potrà impostare gli attributi relativi alle periferiche del proprio computer e quindi configurarlo al meglio.
Se si è connessi ad una rete e si desidera accedere a file residenti su altre macchine come se fossero locali, si può utilizzare il file system di rete nfs. Tutte le macchine interessate all'esportazione dei propri dati, devono eseguire un processo demone che sappia gestire il protocollo di condivisione remota dei file. Per lo scopo di questa tesi è importante evidenziare che il demone può esistere sia a livello kernel che a livello utente. Perciò nella sezione 3.5 verranno approfonditi tentativi di gestione dei file system virtuali in spazio utente basandosi su un server nfs.
È nel senso dei tre esempi fin qui presentati che nell'introduzione di questo capitolo gli pseudo file system sono visti come metodologia di accesso a dati specifici.