Problem des Jahres 2038

Das Problem des Jahres 2038 (auch bekannt als der Unix Millennium-Programmfehler, Y2K38 oder Y2.038K analog zum Y2K Problem) kann eine Computersoftware veranlassen, an einem Punkt in der Nähe vom Jahr 2038 zu scheitern. Das Problem betrifft die ganze Software und Systeme, dass sowohl Systemzeit als eine unterzeichnete ganze 32-Bit-Zahl versorgen Sie, als auch diese Zahl als die Zahl von Sekunden seitdem interpretieren Sie

0:00:00 Uhr UTC am Donnerstag, dem 1. Januar 1970. Die weiteste Zeit, die dieser Weg vertreten werden kann, ist 3:14:07 Uhr UTC am Dienstag, dem 19. Januar 2038.

Zeiten außer diesem Moment werden sich ringsherum "einhüllen" und innerlich als eine negative Zahl versorgt werden, die diese Systeme als ein Datum 1901 aber nicht 2038 interpretieren werden. Das wird durch die Überschwemmung der ganzen Zahl verursacht. Der Schalter "geht" verwendbarer Ziffern "aus", "erhöht" das Zeichen-Bit statt dessen und die Berichte a maximal negative Zahl (fortsetzend, zur Null zusammenzuzählen). Das wird wahrscheinlich Probleme für Benutzer dieser Systeme wegen falscher Berechnungen verursachen.

Weiter, während die meisten Programme nur in oder sehr in der Nähe von 2038 betroffen werden, werden Programme, die mit zukünftigen Daten arbeiten, beginnen, in Probleme viel eher zu geraten. Zum Beispiel wird ein Programm, das mit Daten 20 Jahre in der Zukunft arbeitet, nicht später befestigt werden müssen als 2018.

Weil die meisten Unix ähnlichen 32-Bit-Systeme versorgen und Zeit mit diesem Format manipulieren, wird es gewöhnlich Zeit von Unix genannt, und so wird das Problem des Jahres 2038 häufig den Unix Millennium-Programmfehler genannt.

Frühe Probleme

Im Mai 2006 sind Berichte von einer frühen Manifestation des Y2038 Problems in der AOLserver Software aufgetaucht. Die Software wurde mit einer Improvisationslösung entworfen, um eine Datenbankbitte zu behandeln, die "nie" Unterbrechung sollte. Anstatt diesen speziellen Fall spezifisch zu behandeln, hat das anfängliche Design einfach ein willkürliches Pause-Datum in der Zukunft angegeben. Die Verzug-Konfiguration für den Server hat angegeben, dass die Bitte Unterbrechung nach einer Milliarde Sekunden sollte. Eine Milliarde Sekunden (etwa zweiunddreißig Jahre) danach 9:27.28 Premierminister am 12. Mai 2006 sind außer dem 2038-Abkürzungsdatum. So, nach dieser Zeit, hat die Pause-Berechnung überflutet und hat ein Datum zurückgegeben, das wirklich in der Vergangenheit war, die Software veranlassend, abzustürzen. Als das Problem entdeckt wurde, mussten AOL Server-Betriebsleiter die Konfigurationsdatei editieren und die Pause auf einen niedrigeren Wert setzen.

Verwundbare Systeme

Eingebettete Systeme werden höchstwahrscheinlich vom 2038-Programmfehler betroffen. Fernmeldesysteme und Transport-Systeme vom Flug bis Automobile verwenden zunehmend eingebettete Systeme. Automobile, elektrische Fahrzeuge und hybride Fahrzeuge verwenden eingebettete Systeme zunehmend, um Leistungsfähigkeit zu maximieren und Verschmutzung zu reduzieren. Andere Automobilsicherheitssysteme schließen Antiblockiersystem (ABS), elektronische Stabilitätskontrolle (ESC/ESP), Antriebsregelung (TCS) und automatischer Allradantrieb ein. Neue Flugzeuge enthalten fortgeschrittene Avionik wie Trägheitsleitungssysteme und GPS Empfänger, die auch beträchtliche Sicherheitsvoraussetzungen haben. Ein anderer Hauptgebrauch von eingebetteten Systemen ist in Kommunikationsgeräten, einschließlich Mobiltelefone und Internetgeräte (Router, Radiozugriffspunkte, usw.), die sich auf die Speicherung einer genauen Zeit und Datums verlassen und zunehmend auf UNIX ähnlichen Betriebssystemen basieren.

