From: Simone Piccardi Date: Wed, 18 Nov 2009 16:54:10 +0000 (+0000) Subject: Poca roba di domenica X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=commitdiff_plain;h=376c897446e3a3c24c3f45df9d6c320f3eef2e09;p=gapil.git Poca roba di domenica --- diff --git a/fileadv.tex b/fileadv.tex index b4f35d9..7c3734c 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -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}