- Проблема 2038 года
-
В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники.
Эта отметка установлена 21 ноября 2011.Проблема 2038 года в вычислительной технике — ожидаемые сбои в программном обеспечении 19 января 2038 года. Данная проблема затрагивает программы и системы, в которых используется представление времени по стандарту POSIX (UNIX-время), которое представляет собой количество секунд, прошедшее с 1 января 1970 года. Такое представление времени — это стандарт для Unix-подобных операционных систем (из-за повсеместного использования языка Си).
На большинстве 32-битных систем используется тип данных
time_t
для хранения секунд в видеsigned int
(32-битного целого со знаком). Самая поздняя дата, которая может быть представлена таким форматом в стандарте POSIX — это 03:14:07, вторник, 19 января 2038 года по Всемирному времени (UTC).Более позднее время заставит такое поле данных стать отрицательным, как бы закольцевав таким образом время (поскольку отрицательное число может быть воспринято программами как время в 1970 или 1901 году, в зависимости от реализации). В результате могут быть произведены ошибочные вычисления или результаты.
Для проблемы 2038 года не существует простого решения для существующих комбинаций процессоров и операционных систем.
Изменение определения типа
time_t
на 64 бита нарушит бинарную совместимость программ, существующих хранимых данных и всего другого, использующего представление времени в бинарном виде. А приведениеtime_t
в целое без знака может нарушить работу программ, которые вычисляют разницу во времени.В большинстве операционных систем для 64-битных архитектур уже используется 64-битное представление целого в
time_t
. Переход на такие архитектуры уже происходит, и некоторые ожидают, что он будет завершён к 2038 году.Тем не менее, сотни тысяч 32-битных систем всё ещё вводятся в строй в 2010 году, в том числе и во встраиваемых системах. Вызывает сомнение, что они все будут заменены к 2038 году. Несмотря на то, что современные компьютерные системы могут модернизироваться раз в 18-24 месяцев (по «Закону Мура»), встроенные компьютеры могут действовать без модернизации весь срок, который работают системы, ими управляемые. Например, компьютеры управления процессами модели IBM 1800, выпуск которых был начат в 1965 году, всё ещё использовались на одной из атомных станций в Канаде в 2006 году.
В дополнение к этому, 32-битный формат
time_t
также включён в спецификации форматов файлов, таких как повсеместно распространённый архивный формат ZIP. Формат файла может существовать в течение времени, за которое сменятся многие поколения компьютеров, а это означает, что Проблема 2038 останется актуальной.Введение 64-битного формата вносит новую дату «закольцевания» через примерно 290 миллиардов лет.
Windows
Проблема 2038 года актуальна и для 32-разрядных версий Windows, так как значительная часть самой ОС и большое число программ для неё написано на C/C++. Разработчики Windows говорят[1], что исправили большинство багов, связанных с этой проблемой, однако, они не могут дать никаких гарантий по поводу стороннего ПО.
Примечания
Проблемы дат в программировании Программирование По годам Проблема 100 года • Проблема 2000 года • Проблема 2038 года • Проблема 10000 года См. также 0 год Разработка программного обеспечения Категории:- UNIX
- Microsoft Windows
- Проблемы дат в программировании
- 2038 год
Wikimedia Foundation. 2010.