From 08af34cce07cd25685c8e6f867f1729c84ac65bb Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Sat, 24 Aug 2002 20:45:48 +0000 Subject: [PATCH 1/1] Aggiunte un po' di figure su message queue e login da terminale --- img/mqstruct.dia | Bin 0 -> 3652 bytes img/tty_login.dia | Bin 0 -> 2055 bytes ipc.tex | 54 ++++++++++++++++++++++++++++++++++++++-------- session.tex | 10 ++++++++- 4 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 img/mqstruct.dia create mode 100644 img/tty_login.dia diff --git a/img/mqstruct.dia b/img/mqstruct.dia new file mode 100644 index 0000000000000000000000000000000000000000..e9e2e7e7cbac32b69a697c40f969a66928d32840 GIT binary patch literal 3652 zcmV-K4!iLmiwFP!000001MOX1Z{s!=eV<@=yTEpz4JFn% z-gWF$R+>p4_P3X$6g#%8*b#Y|D!x-p8hd0?lBq?||H1s7migV8`NU#nUtNuEtLpxTi;Ks{M>2m} z<<+tz^VtJg6&L@{=kxr+Ty!z|`swWKWdW1C%I$m2yLnZWv+IYdI9ud*#ntFKzxm&^ zTs|x&qx!1mx|`*ES)Tot&#y+Gzqvo7i>8>1t#V!|`#!%f%H3k`?w6~Xxukl!Z(Y(+ zj{W)Kn&zsNxo9!{`uQ*E=lYhKH#TMMyV1@{s=K_L&KB)@$|9fF4}uZR7<+yWZ?EDS zzKS_~6(xKXv(@;1Syp8}tJ>9EFPHNoU(_{KpQ3HzNVw3+vc*1Lk-`(?${R8Z|!tcu8Mj7RFqBeKX1CI zv*sB$z<==+me>C+ZmOnv|E}`IBrhjtU(SABejjamT+`pqCRd|>Cfko^w?U>bLqM(P zbH7}FkAkps@iG>>zRRxSudjDYFU|eui|M?0u7PIf_Q$0rDK)=o+OM`^UfhjumgS<| z(S~Y}tHPnT-Kb~ea<9T~i`n$H>MlJYvR~=f%W_hbhi*P0Nzc1q-7X);dj?sDJG1?W zzt{wO@93w#(Vvj?T#^(p`V+!4Qw7g1Ig#{SkpwjQy&8nk|0j+9f6Nxep73YB;cr6n zoDl&S{+tLcOdb5va5A;OseZNHEEkJ$v6#5Ke^Z~Q{g_^;8 zaYXR)p3qxN#(7yTA9o8cOkA?aRo=j}22I)?-5k zJ~r&#AnY9nH8xCxL_c)wbCNZ&Z{iX@_A&BLAo4|s$mb+N?DKW(C*ZNqaaME^(Jw

Ceox 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 literal 0 HcmV?d00001 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 -- 2.30.2