Das Jahr-2038-Problem … stürzen in 17 Jahren wirklich alle Computer ab?

Die älteren unter den Lesern werden sich eventuell noch an den „Millennium-Bug“ oder „das „Y2K-Problem“ erinnern. Damals wurde befürchtet, dass zum Jahreswechsel vom 31.12.1999 auf den 01.01.2000 die Computer weltweit das Datum falsch anzeigen und auf den 01.01.1900 springen würden. Dies hätte beispielsweise zur Folge haben können, dass Banken Überweisungen nicht ausgeführt hätten, weil das Fälligkeitsdatum zu weit in der Vergangenheit liegt. Der Grund, warum es diesen Bug damals überhaupt erst gegeben hat, liegt im Speicherplatz der Computer. Dieser war lange Zeit sehr knapp und somit teuer. Trotz Kenntnis des Moore’schen Gesetzes wurde damals noch gespart, wo es nur ging. So auch bei den Jahreszahlen in vielen Computerprogrammen, indem man sie nur zwei- statt vierstellig angegeben hat. Die Bedrohung wurde Ende der 90-er Jahre durchaus ernst genommen. Die Schreckensszenarien reichten von einem weltweiten Börsencrash über vom Himmel fallende Flugzeuge bis hin zu Atomraketen, die aufgrund des Softwarefehlers hätten gestartet werden können. Durch eingehende Analysen wurde jedoch im Verlauf der Jahre 1998 und 1999 klar, dass das Ausmaß dieses Bugs deutlich geringer war als zunächst befürchtet. Für die meisten Probleme haben die Programmierer rechtzeitig eine Lösung gefunden und bis auf kleinere Pannen verlief der Jahrtausendwechsel zumindest softwareseitig ohne größere Zwischenfälle. Selbst die temperamentvollen Kunden der Telecom Italia, die für nicht bezahlte Rechnungen aus dem Jahr 1900 eine Mahnung bekommen hatten, beruhigten sich irgendwann auch wieder.

Apotheke Digitalisierung Bug Y2K38 Unix

Der Millenium-Bug war jedoch ein Software-Fehler. Ein Fehler, der auf Ebene der Programme existierte. Computerprogramme werden in einer bestimmten Sprache kodiert, Java zum Beispiel oder C#. Bevor sie jedoch von einem Betriebssystem wie Windows oder iOS interpretiert werden können, müssen sie noch kompiliert werden – also in die unterhalb der Programmebene liegende Maschinensprache übersetzt werden. Und diese Maschinensprache ist binär, sie besteht also, vereinfacht gesagt, nur aus Nullen und Einsen. Im Binärsystem steht die Zahl ganz rechts immer für die Eins. Nach links weg verdoppelt sich der Wert dann von Spalte zu Spalte: also 1, 2, 4, 8, 16, 32, 64, 128 usw. Ein System aus 8 Spalten wird auch 8-Bit-System genannt. Die Zahl eins in einem 8-Bit-Binärschlüssel wird folglich so dargestellt: 00000001. Die Zahl zwei so: 00000010; Drei wäre dann 00000011, vier 00000100, fünf 00000101. Und so weiter. Bis hin zur Zahl 255, der höchsten mit einem 8-Bit-Binärsystem darstellbaren Zahl (128+62+32+16+8+4+2+1 = 255). Heutzutage sind übrigens die meisten Betriebssysteme in der Lage, sogar mit 64-Bit zu rechnen. Damit kann man sehr große Zahlen berechnen, selbst, wenn (wie inzwischen sehr häufig) die Zahl ganz links als führende Null für einen positiven und als führende Eins für einen negativen Wert steht. Und genau das wird gleich nochmal sehr relevant werden.

Eines der verbreitetsten und einflussreichsten Betriebssysteme der Computergeschichte ist Unix. Das kennen Sie garantiert auch! Wenn Sie ein iPhone besitzen, dann begnenet es Ihnen täglich – denn auf ihm basieren die Betriebssysteme von Apple, macOS und iOS. Wenn Sie kein iPhone besitzen, dann entkommen Sie Unix trotzdem nicht – das Open-Source Betriebssystem Linux, auf dem auch einige Apotheken-Warenwirtschafts-Systeme basieren, und das davon abgeleitete mobile Betriebssystem Android sind nämlich ebenfalls Unix-Derivate.

Apotheke Digitalisierung Unix Smartphone
Smartphone = Unix

