\label{sec:fileintr_file_types}
Come detto in precedenza in unix esistono vari tipi di file, in Linux questi
-sono implementati come oggetti del \textit{Virtual File System} e sono
-presenti in tutti i filesystem unix-like utilizzabili con Linux. L'elenco dei
-vari tipi di file definiti dal Virtual File System è riportato in \ntab.
+sono implementati come oggetti del \textit{Virtual File System} (vedi
+\secref{sec:fileintro_vfs}) e sono presenti in tutti i filesystem unix-like
+utilizzabili con Linux. L'elenco dei vari tipi di file definiti dal Virtual
+File System è riportato in \ntab.
Si tenga ben presente che questa classificazione non ha nulla a che fare con
la classificazione sui tipi di file (che in questo caso sono sempre file di
dati) in base al loro contenuto, o tipo di accesso.
-
\begin{table}[htb]
\begin{center}
\begin{tabular}[c]{l l p{7cm}}
la divisione fondamentale fra kernel space e user space che tracciavamo al
\capref{cha:intro_unix}.
-In questa sezione esamineremo allora come viene implementato l'accesso ai
-files in Linux, come il kernel gestisce i vari filesystem, descrivendo poi in
-maniera un po' più dettagliata il filesystem standard di Linux,
+In questa sezione esamineremo come viene implementato l'accesso ai files in
+Linux, come il kernel può gestire diversi tipi di filesystem, descrivendo
+poi in maniera un po' più dettagliata il filesystem standard di Linux,
l'\texttt{ext2}, come esempio di un filesystem unix-like.
% \textit{inode}, \textit{dentry}, \textit{dcache}.
In Linux il concetto di \textit{everything is a file} è stato implementato
-attraverso il \textit{virtual filesystem} (da qui in avanti VFS) che è
+attraverso il \textit{Virtual File System} (da qui in avanti VFS) che è
l'interfaccia che il kernel rende disponibile ai programmi in user space
attraverso la quale vengono manipolati i files; esso provvede un livello di
indirezione che permette di collegare le operazioni di manipolazione sui files
Quando un processo esegue una system call che opera su un file il kernel
chiama sempre una funzione implementata nel VFS; la funzione eseguirà le
manipolazioni sulle strutture generiche e ridirigendo la chiamata alla
-opportune routine del filesystem specifico a cui si fa riferimento, saranno
-queste a chiamare le funzioni di piu basso livello che eseguono le operazioni
+opportune routine del filesystem specifico a cui si fa riferimento. Saranno
+queste a chiamare le funzioni di più basso livello che eseguono le operazioni
di I/O sul dispositivo fisico, secondo lo schema riportato in \nfig.
\begin{figure}[htb]
\label{fig:fileintro_VFS_scheme}
\end{figure}
+Il VFS definisce un insieme di funzioni che tutti i filesystem devono
+implementare, queste funzioni
+
+
+
+\subsection{Il funzionamento del VFS}
+\label{sec:fileintr_vfs_work}
+
La funzione più importante implementata dal VFS è la system call \texttt{open}
che permette di aprire un file. Dato un pathname viene eseguita una ricerca
dentro la \textit{directory entry cache} (in breve \textit{dcache}),