X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileintro.tex;h=c03e36032d1b25e5e39a42c322eb9b982a0cf4e2;hp=fde074723bc71dfa7ec6464a5e29d99638d52e8b;hb=55bb7b212e8a450f8c9c0f840d5cf0de4c428380;hpb=eb318a83679841eada97ff880e361b5a5f62bb02 diff --git a/fileintro.tex b/fileintro.tex index fde0747..c03e360 100644 --- a/fileintro.tex +++ b/fileintro.tex @@ -70,10 +70,7 @@ convenzione, sono inseriti nella directory \texttt{/dev}). \label{sec:fileintr_vfs} Esamineremo adesso come viene implementato l'accesso ai files in Linux. Questa -sezione riporta informazioni sui dettagli di come il kernel gestisce i files, -ed è basata sul documento di Richard Goochs distribuito coi sorgenti del -kernel (nella directory \texttt{linux/Documentation/vfs.txt}). - +sezione riporta informazioni sui dettagli di come il kernel gestisce i files. L'argomento è abbastanza ``esoterico'' e questa sezione può essere saltata ad una prima lettura; è bene però tenere presente che vengono introdotti qui alcuni termini che potranno comparire in seguito, come \textit{inode}, @@ -81,10 +78,26 @@ alcuni termini che potranno comparire in seguito, come \textit{inode}, In Linux il concetto di \textit{everything is a file} è stato implementato attraverso il \textit{virtual filesystem} (da qui in avanti VFS) che è -l'interfaccia astratta che il kernel rende disponibile ai programmi in user -space attraverso la quale vengono manipolati i files; esso provvede anche -un'astrazione delle operazioni di manipolazione sui files che permette la -coesistenza di diversi filesystem all'interno dello stesso albero. +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 +alle operazioni di I/O e gestisce l'organizzazione di questi ultimi nei vari +modi in cui diversi filesystem la effettuano, permettendo la coesistenza +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 +di I/O sul dispositivo fisico, secondo lo schema riportato in \nfig. + +\begin{figure}[htb] + \centering + + \caption{Schema delle operazioni del VFS} + \label{fig:fileintro_VFS_scheme} +\end{figure} 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