X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=prochand.tex;h=280ace4f26751e210cc0992353709a318ef03b1f;hb=e6bb18d2cb951828d434b8016742a7c3091ed636;hp=182ad5f29263bbc507b3a6c5aa88855cb8a22245;hpb=05658e26bf54190b200d77d7301ee34c4690f187;p=gapil.git diff --git a/prochand.tex b/prochand.tex index 182ad5f..280ace4 100644 --- a/prochand.tex +++ b/prochand.tex @@ -549,10 +549,10 @@ ultimo) troveremo anche l'output completo del padre. L'esempio ci mostra un altro aspetto fondamentale dell'interazione con i file, valido anche per l'esempio precedente, ma meno evidente: il fatto cioè che non solo processi diversi possono scrivere in contemporanea sullo stesso file -(l'argomento della condivisione dei file è trattato in dettaglio in -sez.~\ref{sec:file_sharing}), ma anche che, a differenza di quanto avviene per -le variabili in memoria, la posizione corrente sul file è condivisa fra il -padre e tutti i processi figli. +(l'argomento dell'accesso concorrente ai file è trattato in dettaglio in +sez.~\ref{sec:file_shared_access}), ma anche che, a differenza di quanto +avviene per le variabili in memoria, la posizione corrente sul file è +condivisa fra il padre e tutti i processi figli. Quello che succede è che quando lo \textit{standard output}\footnote{si chiama così il file su cui un programma scrive i suoi dati in uscita, tratteremo @@ -563,8 +563,9 @@ processi figli tutti i \textit{file descriptor} (vedi sez.~\ref{sec:file_fd}) dei file aperti nel processo padre (allo stesso modo in cui lo fa la funzione \func{dup}, trattata in sez.~\ref{sec:file_dup}), il che comporta che padre e figli condividono le stesse voci della \itindex{file~table} \textit{file - table} (tratteremo in dettagli questi termini in -sez.~\ref{sec:file_sharing}) fra cui c'è anche la posizione corrente nel file. + table} (tratteremo in dettaglio questi termini in +sez.~\ref{sec:file_shared_access}) fra cui c'è anche la posizione corrente nel +file. In questo modo se un processo scrive su un file aggiornerà la posizione corrente sulla \itindex{file~table} \textit{file table}, e tutti gli altri @@ -606,7 +607,7 @@ comune dopo l'esecuzione di una \func{fork} è la seguente: \begin{itemize*} \item i file aperti e gli eventuali flag di \itindex{close-on-exec} \textit{close-on-exec} impostati (vedi sez.~\ref{sec:proc_exec} e - sez.~\ref{sec:file_fcntl}); + sez.~\ref{sec:file_fcntl_ioctl}); \item gli identificatori per il controllo di accesso: l'\textsl{user-ID reale}, il \textsl{group-ID reale}, l'\textsl{user-ID effettivo}, il \textsl{group-ID effettivo} ed i \textit{group-ID supplementari} (vedi @@ -1621,7 +1622,7 @@ nell'esecuzione della funzione \func{exec}, queste sono: La gestione dei file aperti nel passaggio al nuovo programma lanciato con \func{exec} dipende dal valore che ha il flag di \itindex{close-on-exec} -\textit{close-on-exec} (vedi sez.~\ref{sec:file_fcntl}) per ciascun +\textit{close-on-exec} (vedi sez.~\ref{sec:file_fcntl_ioctl}) per ciascun \textit{file descriptor}. I file per cui è impostato vengono chiusi, tutti gli altri file restano aperti. Questo significa che il comportamento predefinito è che i file restano aperti attraverso una \func{exec}, a meno di una chiamata @@ -2822,7 +2823,7 @@ rispettivamente 1 e 99. \begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.5\textwidth} \includestruct{listati/sched_param.c} \end{minipage} \normalsize @@ -4148,11 +4149,11 @@ Nel caso dell'interazione fra processi la situazione è molto più semplice, ed occorre preoccuparsi della atomicità delle operazioni solo quando si ha a che fare con meccanismi di intercomunicazione (che esamineremo in dettaglio in cap.~\ref{cha:IPC}) o nelle operazioni con i file (vedremo alcuni esempi in -sez.~\ref{sec:file_atomic}). In questi casi in genere l'uso delle appropriate -funzioni di libreria per compiere le operazioni necessarie è garanzia -sufficiente di atomicità in quanto le \textit{system call} con cui esse sono -realizzate non possono essere interrotte (o subire interferenze pericolose) da -altri processi. +sez.~\ref{sec:file_shared_access}). In questi casi in genere l'uso delle +appropriate funzioni di libreria per compiere le operazioni necessarie è +garanzia sufficiente di atomicità in quanto le \textit{system call} con cui +esse sono realizzate non possono essere interrotte (o subire interferenze +pericolose) da altri processi. Nel caso dei segnali invece la situazione è molto più delicata, in quanto lo stesso processo, e pure alcune \textit{system call}, possono essere interrotti