X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=fileunix.tex;h=dad3b0fc0e7d67ff56ced3db6006924a9d774d58;hb=ed54132fb0762894a86b100023f9d04fc4028975;hp=ad1949209a4466c1e98c1fb3c4841f486f8ce3d8;hpb=4e1da5b259a86278710be32441de7b88b9287ec1;p=gapil.git diff --git a/fileunix.tex b/fileunix.tex index ad19492..dad3b0f 100644 --- a/fileunix.tex +++ b/fileunix.tex @@ -40,7 +40,7 @@ tutte le implementazione di un sistema unix-like. Per poter accedere al contenuto di un file occorre creare un canale di comunicazione con il kernel che renda possibile operare su di esso (si ricordi quanto visto in sez.~\ref{sec:file_vfs_work}). Questo si fa aprendo il file -con la funzione \func{open} che provvederà a localizzare \index{inode} l'inode +con la funzione \func{open} che provvederà a localizzare \itindex{inode} l'inode del file e inizializzare i puntatori che rendono disponibili le funzioni che il VFS mette a disposizione (riportate in tab.~\ref{tab:file_file_operations}). Una volta terminate le operazioni, il @@ -83,9 +83,9 @@ informazioni relative al file, fra cui: \item lo stato del file (nel campo \var{f\_flags}). \item il valore della posizione corrente (l'\textit{offset}) nel file (nel campo \var{f\_pos}). -\item un puntatore \index{inode} all'inode\footnote{nel kernel 2.4.x si è in +\item un puntatore \itindex{inode} all'inode\footnote{nel kernel 2.4.x si è in realtà passati ad un puntatore ad una struttura \struct{dentry} che punta - a sua volta \index{inode} all'inode passando per la nuova struttura del + a sua volta \itindex{inode} all'inode passando per la nuova struttura del VFS.} del file. %\item un puntatore alla tabella delle funzioni \footnote{la struttura % \var{f\_op} descritta in sez.~\ref{sec:file_vfs_work}} che si possono usare @@ -142,7 +142,7 @@ tab.~\ref{tab:file_std_files}. \footnotesize \begin{tabular}[c]{|l|l|} \hline - \textbf{Costante} & \textbf{Significato} \\ + \textbf{File} & \textbf{Significato} \\ \hline \hline \const{STDIN\_FILENO} & \textit{file descriptor} dello \textit{standard @@ -162,7 +162,7 @@ In fig.~\ref{fig:file_proc_file} si è rappresentata una situazione diversa, facendo riferimento ad un programma in cui lo \textit{standard input} è associato ad un file mentre lo \textit{standard output} e lo \textit{standard error} sono entrambi associati ad un altro file (e quindi utilizzano lo -stesso \index{inode} inode). +stesso \itindex{inode} inode). Nelle vecchie versioni di Unix (ed anche in Linux fino al kernel 2.0.x) il numero di file aperti era anche soggetto ad un limite massimo dato dalle @@ -322,7 +322,7 @@ ritorno il file descriptor con il valore più basso disponibile. \const{O\_NONBLOCK}.\\ \const{O\_ASYNC} & Apre il file per l'I/O in modalità asincrona (vedi sez.~\ref{sec:file_asyncronous_io}). Quando è - impostato viene generato il segnale \const{SIGIO} + impostato viene generato il segnale \signal{SIGIO} tutte le volte che sono disponibili dati in input sul file.\\ \const{O\_SYNC} & Apre il file per l'input/output sincrono: ogni @@ -769,7 +769,7 @@ scrivere su di esso utilizzando la funzione \funcd{write}, il cui prototipo è: processo o su una posizione oltre il massimo consentito. \item[\errcode{EPIPE}] \param{fd} è connesso ad una pipe il cui altro capo è chiuso in lettura; in questo caso viene anche generato il segnale - \const{SIGPIPE}, se questo viene gestito (o bloccato o ignorato) la + \signal{SIGPIPE}, se questo viene gestito (o bloccato o ignorato) la funzione ritorna questo errore. \item[\errcode{EINTR}] si è stati interrotti da un segnale prima di aver potuto scrivere qualsiasi dato. @@ -844,7 +844,7 @@ situazione come quella illustrata in fig.~\ref{fig:file_mult_acc}: ciascun processo avrà una sua voce nella \textit{file table} referenziata da un diverso file descriptor nella sua \struct{file\_struct}. Entrambe le voci nella \itindex{file~table} \textit{file table} faranno però riferimento allo -stesso \index{inode} inode su disco. +stesso \itindex{inode} inode su disco. Questo significa che ciascun processo avrà la sua posizione corrente sul file, la sua modalità di accesso e versioni proprie di tutte le proprietà che @@ -856,17 +856,17 @@ che: \item ciascun processo può scrivere indipendentemente; dopo ciascuna \func{write} la posizione corrente sarà cambiata solo nel processo. Se la scrittura eccede la dimensione corrente del file questo verrà esteso - automaticamente con l'aggiornamento del campo \var{i\_size} \index{inode} + automaticamente con l'aggiornamento del campo \var{i\_size} \itindex{inode} nell'inode. \item se un file è in modalità \itindex{append~mode} \const{O\_APPEND} tutte le volte che viene effettuata una scrittura la posizione corrente viene - prima impostata alla dimensione corrente del file letta \index{inode} + prima impostata alla dimensione corrente del file letta \itindex{inode} dall'inode. Dopo la scrittura il file viene automaticamente esteso. \item l'effetto di \func{lseek} è solo quello di cambiare il campo \var{f\_pos} nella struttura \struct{file} della \itindex{file~table} \textit{file table}, non c'è nessuna operazione sul file su disco. Quando la si usa per porsi alla fine del file la posizione viene impostata leggendo la - dimensione corrente \index{inode} dall'inode. + dimensione corrente \itindex{inode} dall'inode. \end{itemize} \begin{figure}[!htb] @@ -1019,7 +1019,7 @@ Entrambe le funzioni forzano la sincronizzazione col disco di tutti i dati del file specificato, ed attendono fino alla conclusione delle operazioni; \func{fsync} forza anche la sincronizzazione dei meta-dati del file (che riguardano sia le modifiche alle tabelle di allocazione dei settori, che gli -altri dati contenuti \index{inode} nell'inode che si leggono con \func{fstat}, +altri dati contenuti \itindex{inode} nell'inode che si leggono con \func{fstat}, come i tempi del file). Si tenga presente che questo non comporta la sincronizzazione della @@ -1329,7 +1329,7 @@ il comportamento rispetto a quello ordinario di \func{access}. In questo caso esso può essere specificato come maschera binaria di due valori: \begin{basedescript}{\desclabelwidth{3.0cm}} \item[\const{AT\_EACCESS}] se impostato \funcd{faccessat} esegue il controllo - dei permessi usando l'\textsl{user-ID effettivo} invece di quello reale (il + dei permessi usando l'\acr{uid} effettivo invece di quello reale (il comportamento di default, che riprende quello di \func{access}). \item[\const{AT\_SYMLINK\_NOFOLLOW}] se impostato \funcd{faccessat} non esegue la dereferenziazione dei link simbolici, effettuando il controllo dei @@ -1459,13 +1459,13 @@ per \var{cmd} è riportata di seguito: (vedi sez.~\ref{sec:sess_proc_group}) raggruppamenti di processi usati nel controllo di sessione; a ciascuno di essi è associato un identificatore (un numero positivo analogo al \acr{pid}).} che è preposto alla ricezione - dei segnali \const{SIGIO}\footnote{o qualunque altro segnale alternativo + dei segnali \signal{SIGIO}\footnote{o qualunque altro segnale alternativo impostato con \const{F\_FSETSIG}.} per gli eventi associati al file descriptor \param{fd}\footnote{il segnale viene usato sia per il \textit{Signal Drive I/O}, che tratteremo in sez.~\ref{sec:file_asyncronous_operation}, e dai vari meccanismi di notifica asincrona, che tratteremo in - sez.~\ref{sec:file_asyncronous_lease}.} e \const{SIGURG} per la notifica + sez.~\ref{sec:file_asyncronous_lease}.} e \signal{SIGURG} per la notifica dei dati urgenti di un socket.\footnote{vedi sez.~\ref{sec:TCP_urgent_data}.} Nel caso di un \textit{process group} viene restituito un valore negativo il cui valore assoluto corrisponde @@ -1473,7 +1473,7 @@ per \var{cmd} è riportata di seguito: caso di errore viene restituito $-1$. \item[\const{F\_SETOWN}] imposta, con il valore dell'argomento \param{arg}, l'identificatore del processo o del \itindex{process~group} \textit{process - group} che riceverà i segnali \const{SIGIO} e \const{SIGURG} per gli + group} che riceverà i segnali \signal{SIGIO} e \signal{SIGURG} per gli eventi associati al file descriptor \param{fd}, ritorna un valore nullo in caso di successo o $-1$ in caso di errore. Come per \const{F\_GETOWN}, per impostare un \itindex{process~group} \textit{process group} si deve usare @@ -1482,14 +1482,14 @@ per \var{cmd} è riportata di seguito: \item[\const{F\_GETSIG}] restituisce il valore del segnale inviato quando ci sono dati disponibili in ingresso su un file descriptor aperto ed impostato per l'I/O asincrono (si veda sez.~\ref{sec:file_asyncronous_io}). Il valore 0 - indica il valore predefinito (che è \const{SIGIO}), un valore diverso da + indica il valore predefinito (che è \signal{SIGIO}), un valore diverso da zero indica il segnale richiesto, (che può essere anche lo stesso - \const{SIGIO}). In caso di errore ritorna $-1$. + \signal{SIGIO}). In caso di errore ritorna $-1$. \item[\const{F\_SETSIG}] imposta il segnale da inviare quando diventa possibile effettuare I/O sul file descriptor in caso di I/O asincrono, ritorna un valore nullo in caso di successo o $-1$ in caso di errore. Il - valore zero indica di usare il segnale predefinito, \const{SIGIO}. Un altro - valore diverso da zero (compreso lo stesso \const{SIGIO}) specifica il + valore zero indica di usare il segnale predefinito, \signal{SIGIO}. Un altro + valore diverso da zero (compreso lo stesso \signal{SIGIO}) specifica il segnale voluto; l'uso di un valore diverso da zero permette inoltre, se si è installato il gestore del segnale come \var{sa\_sigaction} usando \const{SA\_SIGINFO}, (vedi sez.~\ref{sec:sig_sigaction}), di rendere @@ -1514,7 +1514,7 @@ per \var{cmd} è riportata di seguito: argomento può essere omesso. Questa funzionalità avanzata è trattata in dettaglio in sez.~\ref{sec:file_asyncronous_lease}. \item[\const{F\_NOTIFY}] attiva un meccanismo di notifica per cui viene - riportata al processo chiamante, tramite il segnale \const{SIGIO} (o altro + riportata al processo chiamante, tramite il segnale \signal{SIGIO} (o altro segnale specificato con \const{F\_SETSIG}) ogni modifica eseguita o direttamente sulla directory cui \var{fd} fa riferimento, o su uno dei file in essa contenuti; ritorna un valore nullo in caso di successo o $-1$ in caso @@ -1663,11 +1663,11 @@ operazioni che sono predefinite per qualunque file,\footnote{in particolare tipo \texttt{const int *}) che contiene un valore logico (un valore nullo disabilita, un valore non nullo abilita). \item[\const{FIOSETOWN}] imposta il processo che riceverà i segnali - \const{SIGURG} e \const{SIGIO} generati sul file; il terzo argomento deve + \signal{SIGURG} e \signal{SIGIO} generati sul file; il terzo argomento deve essere un puntatore ad un intero (cioè di tipo \texttt{const int *}) il cui valore specifica il PID del processo. \item[\const{FIOGETOWN}] legge il processo che riceverà i segnali - \const{SIGURG} e \const{SIGIO} generati sul file; il terzo argomento deve + \signal{SIGURG} e \signal{SIGIO} generati sul file; il terzo argomento deve essere un puntatore ad un intero (cioè di tipo \texttt{int *}) su cui sarà scritto il PID del processo. \item[\const{FIONREAD}] legge il numero di byte disponibili in lettura sul