19 януари 2038 г. 3:14:07 ч. по Гринуич – датата не е нищо специално, но може да се окаже съдбоносна за компютърните системи в целия свят. Причината – много от тях в сегашния си вид може да се окажат неспособни да отчитат времето след този момент и са възможни грешки от всякакъв характер, пише швейцарският вестник „Льо Темп“.
Ситуацията ни връща повече от 2 десетилетия назад – до истерията около т.нар „Проблем 2000“, неяснотите около това дали с края на 1999 г. компютрите ще могат правилно да отчетат новата дата. Макар и през поколение, двата сюжета имат много общо.
„Това не е грешка, а проблем на проектирането. Компютрите са започнали развитието си във времената на героичния (и античен от съвременна гледна точка – б.р.) програмен език КОБОЛ. По онова време работехме занаятчийски, никой не си представяше, че програмите ще работят десетилетия наред“, коментира пред вестника университетският преподавател Жерар Бери.
„Проблем 2000“ се дължеше на притесненията, че в ключови системи стремежът да се пести памет е довел до запаметяване на само последните две цифри от годината и така от 99-та ще пропаднем столетие назад с година 00. През 2038 г. предизвикателството е различно – машинно четимият формат за дата всъщност няма много общо с дни, месеци и години: всъщност се измерват милисекундите от полунощ на 1 януари 1970 г. Проблемът е, че масово се използва 32-битов формат, който ще се изчерпи именно след 17 години.
„Превъртането“ на брояча ще доведе до объркване на компютъра (т.нар целочислено препълване - б.р.), който от четвъртото десетилетие на XXI век ще се окаже директно в… 13 декември 1901 г., 20:45:07 ч. по Гринуич. Какво означава това – проблеми със сортирането на информацията, но и далеч не само.
Системният часовник може да бъде свързан с най-различни функционалности и грешка при него може да компрометира цялата задача. Пример за това е компютърът на противоракетна установка „Пейтриът“ по време на операция „Пустинна буря“ през 1991 г. За да запази точното време, той трябвало да се рестартира на 4 часа. Вместо това, разчетът го оставил да работи 100 и в резултат се постигнало разминаване от 34 стотни – достатъчно, за да не успее да уцели иракска балистична ракета „Скъд“, която след това убива 28 войници и ранява близо 100.
Решението изглежда просто – 64-битов формат на датата би решил проблема за следващите няколко милиарда години. Именно по този начин е реализирана тази функционалност при новите версии на Linux, Windows и MacOS. Лошото е, че старите операционни системи няма лесен начин, по който да бъдат имунизирани от подобни проблеми. 32-битов е и форматът на датата в MySQL базите данни, които се използват за всякакви цели по света.
Това може и да не изглежда страшно за крайния потребител, но всъщност голяма част от критичните системи около нас са изградени върху доста стар хардуер и софтуер. Говорим за електроцентрали, военни инсталации, транспортни средства, медицинско оборудване и др.
Безаварийната работа на подобни компютри не се обезпечава лесно и евтино. „Проблем 2000“ не предизвика глобална икономическа и информационна катастрофа, но е факт, че в само в САЩ бяха дадени милиарди долари от частния и държавния сектор, за да се гарантира, че няма да има срив. Вероятно и този път няма да мине без солидни ИТ инвестиции.