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};
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
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
\itindend{memory~locking}
+
% TODO documentare \func{madvise}
% TODO documentare \func{mincore}
% \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}