Aggiunto schema interazione file-processi
[gapil.git] / fileunix.tex
index ea2868980fc38608a0432224dfe1568cbfd02722..86652f3d57c6b1d09978ac9f680804135420cf01 100644 (file)
@@ -32,9 +32,18 @@ ogni ulteriore operazione.
 
 Per capire come funziona questo canale di comunicazione occorre spiegare
 brevemente qual'è architettura con cui il kernel gestisce l'interazione fra
 
 Per capire come funziona questo canale di comunicazione occorre spiegare
 brevemente qual'è architettura con cui il kernel gestisce l'interazione fra
-processi e file.  Il kernel mantiene sempre un elenco dei processi
-attivi nella cosiddetta \textit{process table} ed un elenco dei file aperti
-nella \textit{file table}. 
+processi e file.  Il kernel mantiene sempre un elenco dei processi attivi
+nella cosiddetta \textit{process table} ed un elenco dei file aperti nella
+\textit{file table}. La relazione fra queste tabelle è mostrata in \nfig.
+
+
+\begin{figure}[htb]
+  \centering
+  \includegraphics[width=7cm]{img/procfile.eps}
+  \caption{Schema delle operazioni del VFS}
+  \label{fig:file_VFS_scheme}
+\end{figure}
+
 
 Ciascuna voce della \textit{process table}, che in Linux è costituita da una
 struttura \var{task\_struct}, contiene le informazioni relative ad ogni
 
 Ciascuna voce della \textit{process table}, che in Linux è costituita da una
 struttura \var{task\_struct}, contiene le informazioni relative ad ogni
@@ -42,8 +51,9 @@ processo attivo nel sistema; fra queste c'
 ulteriore struttura \var{files\_struct} in cui sono contenute le informazioni
 relative a ogni file che il processo ha aperto, ed in particolare:
 \begin{itemize}
 ulteriore struttura \var{files\_struct} in cui sono contenute le informazioni
 relative a ogni file che il processo ha aperto, ed in particolare:
 \begin{itemize}
-\item i flag di close on esec 
-\item un puntatore alla struttura \var{file} nella \textit{file table}
+\item i flag relativi ai file descriptor.
+\item un puntatore alla struttura \var{file} nella \textit{file table} per
+  ogni file aperto.
 \end{itemize}
 
 Ciascuna voce della \textit{file table}, che in Linux è costituita da una
 \end{itemize}
 
 Ciascuna voce della \textit{file table}, che in Linux è costituita da una
@@ -52,14 +62,16 @@ nel sistema, fra queste ci sono:
 \begin{itemize}
 \item lo stato del file (lettura, scrittura, append, etc.).
 \item il valore della posizione corrente (l'\textit{offset}).
 \begin{itemize}
 \item lo stato del file (lettura, scrittura, append, etc.).
 \item il valore della posizione corrente (l'\textit{offset}).
-\item un puntatore alla dentry del file (da cui si accede all'inode).
-\item un puntatore alla tabella delle operazioni del filesystem (vedi
-  \tabref{tab:file_file_operations}).
+\item un puntatore all'inode\footnote{nel kernel 2.4.x si è in realtà passati
+    ad un puntatore ad una struttura \var{dentry} che punta a sua volta
+    all'inode passando per la nuova struttura del VFS} del file (da cui si
+  accede all'inode).
+\item un puntatore alla tabella delle operazioni definite sul file (si ricordi
+  quanto detto a proposito di \tabref{tab:file_file_operations} nella
+  spiegazione del VFS di Linux).
 \end{itemize}
 
 
 \end{itemize}
 
 
-Le relazioni fra queste strutture sono riportate in \nfig; 
-
 
 
 All'interno di ogni processo i file aperti sono identificati da un intero non
 
 
 All'interno di ogni processo i file aperti sono identificati da un intero non
@@ -118,3 +130,4 @@ funzioni fondamentali \func{open}, \func{read}, \func{write},
 
 
 
 
 
 
+