X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileunix.tex;h=ad1949209a4466c1e98c1fb3c4841f486f8ce3d8;hp=5de72aa67cd481a748a0c4c9d9ca829fd9a45687;hb=4e1da5b259a86278710be32441de7b88b9287ec1;hpb=193d612d40c5f81f5559ea6e11e70f6b6e51fb39 diff --git a/fileunix.tex b/fileunix.tex index 5de72aa..ad19492 100644 --- a/fileunix.tex +++ b/fileunix.tex @@ -101,7 +101,7 @@ capire i dettagli del funzionamento dell'interfaccia dei \textit{file \index{file!descriptor|)} -\begin{figure}[htb] +\begin{figure}[!htb] \centering \includegraphics[width=13cm]{img/procfile} \caption{Schema della architettura dell'accesso ai file attraverso @@ -552,6 +552,10 @@ seguenti valori\footnote{per compatibilità con alcune vecchie notazioni per ottenere la nuova posizione corrente. \end{basedescript} +% TODO, trattare, SEEK_HOLE e SEEK_DATA, inclusi nel kernel 3.1, vedi +% http://lwn.net/Articles/439623/ + + Si tenga presente che la chiamata a \func{lseek} non causa nessun accesso al file, si limita a modificare la posizione corrente (cioè il valore \var{f\_pos} in \param{file}, vedi fig.~\ref{fig:file_proc_file}). Dato che @@ -826,7 +830,7 @@ fig.~\ref{fig:file_proc_file} le principali strutture usate dal kernel; esamineremo ora in dettaglio le conseguenze che questa architettura ha nei confronti dell'accesso allo stesso file da parte di processi diversi. -\begin{figure}[htb] +\begin{figure}[!htb] \centering \includegraphics[width=15cm]{img/filemultacc} \caption{Schema dell'accesso allo stesso file da parte di due processi @@ -865,7 +869,7 @@ che: dimensione corrente \index{inode} dall'inode. \end{itemize} -\begin{figure}[htb] +\begin{figure}[!htb] \centering \includegraphics[width=15cm]{img/fileshar} \caption{Schema dell'accesso ai file da parte di un processo figlio} @@ -1056,7 +1060,7 @@ semplicemente quello di copiare il valore nella struttura alla stessa voce nella \textit{file table}; per questo si dice che il nuovo file descriptor è \textsl{duplicato}, da cui il nome della funzione. -\begin{figure}[htb] +\begin{figure}[!htb] \centering \includegraphics[width=14cm]{img/filedup} \caption{Schema dell'accesso ai file duplicati} \label{fig:file_dup} @@ -1139,15 +1143,15 @@ molti casi in cui sarebbe invece utile che ogni singolo \itindex{thread} Per risolvere questi problemi, riprendendo una interfaccia già presente in Solaris, a fianco delle normali funzioni che operano sui file (come \func{open}, \func{mkdir}, ecc.) sono state introdotte delle ulteriori -funzioni, contraddistinte dal suffisso \texttt{at}, che permettono l'apertura -di un file (o le rispettive altre operazioni) usando un pathname relativo ad -una directory specificata.\footnote{l'introduzione è avvenuta su proposta - dello sviluppatore principale delle \acr{glibc} Urlich Drepper; le - corrispondenti system call sono state inserite nel kernel ufficiale a - partire dalla versione 2.6.16, in precedenza era disponibile una emulazione - che, sia pure con prestazioni inferiori, funzionava facendo ricorso all'uso - del filesystem \textit{proc} con l'apertura del file attraverso il - riferimento a pathname del tipo di +funzioni, dette anche funzioni ``\textit{at}'' in quanto contraddistinte dal +suffisso \texttt{at}, che permettono l'apertura di un file (o le rispettive +altre operazioni) usando un pathname relativo ad una directory +specificata.\footnote{l'introduzione è avvenuta su proposta dello sviluppatore + principale delle \acr{glibc} Urlich Drepper; le corrispondenti system call + sono state inserite nel kernel ufficiale a partire dalla versione 2.6.16, in + precedenza era disponibile una emulazione che, sia pure con prestazioni + inferiori, funzionava facendo ricorso all'uso del filesystem \textit{proc} + con l'apertura del file attraverso il riferimento a pathname del tipo di \texttt{/proc/self/fd/dirfd/relative\_path}.} Benché queste funzioni non siano presenti negli standard tradizionali esse sono state adottate da vari Unix\footnote{oltre a Linux e Solaris sono presenti in vari BSD.} fino ad @@ -1681,7 +1685,6 @@ operazioni che sono predefinite per qualunque file,\footnote{in particolare % TODO aggiungere FIBMAP e FIEMAP, vedi http://lwn.net/Articles/260832 - Si noti però come la gran parte di queste operazioni specifiche dei file (per essere precisi le prime sei dell'elenco) siano effettuabili in maniera generica anche tramite l'uso di \func{fcntl}. Le due funzioni infatti sono