X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=signal.tex;h=cc2a06bb6e3fedde1c6c66da109deca89c0d75e4;hp=4f107af2f6d3a8013593c7d880a8495808c5c0a3;hb=265547995607b3ec2c04f9b8b035b416e892920b;hpb=8f0d759b2a9864c839d8803b2ea12860f386f17d diff --git a/signal.tex b/signal.tex index 4f107af..cc2a06b 100644 --- a/signal.tex +++ b/signal.tex @@ -134,9 +134,9 @@ Si dice che il segnale viene \textsl{consegnato} al processo (dall'inglese \textit{delivered}) quando viene eseguita l'azione per esso prevista, mentre per tutto il tempo che passa fra la generazione del segnale e la sua consegna esso è detto \textsl{pendente} (o \textit{pending}). In genere questa -procedura viene effettuata dallo \itindex{scheduler} scheduler quando, -riprendendo l'esecuzione del processo in questione, verifica la presenza del -segnale nella \struct{task\_struct} e mette in esecuzione il gestore. +procedura viene effettuata dallo \textit{scheduler} quando, riprendendo +l'esecuzione del processo in questione, verifica la presenza del segnale nella +\struct{task\_struct} e mette in esecuzione il gestore. In questa semantica un processo ha la possibilità di bloccare la consegna dei segnali, in questo caso, se l'azione per il suddetto segnale non è quella di @@ -217,11 +217,10 @@ verrà notificato al processo o verrà specificata come azione quella di ignorarlo. Normalmente l'invio al processo che deve ricevere il segnale è immediato ed -avviene non appena questo viene rimesso in esecuzione dallo -\itindex{scheduler} scheduler che esegue l'azione specificata. Questo a meno -che il segnale in questione non sia stato bloccato prima della notifica, nel -qual caso l'invio non avviene ed il segnale resta \textsl{pendente} -indefinitamente. +avviene non appena questo viene rimesso in esecuzione dallo \textit{scheduler} +che esegue l'azione specificata. Questo a meno che il segnale in questione non +sia stato bloccato prima della notifica, nel qual caso l'invio non avviene ed +il segnale resta \textsl{pendente} indefinitamente. Quando lo si sblocca un segnale \textsl{pendente} sarà subito notificato. Si tenga presente però che tradizionalmente i segnali \textsl{pendenti} non si @@ -1655,15 +1654,16 @@ esecuzione). Per questo motivo il valore restituito in \param{rem} è sempre arrotondato al multiplo successivo di 1/\const{HZ}. Con i kernel della serie 2.4 in realtà era possibile ottenere anche pause più -precise del centesimo di secondo usando politiche di \itindex{scheduler} -scheduling \textit{real-time} come \const{SCHED\_FIFO} o \const{SCHED\_RR}; in -tal caso infatti il calcolo sul numero di interruzioni del timer veniva -evitato utilizzando direttamente un ciclo di attesa con cui si raggiungevano -pause fino ai 2~ms con precisioni del $\mu$s. Questa estensione è stata -rimossa con i kernel della serie 2.6, che consentono una risoluzione più alta -del timer di sistema; inoltre a partire dal kernel 2.6.21, \func{nanosleep} -può avvalersi del supporto dei timer ad alta risoluzione, ottenendo la massima -precisione disponibile sull'hardware della propria macchina. +precise del centesimo di secondo usando politiche di \textit{scheduling} +\textit{real-time} come \const{SCHED\_FIFO} o \const{SCHED\_RR} (vedi +sez.~\ref{sec:proc_real_time}); in tal caso infatti il calcolo sul numero di +interruzioni del timer veniva evitato utilizzando direttamente un ciclo di +attesa con cui si raggiungevano pause fino ai 2~ms con precisioni del +$\mu$s. Questa estensione è stata rimossa con i kernel della serie 2.6, che +consentono una risoluzione più alta del timer di sistema; inoltre a partire +dal kernel 2.6.21, \func{nanosleep} può avvalersi del supporto dei timer ad +alta risoluzione, ottenendo la massima precisione disponibile sull'hardware +della propria macchina. \subsection{Un esempio elementare}