Délais, alarmes et timers sous Unix

© D. Mathieu     mathieu@romarin.univ-aix.fr
I.U.T.d'Aix en Provence - Département Informatique
Créé le 04/08/2000 - Dernière mise à jour : 24/09/2001

Sommaire

Les délais sous Unix
Les délais des timers sous Unix
Les timers sous Unix

Sommaire

Les délais sous Unix

    Pour stocker un délai, la bibliothèque des fonctions système Unix (écrite en C) offre dans le fichier <sys/time.h> la déclaration suivante :
 
struct timeval
{
    long tv_sec;   /* en secondes       */
    long tv_usec;  /* en micro-secondes */
};

    Cette structure est particulièrement incommode à utiliser pour de nombreuses raisons parmi lesquelles :

Sommaire

Les délais des timers sous Unix

    Unix met à la disposition de l'utilisateur différents timers, sabliers logiques cycliques qui, par émission de signaux, informent les processus de l'écoulement de délais fixés à l'avance. Un timer est chargé avec deux indications de temps (figure 1):
  • le délai initial Delta1, avant le premier signal, it_value,
  • le délai Delta2 entre deux signaux consécutifs, it_interval.

  • figure 1

        Pour stocker ces informations, la bibliothèque des fonctions système Unix (écrite en C) offre dans le fichier <sys/time.h> la déclaration suivante :
     
    struct itimerval
    {
        struct timeval it_interval;  /* intervalle entre deux signaux */
        struct timeval it_value;     /* delai initial                 */
    };

  • le champ it_value correspond au délai initial Delta1.
  • le champ it_interval correspond au délai Delta2.
  • Sommaire

    Les timers sous Unix

        Le signal délivré par le timer dépend de la nature du temps mesuré. Trois possibilités sont offertes :     Les signaux délivrés correspondant à ces trois temps sont SIGALRM, SIGVTALRM et SIGPROF. Le signal SIGPROF pouvant, par définition, intervenir pendant un appel système, il faut prévoir de pouvoir relancer cet appel.

        Un timer est dit "armé" lorsque Delta1 > 0. A expiration de Delta1, le signal approprié est lancé et la valeur de Delta2 est chargée dans Delta1.

        Les fonctions système permettant de manipuler les timers sont : getitimer() et setitimer().

    Sommaire

    © D. Mathieu     mathieu@romarin.univ-aix.fr
    I.U.T.d'Aix en Provence - Département Informatique