Piccole correzioni ed inizio della risistemazione degli indici.
[gapil.git] / fileadv.tex
index 0ef7c30f026a5e6d85fe7582674f75f5dd0a5b2f..f955a41e5fc19dd597a4a01830c2a4f456cb3626 100644 (file)
@@ -3941,7 +3941,6 @@ per la gestione del \textit{memory mapped I/O}, la prima di queste, che serve
 ad eseguire la mappatura in memoria di un file, è \funcd{mmap}; il suo
 prototipo è:
 
 ad eseguire la mappatura in memoria di un file, è \funcd{mmap}; il suo
 prototipo è:
 
-
 \begin{funcproto}{
 \fhead{unistd.h}
 \fhead{sys/mman.h} 
 \begin{funcproto}{
 \fhead{unistd.h}
 \fhead{sys/mman.h} 
@@ -3987,7 +3986,7 @@ La funzione richiede di mappare in memoria la sezione del file \param{fd} a
 partire da \param{offset} per \param{length} byte, preferibilmente
 all'indirizzo \param{start}. Il valore \param{start} viene normalmente
 considerato come un suggerimento, ma l'uso di un valore diverso da \val{NULL},
 partire da \param{offset} per \param{length} byte, preferibilmente
 all'indirizzo \param{start}. Il valore \param{start} viene normalmente
 considerato come un suggerimento, ma l'uso di un valore diverso da \val{NULL},
-in cui di rimette completamente al kernel la scelta dell'indirizzo, viene
+in cui si rimette completamente al kernel la scelta dell'indirizzo, viene
 sconsigliato per ragioni di portabilità. Il valore di \param{offset} deve
 essere un multiplo della dimensione di una pagina di memoria.
 
 sconsigliato per ragioni di portabilità. Il valore di \param{offset} deve
 essere un multiplo della dimensione di una pagina di memoria.
 
@@ -4012,8 +4011,8 @@ essere un multiplo della dimensione di una pagina di memoria.
 
 Il valore dell'argomento \param{prot} indica la protezione\footnote{come
   accennato in sez.~\ref{sec:proc_memory} in Linux la memoria reale è divisa
 
 Il valore dell'argomento \param{prot} indica la protezione\footnote{come
   accennato in sez.~\ref{sec:proc_memory} in Linux la memoria reale è divisa
-  in pagine: ogni processo vede la sua memoria attraverso uno o più segmenti
-  lineari di memoria virtuale.  Per ciascuno di questi segmenti il kernel
+  in pagine, ogni processo vede la sua memoria attraverso uno o più segmenti
+  lineari di memoria virtuale; per ciascuno di questi segmenti il kernel
   mantiene nella \itindex{page~table} \textit{page table} la mappatura sulle
   pagine di memoria reale, ed le modalità di accesso (lettura, esecuzione,
   scrittura); una loro violazione causa quella una \itindex{segment~violation}
   mantiene nella \itindex{page~table} \textit{page table} la mappatura sulle
   pagine di memoria reale, ed le modalità di accesso (lettura, esecuzione,
   scrittura); una loro violazione causa quella una \itindex{segment~violation}
@@ -4062,7 +4061,8 @@ tab.~\ref{tab:file_mmap_flag}.
     \const{MAP\_GROWSDOWN} & Usato per gli \itindex{stack} \textit{stack}. 
                              Indica che la mappatura deve essere effettuata 
                              con gli indirizzi crescenti verso il basso.\\
     \const{MAP\_GROWSDOWN} & Usato per gli \itindex{stack} \textit{stack}. 
                              Indica che la mappatura deve essere effettuata 
                              con gli indirizzi crescenti verso il basso.\\
-    \const{MAP\_HUGETLB}   & da trattare (dal 2.6.32).\\
+    \const{MAP\_HUGETLB}   & Esegue la mappatura usando le cosiddette
+                             ``\textit{huge pages}'' (dal 2.6.32).\\
     \const{MAP\_LOCKED}    & Se impostato impedisce lo swapping delle pagine
                              mappate (dal 2.5.37).\\
     \const{MAP\_NONBLOCK}  & Esegue un \textit{prefaulting} più limitato che
     \const{MAP\_LOCKED}    & Se impostato impedisce lo swapping delle pagine
                              mappate (dal 2.5.37).\\
     \const{MAP\_NONBLOCK}  & Esegue un \textit{prefaulting} più limitato che
@@ -4070,17 +4070,15 @@ tab.~\ref{tab:file_mmap_flag}.
     \const{MAP\_NORESERVE} & Si usa con \const{MAP\_PRIVATE}. Non riserva
                              delle pagine di swap ad uso del meccanismo del
                              \textit{copy on write} \itindex{copy~on~write}
     \const{MAP\_NORESERVE} & Si usa con \const{MAP\_PRIVATE}. Non riserva
                              delle pagine di swap ad uso del meccanismo del
                              \textit{copy on write} \itindex{copy~on~write}
-                             per mantenere le
-                             modifiche fatte alla regione mappata, in
-                             questo caso dopo una scrittura, se non c'è più
-                             memoria disponibile, si ha l'emissione di
-                             un \signal{SIGSEGV}.\\
+                             per mantenere le modifiche fatte alla regione
+                             mappata, in questo caso dopo una scrittura, se
+                             non c'è più memoria disponibile, si ha
+                             l'emissione di un \signal{SIGSEGV}.\\
     \const{MAP\_PRIVATE}   & I cambiamenti sulla memoria mappata non vengono
                              riportati sul file. Ne viene fatta una copia
                              privata cui solo il processo chiamante ha
                              accesso.  Le modifiche sono mantenute attraverso
     \const{MAP\_PRIVATE}   & I cambiamenti sulla memoria mappata non vengono
                              riportati sul file. Ne viene fatta una copia
                              privata cui solo il processo chiamante ha
                              accesso.  Le modifiche sono mantenute attraverso
-                             il meccanismo del \textit{copy on
-                               write} \itindex{copy~on~write} e 
+                             il meccanismo del \textit{copy on write} e 
                              salvate su swap in caso di necessità. Non è
                              specificato se i cambiamenti sul file originale
                              vengano riportati sulla regione
                              salvate su swap in caso di necessità. Non è
                              specificato se i cambiamenti sul file originale
                              vengano riportati sulla regione
@@ -4477,38 +4475,39 @@ partire dal quale la sezione di file indicata verrà rimappata. L'argomento
 valori di \func{mmap} (quelli di tab.~\ref{tab:file_mmap_prot}) ma di tutti i
 flag solo \const{MAP\_NONBLOCK} non viene ignorato.
 
 valori di \func{mmap} (quelli di tab.~\ref{tab:file_mmap_prot}) ma di tutti i
 flag solo \const{MAP\_NONBLOCK} non viene ignorato.
 
+\itindbeg{prefaulting} 
+
 Insieme alla funzione \func{remap\_file\_pages} nel kernel 2.5.46 con sono
 stati introdotti anche due nuovi flag per \func{mmap}: \const{MAP\_POPULATE} e
 \const{MAP\_NONBLOCK}.  Il primo dei due consente di abilitare il meccanismo
 Insieme alla funzione \func{remap\_file\_pages} nel kernel 2.5.46 con sono
 stati introdotti anche due nuovi flag per \func{mmap}: \const{MAP\_POPULATE} e
 \const{MAP\_NONBLOCK}.  Il primo dei due consente di abilitare il meccanismo
-del \itindex{prefaulting} \textit{prefaulting}. Questo viene di nuovo in aiuto
-per migliorare le prestazioni in certe condizioni di utilizzo del
-\textit{memory mapping}. 
+del \textit{prefaulting}. Questo viene di nuovo in aiuto per migliorare le
+prestazioni in certe condizioni di utilizzo del \textit{memory mapping}.
 
 Il problema si pone tutte le volte che si vuole mappare in memoria un file di
 
 Il problema si pone tutte le volte che si vuole mappare in memoria un file di
-grosse dimensioni. Il comportamento normale del sistema della
-\index{memoria~virtuale} memoria virtuale è quello per cui la regione mappata
-viene aggiunta alla \itindex{page~table} \textit{page table} del processo, ma
-i dati verranno effettivamente utilizzati (si avrà cioè un
-\itindex{page~fault} \textit{page fault} che li trasferisce dal disco alla
-memoria) soltanto in corrispondenza dell'accesso a ciascuna delle pagine
-interessate dal \textit{memory mapping}. 
+grosse dimensioni. Il comportamento normale del sistema della memoria virtuale
+è quello per cui la regione mappata viene aggiunta alla \textit{page table}
+del processo, ma i dati verranno effettivamente utilizzati (si avrà cioè un
+\textit{page fault} che li trasferisce dal disco alla memoria) soltanto in
+corrispondenza dell'accesso a ciascuna delle pagine interessate dal
+\textit{memory mapping}.
 
 Questo vuol dire che il passaggio dei dati dal disco alla memoria avverrà una
 pagina alla volta con un gran numero di \itindex{page~fault} \textit{page
   fault}, chiaramente se si sa in anticipo che il file verrà utilizzato
 
 Questo vuol dire che il passaggio dei dati dal disco alla memoria avverrà una
 pagina alla volta con un gran numero di \itindex{page~fault} \textit{page
   fault}, chiaramente se si sa in anticipo che il file verrà utilizzato
-immediatamente, è molto più efficiente eseguire un \itindex{prefaulting}
-\textit{prefaulting} in cui tutte le pagine di memoria interessate alla
-mappatura vengono ``\textsl{popolate}'' in una sola volta, questo
-comportamento viene abilitato quando si usa con \func{mmap} il flag
-\const{MAP\_POPULATE}.
+immediatamente, è molto più efficiente eseguire un \textit{prefaulting} in cui
+tutte le pagine di memoria interessate alla mappatura vengono
+``\textsl{popolate}'' in una sola volta, questo comportamento viene abilitato
+quando si usa con \func{mmap} il flag \const{MAP\_POPULATE}.
 
 Dato che l'uso di \const{MAP\_POPULATE} comporta dell'I/O su disco che può
 rallentare l'esecuzione di \func{mmap} è stato introdotto anche un secondo
 
 Dato che l'uso di \const{MAP\_POPULATE} comporta dell'I/O su disco che può
 rallentare l'esecuzione di \func{mmap} è stato introdotto anche un secondo
-flag, \const{MAP\_NONBLOCK}, che esegue un \itindex{prefaulting}
-\textit{prefaulting} più limitato in cui vengono popolate solo le pagine della
-mappatura che già si trovano nella cache del kernel.\footnote{questo può
-  essere utile per il linker dinamico, in particolare quando viene effettuato
-  il \textit{prelink} delle applicazioni.}
+flag, \const{MAP\_NONBLOCK}, che esegue un \textit{prefaulting} più limitato
+in cui vengono popolate solo le pagine della mappatura che già si trovano
+nella cache del kernel.\footnote{questo può essere utile per il linker
+  dinamico, in particolare quando viene effettuato il \textit{prelink} delle
+  applicazioni.}
+
+\itindend{prefaulting}
 
 Per i vantaggi illustrati all'inizio del paragrafo l'interfaccia del
 \textit{memory mapped I/O} viene usata da una grande varietà di programmi,
 
 Per i vantaggi illustrati all'inizio del paragrafo l'interfaccia del
 \textit{memory mapped I/O} viene usata da una grande varietà di programmi,