Correzioni
[gapil.git] / fileunix.tex
index 09e38a8ce394bb51a9cf685401ea102d7bf59bbd..86652f3d57c6b1d09978ac9f680804135420cf01 100644 (file)
@@ -32,48 +32,54 @@ 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}. 
-
-Ciascuna voce della \textit{process table}, che in Linux è costituita da una
-struttura \var{task_struct}, che contiene tutte le informazioni relative ad
-ogni processo attivo nel sistema; fra queste c'è anche il puntatore ad una
-ulteriore struttura \var{files_struct} che contiene le informazioni su tutti i
-file che il processo sta usando.
-
-Ciascuna voce della \textit{file table}, che in Linux è costituita da una
-struttura \var{file}, contiene informazioni ogni file aperto nel sistema.
-
-
-
-All'interno di ogni processo i file aperti sono identificati da un intero non
-negativo, chiamato appunto \textit{file descriptors};
-
-
-
-) che identifica il processo nei confronti del
-kernel ogni processo mantiene una sezione (la \var{file_struct}, la cui
-struttura è riportata in \nfig)
-
-ciascun processo porta
-nella ha una tabella dei file aperti, in
+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
+processo attivo nel sistema; fra queste c'è anche il puntatore ad una
+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 relativi ai file descriptor.
+\item un puntatore alla struttura \var{file} nella \textit{file table} per
+  ogni file aperto.
+\end{itemize}
 
 
-Per ciascun file aperto nel sistema il kernel mantiene voce nella tabella dei
-file; ciascuna voce di questa tabella contiene:
+Ciascuna voce della \textit{file table}, che in Linux è costituita da una
+struttura \var{file}, contiene le informazioni relative ad ogni file aperto
+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 al 
+\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}
 
 
 
 
+All'interno di ogni processo i file aperti sono identificati da un intero non
+negativo, chiamato appunto \textit{file descriptors};
+
+
+
+
 
 \subsection{La condivisione dei files}
 \label{sec:file_sharing}
 
 \subsection{La condivisione dei files}
 \label{sec:file_sharing}
@@ -88,22 +94,22 @@ funzioni fondamentali \func{open}, \func{read}, \func{write},
 \func{lseek} e \func{close};
 
 
 \func{lseek} e \func{close};
 
 
-\subsection{La funzione \texttt{open}}
+\subsection{La funzione \func{open}}
 \label{sec:file_open}
 
 \label{sec:file_open}
 
-\subsection{La funzione \texttt{creat}}
+\subsection{La funzione \func{creat}}
 \label{sec:file_creat}
 
 \label{sec:file_creat}
 
-\subsection{La funzione \texttt{close}}
+\subsection{La funzione \func{close}}
 \label{sec:file_close}
 
 \label{sec:file_close}
 
-\subsection{La funzione \texttt{lseek}}
+\subsection{La funzione \func{lseek}}
 \label{sec:file_lseek}
 
 \label{sec:file_lseek}
 
-\subsection{La funzione \texttt{read}}
+\subsection{La funzione \func{read}}
 \label{sec:file_read}
 
 \label{sec:file_read}
 
-\subsection{La funzione \texttt{write}}
+\subsection{La funzione \func{write}}
 \label{sec:file_write}
 
 \subsection{Operazioni atomiche coi file}
 \label{sec:file_write}
 
 \subsection{Operazioni atomiche coi file}
@@ -112,15 +118,16 @@ funzioni fondamentali \func{open}, \func{read}, \func{write},
 \section{Funzioni avanzate}
 \label{sec:file_adv_func}
 
 \section{Funzioni avanzate}
 \label{sec:file_adv_func}
 
-\subsection{La funzioni \texttt{dup} e \texttt{dup2}}
+\subsection{La funzioni \func{dup} e \func{dup2}}
 \label{sec:file_dup}
 
 \label{sec:file_dup}
 
-\subsection{La funzione \texttt{fcntl}}
+\subsection{La funzione \func{fcntl}}
 \label{sec:file_fcntl}
 
 \label{sec:file_fcntl}
 
-\subsection{La funzione \texttt{ioctl}}
+\subsection{La funzione \func{ioctl}}
 \label{sec:file_ioctl}
 
 
 
 
 \label{sec:file_ioctl}
 
 
 
 
+