X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileunix.tex;h=ea2868980fc38608a0432224dfe1568cbfd02722;hp=c63f47546eb7c621181180512741788fd05814b6;hb=7e36fa5dcb6391f3a1a7fe4d8222a01d909eccd5;hpb=42a0354644ff621551dbb33e5c5e36a72a5ac2d0 diff --git a/fileunix.tex b/fileunix.tex index c63f475..ea28689 100644 --- a/fileunix.tex +++ b/fileunix.tex @@ -37,39 +37,33 @@ 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. +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 di close on esec +\item un puntatore alla struttura \var{file} nella \textit{file table} +\end{itemize} 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 +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}). +\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}). +\end{itemize} +Le relazioni fra queste strutture sono riportate in \nfig; -Per ciascun file aperto nel sistema il kernel mantiene voce nella tabella dei -file; ciascuna voce di questa tabella contiene: -\begin{itemize} -\item lo stato del file (lettura, scrittura, append, etc.). -\item il valore della posizione corrente (l'\textit{offset}). -\item un puntatore al -\end{itemize} +All'interno di ogni processo i file aperti sono identificati da un intero non +negativo, chiamato appunto \textit{file descriptors}; @@ -88,22 +82,22 @@ funzioni fondamentali \func{open}, \func{read}, \func{write}, \func{lseek} e \func{close}; -\subsection{La funzione \texttt{open}} +\subsection{La funzione \func{open}} \label{sec:file_open} -\subsection{La funzione \texttt{creat}} +\subsection{La funzione \func{creat}} \label{sec:file_creat} -\subsection{La funzione \texttt{close}} +\subsection{La funzione \func{close}} \label{sec:file_close} -\subsection{La funzione \texttt{lseek}} +\subsection{La funzione \func{lseek}} \label{sec:file_lseek} -\subsection{La funzione \texttt{read}} +\subsection{La funzione \func{read}} \label{sec:file_read} -\subsection{La funzione \texttt{write}} +\subsection{La funzione \func{write}} \label{sec:file_write} \subsection{Operazioni atomiche coi file} @@ -112,13 +106,13 @@ funzioni fondamentali \func{open}, \func{read}, \func{write}, \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} -\subsection{La funzione \texttt{fcntl}} +\subsection{La funzione \func{fcntl}} \label{sec:file_fcntl} -\subsection{La funzione \texttt{ioctl}} +\subsection{La funzione \func{ioctl}} \label{sec:file_ioctl}