Rinominati app_a e app_b
[gapil.git] / prochand.tex
index 390b072421612d0dfc58ab281037f65ccd7f9768..72fcc78465a6c5d57d9da2b07afbaf38adfe4245 100644 (file)
@@ -12,7 +12,7 @@ funzioni a questo connesse.
 
 
 \section{Una panoramica sui concetti base}
-\label{sec:proc_gen}
+\label{sec:prochand_gen}
 
 Una delle caratteristiche essenziali di unix (che esamineremo in dettaglio più
 avanti) è che ogni processo può a sua volta generare altri processi figli
@@ -31,7 +31,7 @@ questo caso c'
 
 
 \section{Gli identificatori dei processi}
-\label{sec:proc_id}
+\label{sec:prochand_id}
 
 Ogni processo viene identificato dal sistema da un numero identificativo
 unico, il \textit{process id} o \textit{pid}. Questo viene assegnato in forma
@@ -41,39 +41,36 @@ arriva a 32767) oltre il quale si riparte dal numero pi
 (FIXME: verificare, non sono sicuro).  Per questo motivo processo il processo
 di avvio (init) ha sempre il pid uguale a uno.
 
-Ogni processo è identificato univocamente dal sistema per il suo
-pid; quest'ultimo è un apposito tipo di dato, il \texttt{pid\_t} che in
-genere è un intero con segno (nel caso di Linux e delle glibc il tipo usato è
+Ogni processo è identificato univocamente dal sistema per il suo pid;
+quest'ultimo è un tipo di dato standard, il \texttt{pid\_t} che in genere è un
+intero con segno (nel caso di Linux e delle glibc il tipo usato è
 \texttt{int}.
 
 Tutti i processi inoltre portano traccia del pid del genitore, chiamato in
 genere \textit{ppid} (da \textit{Parente Process Id}). Questi identificativi
 possono essere ottenuti da un programma usando le funzioni:
-\begin{itemize} 
-  \item \texttt{pid\_t getpid(void)} restituisce il pid del processo corrente.
-    
-  \item \texttt{pid\_t getppid(void)} restituisce il pid del padre del processo
+\begin{functions}
+\headdecl{sys/types.h}
+\headdecl{unistd.h}
+\funcdecl{pid\_t getpid(void)} restituisce il pid del processo corrente.
+\funcdecl{pid\_t getppid(void)} restituisce il pid del padre del processo
     corrente.
-
-\end{itemize}
-(per l'accesso a queste funzioni e ai relativi tipi di dati occorre includere
-gli header files \texttt{unistd.h} e \texttt{sys/types.h}). 
-
+\end{functions}
 
 
 \section{Il controllo dei processi}
-\label{sec:proc_control}
+\label{sec:prochand_control}
 
 Esamineremo in questa sezione le varie funzioni per il controllo dei processi:
-la lore creazione, la terminazione, l'esecuzione di altri programmi. Prima di
+la loro creazione, la terminazione, l'esecuzione di altri programmi. Prima di
 trattare in dettaglio le singole funzioni, faremo un'introduzione generale ai
-contetti che stanno alla base della gestione dei processi in unix.
+concetti che stanno alla base della gestione dei processi in unix.
 
 \subsection{Una panoramica}
-\label{sec:proc_control_overview}
+\label{sec:prochand_control_overview}
 
 I processi vengono creati dalla funzione \texttt{fork}; in genere questa è una
-system call, ma linux però usa un'altra nomenclatura, e la funzione fork è
+system call, ma Linux però usa un'altra nomenclatura, e la funzione fork è
 basata a sua volta sulla system call \texttt{clone}, che viene usata anche per
 generare i \textit{thread}.  Il processo figlio creato dalla \textit{fork} è
 una copia identica del processo processo padre, solo che ha un suo pid
@@ -86,34 +83,36 @@ una informazione abbastanza limitata (il codice di uscita) sulle cause della
 terminazione del processo.
 
 Quando un processo ha concluso il suo compito o ha incontrato un errore non
-risolvibile esso può essere terminato con la funzione \texttt{exit} (la
-questione è più complessa ma ci torneremo più avanti). La vita del processo
+risolvibile esso può essere terminato con la funzione \texttt{exit} (si veda
+quanto discusso in \secref{sec:proc_termination}). La vita del processo
 però termina solo quando viene chiamata la quando la sua conclusione viene
 ricevuta dal processo padre, a quel punto tutte le risorse allocate nel
 sistema ad esso associate vengono rilasciate.
 
 Avere due processi che eseguono esattamente lo stesso codice non è molto
-utile, mormalmente si genera un secondo processo per affidagli l'esecuzione di
+utile, normalmente si genera un secondo processo per affidargli l'esecuzione di
 un compito specifico (ad esempio gestire una connessione dopo che questa è
 stata stabilita), o fargli eseguire (come fa la shell) un altro programma. Per
 questo si usa la seconda funzione fondamentale per programmazione coi processi
 che è la \texttt{exec}.
 
 Il programma che un processo sta eseguendo si chiama immagine del processo
-(\textit{process image}), le funzioni della famiglia \textit{exec} permettono
+(\textit{process image}), le funzioni della famiglia \func{exec} permettono
 di caricare un'altro programma da disco sostituendo quest'ultimo alla process
 image corrente, questo fa si che la precedente immagine venga completamente
 cancellata e quando il nuovo programma esce anche il processo termina, senza
 ritornare alla precedente immagine.
 
-Per questo motivo la \texttt{fork} e la \texttt{exec} sono funzioni molto
+Per questo motivo la \func{fork} e la \func{exec} sono funzioni molto
 particolari con caratteristiche uniche rispetto a tutte le altre, infatti la
 prima ritorna due volte (nel processo padre e nel figlio) mentre la seconda
 non ritorna mai (in quanto con essa viene eseguito un altro programma).
 
 
-\subsection{La funzione \texttt{fork}}
-\label{sec:proc_fork}
+\subsection{La funzione \func{fork}}
+\label{sec:prochand_fork}
+
+La funzione \func{fork} 
 
 
 Dopo l'esecuzione di una fork sia il processo padre che il processo figlio
@@ -127,29 +126,24 @@ viene eseguito dal padre o dal figlio.
 
 
 \subsection{Le funzioni \texttt{wait} e  \texttt{waitpid}}
-\label{sec:proc_wait}
+\label{sec:prochand_wait}
 
 \subsection{Le funzioni \texttt{exec}}
-\label{sec:proc_exec}
-
-
+\label{sec:prochand_exec}
 
 
 
 
 \section{Il controllo di accesso}
-\label{sec:process_perms}
+\label{sec:prochand_perms}
 
 Va messo qui tutta la storia su effective, real, saved uid, e pure le cose di
-linux come il filesystem uid.
-
+Linux come il filesystem uid.
 
 \subsection{Le funzioni \texttt{setuid} e \texttt{setgid}}
-\label{sec:proc_setuid}
+\label{sec:prochand_setuid}
 
 
 \subsection{Le funzioni \texttt{seteuid} e \texttt{setegid}}
-\label{sec:proc_setuid}
-
-
+\label{sec:prochand_seteuid}