Programatzaileen uste okerrak Unix denborari buruz

Sentitzen dut Patrick McKenzie.

Atzo Danny Unix-en denborari buruzko datu interesgarri batzuei buruz galdetu nion, eta gogoratu nuen batzuetan guztiz intuitiboki funtzionatzen duela.

Hiru gertaera hauek oso arrazoizkoak eta logikoak dirudite, ezta?

  1. Unix-en ordua 1eko urtarrilaren 1970etik 00:00:00 UTCko segundo kopurua da.
  2. Zehazki segundo bat itxaroten baduzu, Unix-en ordua zehazki segundo batean aldatuko da.
  3. Unix denbora ez da inoiz atzera egiten.

Hauetako ezer ez da egia.

Baina ez da nahikoa "Hauetako ezer ez da egia" esatea, azaldu gabe. zergatik. Ikus behean azalpenak. Baina zuk zeuk pentsatu nahi baduzu, ez joan erlojuaren iruditik!

Programatzaileen uste okerrak Unix denborari buruz
Mahai-erlojua 1770eko hamarkadakoa. John Leroux-ek bildua. Bertatik Ongi etorri bildumak. Lizentziapean argitaratua CC BY

Hiru uste okerrak arrazoi bat dute: segundo jauziak. Segundu bitxiak ezagutzen ez badituzu, hona hemen erreferentzia azkar bat:

UTC ordua bi faktorek zehazten dute:

  • Nazioarteko Denbora Atomikoa: Mundu osoko ehunka erloju atomikoren batez besteko irakurketak. Bigarrena atomo baten propietate elektromagnetikoen bidez neur dezakegu, eta hau da zientziak ezagutzen duen denboraren neurketa zehatzena.
  • Munduko Ordua, Lurrak bere ardatzaren inguruan duen errotazioan oinarrituta. Iraultza osoa egun bat da.

Arazoa da bi zenbaki hauek ez direla beti bat egiten. Lurraren errotazioa ez da koherentea - pixkanaka moteldu egiten da, beraz, Denbora Unibertsalean egunak luzeagoak dira. Bestalde, erloju atomikoak deabruzko zehatzak eta konstanteak dira milioika urtetan zehar.

Bi aldiz sinkronizatzen direnean, segundo bat gehitzen edo kentzen da UTCtik, sinkronizatzeko berriro. 1972tik zerbitzua IERS (kasu hau zuzentzen duena) 27 segundo gehiago gehitu ditu. Emaitza 27 UTC egun izan zen, 86 segundoko iraupenarekin. Teorian, 401 segundoko (bat ken) iraupena duen egun bat posible da. Bi aukerak kontraesanean daude Unix denboraren oinarrizko hipotesiarekin.

Unix-en denborak suposatzen du egun bakoitzak zehazki 86 segundo irauten duela (400 Γ— 60 Γ— 60 = 24), segundo gehigarririk gabe. Jauzi hori gertatzen bada, Unix-en denborak segundo bat egiten du jauzi edo bi segundo zenbatzen ditu batean. 86tik aurrera, 400 segundo jauzi falta ditu.

Beraz, gure uste okerrak honela osatu behar dira:

  • Unix-en ordua 1eko urtarrilaren 1970etik 00:00:00 UTCko segundo kopurua da ken segundo jauziak.
  • Segundu bat zehatz-mehatz itxaroten baduzu, Unix-en ordua zehazki segundo batean aldatuko da, segundu jauzikoa kendu ez bada behintzat.

    Orain arte, segunduak ez dira inoiz kendu praktikan (eta Lurraren errotazioaren moteltzeak hori nekeza dela esan nahi du), baina inoiz gertatuko balitz, UTC eguna segundo bat laburragoa izango litzatekeela esan nahi luke. Kasu honetan, UTCko azken segundoa (23:59:59) baztertzen da.

    Unix egun bakoitzak segundo kopuru bera du, beraz, laburtutako egun bateko azken Unix segundoa ez da UTC orduarekin bat etorriko. Hona hemen nolakoa den, segundo laurdeneko tarteetan:

    Programatzaileen uste okerrak Unix denborari buruz

    23:59:58:00 UTC-n hasten bazara eta segundo bat itxaronez gero, Unix-en orduak bi UTC segundo aurreratuko ditu eta Unix 101-ren denbora-zigilua ez zaio inori esleituko.

  • Unix denbora ezin da inoiz atzera egin, segundo jauzi bat gehitu arte.

    Praktikan jada 27 aldiz gertatu da hori. UTC egunaren amaieran, segundo gehigarri bat gehitzen da 23:59:60ean. Unix-ek segundo kopuru bera du egun batean, beraz, ezin du segundo gehiago gehitu; horren ordez, Unix-en denbora-zigiluak errepikatu behar ditu azken segundorako. Hona hemen nolakoa den, segundo laurdeneko tarteetan:

    Programatzaileen uste okerrak Unix denborari buruz

    23:59:60.50ean hasi eta segundo erdi bat itxaron baduzu, Unix-en ordua itzultzen da segundo erdiz, eta Unix 101 denbora-zigilua bi UTC segundori dagokio.

Hauek ez dira seguruenik Unix garaiko bitxikeria bakarrak - atzo gogoratu nuena besterik ez.

Denbora - Oso gauza arraroa.

Iturria: www.habr.com

Gehitu iruzkin berria