Suche
Das Jahr-2038-Problem
Das Jahr-2000-Problem haben wir alle ohne große Probleme überstanden, aber 2038 wird alles viel schlimmer™.
Bei den ersten PC Bildschirmen wurden Auflösungen noch nicht in Pixeln gemessen, Speicher noch nicht in Megabyte und sowieso war Platz auf Bildschirmen und Speichermedien teuer. Außerdem war das Jahr 2000 noch weeeeeiit weg. Um keinen Platz zu vergeuden hat man damals bei Datumsangaben gerne die Tausender- und Hundersteller von Jahresangaben weggelassen. Als dann völlig überraschend die Jahrtausendwende kam und man das Jahr 1900 nicht vom Jahr 2000 unterscheiden konnte gab es ein bisschen Panik, ein paar lustige Fotos von Datumsfehlern aber alles in allem ist die große Katastrophe ausgeblieben.
So weit, so gut ... Einer der Gründe warum das öffentliche Bewusstsein für dieses Datumsproblem so groß war, ist bestimmt auch die Tatsache das es so menschlich intuitiv daherkommt: Der Computer speichert Daten halt so wie wir Menschen die Daten schreiben.
Dummerweise ist der Speicher von Computern aber auch heute noch endlich, der nächste komische Fehler mit Datumsangaben ist also nur eine Frage der Zeit. Und ein potenzielles Problem kann man schon ganz gut vorausahnen: Um 03:14:07 UTC am 19. Januar 2038 werden einige Uhren auf den 13. Dezember 1901, 20:45:52 UTC umspringen. Aber wie kommt es zu diesen schrägen Daten?
Jede Zeitangabe braucht einen mehr oder minder wilkürlich gewählten Zeitpunkt 0. Für unseren Gregorianischen Kalender ist das eine ungefähre Schätzung des Geburtszeitpunktes von Jesus Christus. Für den Kalender um den es in diesem Beitrag geht, die so genannte UNIX Zeit, ist dieser Zeitpunkt 0 der 1.1.1970 um 00:00. Und das Datum speichert man mit nur einer Zahl, nämlich die Anzahl der vergangenen Sekunden seit diesem Referenzdatum.
Wir erinnern uns an dieser Stelle einmal an die Hack-Challenge: Der Computer speichert alle Zahlen im Dualsystem und kennt dabei nur einige bestimmte Breiten. Für die Zeitangabe hat man sich für einen 4 Byte Wert mit Vorzeichen entschieden. Damit ergeben sich die größte (2147483647) und kleinste (-2147483648) Zahl automatisch. Und wenn man diese Zahlen als Sekunden interpretiert und in Jahre umrechnet kommt man auf ungefähr 68 Jahre. Und schon versteht man warum sich ausgerechnet die Jahre 1901 und 2038 als Grenze der UNIX Zeit ergeben.
Glücklicherweise haben wir ja noch ein paar Jahre Zeit und zumindest für halbwegs aktuelle Desktop- und Serversysteme ist es vermutlich gar nicht nötig irgendwelche Maßnahmen zu ergreifen. Das sind nämlich typischerweise 64 Bit Systeme, für die man einen 8 Byte großen Wert (mit Vorzeichen) zur Speicherung der Sekunden verwendet. Und dann umfasst die darstellbare Zeitspanne plötzlich etwa 20 Universenzeitalter ...
Um ein Gefühl für diese Art von Datumsangabe zu bekommen können wir ja mal ein bisschen Rätseln. Ich beginne mit dem Zeitstempel -14159040 und gebe als Hinweis, dass es sich bei dem Zeitpunkt um ein Ereignis handelt, welches nicht auf der Erde stattgefunden hat. Die Antwort gebt Ihr bitte samt einem neuen Rätsel mit Zeitstempel und einem Hinweis in den Kommentaren.
Kommentare
Einen Kommentar schreiben