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:
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},
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}
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
\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
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