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.
 
 
 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:
 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:
 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.
 \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
 
 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.
 
 
 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
 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
   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.
   
 \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
 \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
 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. 
 
 
 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}
 
 \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}.} 
 
 
   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
 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.
 
 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}
 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.
 
   \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
   
   \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.  
 
 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|)} 
 
 
 
 \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}
 
 \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
 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).
 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}
 
 \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:  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