, die meisten eingebetteten Systeme verwenden 8-bit- oder 16-Bit-Mikroprozessoren, gerade als Tischsysteme zu 64-Bit-Systemen wechseln. Trotz der modernen 18-24-monatigen Generational-Aktualisierung in der Computersystemtechnologie werden eingebettete Systeme entworfen, um die Lebenszeit der Maschine zu dauern, in der sie ein Bestandteil sind. Es ist denkbar, dass einige dieser Systeme noch im Gebrauch 2038 sein können. Es kann unpraktisch oder, in einigen Fällen, unmöglich sein, die Software zu befördern, die diese Systeme schließlich führt, Ersatz verlangend, wenn 32-Bit-Beschränkungen korrigiert werden sollen.

Der Gebrauch von 32 Bit ist auch in einige Dateiformate verschlüsselt worden, was bedeutet, dass er von gut außer dem Leben der Maschinen leben kann, auf denen solche Dateiformate ursprünglich unterstützt wurden.

Datenstrukturen mit Zeitproblemen

Viele Datenstrukturen im Gebrauch ließen heute 32-Bitzeiten-Darstellungen in ihre Struktur einbetten. Eine volle Liste dieser Datenstrukturen ist eigentlich unmöglich abzustammen, aber es gibt wohl bekannte Datenstrukturen, die das Zeitproblem von Unix haben.

  • Dateisysteme (verwenden viele filesystems nur 32 Bit, um Zeiten mit inode zu vertreten)
  • Datenbanken (die 32-Bitzeiten-Felder haben)
  • COBOL-Systeme von den 1970er Jahren, den 1980er Jahren und den 1990er Jahren, die durch 2038-entgegenkommende Systeme nicht ersetzt worden sind
  • eingebettete Fabrik, Raffinerie-Kontrolle und Mithörsubsysteme
  • geordnete medizinische Geräte
  • geordnete militärische Geräte

Jeder dieser Plätze, wo Datenstrukturen mit 32 Bitzeiten im Platz sind, ließ seine eigenen Gefahren mit dem Misserfolg des Produktes verbinden, wie entworfen, zu leisten.

Lösungen

Es gibt keine universale Lösung für das Problem des Jahres 2038. Jede Änderung zur Definition des Datentyps würde auf Codevereinbarkeitsprobleme auf jede Anwendung hinauslaufen, in der Datum und Zeitdarstellungen von der Natur der unterzeichneten ganzen 32-Bit-Zahl abhängig sind. Zum Beispiel würde das Ändern zu einer nicht unterzeichneten ganzen 32-Bit-Zahl, die die Reihe bis das Jahr 2106 erweitern würde, Programme nachteilig betreffen, die versorgen, wiederbekommen, oder Daten vor 1970 manipulieren, weil solche Daten durch negative Zahlen vertreten werden.

Am meisten Betriebssysteme haben vorgehabt, auf 64-Bit-Hardware zu laufen, bereits verwenden hat ganze 64-Bit-Zahlen unterzeichnet, effektiv das Problem des Jahres 2038 in jeder Software beseitigend, die entwickelt worden ist, um das verlängerte Format zu verwenden. Das Verwenden eines unterzeichneten 64-Bit-Werts führt ein neues Bildumlauf-Datum ein, das mehr als zwanzigmal größer ist als das theoretisierte Alter des Weltalls: etwa 292 Milliarden Jahre von jetzt an, um 15:30:08 Uhr am Sonntag, dem 4. Dezember 292,277,026,596. Die Fähigkeit, Berechnung an Daten zu machen, wird durch die Tatsache beschränkt, die einen unterzeichneten int 32-Bit-Wert verwendet, der in 1900 für das Jahr anfängt. Das beschränkt das Jahr auf ein Maximum 2,147,485,547 (2,147,483,647 + 1900).

Alternative Vorschläge sind gemacht worden (von denen einige im Gebrauch sind), wie Speicherung entweder Millisekunden oder Mikrosekunden seit einem Zeitalter (normalerweise entweder am 1. Januar 1970 oder am 1. Januar 2000) in einer unterzeichneten ganzen 64-Bit-Zahl, ein Minimum der Reihe von 300,000 Jahren zur Verfügung stellend. Andere Vorschläge für neue Zeitdarstellungen stellen verschiedene Präzision, Reihen und Größen (fast immer breiter zur Verfügung als 32 Bit), sowie das Beheben anderer zusammenhängender Probleme wie das Berühren von Sprung-Sekunden.

Siehe auch

Links


William St Leger / Stamm Christie
Impressum & Datenschutz