X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=signal.tex;h=f53e50b04d572b4bba0022ca38ede2e5da24dccf;hp=5572fd4410886502429efef7316b4c1dd796f5de;hb=bf78d63598adf72d71aeea3c32277dd63484bb02;hpb=38dff25efc0d3ae24d82724cd196c583c2362737 diff --git a/signal.tex b/signal.tex index 5572fd4..f53e50b 100644 --- a/signal.tex +++ b/signal.tex @@ -1854,19 +1854,20 @@ in \tabref{tab:sig_sa_flag}. \end{table} Come si può notare in \figref{fig:sig_sigaction} \func{sigaction} -permette\footnote{La possibilità è prevista dallo standard POSIX.1b, ma in - Linux è stata aggiunta a partire dai kernel della serie 2.2.x. In precedenza - era possibile ottenere alcune informazioni addizionali usando - \var{sa\_handler} con un secondo parametro addizionale di tipo \var{struct - sigcontext}, che adesso è deprecato.} di utilizzare due forme diverse di -manipolatore, da specificare, a seconda dell'uso o meno del flag -\macro{SA\_SIGINFO}, rispettivamente attraverso i campi \var{sa\_sigaction} o -\var{sa\_handler}, (che devono essere usati in maniera alternativa, in certe -implementazioni questi vengono addirittura definiti come \ctyp{union}): la -prima è quella classica usata anche con \func{signal}, la seconda permette -invece di usare un manipolatore in grado di ricevere informazioni più -dettagliate dal sistema, attraverso la struttura \type{siginfo\_t}, riportata -in \figref{fig:sig_siginfo_t}. +permette\footnote{La possibilità è prevista dallo standard POSIX.1b, ed è + stata aggiunta a partire dai kernel della serie 2.1.x con l'introduzione dei + segnali real-time (vedi \secref{sec:sig_real_time}). In precedenza era + possibile ottenere alcune informazioni addizionali usando \var{sa\_handler} + con un secondo parametro addizionale di tipo \var{struct sigcontext}, che + adesso è deprecato.} di utilizzare due forme diverse di manipolatore, da +specificare, a seconda dell'uso o meno del flag \macro{SA\_SIGINFO}, +rispettivamente attraverso i campi \var{sa\_sigaction} o \var{sa\_handler}, +(che devono essere usati in maniera alternativa, in certe implementazioni +questi vengono addirittura definiti come \ctyp{union}): la prima è quella +classica usata anche con \func{signal}, la seconda permette invece di usare un +manipolatore in grado di ricevere informazioni più dettagliate dal sistema, +attraverso la struttura \type{siginfo\_t}, riportata in +\figref{fig:sig_siginfo_t}. \begin{figure}[!htb] \footnotesize \centering @@ -2334,6 +2335,50 @@ parte l'uso di \type{sigjmp\_buf} per \param{env}, \func{longjmp}. + +\subsection{I segnali real-time} +\label{sec:sig_real_time} + + +Lo standard POSIX.1b, nel definire una serie di nuove interfacce per i servizi +real-time, ha introdotto una estensione del modello classico dei segnali che +presenta dei significativi miglioramenti,\footnote{questa estensione è stata + introdotta in Linux a partire dal kernel 2.1.43(?), e dalle \acr{glibc} + 2.1(?).} in particolare sono stati superati tre limiti fondamentali dei +segnali classici: +\begin{description} +\item[I segnali non sono accumulati] se più segnali vengono generati prima + dell'esecuzione di un manipolatore questo sarà eseguito una sola volta, ed + il processo non sarà in grado di accorgersi di quante volte l'evento che ha + generato il segnale è accaduto. +\item[I segnali non trasportano informazione] i segnali classici non prevedono + prevedono altra informazione sull'evento che li ha generati che il loro + numero. +\item[I segnali non hanno un ordine di consegna] l'ordine in cui diversi + segnali vengono consegnati è casuale e non prevedibile, e dipende dalla + situazione in cui si trova il kernel al momento. +\end{description} + +Le nuove caratteristiche aggiunte a quelli che vengono chiamati +\textsl{segnali real-time}, sono le seguenti: + +\begin{itemize*} +\item la creazione di una coda che permette di consegnare istanze multiple + dello stesso segnale qualora esso venga inviato più volte prima + dell'esecuzione del manipolatore. +\item l'introduzione di una priorità nella consegna dei segnali (segnali a + priorità più alta vengono consegnati prima). +\item la possibilità di restituire dei dati al manipolatore, attraverso l'uso + della struttura \type{siginfo\_t} e dei manipolatori di tipo + \var{sa_sigaction}. +\end{itemize*} + +Per non interferire con i segnali standard POSIX i nuovi segnali sono +definiti, in \file{signal.h} a partire da un valore minimo \macro{SIGRTMIN} +fino \macro{SIGRTMAX} ad un massimo di + + + %%% Local Variables: %%% mode: latex %%% TeX-master: "gapil"