Проблема 2038 року в обчислювальній техніці — очікувані збої в програмному забезпеченні 19 січня 2038 року. Ця проблема стосується програми і системи, в яких використовується представлення часу по стандарту POSIX (UNIX-час), яка представляє собою кількість секунд, що пройшли з 1 січня 1970 року. Таке уявлення часу — це стандарт для Unix-подібних операційних систем (за повсюдного використання мови Сі).
У старих 32-бітних системах (до середини 90-х) використовується тип даних 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 мільярдів років (4 грудня 292 277 026 596 року в 15:30:08
Натхнення: earth-chronicles.ru