successo solo se l'oggetto non esiste già, fallendo con un errore di
\macro{EEXIST} altrimenti.
+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.
+
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
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
+di quella illustrata in \secref{fig:ipc_mq_schema}.\footnote{la struttura è
+ effettivamente in uso fino ai kernel della serie 2.2.x. Viene mantenuta nei
+ kernel della serie 2.4.x, dove la gestione è effettuata con strutture
+ diverse, solo per compatibilità; essa comunque è quella restituita dalle
+ funzioni dell'interfaccia ed illustra in maniera adeguata i principi di
+ funzionamento delle code di messaggi.}
+
+\begin{figure}[htb]
+ \centering
+ \includegraphics[width=15cm]{img/mqstruct}
+ \caption{Schema della struttura di una coda messaggi.}
+ \label{fig:ipc_mq_schema}
+\end{figure}
+Le code di messaggi sono caratterizzate da tre limiti fondamentali, definiti
+negli header e corrispondenti alle prime tre costanti riportate in , come
+accennato però in Linux è possibile modificare questi limiti attraverso l'uso
+di \func{syscntl} o scrivendo nei file \file{msgmax}, \file{msgmnb} e
+\file{msgmni} di \file{/proc/sys/kernel/}.
-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
+\begin{table}[htb]
+ \centering
+ \begin{tabular}[c]{|c|c|l|l}
+ \hline
+ \textbf{Costante} & \textbf{Valore} & \textbf{File in \texttt{proc}}
+ & \textbf{Significato} \\
+ \hline
+ \hline
+ \macro{MSGMNI}& 16& \file{msgmni} & Numero massimo di code di
+ messaggi. \\
+ \macro{MSGMAX}& 8192& \file{msgmax} & Dimensione massima di un singolo
+ messaggio.\\
+ \macro{MSGMNB}&16384& \file{msgmnb} & Dimensione massima di una coda di
+ messaggi.\\
+ \hline
+ \end{tabular}
+ \caption{Valori delle costanti associati ai limiti delle code di messaggi.}
+ \label{tab:ipc_msg_limits}
+\end{table}
Una volta creata una coda di messaggi se ne può controllare
Tralasciando la descrizione del sistema dei run level, (per il quale si
rimanda alla lettura della pagina di manuale di \cmd{init} e di
\file{inittab}) quello che comunque viene sempre fatto è di lanciare almeno
-una istanza di un programma che permetta l'accesso ad un terminale.
+una istanza di un programma che permetta l'accesso ad un terminale. Uno schema
+di massima della procedura è riportato in \secref{fig:sess_term_login}.
+
+\begin{figure}[htb]
+ \centering
+ \includegraphics[width=15cm]{img/tty_login}
+ \caption{Schema della procedura di login su un terminale.}
+ \label{fig:sess_term_login}
+\end{figure}
Un terminale, che esso sia un terminale effettivo, attaccato ad una seriale o
ad un altro tipo di porta di comunicazione, o una delle console virtuali