Trattato PR_SET_PTRACER.
[gapil.git] / ipc.tex
diff --git a/ipc.tex b/ipc.tex
index f820a13b0cbaec3b200ff368c5a1564682a6e298..bb1c18e02e17ab0b570e12fc70a16f367976f2ab 100644 (file)
--- a/ipc.tex
+++ b/ipc.tex
@@ -96,7 +96,7 @@ con le frecce che indicano la direzione del flusso dei dati.
 \end{figure}
 
 Della funzione di sistema esiste una seconda versione, \funcd{pipe2},
 \end{figure}
 
 Della funzione di sistema esiste una seconda versione, \funcd{pipe2},
-introdotta con il kernel 2.6.27 e le \acr{glibc} 2.9 e specifica di Linux
+introdotta con il kernel 2.6.27 e la \acr{glibc} 2.9 e specifica di Linux
 (utilizzabile solo definendo la macro \macro{\_GNU\_SOURCE}), che consente di
 impostare atomicamente le caratteristiche dei file descriptor restituiti, il
 suo prototipo è:
 (utilizzabile solo definendo la macro \macro{\_GNU\_SOURCE}), che consente di
 impostare atomicamente le caratteristiche dei file descriptor restituiti, il
 suo prototipo è:
@@ -366,7 +366,7 @@ La funzione restituisce il puntatore ad uno stream associato alla
 \textit{pipe} creata, che sarà aperto in sola lettura (e quindi associato allo
 \textit{standard output} del programma indicato) in caso si sia indicato
 \code{r}, o in sola scrittura (e quindi associato allo \textit{standard
 \textit{pipe} creata, che sarà aperto in sola lettura (e quindi associato allo
 \textit{standard output} del programma indicato) in caso si sia indicato
 \code{r}, o in sola scrittura (e quindi associato allo \textit{standard
-  input}) in caso di \code{w}. A partire dalla versione 2.9 delle \acr{glibc}
+  input}) in caso di \code{w}. A partire dalla versione 2.9 della \acr{glibc}
 (questa è una estensione specifica di Linux) all'argomento \param{type} può
 essere aggiunta la lettera ``\texttt{e}'' per impostare automaticamente il
 flag di \textit{close-on-exec} sul file descriptor sottostante (si ricordi
 (questa è una estensione specifica di Linux) all'argomento \param{type} può
 essere aggiunta la lettera ``\texttt{e}'' per impostare automaticamente il
 flag di \textit{close-on-exec} sul file descriptor sottostante (si ricordi
@@ -1072,8 +1072,8 @@ Il secondo livello di controllo è quello delle varie funzioni che accedono
 direttamente (in lettura o scrittura) all'oggetto. In tal caso lo schema dei
 controlli è simile a quello dei file, ed avviene secondo questa sequenza:
 \begin{itemize*}
 direttamente (in lettura o scrittura) all'oggetto. In tal caso lo schema dei
 controlli è simile a quello dei file, ed avviene secondo questa sequenza:
 \begin{itemize*}
-\item se il processo ha i privilegi di amministratore (più precisamente la
-  capacità \const{CAP\_IPC\_OWNER}) l'accesso è sempre consentito.
+\item se il processo ha i privilegi di amministratore (più precisamente
+  \const{CAP\_IPC\_OWNER}) l'accesso è sempre consentito.
 \item se l'\ids{UID} effettivo del processo corrisponde o al valore del campo
   \var{cuid} o a quello del campo \var{uid} ed il permesso per il proprietario
   in \var{mode} è appropriato\footnote{per appropriato si intende che è
 \item se l'\ids{UID} effettivo del processo corrisponde o al valore del campo
   \var{cuid} o a quello del campo \var{uid} ed il permesso per il proprietario
   in \var{mode} è appropriato\footnote{per appropriato si intende che è
@@ -1362,7 +1362,7 @@ come \ctyp{short}.
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{.90\textwidth}
+  \begin{minipage}[c]{.91\textwidth}
     \includestruct{listati/msqid_ds.h}
   \end{minipage} 
   \normalsize 
     \includestruct{listati/msqid_ds.h}
   \end{minipage} 
   \normalsize 
@@ -1945,7 +1945,7 @@ processo, e la gestione diventa più complicata.
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{.80\textwidth}
+  \begin{minipage}[c]{.85\textwidth}
     \includestruct{listati/semid_ds.h}
   \end{minipage} 
   \normalsize 
     \includestruct{listati/semid_ds.h}
   \end{minipage} 
   \normalsize 
@@ -1975,7 +1975,7 @@ quanto riguarda gli altri campi invece:
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{.80\textwidth}
+  \begin{minipage}[c]{.85\textwidth}
     \includestruct{listati/sem.h}
   \end{minipage} 
   \normalsize 
     \includestruct{listati/sem.h}
   \end{minipage} 
   \normalsize 
@@ -2095,10 +2095,10 @@ unificare detto argomento esso deve essere passato come una unione
 \struct{semun}, la cui definizione, con i possibili valori che può assumere, è
 riportata in fig.~\ref{fig:ipc_semun}.
 
 \struct{semun}, la cui definizione, con i possibili valori che può assumere, è
 riportata in fig.~\ref{fig:ipc_semun}.
 
-Nelle versioni più vecchie delle \acr{glibc} questa unione veniva definita in
+Nelle versioni più vecchie della \acr{glibc} questa unione veniva definita in
 \file{sys/sem.h}, ma nelle versioni più recenti questo non avviene più in
 quanto lo standard POSIX.1-2001 richiede che sia sempre definita a cura del
 \file{sys/sem.h}, ma nelle versioni più recenti questo non avviene più in
 quanto lo standard POSIX.1-2001 richiede che sia sempre definita a cura del
-chiamante. In questa seconda evenienza le \acr{glibc} definiscono però la
+chiamante. In questa seconda evenienza la \acr{glibc} definisce però la
 macro \macrod{\_SEM\_SEMUN\_UNDEFINED} che può essere usata per controllare la
 situazione.
 
 macro \macrod{\_SEM\_SEMUN\_UNDEFINED} che può essere usata per controllare la
 situazione.
 
@@ -2243,7 +2243,7 @@ vettore \param{sops}.
 
 Con lo standard POSIX.1-2001 è stata introdotta una variante di \func{semop}
 che consente di specificare anche un tempo massimo di attesa. La nuova
 
 Con lo standard POSIX.1-2001 è stata introdotta una variante di \func{semop}
 che consente di specificare anche un tempo massimo di attesa. La nuova
-funzione di sistema, disponibile a partire dal kernel 2.4.22 e dalle
+funzione di sistema, disponibile a partire dal kernel 2.4.22 e dalla
 \acr{glibc} 2.3.3, ed utilizzabile solo dopo aver definito la macro
 \macro{\_GNU\_SOURCE}, è \funcd{semtimedop}, ed il suo prototipo è:
 
 \acr{glibc} 2.3.3, ed utilizzabile solo dopo aver definito la macro
 \macro{\_GNU\_SOURCE}, è \funcd{semtimedop}, ed il suo prototipo è:
 
@@ -2427,7 +2427,7 @@ struttura \struct{sembuf}) e al processo corrente (nel campo \var{sleeper})
 poi quest'ultimo viene messo stato di attesa e viene invocato lo
 \textit{scheduler} per passare all'esecuzione di un altro processo.
 
 poi quest'ultimo viene messo stato di attesa e viene invocato lo
 \textit{scheduler} per passare all'esecuzione di un altro processo.
 
-Se invece tutte le operazioni possono avere successo queste vengono eseguite
+Se invece tutte le operazioni possono avere successo vengono eseguite
 immediatamente, dopo di che il kernel esegue una scansione della coda di
 attesa (a partire da \var{sem\_pending}) per verificare se qualcuna delle
 operazioni sospese in precedenza può essere eseguita, nel qual caso la
 immediatamente, dopo di che il kernel esegue una scansione della coda di
 attesa (a partire da \var{sem\_pending}) per verificare se qualcuna delle
 operazioni sospese in precedenza può essere eseguita, nel qual caso la
@@ -2849,8 +2849,8 @@ stato marcato per la cancellazione.
 
 L'argomento \param{shmaddr} specifica a quale indirizzo\footnote{lo standard
   SVID prevede che l'argomento \param{shmaddr} sia di tipo \ctyp{char *}, così
 
 L'argomento \param{shmaddr} specifica a quale indirizzo\footnote{lo standard
   SVID prevede che l'argomento \param{shmaddr} sia di tipo \ctyp{char *}, così
-  come il valore di ritorno della funzione; in Linux è stato così con le
-  \acr{libc4} e le \acr{libc5}, con il passaggio alla \acr{glibc} il tipo di
+  come il valore di ritorno della funzione; in Linux è stato così con la
+  \acr{libc4} e la \acr{libc5}, con il passaggio alla \acr{glibc} il tipo di
   \param{shmaddr} è divenuto un \ctyp{const void *} e quello del valore di
   ritorno un \ctyp{void *} seguendo POSIX.1-2001.} deve essere associato il
 segmento, se il valore specificato è \val{NULL} è il sistema a scegliere
   \param{shmaddr} è divenuto un \ctyp{const void *} e quello del valore di
   ritorno un \ctyp{void *} seguendo POSIX.1-2001.} deve essere associato il
 segmento, se il valore specificato è \val{NULL} è il sistema a scegliere
@@ -3778,9 +3778,9 @@ dei rispettivi limiti di sistema altrimenti la funzione fallirà con un errore
 di \errcode{EINVAL}.  Se \param{attr} è un puntatore nullo gli attributi della
 coda saranno impostati ai valori predefiniti.
 
 di \errcode{EINVAL}.  Se \param{attr} è un puntatore nullo gli attributi della
 coda saranno impostati ai valori predefiniti.
 
-I suddetti limiti di sistema sono impostati attraverso altrettanti file in
-\texttt{/proc/sys/fs/mqueue}, in particolare i file che controllano i valori
-dei limiti sono:
+I suddetti limiti di sistema sono impostati attraverso una serie di file
+presenti sotto \texttt{/proc/sys/fs/mqueue}, in particolare i file che
+controllano i valori dei limiti sono:
 \begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}}
 \item[\sysctlfiled{fs/mqueue/msg\_max}] Indica il valore massimo del numero di
   messaggi in una coda e agisce come limite superiore per il valore di
 \begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}}
 \item[\sysctlfiled{fs/mqueue/msg\_max}] Indica il valore massimo del numero di
   messaggi in una coda e agisce come limite superiore per il valore di
