Aggiunte alcune note per espandere le spiegazioni
authorSimone Piccardi <piccardi@gnulinux.it>
Fri, 24 Feb 2006 00:19:59 +0000 (00:19 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Fri, 24 Feb 2006 00:19:59 +0000 (00:19 +0000)
process.tex

index b030d9a3ecd1118c6dca0d5573266c65b1d69454..da8710e51a6220e6a7dedab88aed3d427513140a 100644 (file)
@@ -415,7 +415,7 @@ seguenti segmenti:
 
 \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}
@@ -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.
+% 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
@@ -687,12 +689,14 @@ Questo 
 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.
   
@@ -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.
 
-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 è:
@@ -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.  
 
+% TODO: trattare \func{madvise}
+
+
 \index{memoria~virtuale|)} 
 
 \itindend{memory~locking}