\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}
%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
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.
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 è:
essere sicuri che esse siano state effettivamente portate in memoria, ci si
scrive sopra.
+% TODO: trattare \func{madvise}
+
+
\index{memoria~virtuale|)}
\itindend{memory~locking}