X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=process.tex;h=2daf77d6a2c33ca7eeb52fc3b0707f60b90b21cd;hb=a48e8dfeb4b05b57eab2336c7d2e0aaf6b9bd572;hp=3f500455336e5b8f1bfb686e4fdbfc1d1a95649a;hpb=ff76d56c6a2c280cbe4f153173488871d7b12336;p=gapil.git diff --git a/process.tex b/process.tex index 3f50045..2daf77d 100644 --- a/process.tex +++ b/process.tex @@ -49,8 +49,8 @@ dinamico del codice e alla fine lo esegue. Infatti, a meno di non aver specificato il flag \texttt{-static} durante la compilazione, tutti i programmi in Linux sono incompleti e necessitano di essere \textsl{collegati} alle librerie condivise quando vengono avviati. La procedura è controllata da -alcune variabili di ambiente e dal contenuto di \file{/etc/ld.so.conf}. I -dettagli sono riportati nella man page di \cmd{ld.so}. +alcune variabili di ambiente e dal contenuto di \conffile{/etc/ld.so.conf}. I +dettagli sono riportati nella pagina di manuale di \cmd{ld.so}. Il sistema fa partire qualunque programma chiamando la funzione \func{main}; sta al programmatore chiamare così la funzione principale del programma da cui @@ -82,8 +82,8 @@ controllo direttamente alla funzione di conclusione dei processi del kernel. Oltre alla conclusione ``\textsl{normale}'' esiste anche la possibilità di una conclusione ``\textsl{anomala}'' del programma a causa della ricezione di un -segnale (si veda cap.~\ref{cha:signals}) o della chiamata alla funzione -\func{abort}; torneremo su questo in sez.~\ref{sec:proc_termination}. +segnale (tratteremo i segnali in cap.~\ref{cha:signals}) o della chiamata alla +funzione \func{abort}; torneremo su questo in sez.~\ref{sec:proc_termination}. Il valore di ritorno della funzione \func{main}, o quello usato nelle chiamate ad \func{exit} e \func{\_exit}, viene chiamato \textsl{stato di uscita} (o @@ -402,10 +402,16 @@ seguenti segmenti: viene il nome \itindex{stack} \textit{stack}) in sequenza uno sull'altro; in questo modo le funzioni possono essere chiamate ricorsivamente. Al ritorno della funzione lo spazio è automaticamente rilasciato e - ``\textsl{ripulito}''. La pulizia in C e C++ viene fatta dal - chiamante.\footnote{a meno che non sia stato specificato l'utilizzo di una - calling convention diversa da quella standard.} -% TODO verificare le modalità di cambiamento della calling convention + ``\textsl{ripulito}''.\footnote{il compilatore si incarica di generare + automaticamente il codice necessario, seguendo quella che viene chiamata + una \textit{calling convention}; quella standard usata con il C ed il C++ + è detta \textit{cdecl} e prevede che gli argomenti siano caricati nello + stack dal chiamante da destra a sinistra, e che si il chiamante stesso ad + eseguire la ripulitura dello stack al ritorno della funzione, se ne + possono però utilizzare di alternative (ad esempio nel pascal gli + argomenti sono inseriti da sinistra a destra ed è compito del chiamato + ripulire lo stack), in genere non ci si deve preoccupare di questo + fintanto che non si mescolano funzioni scritte con linguaggi diversi.} La dimensione di questo segmento aumenta seguendo la crescita dello \itindex{stack} \textit{stack} del programma, ma non viene ridotta quando @@ -910,6 +916,7 @@ ci si scrive sopra. \itindend{memory~locking} + % TODO documentare \func{madvise} % TODO documentare \func{mincore} @@ -919,7 +926,11 @@ ci si scrive sopra. % \subsection{Gestione avanzata dell'allocazione della memoria} % \label{sec:proc_mem_malloc_custom} + % TODO: trattare le funzionalità avanzate di \func{malloc} +% TODO: trattare \func{memalign} +% TODO: trattare \func{valloc} +% TODO: trattare \func{posix\_memalign} @@ -1701,7 +1712,8 @@ 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 sottoprocesso Di +% LocalWords: env return if while Di page cdecl +% LocalWords: environment %%% Local Variables: %%% mode: latex