X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=process.tex;h=554f4d6a49c4e7e6a5e23b55fa6b03d43eed38de;hp=483fbb9a9bbdd10cb8b06e3b7e5398425e31dcab;hb=7090500d79c488db306ed0c065b90bb0c0505430;hpb=12f3d0def93dbdf672e012934826df53c44a79a6 diff --git a/process.tex b/process.tex index 483fbb9..554f4d6 100644 --- a/process.tex +++ b/process.tex @@ -23,9 +23,9 @@ programma: si possono avere pi ciascun processo vedrà la sua copia del codice (in realtà il kernel fa sì che tutte le parti uguali siano condivise), avrà un suo spazio di indirizzi, variabili proprie e sarà eseguito in maniera completamente indipendente da -tutti gli altri\footnote{questo non è del tutto vero nel caso di un programma +tutti gli altri.\footnote{questo non è del tutto vero nel caso di un programma \textit{multi-thread}, ma sulla gestione dei \textit{thread} in Linux - torneremo più avanti}. + torneremo più avanti.} \subsection{La funzione \func{main}} @@ -255,9 +255,9 @@ di basso livello dipendono spesso in maniera diretta dall'architettura dell'hardware), ma quello più tipico, usato dai sistemi unix-like come Linux è la cosiddetta \textsl{memoria virtuale} che consiste nell'assegnare ad ogni processo uno spazio virtuale di indirizzamento lineare, in cui gli indirizzi -vanno da zero ad un qualche valore massimo\footnote{nel caso di Linux fino al +vanno da zero ad un qualche valore massimo.\footnote{nel caso di Linux fino al kernel 2.2 detto massimo era, per macchine a 32bit, di 2Gb, con il kernel - 2.4 ed il supporto per la \textit{high-memory} il limite è stato esteso}. + 2.4 ed il supporto per la \textit{high-memory} il limite è stato esteso.} Come accennato in \capref{cha:intro_unix} questo spazio di indirizzi è virtuale e non corrisponde all'effettiva posizione dei dati nella RAM del @@ -495,13 +495,13 @@ La funzione \func{realloc} si usa invece per cambiare (in genere aumentare) la dimensione di un'area di memoria precedentemente allocata, la funzione vuole in ingresso il puntatore restituito dalla precedente chiamata ad una \func{malloc} (se è passato un valore \macro{NULL} allora la funzione si -comporta come \func{malloc}\footnote{questo è vero per Linux e +comporta come \func{malloc},\footnote{questo è vero per Linux e l'implementazione secondo lo standard ANSI C, ma non è vero per alcune vecchie implementazioni, inoltre alcune versioni delle librerie del C consentivano di usare \func{realloc} anche per un puntatore liberato con \func{free} purché non ci fossero state nel frattempo altre chiamate a funzioni di allocazione, questa funzionalità è totalmente deprecata e non è - consentita sotto Linux.}), ad esempio quando si deve far crescere la + consentita sotto Linux.}) ad esempio quando si deve far crescere la dimensione di un vettore. In questo caso se è disponibile dello spazio adiacente al precedente la funzione lo utilizza, altrimenti rialloca altrove un blocco della dimensione voluta, copiandoci automaticamente il contenuto; lo @@ -1340,8 +1340,8 @@ motivo \macro{va\_list} direttamente ad un altra variabile dello stesso tipo. Per risolvere questo problema lo standard ISO C99\footnote{alcuni sistemi che non hanno questa macro provvedono al suo posto \macro{\_\_va\_copy} che era il nome proposto - in una bozza dello standard} ha previsto una macro ulteriore che permette di -eseguire la copia di un puntatore alla lista degli argomenti: + in una bozza dello standard.} ha previsto una macro ulteriore che permette +di eseguire la copia di un puntatore alla lista degli argomenti: \begin{prototype}{stdarg.h}{void va\_copy(va\_list dest, va\_list src)} Copia l'attuale valore \param{src} del puntatore alla lista degli argomenti su \param{dest}.