Aggiunte varie a giro.
[gapil.git] / signal.tex
index 4b5ff406b275d30a37c3826d17bf5b8e1b09fd2d..f7bae08adb1e6ff6dff15e03bcdf1a872670aa8a 100644 (file)
@@ -52,20 +52,22 @@ dei segnali (dette semantiche) che vengono chiamate rispettivamente
 Nella semantica \textit{unreliable} la routine di gestione del segnale
 specificata dall'utente non resta installata una volta chiamata; è perciò a
 carico dell'utente stesso ripetere l'installazione all'interno della routine
-stessa in tutti i casi in cui si vuole che il signal handler esterno resti
-attivo.
-
-Per questo motivo è possibile una race-condition in cui il segnale arriva
-prima che il suo manipolatore sia installato, nel qual caso il segnale può
-essere perso o causare il comportamento originale (in genere la terminazione
-del processo). Questa è la ragione per cui detti segnali sono chiamati
-\textit{inaffidabili}, in quanto la ricezione del segnale e la reinstallazione
-del suo manipolatore non sono operazioni atomiche.
-
-In caso di implementazione inaffidabile le chiamate di sistema non sono fatte
-ripartire automaticamente quando sono interrotte da un segnale, per questo il
-programma deve controllare lo stato di uscita della chiamata al sistema e
-riperterla nel caso l'errore riportato da \texttt{errno} sia \texttt{EINTR}.
+di gestione stessa in tutti i casi in cui si vuole che il signal handler
+esterno resti attivo.
+
+Per questo motivo è possibile una race-condition in cui un secondo segnale
+arriva prima che il manipolatore abbia eseguito la re-installazione di se
+stesso, nel qual caso il segnale può essere perso o causare il comportamento
+originale assegnato al segnale (in genere la terminazione del processo).
+Questa è la ragione per cui detti segnali sono chiamati \textit{inaffidabili},
+in quanto la ricezione del segnale e la reinstallazione del suo manipolatore
+non sono operazioni atomiche.
+
+Nel caso di implementazione inaffidabile le chiamate di sistema non
+sono fatte ripartire automaticamente quando sono interrotte da un segnale, per
+questo il programma deve controllare lo stato di uscita della chiamata al
+sistema e riperterla nel caso l'errore riportato da \texttt{errno} sia
+\texttt{EINTR}.
 
 Inoltre in questo caso non esiste una modalità semplice per ottenere una
 operazione di pausa atomica (cioè mandare in sleep un processo fino all'arrivo
@@ -82,7 +84,6 @@ ottenere un'operazione di pausa atomica (usando la funzione POSIX
 \subsubsection{Tipi di segnali}
 \label{sec:sig_types}
 
-
 In generale gli eventi che generano i segnali si possono dividere in tre
 categorie principali: errori, eventi e richieste esplicite. 
 
@@ -194,7 +195,60 @@ segnali sono definiti nell'header di sistema \texttt{signal.h}.
 
 Il numero totale di segnali presenti è dato dalla macro \texttt{NSIG}, e dato
 che i numeri dei segnali sono allocati progressivamente, essa corrisponde
-anche al successivo del valore numerico assegnato all'ultimo segnale definito.
+anche al successivo del valore numerico assegnato all'ultimo segnale definito,
+in \ntab\ si è riportato l'elenco completo dei segnali definiti in Linux,
+comparati con quelli definiti in vari standard.
+
+\begin{table}[htb]
+  \centering
+  \begin{tabular}[c]{|l|c|c|c||c|l|}
+    \hline
+    Segnale  & POSIX.1 & SUSv2 & Linux  &Azione &  Descrizione                \\
+    \hline
+    \hline
+    SIGHUP   &$\bullet$&&$\bullet$&  A  & Hangup                                \\
+    SIGINT   &$\bullet$&&$\bullet$&  A  & Interrupt from keyboard               \\
+    SIGQUIT  &$\bullet$&&$\bullet$&  C  & Quit from keyboard                    \\
+    SIGILL   &$\bullet$&&$\bullet$&  C  & Illegal Instruction                   \\
+    SIGABRT  &$\bullet$&&$\bullet$&  C  & Abort signal from abort(3)            \\
+    SIGFPE   &$\bullet$&&$\bullet$&  C  & Floating point exception              \\
+    SIGKILL  &$\bullet$&&$\bullet$& AEF & Kill signal                           \\
+    SIGSEGV  &$\bullet$&&$\bullet$&  C  & Invalid memory reference              \\
+    SIGPIPE  &$\bullet$&&$\bullet$&  A  & Broken pipe                           \\
+    SIGALRM  &$\bullet$&&$\bullet$&  A  & Timer signal from alarm(2)            \\
+    SIGTERM  &$\bullet$&&$\bullet$&  A  & Termination signal                    \\
+    SIGUSR1  &$\bullet$&&$\bullet$&  A  & User-defined signal 1                 \\
+    SIGUSR2  &$\bullet$&&$\bullet$&  A  & User-defined signal 2                 \\
+    SIGCHLD  &$\bullet$&&$\bullet$&  B  & Child stopped or terminated           \\
+    SIGCONT  &$\bullet$&&$\bullet$&     & Continue if stopped                   \\
+    SIGSTOP  &$\bullet$&&$\bullet$& DEF & Stop process                          \\
+    SIGTSTP  &$\bullet$&&$\bullet$&  D  & Stop typed at tty                     \\
+    SIGTTIN  &$\bullet$&&$\bullet$&  D  & tty input for background process      \\
+    SIGTTOU  &$\bullet$&&$\bullet$&  D  & tty output for background process     \\
+    SIGBUS    &&$\bullet$&$\bullet$& C & Bus error (bad memory access)         \\
+    SIGPOLL   &&$\bullet$&$\bullet$& A & Pollable event (Sys V). Synonym of SIGIO\\
+    SIGPROF   &&$\bullet$&$\bullet$& A & Profiling timer expired               \\
+    SIGSYS    &&$\bullet$&$\bullet$& C & Bad argument to routine (SVID)        \\
+    SIGTRAP   &&$\bullet$&$\bullet$& C & Trace/breakpoint trap                 \\
+    SIGURG    &&$\bullet$&$\bullet$& B & Urgent condition on socket (4.2 BSD)  \\
+    SIGVTALRM &&$\bullet$&$\bullet$& A & Virtual alarm clock (4.2 BSD)         \\
+    SIGXCPU   &&$\bullet$&$\bullet$& C & CPU time limit exceeded (4.2 BSD)     \\
+    SIGXFSZ   &&$\bullet$&$\bullet$& C & File size limit exceeded (4.2 BSD)    \\
+    SIGIOT    &&&$\bullet$& C &     IOT trap. A synonym for SIGABRT        \\
+    SIGEMT    &&&$\bullet$&   &                                            \\
+    SIGSTKFLT &&&$\bullet$& A &     Stack fault on coprocessor             \\
+    SIGIO     &&&$\bullet$& A &     I/O now possible (4.2 BSD)             \\
+    SIGCLD    &&&$\bullet$&   &     A synonym for SIGCHLD                  \\
+    SIGPWR    &&&$\bullet$& A &     Power failure (System V)               \\
+    SIGINFO   &&&$\bullet$&   &     A synonym for SIGPWR                   \\
+    SIGLOST   &&&$\bullet$& A &     File lock lost                         \\
+    SIGWINCH  &&&$\bullet$& B &     Window resize signal (4.3 BSD, Sun)    \\
+    SIGUNUSED &&&$\bullet$& A &     Unused signal (will be SIGSYS)         \\
+    \hline
+  \end{tabular}
+  \caption{Lista dei segnali in Linux}
+  \label{tab:sign_signal_list}
+\end{table}
 
 
 \subsubsection{Segnali di errore di programma}
@@ -225,7 +279,7 @@ Questi segnali sono:
 \begin{itemize}
 \item \texttt{SIGFPE} Riporta un errore aritmetico fatale. Benché il nome
   derivi da \textit{floating point exception} si applica a tutti gli errori
-  aritmetici compresa la divisione per zero e l'overflow.
+  aritmetici compresa la divisione per zero e l'overflow. 
 
 %   Per questo segnale le cose sono complicate dal fatto che possono esserci
 %   molte diverse eccezioni che \texttt{SIGFPE} non distingue, mentre lo