From: Simone Piccardi Date: Mon, 19 Aug 2002 23:01:25 +0000 (+0000) Subject: Rifiniture X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=cc629a1810e344eb268cb7766dc2af0980b23b66;hp=c1b22636d04ef04d31842b40878c83fa63ebe739 Rifiniture --- diff --git a/ipc.tex b/ipc.tex index c3fa85a..fcf702a 100644 --- 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. - 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. - 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. - - -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