X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileadv.tex;h=a9ba273833e2f891f7e4bcacf9071ddb773be1de;hp=454d91b237a8899888231001900ff6620f3c2a6e;hb=a99dd56a21d2f6cf86da2e1f9e27cdaab010b5a5;hpb=1596eb22135ff72ba7b66d827e1435e55afdc2a5 diff --git a/fileadv.tex b/fileadv.tex index 454d91b..a9ba273 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -46,27 +46,28 @@ l'errore \macro{EAGAIN}. L'utilizzo di questa modalità di I/O permette di risolvere il problema controllando a turno i vari file descriptor, in un ciclo in cui si ripete l'accesso fintanto che esso non viene garantito. Ovviamente questa tecnica, -detta \textit{polling}, è estremamente inefficiente: si tiene costantemente -impiegata la CPU solo per eseguire in continuazione delle system call che -nella gran parte dei casi falliranno. Per evitare questo, come vedremo in -\secref{sec:file_multiplexing}, è stata introdotta una nuova interfaccia di -programmazione, che comporta comunque l'uso della modalità di I/O non -bloccante. +detta \textit{polling}\index{polling}, è estremamente inefficiente: si tiene +costantemente impiegata la CPU solo per eseguire in continuazione delle system +call che nella gran parte dei casi falliranno. Per evitare questo, come +vedremo in \secref{sec:file_multiplexing}, è stata introdotta una nuova +interfaccia di programmazione, che comporta comunque l'uso della modalità di +I/O non bloccante. \subsection{L'I/O multiplexing} \label{sec:file_multiplexing} -Per superare il problema di dover usare il \textit{polling} per controllare la -possibilità di effettuare operazioni su un file aperto in modalità non -bloccante, sia BSD che System V hanno introdotto delle nuove funzioni in grado -di sospendere l'esecuzione di un processo in attesa che l'accesso diventi -possibile. Il primo ad introdurre questa modalità di operazione, chiamata -usualmente \textit{I/O multiplexing}, è stato BSD,\footnote{la funzione è - apparsa in BSD4.2 e standardizzata in BSD4.4, ma è stata portata su tutti i - sistemi che supportano i \textit{socket}, compreso le varianti di System V.} -con la funzione \func{select}, il cui prototipo è: +Per superare il problema di dover usare il \textit{polling}\index{polling} per +controllare la possibilità di effettuare operazioni su un file aperto in +modalità non bloccante, sia BSD che System V hanno introdotto delle nuove +funzioni in grado di sospendere l'esecuzione di un processo in attesa che +l'accesso diventi possibile. Il primo ad introdurre questa modalità di +operazione, chiamata usualmente \textit{I/O multiplexing}, è stato +BSD,\footnote{la funzione è apparsa in BSD4.2 e standardizzata in BSD4.4, ma è + stata portata su tutti i sistemi che supportano i \textit{socket}, compreso + le varianti di System V.} con la funzione \func{select}, il cui prototipo +è: \begin{functions} \headdecl{sys/time.h} \headdecl{sys/types.h}