From: Simone Piccardi Date: Fri, 2 Nov 2001 20:04:05 +0000 (+0000) Subject: Aggiunto schema interazione file-processi X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=dd2dbdf77bcec1ae91fe5f65a998c1344cf3f1a6 Aggiunto schema interazione file-processi --- diff --git a/fileunix.tex b/fileunix.tex index ea28689..86652f3 100644 --- a/fileunix.tex +++ b/fileunix.tex @@ -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 -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 @@ -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} -\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 @@ -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}). -\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} -Le relazioni fra queste strutture sono riportate in \nfig; - 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}, + diff --git a/gapil.tex b/gapil.tex index b4c7cc1..ff3e04b 100644 --- a/gapil.tex +++ b/gapil.tex @@ -1,4 +1,4 @@ -%% +%% %% GaPiL : Guida alla Programmazione in Linux %% %% S. Piccardi Oct. 2000 diff --git a/img/procfile.dia b/img/procfile.dia new file mode 100644 index 0000000..ab2a92b Binary files /dev/null and b/img/procfile.dia differ