Poca roba di domenica
authorSimone Piccardi <piccardi@gnulinux.it>
Wed, 18 Nov 2009 16:54:10 +0000 (16:54 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Wed, 18 Nov 2009 16:54:10 +0000 (16:54 +0000)
fileadv.tex

index b4f35d9c3df66cbc5ba2e6ff2a84304ffb102272..7c3734c3da82a21225f1522445187fa28be20b07 100644 (file)
@@ -3651,9 +3651,43 @@ mappatura che gi
   essere utile per il linker dinamico, in particolare quando viene effettuato
   il \textit{prelink} delle applicazioni.}
 
-\itindend{memory~mapping}
+Per i vantaggi illustrati all'inizio del paragrafo l'interfaccia del
+\textit{memory mapped I/O} viene usata da una grande varietà di programmi,
+spesso con esigenze molto diverse fra di loro riguardo le modalità con cui
+verranno eseguiti gli accessi ad un file; è ad esempio molto comune per i
+database effettuare accessi ai dati in maniera pressoché casuale, mentre un
+riproduttore audio o video eseguirà per lo più letture sequenziali.
+
+Per migliorare le prestazioni a seconda di queste modalità di accesso è
+disponibile una apposita funzione, \funcd{madvise},\footnote{tratteremo in
+  sez.~\ref{sec:file_fadvise} le funzioni che consentono di ottimizzare
+  l'accesso ai file con l'interfaccia classica.} che consente di fornire al
+kernel delle indicazioni su dette modalità, così che possano essere adottate
+le opportune strategie di ottimizzazione. Il suo prototipo è:
+\begin{functions}  
+  \headdecl{sys/mman.h} 
+
+  \funcdecl{int madvise(void *start, size\_t length, int advise)}
+  
+  Fornisci indicazioni sull'uso di un \textit{memory mapping}.
+
+  \bodydesc{La funzione restituisce 0 in caso di successo e $-1$ in caso di
+    errore, nel qual caso \var{errno} assumerà uno dei valori:
+    \begin{errlist}
+    \item[\errcode{EAGAIN}] .
+    \item[\errcode{EBADF}] .
+    \item[\errcode{EINVAL}] .
+    \item[\errcode{EIO}] .
+    \item[\errcode{ENOMEM}] .
+    \end{errlist}
+  }
+\end{functions}
+
 
 % TODO documentare \func{madvise}
+\itindend{memory~mapping}
+
 
 \subsection{I/O vettorizzato: \func{readv} e \func{writev}}
 \label{sec:file_multiple_io}