Aller au contenu principal

Gestion du temps

La notion de temps est critique pour l'exécution globale du système car il est nécessaire de savoir quand exécuter des tâches. (travaux réguliers, travaux différés). Il permet aussi de fournir des indications à l'utilisateur (date courante, dates de modifications / accès aux fichiers, fonctions avec timeout, alarmes, etc.).

Connaître l'heure avec précision est complexe : nous pouvons utiliser des ticks d'horloge (légers et réguliers, mais grossiers) ou des compteurs de cycles (très précis à court terme). Cependant, pour connaître l'heure absolue, il est nécessaire d'utiliser une RTC (Real Time Clock), qui fonctionne même machine éteinte grâce à la pile de la carte mère, mais dont la lecture est très coûteuse.

Ainsi, pour déterminer l'heure, nous allons combiner les sources : la RTC est lue au démarrage et sert de base, puis les interruptions d'horloge servent pour garder une heure logicielle (granularité moyenne).

Les systèmes d'exploitation permettent aussi d'enregistrer une fonction à exécuter après un certain délai (pour réveiller un processus, envoyer un signal SIGALRM). Le noyau vérifie alors périodiquement (à chaque tick) si le délai est dépassé et, le cas échéant, exécute la fonction. Cette vérification périodique consomme du CPU même lorsqu'aucun délai n'expire ; les noyaux récents programment plutôt l'horloge matérielle à la prochaine échéance (timers haute résolution, noyau tickless).