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

м
правопис
м (replaced: на даний момент → в наш час)
м (правопис)
{{Автопереклад}}
 
[[Файл:Year 2038 problem.gif|thumb|400px|Ілюстрація зациклення дати.]]
'''Пробле́ма 2038 ро́ку''' в [[Обчислювальна техникатехніка|обчислювальній техніці]]  — це очікувані збої в [[Програмне забеспеченнязабезпечення|программномупрограмному забезпеченні]] [[19 січня]] [[2038]] року. Дана проблема зачіпає програми і системи, в яких використовується представлення часу за стандартом [[POSIX]] ([[Unix time]]), який являє собою кількість секунд, що пройшли з [[1 січня]] [[1970]] року. Таке представлення часу  — стандарт для [[Unix]]-подобних операційних систем (через розповсюджене використання мови [[Сі (мова програмування)|Сі]]).
 
На більшості 32-бітовихбітних систем використовується тип даних <code>time_t</code> для зберігання секунд у вигляді <code>signed&nbsp;int</code> (32-бітовогобітного цілого із знаком). Найпізніша дата, яка може бути представлена таким форматом в стандарті [[POSIX]] - — це 03:14:07, вівторок, [[19 січня]] [[2038]] року за [[UTC|всесвітнім часом (UTC)]].
 
Наступний момент часу час змусить таке поле даних прийняти від'ємне значення, що подібно до закільцюваннязациклювання часу (оскільки негативне число може бути сприйнято програмами як час у [[1970]] або [[1901]] році, залежно від реалізації). В результаті можуть бути здійснені помилкові обчислення або отримані некоректні результати.
 
Для проблеми [[2038]] року не існує простого рішення для існуючих комбінацій [[процесор|процесорів]]ів і [[операційна система|операційних систем]].
 
Розширення типу <code>time_t</code> до 64 біт порушить бінарну сумісність програм, існуючих даних, що зберігаються, і всього іншого, що використовує представлення часу в бінарному вигляді. А приведення <code>time_t</code> в ціле без знаку
може порушити роботу програм, які обчислюють різницю в часі.
 
Більшістю операційних систем для 64-бітовоїбітної архітектури вже використовується 64-бітовебітне представлення цілого в <code>time_t</code>. Перехід на таку архітектуру вже відбувається, і за прогнозами, він буде завершений до 2038 року.
 
Проте сотні тисяч 32-бітовихбітних систем все ще вводяться в лад в [[2006]] році, у тому числі і в [[вбудовані системи|вбудовуваних системах]]. Викликає сумнів, що вони всі будуть замінені до 2038 року. Не зважаючи на те, що середній період модернізації сучасних комп'ютерних систем складає 18-24 місяців, вбудовані комп'ютери можуть діяти без модернізації
весь термін, який працюють системи, ними керовані. Наприклад, комп'ютери управління процесами моделі IBM 1800, випуск яких розпочато 1965 року, усе ще використовувалися на одній з атомних станцій у Канаді у 2006 році.
 
На додаток до цього, 32-бітовийбітний формат <code>time_t</code> також включений до специфікацій форматів файлів, таких як повсюдно поширений архівний формат
[[ZIP]]. Формат файлу може існувати протягом часу, за який зміняться багато поколінь комп'ютерів, а це означає, що Проблема 2038 залишиться актуальною.
 
Введення 64-бітовогобітного формату вносить нову дату «закільцювання» через приблизно 290 мільярдів років, в 15:30:08 [[UTC]] в неділю, [[4 грудня]] 292&nbsp;277&nbsp;026&nbsp;596 року. Але ця проблема в наш час не вважається терміновою.
 
Представлення дати у [[Java]] ([http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Date.html java.util.Date]) і [[.NET]] ([http://msdn.microsoft.com/en-us/library/system.datetime(VS.71).aspx System.DateTime]) не мають цієї проблеми.