Risistemati un sacco di riferiementi, e la riorganizzazione della parte
[gapil.git] / prochand.tex
index 40a880dddf5c867c205a0110c2d868812d32e9dc..e43caa970b166af4e26da74b68bc55e3dcfe2c9f 100644 (file)
@@ -49,31 +49,28 @@ genere 
 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:
 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.
     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:prochand_control}
 
 Esamineremo in questa sezione le varie funzioni per il controllo dei processi:
 
 
 \section{Il controllo dei processi}
 \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
 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:prochand_control_overview}
 
 I processi vengono creati dalla funzione \texttt{fork}; in genere questa è una
 
 \subsection{Una panoramica}
 \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
 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,35 +83,37 @@ 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
 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
 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
 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.
 
 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).
 
 
 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}}
+\subsection{La funzione \func{fork}}
 \label{sec:prochand_fork}
 
 \label{sec:prochand_fork}
 
+La funzione \func{fork} 
+
 
 Dopo l'esecuzione di una fork sia il processo padre che il processo figlio
 continuano ad essere eseguiti normalmente, ed il processo figlio esegue
 
 Dopo l'esecuzione di una fork sia il processo padre che il processo figlio
 continuano ad essere eseguiti normalmente, ed il processo figlio esegue
@@ -137,12 +136,12 @@ viene eseguito dal padre o dal figlio.
 \label{sec:prochand_perms}
 
 Va messo qui tutta la storia su effective, real, saved uid, e pure le cose di
 \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:prochand_setuid}
 
 
 \subsection{Le funzioni \texttt{seteuid} e \texttt{setegid}}
 
 \subsection{Le funzioni \texttt{setuid} e \texttt{setgid}}
 \label{sec:prochand_setuid}
 
 
 \subsection{Le funzioni \texttt{seteuid} e \texttt{setegid}}
-\label{sec:prochand_setuid}
+\label{sec:prochand_seteuid}