Людство вже 2038 року може зіткнутися з проблемою минулого: у чому вона полягає

У 1999 році люди почали панікувати, що комп'ютери не зможуть правильно опрацювати початок нового століття і станеться крах цивілізації. У 2038 ситуація може повторитися.
Багато хто може не пам'ятати, але 1999 року люди панікували щодо 2000-го року. Побоювання полягало в тому, що під час зміни 99 на 00 комп'ютери не зможуть зрозуміти, що настало нове століття; дата скинеться на 1900 рік, і системи, які залежать від комп'ютерів, вийдуть із ладу, а через це повинен був нібито статися крах цивілізації.
Зрештою, звісно, Новий рік пройшов досить спокійно - багато в чому завдяки масштабній і скоординованій роботі, спрямованій на запобігання катастрофі, пише IFL Science. Однак у цієї історії є продовження...
19 січня 2038 року - день, коли час має закінчитися. Принаймні, для комп'ютерів, що використовують 32-бітний Unix-час, а таких більшість.
"Знакове 32-бітове ціле число може зберігати тільки значення від -2147483648 до 2147483647", - пояснює компанія з кібербезпеки та управління системами Tanium. Це означає, що максимальна часова мітка, яку можуть обробити такі системи, - 2147483647, що відповідає 19 січня 2038 року, 03:14:07 за всесвітнім координованим часом (UTC).
Эти числа не случайны – хотя 2 147 483 648 может показаться произвольным для человеческого глаза, для компьютера, работающего в двоичной системе, это огромная веха: момент, когда счётчик достигает 100 000 000 000 000 000 000 000 000 000 000. Для 32-бітної системи це просто занадто багато цифр, тому вона робить єдине можливе - скидає лічильник.
"Тимчасова мітка переповнюється і стає від'ємною, що спричиняє помилки в даті та часі. Наприклад, часова мітка для 03:14:08 20 січня 2038 року в Unix-часі - 2147483648. Оскільки це неприпустиме значення, система скидає його до -2147483648, що відповідає 13 грудня 1901 року, 20:45:52 UTC. Це і є проблема 2038 року", - додають у компанії.
Після всієї паніки навколо цієї проблеми хочеться вірити, що цього разу людство все передбачило. Зрештою, про баг 2038 року відомо щонайменше з 2006 року, коли аналогічна помилка зачепила веб-сервер AOL. Насправді, рішення доволі просте й очевидне: перехід на 64-бітні системи.
З 64 бітами достатньо місця для зберігання тимчасових значень на мільярди років уперед, навіть якщо використовувати високоточний (наносекундний) час.
Однак багато баз даних, включно з реляційними і NoSQL, все ще використовують 32-бітний час. У зону ризику також потрапляють програми, написані мовами, заснованими на C, такими як C++ і PHP. Уразливими є пристрої на Windows, Linux, Android та iOS, а також медичні апарати, промислові системи управління, що використовуються на електростанціях і в транспорті, автомобілі з бортовими комп'ютерами, маршрутизатори тощо.
Загалом, наслідки можуть бути дуже руйнівними.
"Точно сказати, наскільки ми готові, складно. Нові операційні системи вже отримують 64-бітну підтримку часу, але головна проблема - наявні системи. Перехід від 32-бітних до 64-бітних значень часу для операційних систем не такий вже й простий", - йдеться в матеріалі.
Простіше кажучи, різкий перехід на 64-бітний час може викликати хаос. Хоч усі сучасні комп'ютерні системи будуть оновлені задовго до 2038 року, головна проблема збережеться в старих програмах, які ніхто не оновлює.
Навіть якщо знайти та оновити всі 32-бітні системи, вторинні ефекти від таких масштабних змін також потрібно передбачити та вивчити, щоб уникнути нових проблем.
Источник: unian.ua