In het jaar 2038 zouden de meeste moderne computers kunnen stoppen met werken als we ons er niet op voorbereiden. Dit komt niet door een massaal virus of verslechterende hardware, maar heeft alles te maken met de manier waarop computers de tijd bijhouden.
Bijna elke computer houdt de tijd bij met behulp van een 32-bits processor, en telt vooruit vanaf 00:00:00 UTC op 1 januari 1970, ook wel ‘de epoche’ genoemd. Dit tijdstip is vastgesteld als de standaard voor moderne computersystemen, maar er is een groot probleem. Zeven seconden na 3:14 uur UTC op 19 januari 2038 zal het 32-bits systeem dat deze tijdgegevens in veel computers opslaat, geen posities meer hebben.
Het probleem is vergelijkbaar met het Y2K-probleem, waarbij een 2-cijferige waarde niet langer kon worden gebruikt om de jaren 2000 of later te coderen, maar is anders in die zin dat deze 32-bits bug verband houdt met Unix-achtige systemen en het Unix-tijdformaat.
Deze overeenkomsten met de Y2K-bug hebben ertoe geleid dat het 2038-probleem algemeen bekend staat als de Unix Millennium Bug.
The Unix Millennium Bug
Processoren die 32-bits software draaien, kunnen 232 verschillende waarden of 4.294.967.295 verschillende getallen verwerken binnen 4 GB geheugen. Deze systemen slaan datums en tijden op in 32-bit brokken. In werkelijkheid wordt dat grote aantal verschillende waarden gehalveerd voor het bijhouden van de tijd en andere toepassingen voor gegevensopslag. Er blijven dus 2.147.483.647 positieve waarden over om gegevens in op te slaan.
Dit betekent dat de laatste tijd die in de Unix 32-bit tijdcode kan worden weergegeven 231-1 of 2.147.483.647 seconden na 1 januari 1970 is. Tijden na dit punt zullen terugdraaien en worden opgeslagen als negatieve getallen. Dit wordt veroorzaakt doordat het opslagsysteem geen gehele getallen meer heeft om te moduleren, zodat alleen het teken nog kan worden veranderd. Computers zullen dit dan interpreteren als de 13e december van 1901, en verder, in plaats van de werkelijke datum.
Dit klinkt misschien niet als een groot probleem, maar denk eens aan alle manieren waarop we software gebruiken. Als u licenties hebt die van een tijdstempel zijn voorzien, kunt u plotseling de toegang verliezen tot belangrijke werkdocumenten, financiële informatie en meer.
De problemen zullen niet pas in 2038 ontstaan, alle software die gebruikmaakt van toekomstige datums zal snel moeten worden gerepareerd. Programma’s die werken met data 20 jaar in de toekomst, zoals beleggingsfondsen en geavanceerde planningsprogramma’s, moesten niet later dan 2018 worden gerepareerd.
Dit alles klinkt misschien als een eenvoudige fix, verander gewoon de einddatum van de opslagmethode, maar zo eenvoudig is het niet. Computer ingenieurs achter games en apps die wachtperiodes hebben, komen nu al in de problemen met het coderen van datums voorbij 19 januari 2038. Omdat de opslagmethode 32-bit Unix is, is het voor deze 3e partij programmeurs onmogelijk om data voorbij deze tijd te coderen.
GERELATEERD: 12 OUDSTE WEBSITES VAN DE JAREN ’80 EN ’90 ZIJN NU nog ONLINE
Maar wat dan nog, zult u zich afvragen. De data zullen worden veranderd, de programmeurs verwachten deze problemen al en eventuele problemen zullen geen paniek veroorzaken, ze zullen gewoon snel worden opgelost. Nou, dit is niet helemaal waar.
Vervoerssystemen, waaronder vliegtoestellen en moderne auto’s, maken gebruik van ingebedde software die vaak onaangeroerd blijft. Bijna alles in moderne auto’s wordt bestuurd door de ECU, oftewel de boordcomputer, die gebruik maakt van Unix tijdwaarneming om datums en tijden bij te houden. Dit betekent dat deze bug mogelijk ABS-remsystemen, elektronische stabiliteitscontroles, tractiecontroles en GPS-systemen kan onderbreken; ze kunnen allemaal aanzienlijk worden beïnvloed.
Al deze systemen hebben geen toegang tot datums nodig om te kunnen werken, maar sommige wel, en het is moeilijk te achterhalen welke zijn geprogrammeerd met datumafhankelijke code.
Dus, wat is de oplossing? Er is geen gemakkelijke.
Ingebedde systemen zoals die in auto’s en apparaten zijn ontworpen om de hele levensduur van het apparaat mee te gaan zonder software-update. Aangesloten elektronica kan snel worden gerepareerd met een software-update als het zover is, maar het zijn de ingebedde systemen die in 2038 waarschijnlijk de meeste ravage zullen aanrichten, omdat de meeste niet zullen worden bijgewerkt.
Eén optie is om het gegevensopslagsysteem van de 32-bits integer te wijzigen in een niet-ondertekende 32-bits integer. Dit zou theoretisch datumopslag helemaal tot 2106 mogelijk maken, maar elk systeem dat een datum van vóór 1970 gebruikte, zou problemen krijgen met de toegang tot deze gegevens.
Als de gegevensopslag wordt verhoogd naar 64-bits, zouden we in compatibiliteitsopslagproblemen komen tussen oudere systemen die alleen 32-bits gegevensopslag gebruiken.
Er is momenteel geen universele oplossing voor het probleem, en zelfs de meest algemeen geaccepteerde fixes hebben nog steeds bugs in bepaalde gebruiksgebieden. Aan het eind is er echter positief nieuws.
De meeste nieuwe elektronische apparatuur is ontworpen om de nieuwere 64-bits gegevensopslagmethode te gebruiken. Een datumgeheugen zo groot zou 20 keer langer duren dan de geschatte huidige leeftijd van het heelal, ongeveer 292 miljard jaar om 15:30:08 UTC op zondag 4 december 292.277.026.596. Tot die tijd zou je iPhone dus wel eens veilig kunnen zijn.
Gelukkig is dit probleem bekend en grondig bestudeerd, wat betekent dat computertechnici de problemen waarschijnlijk zullen oplossen, althans met software die nog steeds wordt bijgewerkt en onderhouden. Maar wat betreft die prachtige Prius uit 1997 die in 2038 in uw garage staat? Wel, je kan er misschien niet meer mee rijden na 3:14 AM op januari 2038, dankzij zijn nu defecte boordcomputer.