Correzioni ortografiche
[gapil.git] / process.tex
index 2cca5986b9c0f08ed8f83f3d296e492e77119ef9..4db223d20432394227cf26a2c7af5c9649993b59 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}
 
@@ -820,7 +806,7 @@ in byte.\footnote{con Linux questo non avviene e si deve ricorrere alla
   funzione \func{getpagesize}, vedi sez.~\ref{sec:sys_memory_res}.} 
 
 
-Con il kernel 2.6.9 anche un processo normale può bloccare la propria
+A partire dal kernel 2.6.9 anche un processo normale può bloccare la propria
 memoria\footnote{la funzionalità è stata introdotta per non essere costretti a
   dare privilegi eccessivi a programmi di crittografia, che necessitano di
   questa funzionalità, ma che devono essere usati da utenti normali.} ma
@@ -831,7 +817,7 @@ poi ogni processo pu
 però diversi processi bloccano la stessa pagina questa resterà bloccata
 fintanto che ci sarà almeno un processo che la blocca.
 
-Le funzioni per bloccare e sbloccare la paginazione\index{paginazione} di
+Le funzioni per bloccare e sbloccare la paginazione \index{paginazione} di
 singole sezioni di memoria sono \funcd{mlock} e \funcd{munlock}; i loro
 prototipi sono:
 \begin{functions}
@@ -842,7 +828,6 @@ prototipi sono:
 
   \funcdecl{int munlock(const void *addr, size\_t len)}
   Rimuove il blocco della paginazione su un intervallo di memoria.
-
   
   \bodydesc{Entrambe le funzioni ritornano 0 in caso di successo e -1 in
     caso di errore, nel qual caso \var{errno} assumerà uno dei
@@ -920,12 +905,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 +940,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
@@ -1082,7 +1074,7 @@ la gestione di queste ultime 
 versione estesa di \func{getopt}.
 
 (NdA: questa parte verrà inserita in seguito).
-
+% TODO opzioni in formato esteso 
 
 \subsection{Le variabili di ambiente}
 \label{sec:proc_environ}
@@ -1707,4 +1699,4 @@ dichiarandole tutte come \direct{volatile}\footnote{la direttiva
 % LocalWords:  clearenv libc value overwrite string reference result argument
 % LocalWords:  socket variadic ellipsis header stdarg execl self promoting last
 % LocalWords:  float double short register type dest src extern setjmp jmp buf
-% LocalWords:  env return if while
+% LocalWords:  env return if while sottoprocesso Di