2038-ci il problemi

Zaman sayğacının necə sıfırlanacağını göstərən rəms
Zaman sayğacının necə sıfırlanacağını göstərən rəms

2038-ci il problemi — hesablama texnikasında 19 yanvar 2038-ci ildə müəyyən proqram təminatlarında baş verməsi gözlənilən ciddi bir proqramlaşdırma xətası. Bu problem zamanın POSIX standartı (UNIX-zaman) ilə təsvir olunduğu proqram və sistemlərdə baş verəcək.

Xəta, sistem zamanını 1 yanvar 1970-ci il tarixindən bəri saniyə əsasında hesablayan və 32-bitlik UNIX sistemlərdə 19 yanvar 2038-ci il çərşənbə axşamı günü saat 03:14:07-də sayğacın başa dönməsi ilə sistem tarixinin 13 dekabr 1901-ci il 20:45:52-i göstərməsi ilə ortaya çıxacaq.

Demək olar ki, Unix bənzəri bütün 32-bitlik əməliyyat sistemlərində bu problemin yaşanacağı gözlənilir. Bundan başqa 32-bitlik Windows əməliyyat sistemləri və MySQL verilənlər bazası ilə çalışan web-layihələr üçün eyni problem aktual xarakter daşıyır.

Son illərdə bu xətanın aradan qaldırılması ilə bağlı bir çox təkliflər irəli sürülsə də heç biri faydalı olmamışdır.

Mütəxəssislər qeyd edirlər ki, 32-bitlik prosessor və əməliyyat sistemləri üçün bu ehtimal olunan problemin sadə həlli mövcud deyil. Odur ki, yaxşı olardı ki, risk halıyla qarşılaşmadan 2038-ci ilə qədər 32-bitlik bu sistemlər 64-bitlik sistemlərlə əvəz edilsin.

2038-ci il problemi — (ing. Year 2038 problem, ru. проблема 2038 года – 2038-ci ilin yanvar ayının 19-da kompüterlərin proqram təminatında gözlənilən sıradançıxmalar. Bu problem zamanın göstərilməsi üçün POSIX (UNIX-zaman) standartından istifadə olunan proqramlar və sistemlərlə bağlıdır. Bu standartda zamanı göstərmək üçün 1 yanvar 1970-ci il tarixindən keçən saniyələrin miqdarı götürülür.

32-bitlik sistemlərin əksəriyyətində saniyələri signed int (32-bitlik işarəli tam ədəd) şəklində saxlamaq üçün time_t verilənlər tipindən istifadə olunur. POSIX standartında belə formatla veriləbilən ən son zaman Ümumdünya zamanına (UTC) görə 2038-ci ilin yanvar ayının 19-u, çərşənbə axşamı, saat 03:14:07 olacaq. Bundan sonrakı zamanda time_t dəyişəninin qiyməti mənfi olacaq ki, proqramlar mənfi ədədi ya 1970-ci, ya da 1901-ci il kimi qəbul edəcək (reallaşdırmadan asılı olaraq). Bu da yanlış hesablamalara, yaxud nəticələrə səbəb ola bilər. Prosessorların və əməliyyat sistemlərinin mövcud kombinasiyası üçün 2038-ci il probleminin sadə həlli yoxdur. time_t tipini 64 bitlə təyin etmək proqramların, mövcud saxlanılabilən verilənlərin və verilənlərin binar şəkildə göstərilməsindən istifadə olunan hər şeyin binar uyğunluğunu poza bilər. time_t tipini işarəsiz tam ədədə çevirmək isə zaman fərqini hesablayan proqramın işini korlaya bilər. 64-bitlik arxitekturalı əməliyyat sistemlərinin əksəriyyətində artıq time_t 64-bitlik ədəd kimi verilir. Bu arxitekturaya keçid başlayıb və bəziləri onun 2038-ci ilədək sona çatacağını gözləyirlər. Buna baxmayaq, indi də yüz minlərlə 32-bitlik sistemlər istifadəyə verilir və onların 2038-ci ilədək əvəz olunacağı şübhə doğurur.

64-bitlik formata keçid isə təxminən 290 milyard ildən sonra, daha dəqiqi, 292277026596-cı ilin dekabr ayının 4-də, bazar günü saat 15:30:08-də problem yaradacaq.

  • İsmayıl Calallı (Sadıqov), "İnformatika terminlərinin izahlı lüğəti", 2017, "Bakı" nəşriyyatı, 996 s.