Riorganizzazione delle sezioni sulla gestione della memoria e
authorSimone Piccardi <piccardi@gnulinux.it>
Fri, 1 Sep 2006 17:13:26 +0000 (17:13 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Fri, 1 Sep 2006 17:13:26 +0000 (17:13 +0000)
inserimento degli argomenti da trattare.

ipc.tex
process.tex

diff --git a/ipc.tex b/ipc.tex
index 080d33bcc4e37f35a6bc79d01d612b3911120e7d..5c1453d23a53472c3272da9fffc13f8e28650392 100644 (file)
--- a/ipc.tex
+++ b/ipc.tex
@@ -2556,7 +2556,7 @@ direttamente, la situazione dopo l'esecuzione di \func{shmat} 
 fig.~\ref{fig:ipc_shmem_layout} (per la comprensione del resto dello schema si
 ricordi quanto illustrato al proposito in sez.~\ref{sec:proc_mem_layout}). In
 particolare l'indirizzo finale del segmento dati (quello impostato da
-\func{brk}, vedi sez.~\ref{sec:proc_mem_sbrk_alloca}) non viene influenzato.
+\func{brk}, vedi sez.~\ref{sec:proc_mem_alloc}) non viene influenzato.
 Si tenga presente infine che la funzione ha successo anche se il segmento è
 stato marcato per la cancellazione.
 
index 2cca5986b9c0f08ed8f83f3d296e492e77119ef9..ae8cb03172edbb5b9e7a771e7a15a9c01b757699 100644 (file)
@@ -467,10 +467,6 @@ attraverso i puntatori alla memoria loro riservata che si sono ottenuti dalle
 funzioni di allocazione.
 
 
-\subsection{Le funzioni \func{malloc}, \func{calloc}, \func{realloc} e
-  \func{free}}
-\label{sec:proc_mem_malloc}
-
 Le funzioni previste dallo standard ANSI C per la gestione della memoria sono
 quattro: \funcd{malloc}, \funcd{calloc}, \funcd{realloc} e \funcd{free}, i
 loro prototipi sono i seguenti:
@@ -562,13 +558,13 @@ variabile di ambiente \val{MALLOC\_CHECK\_} che quando viene definita mette in
 uso una versione meno efficiente delle funzioni suddette, che però è più
 tollerante nei confronti di piccoli errori come quello di chiamate doppie a
 \func{free}.  In particolare:
-\begin{itemize}
+\begin{itemize*}
 \item se la variabile è posta a zero gli errori vengono ignorati;
 \item se è posta ad 1 viene stampato un avviso sullo \textit{standard error}
   (vedi sez.~\ref{sec:file_std_stream});
 \item se è posta a 2 viene chiamata \func{abort}, che in genere causa
   l'immediata conclusione del programma.
-\end{itemize}
+\end{itemize*}
 
 Il problema più comune e più difficile da risolvere che si incontra con le
 funzioni di allocazione è quando non viene opportunamente liberata la memoria
@@ -629,9 +625,6 @@ ricompilare il programma,\footnote{esempi sono \textit{Dmalloc}
 molto complesse riguardo l'allocazione della memoria.
 
 
-\subsection{Le funzioni \func{alloca}, \func{brk} e \func{sbrk}}  
-\label{sec:proc_mem_sbrk_alloca}
-
 Una possibile alternativa all'uso di \func{malloc}, che non soffre dei
 problemi di \textit{memory leak}\itindex{memory~leak} descritti in precedenza,
 è la funzione \funcd{alloca}, che invece di allocare la memoria nello
@@ -694,9 +687,8 @@ Le due funzioni seguenti\footnote{le due funzioni sono state definite con BSD
   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 funzioni di allocazione della memoria
-viste in sez.~\ref{sec:proc_mem_malloc}. La prima funzione è \funcd{brk}, ed
-il suo prototipo è:
+implementare la propria versione delle funzioni di allocazione della memoria.
+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.
   
@@ -705,7 +697,7 @@ il suo prototipo 
 \end{prototype}
 
 La funzione è un'interfaccia diretta all'omonima system call ed imposta
-l'indirizzo finale del \index{segmento!dati}segmento dati di un processo
+l'indirizzo finale del \index{segmento!dati} segmento dati di un processo
 all'indirizzo specificato da \param{end\_data\_segment}. Quest'ultimo deve
 essere un valore ragionevole, ed inoltre la dimensione totale del segmento non
 deve comunque eccedere un eventuale limite (si veda
@@ -733,12 +725,6 @@ per i programmi normali 
 standard descritte in precedenza, che sono costruite su di esse. 
 
 
-% \subsection{La personalizzazione delle funzioni di allocazione} 
-% \label{sec:proc_mem_malloc_custom}
-
-% TODO documentare \func{madvise}
-% TODO documentare \func{mincore}
-
 \subsection{Il controllo della memoria virtuale}  
 \label{sec:proc_mem_lock}
 
@@ -920,12 +906,18 @@ 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}
+\itindend{memory~locking}
+
+% TODO documentare \func{madvise}
+% TODO documentare \func{mincore}
 
 
 \index{memoria~virtuale|)} 
 
-\itindend{memory~locking}
+
+% \subsection{Gestione avanzata dell'allocazione della memoria} 
+% \label{sec:proc_mem_malloc_custom}
+% TODO: trattare le funzionalità avanzate di \func{malloc}
 
 
 
@@ -949,6 +941,7 @@ manipolare ed utilizzare le variabili di ambiente.
 
 \subsection{Il formato degli argomenti}
 \label{sec:proc_par_format}
+
 In genere il passaggio degli argomenti al programma viene effettuato dalla
 shell, che si incarica di leggere la linea di comando e di effettuarne la
 scansione (il cosiddetto \textit{parsing}) per individuare le parole che la