2038-ci il problemi

Vikipediya, azad ensiklopediya
Naviqasiyaya keç Axtarışa keç
Çap versiyası artıq dəstəklənmir və render xətaları ola bilər. Zəhmət olmasa brauzerinizi yeniləyin və əvəzinə standart brauzer çap funksiyasından istifadə edin.
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.

Ədəbiyyat

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