@@ -3833,7 +3833,7 @@ descrittore con la funzione \funcd{mq\_close}, il cui prototipo è:
 La funzione è analoga a \func{close},\footnote{su Linux, dove le code sono
   implementate come file su un filesystem dedicato, è esattamente la stessa
   funzione, per cui non esiste una \textit{system call} autonoma e la funzione
 La funzione è analoga a \func{close},\footnote{su Linux, dove le code sono
   implementate come file su un filesystem dedicato, è esattamente la stessa
   funzione, per cui non esiste una \textit{system call} autonoma e la funzione
-  viene rimappata su \func{close} dalle \acr{glibc}.}  dopo la sua esecuzione
+  viene rimappata su \func{close} dalla \acr{glibc}.}  dopo la sua esecuzione
 il processo non sarà più in grado di usare il descrittore della coda, ma
 quest'ultima continuerà ad esistere nel sistema e potrà essere acceduta con
 un'altra chiamata a \func{mq\_open}. All'uscita di un processo tutte le code
 il processo non sarà più in grado di usare il descrittore della coda, ma
 quest'ultima continuerà ad esistere nel sistema e potrà essere acceduta con
 un'altra chiamata a \func{mq\_open}. All'uscita di un processo tutte le code
@@ -3968,8 +3968,8 @@ nell'argomento \param{msg\_ptr}, e la relativa lunghezza in \param{msg\_len}.
 Se quest'ultima eccede la dimensione massima specificata da \var{mq\_msgsize}
 le funzioni ritornano immediatamente con un errore di \errcode{EMSGSIZE}.
 
 Se quest'ultima eccede la dimensione massima specificata da \var{mq\_msgsize}
 le funzioni ritornano immediatamente con un errore di \errcode{EMSGSIZE}.
 
