X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=process.tex;h=a0e32dfd267fdcc105fc830db23468ccfb7caa24;hb=d451ac30382ae398b9a2242a4f82b3438affc8a7;hp=3f500455336e5b8f1bfb686e4fdbfc1d1a95649a;hpb=ff76d56c6a2c280cbe4f153173488871d7b12336;p=gapil.git diff --git a/process.tex b/process.tex index 3f50045..a0e32df 100644 --- a/process.tex +++ b/process.tex @@ -49,7 +49,7 @@ 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 +alcune variabili di ambiente e dal contenuto di \conffile{/etc/ld.so.conf}. I dettagli sono riportati nella man page di \cmd{ld.so}. Il sistema fa partire qualunque programma chiamando la funzione \func{main}; @@ -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 fal chiamante da destra a sinistra, e che si il chimante 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,8 +916,6 @@ ci si scrive sopra. \itindend{memory~locking} -% TODO documentare \func{madvise} -% TODO documentare \func{mincore} \index{memoria~virtuale|)}