Idées fausses des programmeurs sur l'heure Unix

Présenter ses excuses Patrick McKenzie.

Hier Danny J'ai posé des questions sur des faits intéressants sur l'époque d'Unix et je me suis souvenu que parfois cela fonctionne de manière totalement non intuitive.

Ces trois faits semblent extrêmement raisonnables et logiques, n’est-ce pas ?

  1. L'heure Unix est le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC.
  2. Si vous attendez exactement une seconde, l'heure Unix changera d'exactement une seconde.
  3. Le temps Unix ne recule jamais.

Rien de tout cela n’est vrai.

Mais il ne suffit pas de simplement dire : « Rien de tout cela n’est vrai », sans expliquer. pourquoi. Voir ci-dessous pour les explications. Mais si vous voulez penser par vous-même, ne dépassez pas l’image de l’horloge !

Idées fausses des programmeurs sur l'heure Unix
Horloge de table des années 1770. Compilé par John Leroux. Depuis Collections de bienvenue. Publié sous licence CC BY

Ces trois idées fausses ont une raison : secondes intercalaires. Si vous n'êtes pas familier avec les secondes intercalaires, voici une référence rapide :

L'heure UTC est déterminée par deux facteurs :

  • Heure atomique internationale: Lectures moyennes de centaines d’horloges atomiques à travers le monde. Nous pouvons mesurer la seconde grâce aux propriétés électromagnétiques d’un atome, et il s’agit de la mesure du temps la plus précise connue de la science.
  • Horaire international, basé sur la rotation de la Terre autour de son propre axe. Une révolution complète dure un jour.

Le problème est que ces deux chiffres ne correspondent pas toujours. La rotation de la Terre n'est pas constante : elle ralentit progressivement, de sorte que les jours du temps universel s'allongent. D’un autre côté, les horloges atomiques sont diaboliquement précises et constantes sur des millions d’années.

Lorsque deux heures ne sont pas synchronisées, une seconde est ajoutée ou supprimée de l'UTC pour les synchroniser à nouveau. Depuis 1972 service IERS (qui gère ce cas) a ajouté 27 secondes supplémentaires. Le résultat était de 27 jours UTC d’une durée de 86 401 secondes. Théoriquement, une journée d'une durée de 86 399 secondes (moins une) est possible. Les deux options contredisent l’hypothèse fondamentale du temps Unix.

L’heure Unix suppose que chaque jour dure exactement 86 400 secondes (60 × 60 × 24 = 86 400), sans aucune seconde supplémentaire. Si un tel saut se produit, alors le temps Unix saute d'une seconde ou compte deux secondes en une. En 2019, il lui manque 27 secondes intercalaires.

Nos idées fausses doivent donc être complétées comme suit :

  • L'heure Unix est le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC. moins les secondes intercalaires.
  • Si vous attendez exactement une seconde, l'heure Unix changera d'exactement une seconde, sauf si la seconde intercalaire a été supprimée.

    Jusqu'à présent, les secondes n'ont jamais été supprimées en pratique (et le ralentissement de la rotation de la Terre rend cela peu probable), mais si cela se produisait, cela signifierait que le jour UTC serait plus court d'une seconde. Dans ce cas, la dernière seconde UTC (23:59:59) est ignorée.

    Chaque jour Unix a le même nombre de secondes, donc la dernière seconde Unix d'un jour raccourci ne correspondra à aucune heure UTC. Voici à quoi cela ressemble, par intervalles d'un quart de seconde :

    Idées fausses des programmeurs sur l'heure Unix

    Si vous démarrez à 23:59:58:00 UTC et attendez une seconde, l'heure Unix avancera de deux secondes UTC et l'horodatage Unix 101 ne sera attribué à personne.

  • L'époque Unix ne peut jamais revenir en arrière, jusqu'à ce qu'une seconde intercalaire soit ajoutée.

    Cela s'est déjà produit 27 fois dans la pratique. A la fin de la journée UTC, une seconde supplémentaire est ajoutée à 23:59:60. Unix a le même nombre de secondes dans une journée, il ne peut donc pas ajouter une seconde supplémentaire. Il doit plutôt répéter les horodatages Unix pour la dernière seconde. Voici à quoi cela ressemble, par intervalles d'un quart de seconde :

    Idées fausses des programmeurs sur l'heure Unix

    Si vous démarrez à 23:59:60.50 et attendez une demi-seconde, l'heure Unix est de retour d'une demi-seconde, et l'horodatage Unix 101 correspond à deux secondes UTC.

Ce ne sont probablement pas les seules bizarreries de l’époque Unix – c’est juste ce dont je me souvenais hier.

Temps - très chose étrange.

Source: habr.com

Ajouter un commentaire