Chiarimenti sul sistema di mappatura del file in memoria (con figura).
[gapil.git] / fileadv.tex
index 0e0c2b3fa6c2027f11e5c698040729e81a355fba..352848103526fdfe126feaa641a78bf27dab824d 100644 (file)
@@ -831,7 +831,7 @@ cosiddetto \textit{memory-mapped I/O}, che, attraverso il meccanismo della
 file in una sezione dello spazio di indirizzi del processo. Il meccanismo è
 illustrato in \figref{fig:file_mmap_layout}; una sezione del file viene
 riportata direttamente nello spazio degli indirizzi del programma. Tutte le
-operazioni su questo zona verranno riportate indietro sul file dal meccanismo
+operazioni su questa zona verranno riportate indietro sul file dal meccanismo
 della memoria virtuale che trasferirà il contenuto di quel segmento sul file
 invece che nella swap.
 
@@ -872,7 +872,7 @@ in memoria di un file; il suo prototipo 
   \headdecl{unistd.h}
   \headdecl{sys/mman.h} 
 
-  \funcdecl{void * mmap(void *start, size\_t length, int prot, int flags, int
+  \funcdecl{void * mmap(void * start, size\_t length, int prot, int flags, int
     fd, off\_t offset)}
   
   Esegue la mappatura in memoria del file \param{fd}.
@@ -1008,12 +1008,27 @@ come maschera binaria ottenuta dall'OR di uno o pi
 \footnotetext{L'uso di questo flag con \macro{MAP\_SHARED} è
   stato implementato in Linux a partire dai kernel della serie 2.4.x.}
 
-Un file viene sempre mappato su multipli delle dimensioni di una pagina,
-qualora esso sia più corto la parte restante è riempita con zeri; eventuali
-scritture in quella zona di memoria non vengono riportate sul file. Se le
-dimensioni del file cambiano (esso viene esteso o troncato), non è specificato
-quale effetto viene a aversi sulle pagine di memoria che corrispondono alle
-regioni aggiunte o tolte. 
+
+Un file viene sempre mappato in memoria su multipli delle dimensioni di una
+pagina, ma non è detto che le sue dimensioni siano allineate ai confini di una
+pagina; in \figref{fig:file_mmap_boundary} sono illustrate le varie
+possibilità. La mappatura alloca comunque un numero di pagine sufficienti a
+contenere tutta la sezione di file richiesta, la memoria che 
+
+è riempita con
+zeri; eventuali scritture in quella zona di memoria non vengono riportate sul
+file. Se le dimensioni del file cambiano (esso viene esteso o troncato), non è
+specificato quale effetto viene a aversi sulle pagine di memoria che
+corrispondono alle regioni aggiunte o tolte. La situazione è illustrata in
+\figref{fig:file_mmap_boundary},
+
+\begin{figure}[htb]
+  \centering
+  \includegraphics[width=10cm]{img/mmap_boundary}
+  \caption{Effetti delle interazioni fra mappatura in memoria e dimensioni
+  effettive del file.}
+  \label{fig:file_mmap_boundary}
+\end{figure}
 
 Si tenga presente che non tutti i file possono venire mappati in memoria, la
 mappatura infatti introduce una corrispondenza biunivoca fra una sezione di un