Rifiniture
authorSimone Piccardi <piccardi@gnulinux.it>
Mon, 19 Aug 2002 23:01:25 +0000 (23:01 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Mon, 19 Aug 2002 23:01:25 +0000 (23:01 +0000)
ipc.tex

diff --git a/ipc.tex b/ipc.tex
index c3fa85aa6b49d8891183a7195facad3fe8487ad6..fcf702ab2fe399f8dcd48667b01e863edd9a0256 100644 (file)
--- a/ipc.tex
+++ b/ipc.tex
@@ -792,7 +792,6 @@ la richiesta, se non si fosse fatto cos
 quanto senza la richiesta, il server non avrebbe potuto aprirne il capo in
 scrittura e l'apertura si sarebbe bloccata indefinitamente.
 
 quanto senza la richiesta, il server non avrebbe potuto aprirne il capo in
 scrittura e l'apertura si sarebbe bloccata indefinitamente.
 
-
 Benché il nostro sistema client-server funzioni, la sua struttura è piuttosto
 complessa e continua ad avere vari inconvenienti\footnote{lo stesso Stevens,
   che esamina questa architettura in \cite{APUE}, nota come sia impossibile
 Benché il nostro sistema client-server funzioni, la sua struttura è piuttosto
 complessa e continua ad avere vari inconvenienti\footnote{lo stesso Stevens,
   che esamina questa architettura in \cite{APUE}, nota come sia impossibile
@@ -1120,7 +1119,6 @@ di volte. Al solito non si 
 a riga di comando, che permette di specificare quante volte effettuare il
 ciclo \var{n}, e su quale tipo di oggetto eseguirlo.
 
 a riga di comando, che permette di specificare quante volte effettuare il
 ciclo \var{n}, e su quale tipo di oggetto eseguirlo.
 
-
 La figura non riporta il codice di selezione delle opzioni, che permette di
 inizializzare i valori delle variabili \var{type} al tipo di oggetto voluto, e
 \var{n} al numero di volte che si vuole effettuare il ciclo di creazione,
 La figura non riporta il codice di selezione delle opzioni, che permette di
 inizializzare i valori delle variabili \var{type} al tipo di oggetto voluto, e
 \var{n} al numero di volte che si vuole effettuare il ciclo di creazione,
@@ -1209,11 +1207,29 @@ Se si imposta anche il bit corrispondente a \macro{IPC\_EXCL} la funzione avr
 successo solo se l'oggetto non esiste già, fallendo con un errore di
 \macro{EEXIST} altrimenti.
 
 successo solo se l'oggetto non esiste già, fallendo con un errore di
 \macro{EEXIST} altrimenti.
 
-
-
-Una coda di messaggi è costituita da una \textit{linked list} in cui nuovi
-messaggi vengono inseriti in coda e letti dalla cima, con una struttura del
-tipo di quella illustrata in
+Una coda di messaggi è costituita da una \textit{linked list}\footnote{una
+  \textit{linked list} è una tipica struttura di dati, organizzati in una
+  lista in cui ciascun elemento contiene un puntatore al successivo. In questo
+  modo la struttura è veloce nell'estrazione ed immissione dei dati dalle
+  estremità dalla lista (basta aggiungere un elemento in testa o in coda ed
+  aggiornare un puntatore), e relativamente veloce da attraversare in ordine
+  sequenziale (seguendo i puntatori), è invece relativamente lenta
+  nell'accesso casuale e nella ricerca.} in cui nuovi messaggi vengono
+inseriti in coda per poi essere letti dalla cima, con una struttura del tipo
+di quella illustrata in 
+
+
+Si tenga conto che l'uso di \macro{IPC\_PRIVATE} non impedisce ad altri
+processi di accedere alla coda (se hanno privilegi sufficienti) una volta che
+questi possano indovinare o ricavare l'identificatore ad essa associato. Per
+la loro implementazione non esiste cioè una maniera che garantisca l'accesso
+esclusivo ad una coda di messaggi. Usare \macro{IPC\_PRIVATE} o
+macro{IPC\_CREAT} e \macro{IPC\_EXCL} per \param{flag} comporta solo la
+creazione di una nuova coda. 
+
+Le code di messaggi sono caratterizzate da tre limiti 
+
+Una volta creata una coda di messaggi se ne può controllare