Aggiunte alcune note per espandere le spiegazioni
[gapil.git] / process.tex
index b030d9a3ecd1118c6dca0d5573266c65b1d69454..da8710e51a6220e6a7dedab88aed3d427513140a 100644 (file)
@@ -415,7 +415,7 @@ seguenti segmenti:
 
 \begin{figure}[htb]
   \centering
 
 \begin{figure}[htb]
   \centering
-  \includegraphics[height=11cm]{img/memory_layout}
+  \includegraphics[height=12cm]{img/memory_layout}
   \caption{Disposizione tipica dei segmenti di memoria di un processo.}
   \label{fig:proc_mem_layout}
 \end{figure}
   \caption{Disposizione tipica dei segmenti di memoria di un processo.}
   \label{fig:proc_mem_layout}
 \end{figure}
@@ -678,6 +678,8 @@ spazio verrebbe allocato nel mezzo degli stessi.
 %cerca di allocare troppa memoria non si ottiene un messaggio di errore, ma un
 %segnale di \textit{segment violation} analogo a quello che si avrebbe da una
 %ricorsione infinita.
 %cerca di allocare troppa memoria non si ottiene un messaggio di errore, ma un
 %segnale di \textit{segment violation} analogo a quello che si avrebbe da una
 %ricorsione infinita.
+% TODO inserire più informazioni su alloca come da man page
+
 
 Inoltre non è chiaramente possibile usare \func{alloca} per allocare memoria
 che deve poi essere usata anche al di fuori della funzione in cui essa viene
 
 Inoltre non è chiaramente possibile usare \func{alloca} per allocare memoria
 che deve poi essere usata anche al di fuori della funzione in cui essa viene
@@ -687,12 +689,14 @@ Questo 
 cui torneremo in sez.~\ref{sec:proc_auto_var}.
 
 
 cui torneremo in sez.~\ref{sec:proc_auto_var}.
 
 
-Le due funzioni seguenti vengono utilizzate soltanto quando è necessario
-effettuare direttamente la gestione della memoria associata allo spazio dati
-di un processo, ad esempio qualora si debba implementare la propria versione
-delle routine di allocazione della memoria viste in
-sez.~\ref{sec:proc_mem_malloc}.  La prima funzione è \funcd{brk}, ed il suo
-prototipo è:
+Le due funzioni seguenti\footnote{le due funzioni sono state definite con BSD
+  4.3, non fanno parte delle librerie standard del C e mentre sono state
+  esplicitamente escluse dallo standard POSIX.} vengono utilizzate soltanto
+quando è necessario effettuare direttamente la gestione della memoria
+associata allo spazio dati di un processo, ad esempio qualora si debba
+implementare la propria versione delle routine di allocazione della memoria
+viste in sez.~\ref{sec:proc_mem_malloc}. La prima funzione è \funcd{brk}, ed
+il suo prototipo è:
 \begin{prototype}{unistd.h}{int brk(void *end\_data\_segment)}
   Sposta la fine del segmento dei dati.
   
 \begin{prototype}{unistd.h}{int brk(void *end\_data\_segment)}
   Sposta la fine del segmento dei dati.
   
@@ -708,7 +712,7 @@ deve comunque eccedere un eventuale limite (si veda
 sez.~\ref{sec:sys_resource_limit}) imposto sulle dimensioni massime dello
 spazio dati del processo.
 
 sez.~\ref{sec:sys_resource_limit}) imposto sulle dimensioni massime dello
 spazio dati del processo.
 
-La seconda funzione per la manipolazione delle dimensioni
+Una seconda funzione per la manipolazione delle dimensioni
 \index{segmento!dati} del segmento dati\footnote{in questo caso si tratta
   soltanto di una funzione di libreria, e non di una system call.} è
 \funcd{sbrk}, ed il suo prototipo è:
 \index{segmento!dati} del segmento dati\footnote{in questo caso si tratta
   soltanto di una funzione di libreria, e non di una system call.} è
 \funcd{sbrk}, ed il suo prototipo è:
@@ -916,6 +920,9 @@ che esse vengano mappate in RAM dallo \itindex{stack} stack, dopo di che, per
 essere sicuri che esse siano state effettivamente portate in memoria, ci si
 scrive sopra.  
 
 essere sicuri che esse siano state effettivamente portate in memoria, ci si
 scrive sopra.  
 
+% TODO: trattare \func{madvise}
+
+
 \index{memoria~virtuale|)} 
 
 \itindend{memory~locking}
 \index{memoria~virtuale|)} 
 
 \itindend{memory~locking}