Unix-aika

(Ohjattu sivulta UNIX-aika)

Unix-aika tarkoittaa useissa käyttöjärjestelmissä (mm. Linux ja muut POSIX-yhteensopivat järjestelmät) käytettävää ajan tallennustapaa. Unix-aika on (yleensä etumerkillinen 32-bittinen) kokonaisluku, joka ilmaisee ajan sekunteina ajanhetkestä 1. tammikuuta 1970 kello 0.00.00 UTC (epookki, 1970-01-01T00:00:00Z).[1] Negatiiviset arvot ilmaisevat aikaa ennen epookkia.[2] Muutamissa käyttöjärjestelmissä time_t aikaleima on etumerkitön eikä voi esittää aikaa ennen epookkia (mm. QNX).[2]

Unix-aika ohitti 1 000 000 000 sekuntia 2001-09-09T01:46:40Z.

Unix-aika ei ole täysin ongelmaton ajantallennustapa, koska se ei ota huomioon karkaussekunteja, vaan joka päivä kellonaikaan lisätään tasan 86 400 sekuntia.[1]

Unix-aika muunnetaan gregoriaanisen kalenterin ajaksi Unixin c-kirjaston funktioilla ctime(), localtime(), asctime() ja toisinpäin mktime()[3] hyödyntäen zoneinfo-aikavyöhyketietokantaa.

Y2038-ongelma muokkaa

Pääartikkeli: Y2K38

Koska Unix-ajan tallentamiseen käytetään historiallisista syistä yleensä etumerkillistä 32-bittistä kokonaislukutietotyyppiä, tulevat tietotyypin rajat vastaan lopulta – tarkemmin sanoen 19. tammikuuta 2038, jolloin vuoden 1970 alusta tulee kuluneeksi 2 147 483 647 sekuntia ja laskuri pyörähtää ympäri −2 147 483 648 sekuntiin. Ongelman ratkaisemiseksi monissa järjestelmissä on siirrytty tai ainakin ollaan siirtymässä 64-bittiseen aikatietotyyppiin; esimerkiksi 64-bittisissä Linux-järjestelmissä ajan tallennukseen käytettävä time_t-tietotyyppi on 64-bittinen, joka on lisätty myös 32-bittisille alustoille.[4]

64-bittinen aikaleima riittää 292 miljardiksi vuodeksi.[5]

Lähteet muokkaa

  1. a b http://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap04.html#tag_21_04_15 (englanniksi)
  2. a b Eric S. Raymond: Time, Clock, and Calendar Programming In C catb.org. Viitattu 4.10.2022. (englanniksi)
  3. Linux Programmer's Manual CTIME(3)
  4. Arnd Bergmann: y2038: core, driver and file system changes lkml.org. 29.1.2020. Viitattu 25.2.2021. (englanniksi) 
  5. Trond Endrestøl: When does the 64-bit Unix time_t really end? ximalas.info. 10.3.2015. Viitattu 24.9.2022. (englanniksi)