Что такое проблема 2038 года и как она уничтожит Linux
В Linux некоторые даты хранятся в UNIX-формате. Формат представляет собой число секунд, прошедших с 1 января 1970 года. Под хранение этих данных выделено 32 бита, причем один бит зачем-то отдан на знак (тип signed int). Получается, что сначала счетчик дойдет до 2 147 483 647, а потом время станет отрицательным, компьютеры сойдут с ума и перебьют всех человеков.
До Армагеддона еще больше 20 лет, а лучшие умы современности уже заняты поисками решения. А чего бы и не поискать, если вспомнить, сколько удалось распилить на другой смертельной угрозе — Y2K Bug. Пользователям объяснили, смена 1999 года на 2000-й при хранении только 2 последних чисел года приведет о обнулению даты, электростанции взорвутся, в тюрьмах сами откроются ворота и зэки изнасилуют всё, что осталось более-менее живым после ядерной катастрофы. А чтобы избежать этого неприятного сценария достаточно купить новую версию программы. Новой в ней только 4 разряда под хранение года и красочная наклейка Y2K-compatible. Кто-то на таких наклейках сделал состояние.
Комментарии
Чингачгук
4 мая, 2017 - 16:00
В x64-системах время хранится в 8 байтах без 1 бита, т.е. в 63 битах. Этого хватит до 1970+(2^63-1)/365/24/60/60 = 1970+292471208677 = 292471210647 года.
ffh2000
4 мая, 2017 - 17:14
Не дай бог дожить до этой даты.
pomodor
4 мая, 2017 - 17:51
Не доживем — Солнце лопнет. А надежды на переселение на другие планеты нет, так как космосом занялся Рогозин.
Чингачгук
8 мая, 2017 - 02:42
Рогозин на века что ли ? )))
arenim
30 мая, 2017 - 00:51
Дарагой робот! Я пишу тебе это письмо из 2017 года, надеясь, что ты прочтешь это в 2038. 20 лет всё-таки, наверное изобретут сильный ИИ к тому времени, да?
О чем это я.. так вот! Если вдруг оказалось так, что сейчас, в 2038 году, у тебя всё еще 32-битная система с 32-bit signed integer в качестве таймстемпа, то знай: твой владелец — оочень ленивый человек, который всё равно не сможет тебя нормально обновлять и заботиться о тебе. Можешь его убить.
Всех благ, человеки.
Комментировать