X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileadv.tex;h=b376483c6c301882c1bb1698522287ff365fa29e;hp=744237990b07fc99dc9948e48d0e189b80d4f2bb;hb=76ddae490a29dac41729cfae51f76e5c9987a484;hpb=4793eed79c595620b1c31a70fa4411dbd98445e4 diff --git a/fileadv.tex b/fileadv.tex index 7442379..b376483 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -28,7 +28,6 @@ I/O possono bloccarsi indefinitamente.\footnote{si ricordi per esempio le operazioni di lettura possono bloccarsi quando non ci sono dati disponibili sul descrittore su cui si sta operando. - Questo comportamento causa uno dei problemi più comuni che ci si trova ad affrontare nelle operazioni di I/O, che è quello che si verifica quando si devono eseguire operazioni che possono bloccarsi su più file descriptor: @@ -59,7 +58,7 @@ bloccante. Per superare il problema di dover usare il \textit{polling} controllare la disponibilità di accesso ad un file aperto in modalità non bloccante, sia BSD -che SysV hanno introdotto delle nuove funzioni in grado di sospendere +che System V hanno introdotto delle nuove funzioni in grado di sospendere l'esecuzione di un processo fino a che l'accesso diventi possibile; il primo ad introdurre questa nuova interfaccia, chiamata usualmente \textit{I/O multiplexing}, è stato BSD, con l'introduzione della funzione \func{select}, @@ -75,7 +74,7 @@ Attende che un certo insieme di file descriptor cambi stato. qual caso \var{errno} viene settata ai valori: \begin{errlist} \item[\macro{EBADF}] Si è specificato un file descriptor sbagliato in uno - degeli insiemi. + degli insiemi. \item[\macro{EINTR}] La funzione è stata interrotta da un segnale. \item[\macro{EINVAL}] Si è specificato per \param{n} un valore negativo. \end{errlist} @@ -115,8 +114,7 @@ In genere un \textit{file descriptor set} pu il limite del numero massimo di file aperti\footnote{ad esempio in Linux, fino alla serie 2.0.x, c'era un limite di 256 file per processo.}, ma quando, come nelle versioni più recenti del kernel, questo limite non c'è un massimo, -esso indica le dimensioni in munero di bit utilizzabili per l'insieme. - +esso indica le dimensioni in numero di bit utilizzabili per l'insieme. La funzione richiede di specificare tre insiemi distinti di file descriptor; il primo, \param{readfds}, verrà osservato per rilevare la disponibilità di @@ -186,7 +184,7 @@ riporta il file descriptor che ha generato il segnale. \section{Il file locking} \label{sec:file_locking} -In \secref{sec:file_sharing} abbiamo preso in esame le mosalità in cui un +In \secref{sec:file_sharing} abbiamo preso in esame le modalità in cui un sistema unix-like gestisce la condivisione dei file da parte di processi diversi. In quell'occasione si è visto come, con l'eccezione dei file aperti in \textit{append mode}, quando più processi scrivono contemporaneamente sullo @@ -196,7 +194,7 @@ Questo causa la possibilit generale le situazioni più comuni sono due: l'interazione fra un processo che scrive e altri che leggono, in cui questi ultimi possono leggere informazioni scritte solo in maniera parziale o incompleta; o quella in cui diversi -processi scrivono, mescolando in maniera imprevedebile il loro output sul +processi scrivono, mescolando in maniera imprevedibile il loro output sul file. In tutti questi casi il \textit{file locking} è la tecnica che permette di