Cuncepzioni sbagliate di i programatori nantu à u tempu Unix

mi scusa Patrick McKenzie.

Aieri Danny Aghju dumandatu nantu à qualchi fatti interessanti nantu à u tempu Unix, è mi ricurdò chì qualchì volta funziona in modu completamente unintuitively.

Questi trè fatti parenu estremamente raghjone è logicu, ùn hè micca?

  1. U tempu Unix hè u numeru di seconde da u 1 di ghjennaghju di u 1970 00:00:00 UTC.
  2. Sè aspettate esattamente un secondu, u tempu Unix cambierà da esattamente un secondu.
  3. U tempu Unix ùn si move mai in daretu.

Nimu di questu hè veru.

Ma ùn hè micca abbastanza per dì solu "Nimu di questu hè veru", senza spiegà. perchè. Vede quì sottu per spiegazioni. Ma s'è vo vulete pensà à voi stessu, ùn scorri micca u ritrattu di u clock!

Cuncepzioni sbagliate di i programatori nantu à u tempu Unix
Orologio da tavola da l'anni 1770. Cumpilatu da John Leroux. Da Benvenuti cullezzione. Publicatu sottu licenza CC BY

Tutti i trè idee sbagliate anu una ragione: secondi salti. Se ùn site micca familiarizatu cù i secondi intercalati, eccu una riferenza rapida:

U tempu UTC hè determinatu da dui fattori:

  • Tempu Atomicu Internaziunale: Letture medie da centinaie di orologi atomici in u mondu. Pudemu misurà u sicondu da e proprietà elettromagnetiche di un atomu, è questu hè a misurazione più precisa di u tempu cunnisciuta da a scienza.
  • Tempu di u mondu, basatu annantu à a rotazione di a Terra intornu à u so propiu assi. Una rivoluzione completa hè un ghjornu.

U prublema hè chì sti dui numeri ùn currispondenu micca sempre. A rotazione di a Terra ùn hè micca coherente - rallenta gradualmente, cusì i ghjorni in u Tempu Universale diventanu più longu. Per d 'altra banda, l'orologi atomichi sò diabolicamente precisi è custanti annantu à milioni d'anni.

Quandu duie volte cadenu fora di sincronia, una seconda hè aghjuntu o sguassata da UTC per rinvià in sincronia. Dapoi u 1972 serviziu IERS (chì gestisce stu casu) aghjunghje 27 seconde extra. U risultatu era 27 ghjorni UTC cù una durata di 86 seconde. In teoria, un ghjornu cù una durata di 401 86 seconde (minus one) hè pussibule. E duie opzioni cuntradite l'assunzione fundamentale di u tempu Unix.

U tempu Unix assume chì ogni ghjornu dura esattamente 86 seconde (400 × 60 × 60 = 24), senza alcunu seconde supplementari. Se un tali saltu si trova, u tempu Unix o salta una seconda, o cunta dui seconde in unu. Da u 86, manca 400 seconde di salto.

Dunque, i nostri cuncepimentu sbagliati anu da esse cumplementati cum'è seguente:

  • U tempu Unix hè u numeru di seconde da u 1 di ghjennaghju di u 1970 00:00:00 UTC minus leap seconds.
  • Sè aspettate esattamente un secondu, u tempu Unix cambierà da esattamente un secondu, salvu chì a seconda salta hè stata eliminata.

    Finu à avà, i sicondi ùn sò mai stati sguassati in a pratica (è a rallentazione di a rotazione di a Terra significa chì questu hè improbabile), ma s'ellu hè accadutu, significaria chì u ghjornu UTC diventerà una seconda più corta. In questu casu, l'ultimu secondu di UTC (23:59:59) hè scartatu.

    Ogni ghjornu Unix hà u listessu numeru di seconde, cusì l'ultimu secondu Unix di un ghjornu scurciatu ùn currisponde à alcuna ora UTC. Eccu ciò chì pare, in intervalli di quartu di seconda:

    Cuncepzioni sbagliate di i programatori nantu à u tempu Unix

    Sè avete principiatu à 23:59:58:00 UTC è aspittà una seconda, l'ora Unix avanzarà duie seconde UTC è u timestamp Unix 101 ùn serà micca assignatu à nimu.

  • U tempu Unix ùn pò mai retrocede, finu à chì hè aghjuntu un secondu.

    Questu hè digià accadutu 27 volte in pratica. À a fine di u ghjornu UTC, un secondu supplementu hè aghjuntu à 23:59:60. Unix hà u listessu numeru di seconde in un ghjornu, cusì ùn pò micca aghjunghje un secondu extra - invece deve ripetiri i timestamps Unix per l'ultimu secondu. Eccu ciò chì pare, in intervalli di quartu di seconda:

    Cuncepzioni sbagliate di i programatori nantu à u tempu Unix

    Sè avete principiatu à 23:59:60.50 è aspittà una meza seconda, u tempu Unix torna da a mità di seconda, è u timestamp Unix 101 currisponde à dui seconde UTC.

Probabilmente ùn sò micca l'unicu stranezza di i tempi Unix - solu ciò chì mi ricurdava ieri.

tempu - assai cosa strana.

Source: www.habr.com

Add a comment