\end{enumerate}
Oltre ai file aperti i processi figli ereditano dal padre una serie di altre
-proprietà comuni; in dettaglio avremo che dopo l'esecuzione di una \func{fork}
-padre e figlio avranno in comune:
+proprietà; la lista dettagliata delle proprietà che padre e figlio hanno in
+comune dopo l'esecuzione di una \func{fork} è la seguente:
\begin{itemize*}
\item i file aperti (e gli eventuali flag di \textit{close-on-exec} se
settati).
\item i limiti sulle risorse
\item le variabili di ambiente (vedi \secref{sec:proc_environ}).
\end{itemize*}
-le differenze invece sono:
+le differenze fra padree figlio dopo la \func{fork} invece sono:
\begin{itemize*}
\item il valore di ritorno di \func{fork}.
\item il \textit{process id}.
adottarli e provvedere a concludere la terminazione.
-\subsection{Le funzioni \texttt{wait} e \texttt{waitpid}}
+\subsection{Le funzioni \func{wait} e \func{waitpid}}
\label{sec:proc_wait}
Abbiamo già accennato come uno degli usi possibili delle capacità multitasking
\item \macro{EINTR} la funzione è stata interrotta da un segnale.
\end{errlist}
\end{functions}
+
è presente fin dalle prime versioni di unix; la funzione ritorna alla
conclusione del primo figlio (o immediatamente se un figlio è già uscito). Nel
caso un processo abbia più figli il valore di ritorno permette di identificare
Prima versione, equivalente a \func{wait4(-1, \&status, opt, rusage)} è
ormai deprecata in favore di \func{wait4}.
\end{functions}
+\noindent
la struttura \type{rusage} è definita in \file{sys/resource.h}, e viene
utilizzata anche dalla funzione \func{getrusage} per ottenere le risorse di
sistema usate dal processo; in Linux è definita come:
\end{lstlisting}
\end{minipage}
\normalsize
- \caption{La struttura \texttt{rusage} per la lettura delle informazioni dei
+ \caption{La struttura \var{rusage} per la lettura delle informazioni dei
delle risorse usate da un processo.}
\label{fig:proc_rusage_struct}
\end{figure}
\var{ru\_majflt}, e \var{ru\_nswap}.
-\subsection{Le funzioni \texttt{exec}}
+\subsection{Le funzioni \func{exec}}
\label{sec:proc_exec}
Abbiamo già detto che una delle modalità principali con cui si utilizzano i
\textit{real id} o del \textit{saved id}, l'amministratore può specificare
qualunque valore. Queste funzioni sono usate per permettere a root di settare
solo l'\textit{effective id}, dato che l'uso normale di \func{setuid} comporta
-il settagio di tutti gli identificatori.
+il settaggio di tutti gli identificatori.
-
\subsection{Le funzioni \func{setfsuid} e \func{setfsgid}}
\label{sec:proc_setfsuid}
Queste funzioni sono usate per settare gli identificatori usati da Linux per
il controllo dell'accesso ai file. Come già accennato in
-\secref{sec:proc_user_group} Linux definisce questo ulteriore gruppo di
-identificatori che di norma sono assolutamente equivalenti agli
-\textit{effective id} (ed in seguito faremo sempre riferimento a questi
-ultimi), dato che ogni cambiamento di questi ultimi viene immediatamente
-riportato sui \textit{filesystem id}.
+\secref{sec:proc_user_group} in Linux è definito questo ulteriore gruppo di
+identificatori, che di norma sono assolutamente equivalenti agli
+\textit{effective id}, dato che ogni cambiamento di questi ultimi viene
+immediatamente riportato sui \textit{filesystem id}.
C'è un solo caso in cui si ha necessità di introdurre una differenza fra
-\textit{effective id} e i \textit{filesystem id}, che è per ovviare ad un
-problema di sicurezza che si presneta quando si deve implementare un server
+\textit{effective id} e \textit{filesystem id}, ed è per ovviare ad un
+problema di sicurezza che si presenta quando si deve implementare un server
NFS. Il server NFS infatti deve poter cambiare l'identificatore con cui accede
ai file per assumere l'identità del singolo utente remoto, ma se questo viene
fatto cambiando l'\textit{effective id} o il \textit{real id} il server si
quelli originari per quanto riguarda tutti gli altri controlli di accesso.
Le due funzioni usate per cambiare questi identificatori sono \func{setfsuid}
-e \func{setfsgid}, sono specifiche di Linux e non devono essere usate se si
-intendono scrivere programmi portabili; i loro prototipi sono:
+e \func{setfsgid}, ovviamenete sono specifiche di Linux e non devono essere
+usate se si intendono scrivere programmi portabili; i loro prototipi sono:
\begin{functions}
\headdecl{sys/fsuid.h}
\end{functions}
Queste funzioni hanno successo solo se il processo chiamante ha i privilegi di
-amministratore o se il valore specificato coincide con uno dei
-\textit{real}, \textit{effective} o \textit{saved id}.
-
-
+amministratore o, per gli altri utenti, se il valore specificato coincide con
+uno dei \textit{real}, \textit{effective} o \textit{saved id}.
\section{Problematiche di programmazione multitasking}
\label{sec:proc_multi_prog}
Benché i processi siano strutturati in modo da apparire il più possibile come
-independenti l'uno dall'altro, nella programmazione in un sistema multiutente
+indipendenti l'uno dall'altro, nella programmazione in un sistema multiutente
occorre tenere conto di tutta una serie di problematiche che normalmente non
esistono quando si ha a che fare con un sistema in cui viene eseguito un solo
programma alla volta.
-
Pur non essendo tutto questo direttamente legato alla modalità specifica in
-cui il multitasking è implementato in un sistema unix-like, avendo affrontato
-la gestione dei processi in questo capitolo, tratteremo queste problematiche,
-e relative precauzioni ed accorgimenti, in questa sezione conclusiva.
+cui il multitasking è implementato in un sistema unix-like, siccome la
+gestione dei processi è stata affrontata in questo capitolo, tratteremo in
+questa sezione conclusiva anche queste problematiche, esaminandone le
+caratteristiche fondamentali e le modalità con cui si affrontano.
\subsection{Le funzioni rientranti}
\label{sec:proc_reentrant}
-\subsection{I \textit{deadlock}}
-\label{sec:proc_deadlock}
-
-
\subsection{Le operazioni atomiche}
\label{sec:proc_atom_oper}
particolari e quindi difficilmente riproducibili.
+\subsection{I \textit{deadlock}}
+\label{sec:proc_deadlock}
+