X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=fa6e1d50969b63087422d86a5b12a7a3865e21e7;hp=182ad5f29263bbc507b3a6c5aa88855cb8a22245;hb=3cf93b3dfc49fbf8b16f908bee85fa2ecaea4e3f;hpb=05658e26bf54190b200d77d7301ee34c4690f187 diff --git a/prochand.tex b/prochand.tex index 182ad5f..fa6e1d5 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 @@ -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