Chiarimenti sul sistema di mappatura del file in memoria (con figura).
authorSimone Piccardi <piccardi@gnulinux.it>
Sun, 11 Aug 2002 13:19:50 +0000 (13:19 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sun, 11 Aug 2002 13:19:50 +0000 (13:19 +0000)
fileadv.tex
img/mmap_boundary.dia [new file with mode: 0644]

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
 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.
 
 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} 
 
   \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}.
     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.}
 
 \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
 
 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
diff --git a/img/mmap_boundary.dia b/img/mmap_boundary.dia
new file mode 100644 (file)
index 0000000..ddc8564
Binary files /dev/null and b/img/mmap_boundary.dia differ