Проблема 2038 року: відмінності між версіями

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
VolkovBot (обговорення | внесок)
м робот додав: cs:Problém roku 2038 [r5544]
TXiKiBoT (обговорення | внесок)
м робот додав: zh-yue:2038年問題
Рядок 47: Рядок 47:
[[tr:2038 yılı problemi]]
[[tr:2038 yılı problemi]]
[[zh:2038年问题]]
[[zh:2038年问题]]
[[zh-yue:2038年問題]]

Версія за 13:14, 5 серпня 2008

Ілюстрація зациклення дати.

Пробле́ма 2038 ро́ку в обчислювальній техніці, очікувані збої в программному забезпеченні 19 січня 2038 року. Дана проблема зачіпає програми і системи, в яких використовується представлення часу за стандартом POSIX (Unix time), який вдає із себе кількість секунд, що пройшла з 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-бітових систем все ще вводяться в лад в 2006 року, у тому числі і в вбудовувані системах. Викликає сумнів, що вони всі будуть замінені до 2038 року. Не дивлячись на те, що середній період модернізації сучасних комп'ютерних систем складає 18-24 місяців, вбудовані комп'ютери можуть діяти без модернізації весь термін, який працюють системи, ними керовані. Наприклад, комп'ютери під управлінням процесорів моделі IBM 1800, випуск яких був початий в 1965 році, все ще використовуються на одній з атомних станцій у Канаді (2006 рік).

На додаток до цього, 32-бітовий формат time_t також включений в специфікації форматів файлів, таких як повсюдно поширений архівний формат ZIP. Формат файлу може існувати протягом часу, за який зміняться багато поколінь комп'ютерів, а це означає, що Проблема 2038 залишиться актуальною.

Введення 64-бітового формату вносить нову дату «закільцьовування» через приблизно 290 мільярдів років, в 15:30:08 UTC в неділю, 4 грудня 292 277 026 596 роки. Але ця проблема на даний момент не вважається терміновою.

Дивись також