From: Simone Piccardi Date: Sat, 24 Aug 2002 20:45:48 +0000 (+0000) Subject: Aggiunte un po' di figure su message queue e login da terminale X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=08af34cce07cd25685c8e6f867f1729c84ac65bb Aggiunte un po' di figure su message queue e login da terminale --- diff --git a/img/mqstruct.dia b/img/mqstruct.dia new file mode 100644 index 0000000..e9e2e7e Binary files /dev/null and b/img/mqstruct.dia differ diff --git a/img/tty_login.dia b/img/tty_login.dia new file mode 100644 index 0000000..99b8960 Binary files /dev/null and b/img/tty_login.dia differ diff --git a/ipc.tex b/ipc.tex index fcf702a..290fe67 100644 --- a/ipc.tex +++ b/ipc.tex @@ -1207,6 +1207,14 @@ 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. +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 @@ -1216,18 +1224,46 @@ Una coda di messaggi 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 diff --git a/session.tex b/session.tex index 969c05d..180b032 100644 --- a/session.tex +++ b/session.tex @@ -46,7 +46,15 @@ anch'esso definito nello stesso file. 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