From dd2dbdf77bcec1ae91fe5f65a998c1344cf3f1a6 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Fri, 2 Nov 2001 20:04:05 +0000 Subject: [PATCH] Aggiunto schema interazione file-processi --- fileunix.tex | 33 +++++++++++++++++++++++---------- gapil.tex | 2 +- img/procfile.dia | Bin 0 -> 2814 bytes 3 files changed, 24 insertions(+), 11 deletions(-) create mode 100644 img/procfile.dia 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 0000000000000000000000000000000000000000..ab2a92bdad0fe24dcfc107b47542a1a03ed5413a GIT binary patch literal 2814 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 Q=l7rf52pHb9*W`s0LCF)x&QzG literal 0 HcmV?d00001 -- 2.30.2