
En informatique et en programmation , le temps système représente la notion de temps qui s'écoule dans un système informatique. Dans ce sens, le temps inclut également le passage des jours sur le calendrier .
Le temps système est mesuré par une horloge système , qui est généralement implémentée comme un simple décompte du nombre de ticks qui se sont produits depuis une date de début arbitraire, appelée l' époque . Par exemple, les systèmes compatibles Unix et POSIX codent l'heure système (« heure Unix ») comme le nombre de secondes écoulées depuis le début de l' époque Unix le 1er janvier 1970 à 00:00:00 UT , avec des exceptions pour les secondes intercalaires . Les systèmes qui implémentent les versions 32 bits et 64 bits de l' API Windows , tels que Windows 9x et Windows NT , fournissent l'heure système sous la forme de SYSTEMTIME , représentée par une valeur année/mois/jour/heure/minute/seconde/millisecondes, et de FILETIME , représentée par un décompte du nombre de ticks de 100 nanosecondes depuis le 1er janvier 1601 à 00:00:00 UT tel que calculé dans le calendrier grégorien proleptique .
L'heure système peut être convertie en heure calendaire , qui est une forme plus adaptée à la compréhension humaine. Par exemple, l' heure système Unix 1 000 000 000 secondes depuis le début de l'époque se traduit par l'heure calendaire 9 septembre 2001 01:46:40 UT . Les sous-routines de bibliothèque qui gèrent ces conversions peuvent également gérer les ajustements pour les fuseaux horaires , l'heure d'été (DST), les secondes intercalaires et les paramètres régionaux de l'utilisateur . Des routines de bibliothèque sont également généralement fournies pour convertir les heures calendaires en heures système.
De nombreuses implémentations qui stockent actuellement les heures système sous forme de valeurs entières de 32 bits souffriront du problème imminent de l'an 2038. Ces valeurs temporelles déborderont (« manqueront de bits ») après la fin de leur époque de temps système, ce qui entraînera des erreurs logicielles et matérielles . Ces systèmes nécessiteront une forme de correction, similaire aux efforts requis pour résoudre le problème antérieur de l'an 2000. Ce sera également un problème potentiellement beaucoup plus important pour les formats de fichiers de données existants qui contiennent des horodatages système stockés sous forme de valeurs de 32 bits.
Autres mesures de temps
Le temps de traitement est étroitement lié au temps système . Il s'agit du décompte du temps CPU total consommé par un processus en cours d'exécution . Il peut être divisé en temps CPU utilisateur et système , représentant respectivement le temps passé à exécuter le code utilisateur et le code du noyau système . Les temps de traitement sont un décompte des instructions CPU ou des cycles d'horloge et n'ont généralement pas de corrélation directe avec le temps de traitement .
Les systèmes de fichiers gardent une trace des heures auxquelles les fichiers sont créés, modifiés et/ou consultés en stockant les horodatages dans le bloc de contrôle de fichiers (ou inode ) de chaque fichier et répertoire .
Histoire
La plupart des ordinateurs personnels de première génération ne gardaient pas la date et l'heure. Parmi ceux-ci figuraient les systèmes qui utilisaient le système d'exploitation CP/M , ainsi que les premiers modèles de l' Apple II , du BBC Micro et du Commodore PET , entre autres. Des cartes périphériques supplémentaires comprenant des puces d'horloge en temps réel avec batterie de secours intégrée étaient disponibles pour les IBM PC et XT , mais l' IBM AT était le premier PC largement disponible équipé d'un matériel de date/heure intégré à la carte mère . Avant la généralisation des réseaux informatiques , la plupart des systèmes informatiques personnels qui gardaient l'heure système le faisaient uniquement par rapport à l'heure locale et ne tenaient pas compte des différents fuseaux horaires .
Grâce à la technologie actuelle, la plupart des ordinateurs modernes suivent l'heure locale, tout comme de nombreux autres appareils ménagers et personnels tels que les magnétoscopes , les enregistreurs numériques , les récepteurs de télévision par câble , les PDA , les téléavertisseurs , les téléphones portables , les télécopieurs , les répondeurs téléphoniques , les appareils photo , les caméscopes , les climatiseurs centraux et les fours à micro-ondes .
Les microcontrôleurs fonctionnant dans des systèmes embarqués (tels que le Raspberry Pi , l'Arduino et d'autres systèmes similaires ) ne disposent pas toujours de matériel interne pour suivre l'heure. De nombreux systèmes de contrôle de ce type fonctionnent sans connaître l'heure externe. Ceux qui nécessitent de telles informations initialisent généralement leur heure de base au redémarrage en obtenant l'heure actuelle à partir d'une source externe, comme un serveur de temps ou une horloge externe, ou en invitant l'utilisateur à saisir manuellement l'heure actuelle.
Mise en œuvre
L' horloge système est généralement implémentée sous la forme d'un temporisateur d'intervalle programmable qui interrompt périodiquement le processeur, qui commence alors à exécuter une routine de service d'interruption de temporisation. Cette routine ajoute généralement un tick à l'horloge système (un simple compteur) et gère d'autres tâches périodiques de maintenance ( préemption , etc.) avant de revenir à la tâche que le processeur exécutait avant l'interruption.
Récupération de l'heure système
Les tableaux suivants illustrent les méthodes permettant de récupérer l'heure système dans divers systèmes d'exploitation , langages de programmation et applications . Les valeurs marquées d'un astérisque (*) dépendent du système et peuvent différer selon les implémentations. Toutes les dates sont indiquées sous forme de dates du calendrier grégorien ou proleptique .
La résolution de la mesure du temps d'une implémentation n'implique pas la même précision de telles mesures. Par exemple, un système peut renvoyer l'heure actuelle sous la forme d'une valeur mesurée en microsecondes, mais être en fait capable de distinguer les tics d'horloge individuels avec une fréquence de seulement 100 Hz (10 ms).