Die Lösung des Problems bestand am Ende daraus, alle Systeme zu identifizieren, die ein derartiges Problem zur Jahrtausendwende hätten haben können, und sie entsprechend anzupassen, etwa durch Anpassung der Software oder den Ersatz durch neue Programme. Das Anpassend oder Ersetzen der Software war natürlich schon aufwändig und teuer genug; als ebenso großes Problem hat sich aber auch der Umstand erwiesen, dass viele Betreiber von Computersystemen überhaupt nicht mehr im Detail wussten, wo sie überall Geräte im Einsatz hatten, die Jahreszahlen im entsprechenden Format speicherten. Zur Jahrtausendwende wurden zwar die meisten dieser Systeme identifiziert und korrigiert, einige wenige (glücklicherweise minder schwere) Fälle von meist falschen Datumsdarstellungen traten aber trotzdem auf. Mit geschätzten Kosten zwischen 300 und 600 Milliarden Dollar1 zur Behebung bzw. Vermeidung war das Jahr-2000-Problem definitiv keine Lappalie, führte aber glücklicherweise auch nicht zu den den prophezeiten Katastrophenszenarien.
Jahr-2038-Problem
Im Jahr 2038 – konkret am 19. Januar 2038, 03:14:08 Uhr – wird uns ein neues, wieder mit einer Datumsdarstellung verbundenes Problem ereilen. Diesmal wird das Problem zwar weniger “hausgemacht” als vielmehr technisch bedingt sein, die Konsequenzen könnten aber um einiges dramatischer als beim Jahr-2000-Problem werden, wenn sich nicht entsprechend darauf vorbereitet wird. Aber im Detail.
Jeder Computer besitzt Viele Betriebssysteme, insbesondere die Unix-basierten, besitzen intern einen kleinen Zähler, welcher die vergangenen Sekunden seit dem 1.1.1970 zählt und zur Bestimmung des aktuellen Datums und der aktuellen Uhrzeit verwendet wird. Dieser Zähler ist normalerweise als vorzeichenbehaftete 32-Bit-Zahl implementiert (wir erinnern uns), das heißt, dass 31 Bit zur Codierung der Zahl zur Verfügung stehen und das 32. (vorderste) Bit speichert, ob wir es mit einer positiven oder negativen Zahl zu tun haben. Der 1.1.1970, 0:00:00 Uhr entspricht der 0000 0000 0000 0000 0000 0000 0000 00002 – eine Zahl mit 32 Nullen. Seit diesem Datum wird dieser Zähler unablässig erhöht, jeweils um 1 in jeder Sekunde.
Wie wir aber wissen, sind Bitketten im Computer endlich – sie können nur bis zu einem bestimmten Wert zählen. Danach sind sie “voll” und es findet ein sogenannter Überlauf statt (ja, das heißt wirklich so). Ein Überlauf findet immer dann statt, wenn zu einer Zahl im Register des Prozessors eine weitere addiert wird, so dass das Ergebnis eine größere Zahl ist, als sie das Register überhaupt fassen könnte. Durch die Arbeitsweise der Rechenwerke von Computern führt ein Überlauf dazu, dass man, wenn man über die größtmögliche darzustellende Zahl “hinausschießt”, im Bereich der kleinstmöglich darzustellenden Zahl landet. Die größte ganze Zahl, die sich mit 32 Bit darstellen lässt, ist die 2.147.483.647. Addiert man im Computer 1 zu ihr, landet man bei der -2.147.483.648, der kleinstmöglich darzustellenden ganzen Zahl.
Und genau das wird am 19. Januar 2038 um 03:14:08 Uhr passieren; dann erreicht der Zähler für die Sekunden seinen maximalen Wert – 0111 1111 1111 1111 1111 1111 1111 1111 11112 (das vorderste Bit ist das Vorzeichenbit) – und er wird umschlagen auf die nächste Zahl, die 1000 0000 0000 0000 0000 0000 0000 00002 (die kleinstmöglich darstellbare ganze Zahl mit 32 Bit). Rechnet man diese Zahl in ein Datum um, so ergibt sich der 13. Dezember 1901, 20:45:52 Uhr. Wer sich jetzt übrigens fragt, warum der Sekundenzähler als vorzeichenbehaftete Zahl implementiert wurde, wo doch das Vorzeichen dazu führt, dass bereits 2038 die höchstmögliche Zahl erreicht wird: das wurde festgelegt, um auch Zeiten vor dem 1.1.1970 über den Sekundenzähler darstellen zu können, was sonst ja nicht möglich gewesen wäre.
Das Jahr-2038-Problem könnte kritischere Auswirkungen als das Jahr-2000-Problem haben, da bei letzterem lediglich Systeme betroffen waren, die Jahreszahlen in dem beschriebenen 2-Ziffern-Format abgespeichert haben. Der Überlauf des Sekundenzählers wirkt sich dagegen auf alle Systeme aus, die in irgendeiner Weise auf ein vom Computer geliefertes Datum oder eine Zeit zurückgreifen, und das sind ziemlich viele.
Kommentare (24)