Loading

NOM

       time - Panorama des fonctions liées au temps et aux temporisations

   Temps réel et temps processus
       Le  temps  rel  est  défini  comme le temps mesuré à partir d’un point
       fixe, soit un point standard dans le passe (voir la définition du point
       Epoch  et  du  temps  calendaire  ci‐dessous),  soit un point (p.ex. le
       démarrage) dans la vie d’un processus (temps coul).

       Le temps processus est  défini  comme  le  temps  CPU  utilisé  par  un
       processus.  Il  est  parfois divisé entre une partie utilisateur et une
       partie systme. Le temps CPU utilisateur est le temps passé à  exécuter
       du  code  en  mode utilisateur. Le temps CPU système est le temps passé
       par le noyau en mode système  pour  le  processus  (p.ex.  pendant  des
       appels système). La commande time(1) peut être utilisée pour déterminer
       le temps CPU utilisé pendant l’exécution  du  programme.  Un  programme
       peut  déterminer  le  temps  CPU  qu’il  a  utilisé  avec les fonctions
       times(2), getrusage(2) et clock(3).

   Lhorloge matérielle
       La plupart des ordinateurs ont une horloge  matérielle  (alimentée  par
       une  pile)  que  le  noyau lit au démarrage du système pour initialiser
       l’horloge logicielle. Pour plus de détails, voir rtc(4) et  hwclock(8).

   Lhorloge logicielle, HZ, et les Jiffies
       La  précision  de divers appels système qui définissent des délais (par
       exemple select(2), sigtimedwait(2)) ou qui mesurent le temps processeur
       (par  exemple  getrusage(2)) est limitée par la résolution de l’horloge
       logicielle, une horloge maintenue par le noyau qui mesure le  temps  en
       jiffies.  La  durée  d’un  jiffy  est  déterminée  par  la valeur de la
       constante noyau HZ.

       La précision de nombreux appels système et horodatages est limitée  par
       la  résolution  de  l’horloge  logicielle, une horloge maintenue par le
       noyau qui mesure  le  temps  en  jiffies.  La  taille  d’un  jiffy  est
       déterminée  par  la valeur de la constante du noyau HZ. La valeur de HZ
       varie d’une version du noyau et d’une architecture  à  une  autre.  Sur
       i386,  la  situation  est  la  suivante : pour les noyaux jusqu’à 2.4.x
       inclus,  HZ  vaut  100,  ce  qui  donne  une  valeur  de  jiffy  de  10
       millisecondes ;  à  partir de 2.6.0, HZ a été augmenté à 1000, ainsi un
       jiffy était équivalent à 1 milliseconde. Depuis  le  noyau  2.6.13,  la
       valeur de HZ est un paramètre de configuration du noyau, et peut valoir
       100, 250 (la valeur par défaut), ou 1000, donnant des valeurs de 10,  4
       et  1  millisecondes,  respectivement,  pour  un jiffy. Depuis le noyau
       2.6.20, il  est  aussi  possible  d’utiliser  300 ;  cette  valeur  est
       divisible par les fréquences des formats vidéos les plus courants (PAL,
       25 Hz ; NTSC, 30 Hz).

       L’appel système times(2) est un cas particulier. Il  renvoie  le  temps
       avec  une  granularité  définie  par la constante du noyau USER_HZ. Les
       applications utilisateur peuvent obtenir la valeur de  cette  constante
       avec sysconf(_SC_CLK_TCK).

   Temporisations haute résolution
       Avant   Linux 2.6.21,  la  précision  des  appels  système  gérant  les
       temporisations et les sommeils (voir plus loin) était  limitée  par  la
       taille du « jiffy ».

       Depuis   la   version 2.6.21,   Linux  gère  les  temporisations  haute
       résolution (HRT : high-resolution timers)  de  manière  optionnelle  en
       configurant   CONFIG_HIGH_RES_TIMERS.   Sur  les  systèmes  gérant  les
       temporisations haute résolution, la précision des appels système gérant
       les  temporisations et les sommeils n’est plus limitée par le « jiffy »
       et peut être aussi fine que le système ne le  permette  (une  précision
       d’une  microseconde est typique sur les matériels actuels). Vous pouvez
       savoir si les temporisations haute résolution sont gérées en  vérifiant
       la  précision  renvoyée  par un appel à clock_getres(2) ou en regardant
       les entrées « resolution » du fichier /proc/timer_list.

       Les temporisations haute résolution ne sont pas gérées par  toutes  les
       architectures matérielles. Cette gestion est disponible sur x86, arm et
       powerpc parmi d’autres.

   L« Epoch »
       Les systèmes Unix représentent le temps depuis un point  appelé  Epoch,
       qui est défini comme 0:00:00 UTC, le matin du 1er janvier 1970.

       Un  programme peut déterminer le temps calendaire avec gettimeofday(2),
       qui renvoie le temps  (en  secondes  et  microsecondes)  écoulé  depuis
       l’Epoch ;  time(2)  fournit  une  information  similaire, mais avec une
       précision d’une seconde.  Le  temps  système  peut  être  modifié  avec
       settimeofday(2).

   Temps décomposé
       Certaines  fonctions de bibliothèque utilisent une structure de type tm
       pour représenter le temps dcompos, qui stocke le temps  décomposé  en
       composantes  distinctes  (année,  mois,  jour,  heure, minute, seconde,
       etc.). Cette structure est décrite dans ctime(3), qui décrit  également
       les  fonctions  qui  font la conversion entre temps calendaire et temps
       décomposé.  Les  fonctions  permettant  les  conversions  entre   temps
       décomposé  et  représentation  sous  forme  de chaîne de caractère sont
       décrites dans ctime(3), strftime(3) et strptime(3).

   Dormir et placer des temporisations
       Divers appels  système  et  fonctions  permettent  à  un  programme  de
       s’endormir  (suspendre  son  exécution)  pour une durée spécifiée. Voir
       nanosleep(2), clock_nanosleep(2) et sleep(3).

       Divers  appels  système  permettent  à  un  processus  de  placer   une
       temporisation  qui  expirera  à  un  point  donné  dans  le  futur,  et
       éventuellement à des intervalles répétés. Voir alarm(2),  getitimer(2),
       timerfd_create(2) et timer_create(2).

VOIR AUSSI

       date(1),     time(1),    adjtimex(2),    alarm(2),    clock_gettime(2),
       clock_nanosleep(2),    getitimer(2),    getrlimit(2),     getrusage(2),
       gettimeofday(2),   nanosleep(2),   stat(2),  time(2),  timer_create(2),
       timerfd_create(2),   times(2),    utime(2),    adjtime(3),    clock(3),
       clock_getcpuclockid(3),  ctime(3),  pthread_getcpuclockid(3), sleep(3),
       strftime(3), strptime(3), timeradd(3), usleep(3), rtc(4), hwclock(8)

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette page de manuel a été traduite et est maintenue par Julien Cristau
       <julien.cristau@ens-lyon.org> et l’équipe francophone de traduction  de
       Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».