Aggiornamenti e correzioni finali, più materiale su lockf
[gapil.git] / ipc.tex
diff --git a/ipc.tex b/ipc.tex
index 7e5645de914e3c40a15e64e5a33ff522903e912b..dcc89fde09e9bd905aae282365bc395de817c2cb 100644 (file)
--- a/ipc.tex
+++ b/ipc.tex
@@ -3097,16 +3097,6 @@ sarà vista nella forma data da \struct{DirProp}. Infine (\texttt{\small
 di interfaccia già descritte in sez.~\ref{sec:ipc_sysv_sem}, anche un mutex,
 che utilizzeremo per regolare l'accesso alla memoria condivisa.
 
 di interfaccia già descritte in sez.~\ref{sec:ipc_sysv_sem}, anche un mutex,
 che utilizzeremo per regolare l'accesso alla memoria condivisa.
 
-\begin{figure}[!htbp]
-  \footnotesize \centering
-  \begin{minipage}[c]{\codesamplewidth}
-    \includecodesample{listati/ComputeValues.c}
-  \end{minipage} 
-  \normalsize 
-  \caption{Codice delle funzioni ausiliarie usate da \file{DirMonitor.c}.}
-  \label{fig:ipc_dirmonitor_sub}
-\end{figure}
-
 Completata l'inizializzazione e la creazione degli oggetti di
 intercomunicazione il programma entra nel ciclo principale (\texttt{\small
   40--49}) dove vengono eseguite indefinitamente le attività di monitoraggio.
 Completata l'inizializzazione e la creazione degli oggetti di
 intercomunicazione il programma entra nel ciclo principale (\texttt{\small
   40--49}) dove vengono eseguite indefinitamente le attività di monitoraggio.
@@ -3133,6 +3123,17 @@ descritta in dettaglio) in sez.~\ref{sec:file_dir_read}, che ci permette di
 effettuare la scansione delle voci della directory, chiamando per ciascuna di
 esse la funzione \func{ComputeValues}, che esegue tutti i calcoli necessari.
 
 effettuare la scansione delle voci della directory, chiamando per ciascuna di
 esse la funzione \func{ComputeValues}, che esegue tutti i calcoli necessari.
 
+\begin{figure}[!htbp]
+  \footnotesize \centering
+  \begin{minipage}[c]{\codesamplewidth}
+    \includecodesample{listati/ComputeValues.c}
+  \end{minipage} 
+  \normalsize 
+  \caption{Codice delle funzioni ausiliarie usate da \file{DirMonitor.c}.}
+  \label{fig:ipc_dirmonitor_sub}
+\end{figure}
+
+
 Il codice di quest'ultima è riportato in fig.~\ref{fig:ipc_dirmonitor_sub}.
 Come si vede la funzione (\texttt{\small 2--16}) è molto semplice e si limita
 a chiamare (\texttt{\small 5}) la funzione \func{stat} sul file indicato da
 Il codice di quest'ultima è riportato in fig.~\ref{fig:ipc_dirmonitor_sub}.
 Come si vede la funzione (\texttt{\small 2--16}) è molto semplice e si limita
 a chiamare (\texttt{\small 5}) la funzione \func{stat} sul file indicato da
@@ -3616,7 +3617,7 @@ non è detto che altrettanto valga per altri kernel. In particolare, come si
 può facilmente verificare con il comando \cmd{strace}, sia per la memoria
 condivisa che per le code di messaggi varie \textit{system call} utilizzate da
 Linux corrispondono in realtà a quelle ordinarie dei file, essendo detti
 può facilmente verificare con il comando \cmd{strace}, sia per la memoria
 condivisa che per le code di messaggi varie \textit{system call} utilizzate da
 Linux corrispondono in realtà a quelle ordinarie dei file, essendo detti
-oggetti realizzati come tali in appositi filesystem.
+oggetti realizzati come tali usando degli specifici filesystem.
 
 In particolare i permessi associati agli oggetti di IPC POSIX sono identici ai
 permessi dei file, ed il controllo di accesso segue esattamente la stessa
 
 In particolare i permessi associati agli oggetti di IPC POSIX sono identici ai
 permessi dei file, ed il controllo di accesso segue esattamente la stessa
@@ -3935,8 +3936,8 @@ I rispettivi prototipi sono:
 \fhead{mqueue.h}
 \fhead{time.h}
 \fdecl{int mq\_timedsend(mqd\_t mqdes, const char *msg\_ptr, size\_t
 \fhead{mqueue.h}
 \fhead{time.h}
 \fdecl{int mq\_timedsend(mqd\_t mqdes, const char *msg\_ptr, size\_t
-    msg\_len, unsigned int msg\_prio,\\ 
-\phantom{int mq\_timedsend(}const struct timespec *abs\_timeout)}
+    msg\_len, \\ 
+\phantom{int mq\_timedsend(}unsigned int msg\_prio, const struct timespec *abs\_timeout)}
 \fdesc{Esegue l'inserimento di un messaggio su una coda entro un tempo
   specificato}
 }
 \fdesc{Esegue l'inserimento di un messaggio su una coda entro un tempo
   specificato}
 }
@@ -4271,11 +4272,11 @@ lunghezza nulla. Il nuovo segmento verrà creato con i permessi indicati
 da \param{mode} (di cui vengono usati solo i 9 bit meno significativi, non si
 applicano pertanto i permessi speciali di sez.~\ref{sec:file_special_perm})
 filtrati dal valore dell'\textit{umask} del processo. Come gruppo ed utente
 da \param{mode} (di cui vengono usati solo i 9 bit meno significativi, non si
 applicano pertanto i permessi speciali di sez.~\ref{sec:file_special_perm})
 filtrati dal valore dell'\textit{umask} del processo. Come gruppo ed utente
-propritario del segmento saranno presi quelli facenti parte del gruppo
+proprietario del segmento saranno presi quelli facenti parte del gruppo
 \textit{effective} del processo chiamante.
 
 Dato che un segmento di lunghezza nulla è di scarsa utilità, una vola che lo
 \textit{effective} del processo chiamante.
 
 Dato che un segmento di lunghezza nulla è di scarsa utilità, una vola che lo
-si è creato per impostarne la dimensione si devrà poi usare \func{ftruncate}
+si è creato per impostarne la dimensione si dovrà poi usare \func{ftruncate}
 (vedi sez.~\ref{sec:file_file_size}) prima di mapparlo in memoria con
 \func{mmap}.  Si tenga presente che una volta chiamata \func{mmap} si può
 chiudere il file descriptor ad esso associato (semplicemente con
 (vedi sez.~\ref{sec:file_file_size}) prima di mapparlo in memoria con
 \func{mmap}.  Si tenga presente che una volta chiamata \func{mmap} si può
 chiudere il file descriptor ad esso associato (semplicemente con
@@ -4324,7 +4325,7 @@ Come esempio dell'uso delle funzioni attinenti ai segmenti di memoria
 condivisa POSIX, vediamo come è possibile riscrivere una interfaccia
 semplificata analoga a quella vista in fig.~\ref{fig:ipc_sysv_shm_func} per la
 memoria condivisa in stile SysV. Il codice completo, di cui si sono riportate
 condivisa POSIX, vediamo come è possibile riscrivere una interfaccia
 semplificata analoga a quella vista in fig.~\ref{fig:ipc_sysv_shm_func} per la
 memoria condivisa in stile SysV. Il codice completo, di cui si sono riportate
-le parti esseziali in fig.~\ref{fig:ipc_posix_shmmem}, è contenuto nel file
+le parti essenziali in fig.~\ref{fig:ipc_posix_shmmem}, è contenuto nel file
 \file{SharedMem.c} dei sorgenti allegati.
 
 \begin{figure}[!htb]
 \file{SharedMem.c} dei sorgenti allegati.
 
 \begin{figure}[!htb]
@@ -4446,15 +4447,15 @@ utilizzare, ed è quello che permette a processi diversi di accedere allo
 stesso semaforo. Questo deve essere specificato nella stessa forma utilizzata
 per i segmenti di memoria condivisa, con un nome che inizia con ``\texttt{/}''
 e senza ulteriori ``\texttt{/}'', vale a dire nella forma
 stesso semaforo. Questo deve essere specificato nella stessa forma utilizzata
 per i segmenti di memoria condivisa, con un nome che inizia con ``\texttt{/}''
 e senza ulteriori ``\texttt{/}'', vale a dire nella forma
-\texttt{/nomesemaforo}.
+\texttt{/nome-semaforo}.
 
 Con Linux i file associati ai semafori sono mantenuti nel filesystem virtuale
 \texttt{/dev/shm}, e gli viene assegnato automaticamente un nome nella forma
 
 Con Linux i file associati ai semafori sono mantenuti nel filesystem virtuale
 \texttt{/dev/shm}, e gli viene assegnato automaticamente un nome nella forma
-\texttt{sem.nomesemaforo}, si ha cioè una corrispondenza per cui
-\texttt{/nomesemaforo} viene rimappato, nella creazione tramite
-\func{sem\_open}, su \texttt{/dev/shm/sem.nomesemaforo}. Per questo motivo la
+\texttt{sem.nome-semaforo}, si ha cioè una corrispondenza per cui
+\texttt{/nome-semaforo} viene rimappato, nella creazione tramite
+\func{sem\_open}, su \texttt{/dev/shm/sem.nome-semaforo}. Per questo motivo la
 dimensione massima per il nome di un semaforo, a differenza di quanto avviene
 dimensione massima per il nome di un semaforo, a differenza di quanto avviene
-per i segmenti di memoria confivisa, è pari a \const{NAME\_MAX}$ - 4$.
+per i segmenti di memoria condivisa, è pari a \const{NAME\_MAX}$ - 4$.
 
 L'argomento \param{oflag} è quello che controlla le modalità con cui opera la
 funzione, ed è passato come maschera binaria; i bit corrispondono a quelli
 
 L'argomento \param{oflag} è quello che controlla le modalità con cui opera la
 funzione, ed è passato come maschera binaria; i bit corrispondono a quelli
@@ -4527,7 +4528,7 @@ decrementarlo con successo e proseguire.
 
 Si tenga presente che la funzione può sempre essere interrotta da un segnale,
 nel qual caso si avrà un errore di \const{EINTR}; inoltre questo avverrà
 
 Si tenga presente che la funzione può sempre essere interrotta da un segnale,
 nel qual caso si avrà un errore di \const{EINTR}; inoltre questo avverrà
-comunque, anche qualora si fosse richiesta la gesione con la semantica BSD,
+comunque, anche qualora si fosse richiesta la gestione con la semantica BSD,
 installando il gestore del suddetto segnale con l'opzione \const{SA\_RESTART}
 (vedi sez.~\ref{sec:sig_sigaction}) per riavviare le \textit{system call}
 interrotte.
 installando il gestore del suddetto segnale con l'opzione \const{SA\_RESTART}
 (vedi sez.~\ref{sec:sig_sigaction}) per riavviare le \textit{system call}
 interrotte.
@@ -4591,7 +4592,7 @@ Anche in questo caso il comportamento della funzione è identico a quello di
 \func{sem\_wait}, ma è possibile impostare un tempo limite per l'attesa
 tramite la struttura \struct{timespec} (vedi
 fig.~\ref{fig:sys_timespec_struct}) puntata
 \func{sem\_wait}, ma è possibile impostare un tempo limite per l'attesa
 tramite la struttura \struct{timespec} (vedi
 fig.~\ref{fig:sys_timespec_struct}) puntata
-dall'argomento \param{abs\_timeout}, indicato in secondi e nonosecondi a
+dall'argomento \param{abs\_timeout}, indicato in secondi e nanosecondi a
 partire dalla cosiddetta \textit{Epoch} (00:00:00, 1 January 1970
 UTC). Scaduto il limite la funzione ritorna anche se non è possibile acquisire
 il semaforo fallendo con un errore di \errval{ETIMEDOUT}.
 partire dalla cosiddetta \textit{Epoch} (00:00:00, 1 January 1970
 UTC). Scaduto il limite la funzione ritorna anche se non è possibile acquisire
 il semaforo fallendo con un errore di \errval{ETIMEDOUT}.
@@ -5079,11 +5080,12 @@ testo alla terminazione di quest'ultimo.
 % LocalWords:  Larry Wall Escape the Hell William ipctestid Identifier segment
 % LocalWords:  violation dell'I SIGINT setter Fri Dec Sleeping seconds ECHILD
 % LocalWords:  SysV capability short RESOURCE INFO UNDEFINED EFBIG semtimedop
 % LocalWords:  Larry Wall Escape the Hell William ipctestid Identifier segment
 % LocalWords:  violation dell'I SIGINT setter Fri Dec Sleeping seconds ECHILD
 % LocalWords:  SysV capability short RESOURCE INFO UNDEFINED EFBIG semtimedop
-% LocalWords:  scan HUGETLB huge page NORESERVE copy RLIMIT MEMLOCK REMAP
-% LocalWords:  readmon Hierarchy defaults queues MSGQUEUE
+% LocalWords:  scan HUGETLB huge page NORESERVE copy RLIMIT MEMLOCK REMAP UTC
+% LocalWords:  readmon Hierarchy defaults queues MSGQUEUE effective fstat
 
 
 %%% Local Variables: 
 %%% mode: latex
 %%% TeX-master: "gapil"
 %%% End: 
 
 
 %%% Local Variables: 
 %%% mode: latex
 %%% TeX-master: "gapil"
 %%% End: 
+% LocalWords:  fchown fchmod Epoch January