X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileunix.tex;h=c9712a72596999162df4bee2068b1a8a2c8da3d3;hp=7aeda51690367bb3c2f12412b5f704f213c0f486;hb=85e7b3ed7aafdb66a7feda150f68649915a5e85d;hpb=67250793fde410ca485f64dc26067a10d6d480a5 diff --git a/fileunix.tex b/fileunix.tex index 7aeda51..c9712a7 100644 --- a/fileunix.tex +++ b/fileunix.tex @@ -1,6 +1,6 @@ %% fileunix.tex %% -%% Copyright (C) 2000-2007 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2009 Simone Piccardi. Permission is granted to %% copy, distribute and/or modify this document under the terms of the GNU Free %% Documentation License, Version 1.1 or any later version published by the %% Free Software Foundation; with the Invariant Sections being "Un preambolo", @@ -381,9 +381,10 @@ ritorno il file descriptor con il valore pi anche in FreeBSD, senza limiti di allineamento dei buffer. In Linux è stata introdotta con il kernel 2.4.10, le versioni precedenti la ignorano.} -\footnotetext[7]{introdotto con il kernel 2.6.23, per evitare una \textit{race - condition} che si può verificare con i thread, fra l'apertura del file e - l'impostazione della suddetta modalità con \func{fcntl}.} +\footnotetext[7]{introdotto con il kernel 2.6.23, per evitare una + \itindex{race~condition} \textit{race condition} che si può verificare con i + \itindex{thread} \textit{thread}, fra l'apertura del file e l'impostazione + della suddetta modalità con \func{fcntl}.} Questa caratteristica permette di prevedere qual è il valore del file descriptor che si otterrà al ritorno di \func{open}, e viene talvolta usata da @@ -399,10 +400,11 @@ sez.~\ref{sec:file_sharing}) ed all'inizio del file. L'argomento \param{mode} indica i permessi con cui il file viene creato; i -valori possibili sono gli stessi già visti in sez.~\ref{sec:file_perm_overview} -e possono essere specificati come OR binario delle costanti descritte in -tab.~\ref{tab:file_bit_perm}. Questi permessi sono filtrati dal valore di -\var{umask} (vedi sez.~\ref{sec:file_perm_management}) per il processo. +valori possibili sono gli stessi già visti in +sez.~\ref{sec:file_perm_overview} e possono essere specificati come OR binario +delle costanti descritte in tab.~\ref{tab:file_bit_perm}. Questi permessi sono +filtrati dal valore di \itindex{umask} \textit{umask} (vedi +sez.~\ref{sec:file_perm_management}) per il processo. La funzione prevede diverse opzioni, che vengono specificate usando vari bit dell'argomento \param{flags}. Alcuni di questi bit vanno anche a costituire @@ -650,7 +652,7 @@ dagli albori di Unix, ma nella seconda versione delle \textit{Single Unix l'emulazione per i vecchi kernel che non hanno la system call, è stato aggiunto con la versione 2.1, in versioni precedenti sia del kernel che delle librerie la funzione non è disponibile.} (quello che viene chiamato -normalmente Unix98, vedi sez.~\ref{sec:intro_opengroup}) è stata introdotta la +normalmente Unix98, vedi sez.~\ref{sec:intro_xopen}) è stata introdotta la definizione di un'altra funzione di lettura, \funcd{pread}, il cui prototipo è: \begin{prototype}{unistd.h} {ssize\_t pread(int fd, void * buf, size\_t count, off\_t offset)} @@ -938,7 +940,7 @@ usare le due funzioni \funcd{fsync} e \funcd{fdatasync}, i cui prototipi sono: \begin{functions} \headdecl{unistd.h} \funcdecl{int fsync(int fd)} - Sincronizza dati e metadati del file \param{fd} + Sincronizza dati e meta-dati del file \param{fd} \funcdecl{int fdatasync(int fd)} Sincronizza i dati del file \param{fd}. @@ -953,7 +955,7 @@ usare le due funzioni \funcd{fsync} e \funcd{fdatasync}, i cui prototipi sono: 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 metadati del file (che +\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}, come i tempi del file). @@ -1071,9 +1073,10 @@ parallelo alla chiamata a \func{open}, e questo lascia aperta la possibilit di una \itindex{race~condition} \textit{race condition}. Inoltre come già accennato, la directory di lavoro corrente è una proprietà -del singolo processo; questo significa che quando si lavora con i thread essa -sarà la stessa per tutti, ma esistono molti casi in cui sarebbe invece utile -che ogni singolo thread avesse la sua directory di lavoro. +del singolo processo; questo significa che quando si lavora con i +\itindex{thread} \textit{thread} essa sarà la stessa per tutti, ma esistono +molti casi in cui sarebbe invece utile che ogni singolo \itindex{thread} +\textit{thread} avesse la sua directory di lavoro. Per risolvere questi problemi, riprendendo una interfaccia già presente in Solaris, a fianco delle normali funzioni che operano sui file (come @@ -1096,13 +1099,13 @@ stesso. L'idea è che si apra prima la directory che si vuole usare come base dei pathname relativo, e si passi il file descriptor alla funzione che userà quella directory come punto di partenza per la risoluzione.\footnote{in questo - modo, anche quando si lavora con i thread, si può mantenere anche una - directory di lavoro diversa per ciascuno di essi.} Con queste funzioni si -possono anche ottenere grossi aumenti di prestazioni quando si devono eseguire -operazioni su delle sezioni di albero dei file che prevedono gerarchie molto -profonde e grandi quantità di file e directory, dato che basta eseguire la -risoluzione di un pathname una sola volta (nell'apertura della directory) e -non per ciascun file che essa contiene. + modo, anche quando si lavora con i \itindex{thread} \textit{thread}, si può + mantenere anche una directory di lavoro diversa per ciascuno di essi.} Con +queste funzioni si possono anche ottenere grossi aumenti di prestazioni quando +si devono eseguire operazioni su delle sezioni di albero dei file che +prevedono gerarchie molto profonde e grandi quantità di file e directory, dato +che basta eseguire la risoluzione di un pathname una sola volta (nell'apertura +della directory) e non per ciascun file che essa contiene. La sintassi generale di queste nuove funzioni è che esse prendano come primo argomento il file descriptor della directory da usare come base, mentre gli @@ -1137,15 +1140,15 @@ l'argomento \param{dirfd}.\footnote{non staremo pertanto a riportarli uno per \begin{table}[htb] \centering \footnotesize - \begin{tabular}[c]{|l|l|} + \begin{tabular}[c]{|l|c|l|} \hline - \textbf{Funzione} & \textbf{Corrispondente} \\ + \textbf{Funzione} &\textbf{Flags} \textbf{Corrispondente} \\ \hline \hline - \func{faccessat} &\func{access} \\ - \func{fchmodat} &\func{chmod} \\ - \func{fchownat} &\func{chown} \\ - \func{fstatat} &\func{stat} \\ + \func{faccessat} & -- &\func{access} \\ + \func{fchmodat} &$\bullet$\func{chmod} \\ + \func{fchownat} &\func{chown},\func{lchown} \\ + \func{fstatat} &\func{stat},\func{lstat} \\ \func{futimesat} &\func{utimes} \\ \func{linkat} &\func{link} \\ \func{mkdirat} &\func{mkdir} \\