19 stycznia 2038

Data będąca tytułem dzisiejszego wpisu jest ważna. Jeżeli jej dożyję, będę wtedy miał prawie 64 lata (to ładna, okrągła liczba jest) – a dokładniej rzecz biorąc do 64 lat będzie mi brakowało jeszcze około dwóch miesięcy.

Ale data 19 stycznia 2038 roku jest ważna nie dlatego, że jakiś gość próbujący udawać blogera będzie mieszkał na powierzchni swojej planetki przez ilość czasu równą, pi x oko, ilości sześćdziesięciu czterech okrążeń tejże planetki wokół lekko już ze starości pożółkłej gwiazdy macierzystej. O, co to to nie. Takie sprawy są ważne co najwyżej dla pojedynczych osób, a ja tu mówię o wadze globalnej.

Otóż 19 stycznia 2038 roku, kilka sekund po godzinie 3:14 nad ranem, nastąpi przekręcenie licznika we wszystkich 32-bitowych urządzeniach elektronicznych używających standardu linuksowego do mierzenia czasu.

Ale że o ssso chozzzzi?

Bieżący czas jest w linuksowych systemach reprezentowany jako liczba sekund, które upłynęły od północy pierwszego stycznia 1970 roku.

Jest to liczba całkowita ze znakiem. Innymi słowy – liczba 31-bitowa plus jeden bit na znak.

Największa liczba, którą można uzyskać za pomocą 31 bitów to 231-1 czyli 2 147 483 647 – dodanie jedynki do tej liczby sprawi, że liczba przestanie “mieścić się” w 31 bitach i się “odwróci” – zamieni się na -2 147 483 648 (minus dwa miliardy z hakiem), czyli jakieś 68 lat PRZED pierwszym stycznia 1970 roku (a konkretnie 13 grudnia 1901 roku, ciut przed godziną 2:46)

Jak można domniemywać konsekwencje takiego stanu rzeczy mogą być rozmaite. Pół biedy jeżeli kwestia dotyczy tostera; trzeba tylko uważać, żeby nie przyrządzać tosta o trzeciej nad ranem – w przeciwnym razie toster może podjąć próbę wyłączenia grzałki dopiero po paruset latach, co może uruchomić nasz alarm ppoż, o ile takowy posiadamy.

Gorzej jeżeli błąd pojawi się w czasie lotu samolotem, w jakimś elemencie sterującym autopilotem. Albo w aucie, w elektrowni lub w zapalniku bomby. Tu konsekwencje mogą być dużo bardziej groźne[citation needed].

Problem dotyczy głównie oprogramowania wbudowanego na stałe w różne sprzęty – tzw. embedded code czyli programy “wlutowane na stałe” w hardware lodówki, motocykla czy czujki ruchu. W przypadku (szeroko pojętych) komputerów problemu praktycznie nie ma, ponieważ większość “zabawek” używa teraz systemów 64-bitowych, a nawet jeżeli nie, to istnieją znane i sprawdzone metody na “obejście” problemu w systemach 32-bitowych.

Reasumując: jeżeli, Czytelniku, będziesz żył w dniu 19 stycznia 2038 roku, spodziewaj się Hiszpańskiej Inkwizycji 😉


Liczba słów w tym wpisie: 445

Sprawdź też

Obsydianowy mędrzec

Systemy zarządzania wiedzą? Ściema jakaś, teraz wszystko jest w guglach, po co mi jakieś dodatkowe …

Siedem tygodni, czyli rzecz o szukaniu pracy w czasach zarazy

Blog mi ostatnio zwolnił do ślimaczego tempa. Trochę dlatego, że postanowiłem sobie zrobić przerwę od …

Zapisz się
Powiadom o
guest
6 komentarzy
Inline Feedbacks
Zobacz wszystkie komentarze
6
0
Zapraszam do skomentowania wpisu.x
()
x