Riorganizzate varie parti, rimetto in linea la nuova versione
[gapil.git] / prochand.tex
index 1dddba1edf3092f2fd1ee7b33b1e0dd1b4de49b4..b2f7b9ae409f9c1d5a86cae01ba2d4f4de095e17 100644 (file)
@@ -70,9 +70,9 @@ processo \cmd{init} che 
 
 I processi vengono creati dalla funzione \func{fork}; in molti unix questa è
 una system call, Linux però usa un'altra nomenclatura, e la funzione fork è
 
 I processi vengono creati dalla funzione \func{fork}; in molti unix questa è
 una system call, Linux però usa un'altra nomenclatura, e la funzione fork è
-basata a sua volta sulla system call \func{clone}, che viene usata anche per
-generare i \textit{thread}.  Il processo figlio creato dalla \func{fork} è una
-copia identica del processo processo padre, ma ha nuovo \acr{pid} e viene
+basata a sua volta sulla system call \func{\_\_clone}, che viene usata anche
+per generare i \textit{thread}.  Il processo figlio creato dalla \func{fork} è
+una copia identica del processo processo padre, ma ha nuovo \acr{pid} e viene
 eseguito in maniera indipendente (le differenze fra padre e figlio sono
 affrontate in dettaglio in \secref{sec:proc_fork}).
 
 eseguito in maniera indipendente (le differenze fra padre e figlio sono
 affrontate in dettaglio in \secref{sec:proc_fork}).
 
@@ -157,6 +157,12 @@ cui diventa possibile garantire l'unicit
 generare un pathname univoco, che non potrà essere replicato da un'altro
 processo che usi la stessa funzione. 
 
 generare un pathname univoco, che non potrà essere replicato da un'altro
 processo che usi la stessa funzione. 
 
+Tutti i processi figli dello stesso processo padre sono detti
+\textit{sibling}, questa è un'altra delle relazioni usate nel controllo di
+sessione, in cui si raggruppano tutti i processi creati su uno stesso
+terminale una volta che si è effettuato il login. Torneremo su questo
+argomento in \secref{cap:terminal}, dove esamineremo tutti gli altri
+identificativi associati ad un processo.
 
 \subsection{Utente e gruppo di un processo}
 \label{sec:proc_user_group}
 
 \subsection{Utente e gruppo di un processo}
 \label{sec:proc_user_group}
@@ -164,18 +170,14 @@ processo che usi la stessa funzione.
 Come accennato in \secref{sec:intro_multiuser} ad ogni utente ed gruppo sono
 associati due identificatori univoci, lo \acr{uid} e il \acr{gid} che li
 contraddistinguono nei confonti del kernel. Questi identificatori stanno alla
 Come accennato in \secref{sec:intro_multiuser} ad ogni utente ed gruppo sono
 associati due identificatori univoci, lo \acr{uid} e il \acr{gid} che li
 contraddistinguono nei confonti del kernel. Questi identificatori stanno alla
-base del sistema di permessi e protezioni di un sistema unix.
-
- a ciascun
-processo venfon
-
-
-Come accennato in \secref{sec:file_perm_overview} a processo viene associato
-un certo numero di identificatori (riportati in \ntab) che vengono usati sia
-per il controllo di accesso ai file che per la gestione dei privilegi
-associati ai processi stessi.
-
-
+base del sistema di permessi e protezioni di un sistema unix, e vengono usati
+anche nella gestione dei privilegi di accesso dei processi.
+
+Abbiamo già accennato in \secref{sec:file_perm_overview} che ad ogni processo
+associato un certo numero di identificatori (riportati \ntab) che fanno
+riferimento all'utente che ha lanciato il processo (attraverso i valori di
+\acr{uid} e \acr{gid}), e vengono usati sia per il controllo di accesso ai
+file che per la gestione dei privilegi associati ai processi stessi.
 \begin{table}[htb]
   \centering
   \begin{tabular}[c]{|c|l|l|}
 \begin{table}[htb]
   \centering
   \begin{tabular}[c]{|c|l|l|}
@@ -222,23 +224,25 @@ della funzione 
   \headdecl{unistd.h} 
   
   \funcdecl{pid\_t fork(void)} 
   \headdecl{unistd.h} 
   
   \funcdecl{pid\_t fork(void)} 
-
-  Le funzioni restituiscono zero in caso di successo e -1 per un errore, in
-  caso di errore \texttt{errno} può assumere i valori:
+  
+  Restituisce zero al padre e il \acr{pid} al figlio in caso di successo,
+  ritorna -1 al padre (senza creare il figlio) in caso di errore;
+  \texttt{errno} può assumere i valori:
   \begin{errlist}
   \begin{errlist}
-  \item \macro{EAGAIN}
-  \item \macro{ENOMEM}
+  \item \macro{EAGAIN} non ci sono risorse sufficienti per creare un'altro
+    processo (per allocare la tabella delle pagine e le strutture del task) o
+    si è esaurito il numero di processi disponibili.
+  \item \macro{ENOMEM} non è stato possibile allocare la memoria per le
+    strutture necessarie al kernel per creare il nuovo processo.
   \end{errlist}
 \end{functions}
 
   \end{errlist}
 \end{functions}
 
-
-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 \func{fork} sia il processo padre che il processo
+figlio continuano ad essere eseguiti normalmente, ed il processo figlio esegue
 esattamente lo stesso codice del padre. La sola differenza è che nel processo
 esattamente lo stesso codice del padre. La sola differenza è che nel processo
-padre il valore di ritorno della funzione fork è il pid del processo figlio,
-mentre nel figlio è zero; in questo modo il programma può identificare se
-viene eseguito dal padre o dal figlio. 
-
+padre il valore di ritorno della funzione fork è il \acr{pid} del processo
+figlio, mentre nel figlio è zero; in questo modo il programma può identificare
+se viene eseguito dal padre o dal figlio.
 
 
 
 
 
 
@@ -255,37 +259,6 @@ viene eseguito dal padre o dal figlio.
 \label{sec:proc_perms}
 
 
 \label{sec:proc_perms}
 
 
-
-
-
-Come accennato in \secref{sec:file_perm_overview} ciascun processo porta con
-se un gruppo di identificatori (riportati in \ntab) utilizzati per i controllo
-degli accessi, 
-
-
-\begin{table}[htb]
-  \centering
-  \begin{tabular}[c]{|c|l|l|}
-    \hline
-    Sigla & Significato & Utilizzo \\ 
-    \hline
-    \hline
-    \acr{ruid} & \textit{real user id} & indica l'utente reale \\ 
-    \acr{rgid} & \textit{real group id} & indica il gruppo reale \\ 
-    \acr{euid} & \textit{effective user id} & indica l'utente reale \\ 
-    \acr{egid} & \textit{effective group id} & indica il gruppo reale \\ 
-               & \textit{supplementaru group id} & indica il gruppo  \\ 
-    \acr{suid} & \textit{saved user id} & indica l'utente reale \\ 
-    \acr{sgid} & \textit{daved group id} & indica il gruppo reale \\ 
-    \acr{fsuid} & \textit{real user id} & indica l'utente reale \\ 
-    \acr{fsgid} & \textit{real group id} & indica il gruppo reale \\ 
-    \hline
-  \end{tabular}
-  \caption{Identificatori di utente e gruppo associati a ciascun processo.}
-  \label{tab:proc_uid_gid}
-\end{table}
-
-
 \subsection{Le funzioni \texttt{setuid} e \texttt{setgid}}
 \label{sec:proc_setuid}
 
 \subsection{Le funzioni \texttt{setuid} e \texttt{setgid}}
 \label{sec:proc_setuid}