-L'argomento \param{msg\_prio} indica la priorità dell'argomento, che, essendo
-definito come \ctyp{unsigned int}, è sempre un intero positivo. I messaggi di
+L'argomento \param{msg\_prio} indica la priorità dell'argomento che essendo
+definito come \ctyp{unsigned int} è sempre un intero positivo. I messaggi di
 priorità maggiore vengono inseriti davanti a quelli di priorità inferiore, e
 quindi saranno riletti per primi. A parità del valore della priorità il
 messaggio sarà inserito in coda a tutti quelli che hanno la stessa priorità
 priorità maggiore vengono inseriti davanti a quelli di priorità inferiore, e
 quindi saranno riletti per primi. A parità del valore della priorità il
 messaggio sarà inserito in coda a tutti quelli che hanno la stessa priorità
@@ -4963,11 +4963,11 @@ quindi bloccato (causando a questo punto una interruzione delle stampe
 eseguite da \file{message\_getter}). Terminato il tempo di attesa si rilascerà
 (\texttt{\small 29-32}) il semaforo per poi uscire.
 
 eseguite da \file{message\_getter}). Terminato il tempo di attesa si rilascerà
 (\texttt{\small 29-32}) il semaforo per poi uscire.
 
-Per verificare il funzionamento dei programmi occorrerà lanciare per primo
-\file{message\_getter}\footnote{lanciare per primo \file{message\_setter} darà
-  luogo ad un errore, non essendo stati creati il semaforo ed il segmento di
-  memoria condivisa.} che inizierà a stampare una volta al secondo il
-contenuto del messaggio ed i suoi dati, con qualcosa del tipo:
+Per verificare il funzionamento dei programmi occorrerà lanciare prima
+\file{message\_getter} (lanciare per primo \file{message\_setter} darebbe
+luogo ad un errore, non essendo stati creati il semaforo ed il segmento di
+memoria condivisa) che inizierà a stampare una volta al secondo il contenuto
+del messaggio ed i suoi dati, con qualcosa del tipo:
 \begin{Console}
 piccardi@hain:~/gapil/sources$  \textbf{./message_getter messaggio}
 sem=1, Fri Dec 31 14:12:41 2010
 \begin{Console}
 piccardi@hain:~/gapil/sources$  \textbf{./message_getter messaggio}
 sem=1, Fri Dec 31 14:12:41 2010
@@ -4990,10 +4990,8 @@ Sleeping for 3 seconds
 \end{Console}
 %$
 dove il programma si fermerà per 3 secondi prima di rilasciare il semaforo e
 \end{Console}
 %$
 dove il programma si fermerà per 3 secondi prima di rilasciare il semaforo e
-terminare. 
-
-L'effetto di questo programma si potrà però apprezzare meglio nell'uscita di
-\file{message\_getter}, che verrà interrotta per questo stesso tempo, prima di
+terminare. L'effetto di tutto ciò si potrà vedere nell'\textit{output} di
+\file{message\_getter}, che verrà interrotto per questo stesso tempo, prima di
 ricominciare con il nuovo testo:
 \begin{Console}
 ...
 ricominciare con il nuovo testo:
 \begin{Console}
 ...