X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileintro.tex;h=85098c865e948438193276b67debd89c4ae5a85a;hp=a7df9939b1089dcc33a5f2889978a390bfd5252f;hb=d0e5573bf74f834c84e9adae6175f388e2f44916;hpb=056bbc90c8a0710b57fa7b13f5f0dfdad1b3ff3f diff --git a/fileintro.tex b/fileintro.tex index a7df993..85098c8 100644 --- a/fileintro.tex +++ b/fileintro.tex @@ -125,15 +125,15 @@ questa sia la directory radice allora il riferimento \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}} @@ -301,9 +301,9 @@ un filesystem unix. In particolare occorre tenere presente dov' 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. @@ -322,7 +322,7 @@ 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 @@ -333,8 +333,8 @@ di filesystem differenti all'interno dello stesso albero delle directory 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] @@ -344,6 +344,14 @@ di I/O sul dispositivo fisico, secondo lo schema riportato in \nfig. \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}),