Poche aggiunte
authorSimone Piccardi <piccardi@gnulinux.it>
Wed, 23 May 2001 20:53:36 +0000 (20:53 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Wed, 23 May 2001 20:53:36 +0000 (20:53 +0000)
process.tex

index 88e059d..2bde867 100644 (file)
@@ -15,9 +15,50 @@ affronteremo l'avvio e il funzionamento di un programma dal punto di vista del
 programma posto in esecuzione.
 
 
+\section{Esecuzione e conclusione di un programma}
+
+Una delle concetti base relativi ai processi è che un processo esegue sempre
+uno ed un solo programma: si possono avere più processi che eseguono lo stesso
+programma ma ciascun processo vedrà la sua copia del codice (in realtà il
+kernel fa si 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. 
+
+Anche quando all'interno di un programma possono essere presenti più
+\textsl{filoni} di esecuzione (i cosiddetti \textit{thread}), o questo possa
+essere composto da moduli multipli completamente separati, quando questo sarà
+posto in esecuzione esso apparirà al sistema come un solo processo (il
+discorso dei \textit{thread} comunque in linux necessita di una trattazione a
+parte per la peculiarità dell'implementazione).
+
+
 \section{La funzione \texttt{main}} 
 \label{sec:proc_main}
 
+Quando un programma viene lanciato dal kernel viene eseguito il
+programma \texttt{ld-linux.so}, è questo programma che prima carica le
+librerie condivise che servono al programma, effettua il link dinamico del
+codice e poi alla fine lo esegue. La procedura è controllata da alcune
+variabili di ambiente e dai settaggi di 
+
+Il sistema fa partire qualunque programma chiamando la funzione \texttt{main};
+sta al programmatore chiamare così la funzione principale del programma, se
+così non fosse lo stesso linker darebbe luogo ad errori.
+
+Lo stadard ISO C specifica che detta funzione può non avere argomenti o
+prendere due argomenti che rappresentano gli argomenti passati da linea di
+comando, in sostanza un prototipo che va sempre bene è il seguente:
+\begin{verbatim}
+     int main (int argc, char *argv[])
+\end{verbatim}
+
+
+In realtà nei sistemi unix esiste un'altro modo per definire la funzione
+\texttt{main}, che prende un terzo parametro, \texttt{char *envp[]}, che
+fornisce l'ambiente (vedi \secref{proc_environ}) del programma; questa forma
+però non è prevista dallo standard POSIX.1 per cui se si vogliono scrivere
+programmi portabili è meglio evitarla.
+
 
 
 \subsection{}
@@ -40,7 +81,7 @@ programma posto in esecuzione.
 Il passaggio dei parametri e delle variabili di ambiente dalla riga di comando
 al singolo programma quando viene lanciato è effettuato attraverso le
 variabili \texttt{argc}, \texttt{argv} che vengono passate al programma
-come argomenti della funzione principale:
+come argomenti della funzione principale.
 
 \subsection{Il formato dei parametri}
 \label{sec:proc_par_format}
@@ -174,3 +215,6 @@ versione estesa di \texttt{getopt}.
 Questo va fatto.
 
 
+
+\section{La gestione della memoria}
+\label{sec:proc_memory_manag}
\ No newline at end of file