Unix ist also ein Standard, dem man in der Digitalisierung nicht entkommt. Das ist praktisch, denn nur mit Standards lassen sich auch global gültige Normen festlegen. Eine Norm, die ebenfalls global gilt, ist die Zeit. Der Tag mit seinen gut 24 Stunden basiert auf der Rotation der Erde um die eigene Achse und das Jahr mit seinen ca. 365,25 Tagen auf dem Zeitraum, den die Erde für einen Umlauf um die Sonne benötigt. Und natürlich kann man auch Zeit binär darstellen. Viele digitale Anwendungen wären ohne die korrekte Darstellung von Zeit gar nicht denkbar. Für die weit verbreiteten Unix-Betriebssysteme wurde kurz nach deren Markteinführung festgelegt, dass als Zeitpunkt Null der 01.01.1970 um 0 Uhr UTC (koordinierte Weltzeit … also Greenwich-Zeit) gilt. Und nach jeder Sekunde wird ein 32-Bit-Zähler um den Wert 1 hoch gesetzt. Somit kann jedes Unix-basierte System jederzeit auf die Sekunde genau die Zeit bestimmen. Die Unixzeit eine Sekunde nach Mitternacht am 01.01.1970 sah dann so aus: 00000000 00000000 00000000 00000001. Das führte im Lauf der Zeit mitunter zu bizarren Auswüchsen. So saßen am 9. September 2001 um drei Uhr, 46 Minuten und 40 Sekunden UTC weltweit die Computerfreaks vor ihren Kisten und schauten fasziniert darauf, wie der Sekundenzähler von 999.999.999 auf eine Milliarde umgesprungen ist. So viele Sekunden waren damals seit dem Zeitpunkt Null vergangen. Dargestellt natürlich binär: von 00111011 10011010 11001001 11111111 auf 00111011 10011010 11001010 00000000. Gut, jedem das seine …

Wer aber von Ihnen im Kopf jetzt mitgerechnet hat, dürfte das Problem verstanden haben. Aufgrund der führenden Null ist 2.147.483.647 die größtmögliche Zahl, die sich mit 32-Bit darstellen lässt. Umgerechnet in Sekunden sind das etwas mehr als 68 Jahre. Als damals die Unixzeit definiert wurde, lag das natürlich noch sehr weit in der Zukunft. Typisch Mensch: wir schaffen ein Problem, erkennen es auch und gehen dann davon aus, dass zukünftige Generationen es lösen können werden. Ob das auch in diesem Fall glimpflich ausgehen wird, werden wir erst noch sehen. Und zwar genau am 19. Januar 2038 um 3 Uhr 14 Minuten und 7 Sekunden. Dann werden nämlich 2.147.483.647 Sekunden vergangen sein seit dem Zeitpunkt Null am 01.01.1970 um Mitternacht. Der Zahlenraum der Unixzeit wird dann aufgebraucht sein. In der nächsten Sekunde wird der Binärzähler auf eine führende 1 mit 31 Nullen umspringen. Wir erinnern uns: die führende Eins bedeutet ein negatives Vorzeichen – also ein Minus. Folgsam werden alle Computer, die noch die Unixzeit benutzen, das Datum dann als den Zeitpunkt 2.147.483.648 Sekunden vor (und nicht nach) dem 1. Januar 1970 berechnen. Rechnerisch ist es für diese Rechner dann der 13. Dezember 1901, eine Viertelstunde vor neun Uhr abends.

Apotheke Digitalisierung Unix Zeitmaschine

Wenn Sie, wie ich, im Jahr 2038 noch arbeiten müssen, sollten Sie auf jeden Fall am 18. Januar nochmal eine komplette Datensicherung machen. Man weiß ja nie. Es ist jedoch davon auszugehen, dass Hardware mit 64-Bit bis dahin die meisten 32-Bit-Systeme ersetzt haben dürfte. Mit 64-Bit kann man den Zähler für die Dauer von ungefähr 292 Milliarden Jahre jede Sekunde um den Wert eins nach oben setzen. Das sollte ausreichend sein. Dass tatsächlich alle Computer am Morgen des 19. Januars 2038 noch ohne Probleme laufen werden, ist hingegen alles andere als sicher. Im Gegensatz zum Millenium-Bug, der nur die reine Programmierebene betraf und ebendort behoben werden konnte, handelt es sich beim Jahr-2038-Problem um ein viel tiefer im Innersten der Computer verwurzeltes Problem. Den Überblick, auf welcher 64-Bit-Hardware eventuell noch 32-Bit-Software-Komponenten laufen, kann kein Mensch haben. Ich bezweifle, dass es in 17 Jahren zu massenhaften Abstürzen von Flugzeugen und dem großen Börsencrash kommen wird. Aber wenn ich alleine an die vielen Elektro-Geräte in einer Apotheke denke, die inzwischen alle nur noch mit einem Prozessor laufen, dann kann ich mir beim besten Willen nicht vorstellen, dass da wirklich alle Einzelkomponenten berücksichtigt sein werden: von der automatischen Eingangstür über die Heizung bis hin zum Kühlschrank. Noch haben wir 17 Jahre Zeit für einen Plan B, nur für den Fall der Fälle …