From: Simone Piccardi Date: Fri, 24 Feb 2006 00:19:59 +0000 (+0000) Subject: Aggiunte alcune note per espandere le spiegazioni X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=b0596da50d9b010d7251ae72cc908c3d2642d899 Aggiunte alcune note per espandere le spiegazioni --- diff --git a/process.tex b/process.tex index b030d9a..da8710e 100644 --- a/process.tex +++ b/process.tex @@ -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}