2.147.483.647 oder das Ende der UNIX Epoche

Posted on the May 4th, 2008 under wissen by matthias

Das Ende der UNIX Epoche? Treffender wäre wohl die Umschreibung: Das Jahr 2038 Problem. Viele mögen sich wohl noch an die Ängste vor dem Jahr 2000 Problem erinnern. Viel wichtiger ist aber das Jahr 2038, da hier der POSIX Zeitstandard an seine Grenzen gerät. Doch vorerst eine kurze Erläuterung zur UNIX Zeit.

Die UNIX Zeit zählt die vergangenen Sekunden seit dem 1. Januar 1970, 00:00:00 Uhr. Dieses Startdatum nennt sich “The Epoch”. Für uns Menschen lässt sich aus der Zahl 2.147.483.647 wenig deuten, ein Computer kann hiermit aber sehr gut umgehen. So sind Umrechnungen oder Addition bzw. Subtraktion von einfachen Zahlen für eine Maschine schnell getan. Wollen wir uns einen Timestring unter Linux umrechnen lassen, geht dies ganz einfach:

[code language="css"]date -d @2147483647
Tue Jan 19 04:14:07 CET 2038[/code]

Gehen wir nun nur eine Sekunde weiter, passiert aber folgendes:

[code language="css"]date -d @2147483648
date: invalid date `@2147483648'[/code]

Hier sind die Grenzen der UNIX Epoche erreicht. Warum? 2³¹ = 2.147.483.647 – jede größere Zahl erzeugt einen Pufferüberlauf. Der UNIX Timestamp wird in der 32 Bit großen time_t Variable gespeichert, wobei das 32te Bit jedoch für die Unterscheidung von positiven und negativen Werten dient. Somit lässt sich auch ein Datum vor 1970 bestimmen. Älter als vom 13. Dezember 1901, 20:45:52 Uhr sollten eure digitalen Daten dann jedoch nicht sein, ansonsten droht wieder ein Pufferüberlauf.

Und was kann man dagegen tun? Keine Sorge – eine Lösung ist bereits ausgearbeitet. Da 32 Bit nicht reichen, wechselt man einfach zu 64 Bit. Die 64 Bit Varianten von Linux Distributionen können bereits mit 64 Bit time_t umgehen, wobei es jedoch Probleme mit starren 32 Bit Zeitvariablen in einigen Programmen geben kann. Bei diesen gilt es innerhalb der nächsten 30 Jahre den Adressraum zu vergrößern. Mit 64 Bit haben wir dann erstmal wieder 290 Milliarden Jahre Ruhe. Glück gehabt!

Links:
Unixzeit
The Year 2038 Problem
2038bug.com
time_t

|

3 Responses to '2.147.483.647 oder das Ende der UNIX Epoche'

  1. 04. May 2008 at 19:08
    martin
  2. 04. May 2008 at 20:50
    matthias
  3. 24. July 2008 at 20:39
    Josef

Leave a Reply




XHTML::
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>