19 января 2038 года в 03:14:07 по Гринвичу компьютеры и другие устройства с 32-битной системой не смогут больше верно отсчитывать время. Данное предположение по аналогии с «проблемой 2000 года», когда ожидались возможные сбои из-за смены тысячелетия, назвали «проблемой 2038 года». Однако у человечества еще есть шанс, чтобы решить проблему с использующимся сегодня принципом отсчета времени.
Вы еще помните проблему двухтысячного года? Помните из-за чего она возникла? Да, из-за аппаратного ограничения в обозначении года двумя знаками в BIOS материнских плат. Тогда из 1999 года многие, вовремя не модифицированные, компьютеры перепрыгнули в 1930 год. Журналисты прошлого тысячелетия активно предрекали падение самолетов, столкновения поездов, внезапное обогащение бедных и обнищание богатых. В итоге ничего глобального не произошло, так как у подавляющего большинства активно используемых компьютеров того времени данная проблема уже была устранена. Однако предпримчивые люди, как обычно это и бывает, на волне паники раздутой вокруг этой проблемы, успели хорошенько заработать.
Отличие от двухтысяного года состоит в том, что в этот раз проблема заключается не в аппаратной, а в программной части компьютерных систем. Для того, чтобы лучше разобраться в сути проблемы, произведем небольшой экскурс в ОС Linux.
В 1970 году начался отсчет в UNIX-time. Время в “эпоху UNIX” определяется как количество секунд, прошедших с полуночи 1 января 1970 года по шкале всемирного времени UTC (этой шкалой пользуемся мы с вами). Представлять время в виде количества секунд удобно, если нужно хранить и сравнивать даты: исходная информация занимает минимум места, а преобразовать ее можно как угодно. Для работы со временем в этой операционной системе имеется несколько функций. Прежде всего это функции time() и date(). Обе функции работают с меткой времени выражающейся целым числом (количество секунд прошедших с начала времен Linux - 1 января 1970 года). Так как тип "целое число" имеет наложенное 32-х битное ограничение от 0 до 2 147 483 647, то сооответственно мы получаем максимально возможное значение даты - 19 января 2038 года, 3 часа, 14 минут и 7 секунд. В этот момент, предположительно, счетчик «обнулится» до 1970 или 1901 года, в зависимости от установок.
Множество элементов сети используют временные метки и внезапный перенос почти на семьдесят лет назад однозначно принесет значительные проблемы в мировую экономику. Если ничего не делать, то сегодняшний экономический кризис - мелкая неприятность по сравнению с тем, что ждет нас утром 19 января 2038 года. Сложность заключается еще в том, что таких устройств множество, и расположены они в самых неожиданных местах. Иногда, даже сложно представить, что в этой коробочке работает ОС Linux. И вот лежит такая коробочка где-нибудь в темном чулане и в указанную дату без предупреждения отправляет сетку огромного предприятия в нокаут.
Кстати, это проблема касается не только ОС Linux. Огромная часть ОС Windows и программ для нее написана на языке программирования Си, созданном во время написания UNIX. В современных версиях ОС Windows, по заверениям разработчиков, на текущий момент времени проблема уже успешно исправлена, но никто не может дать гарантии того, что в будущем не возникнет проблем со сторонним программным обеспечением для этой операционной системы.
Проблема 2038 года сама по себе не нова. С чем-то подобным уже столкнулся Google на своём сервисе YouTube. Проблема была вызвана количеством просмотра самого популярного в интернете видео — клипа Gangnam Style южнокорейского исполнителя Psy. Количество его просмотров достигло 2 147 483 647, в тот момент счетчик просто перестал работать. Эта ситуация была решена программистами Google им пришлось его переписывать. Счетчик был успешно починен, и сейчас имеет большой задел — теперь допустимое количество просмотров составляет 9 223 372 036 854 775 808 (более 9 триллионов).
Для решения проблемы 2038 года была изобретена и уже введена в эксплуатацию система 64-битного отсчёта времени. Это отодвигает точку апокалипсиса сразу на 290 миллиардов лет. Кроме того, у человечества есть еще двадцать с лишним лет в запасе для того чтобы спокойно заланировать и успешно произвести работы по обновлению своего программного обеспечения.