Bilgisayar ve Yazılım

2038 Yılı Yani Y2038 Problemi Nedir?

19 Ocak 2038 Salı günü saat 03:14’te, modern mikroişlemcilerimizin ve bilgisayarlarımızın bazıları çalışmayı bırakacak. Bilgisayarda, bir takvimi gezegenle eşzamanlı tutmanın bazı sınırlamaları var. 2038 yılında bu sorunla karşılaşacağız. Çünkü 32 bit işlemcili bilgisayarların tarihi doğru ölçememesine sebep olacak olan Y2038 problemi gerçekleşecek.

Günümüzde kullanılan hemen hemen tüm işletim sistemleri UNIX tabanlıdır. UNIX, 1969 yılında geliştirilmiş, çok kullanıcılı, çok görevli yapıyı destekleyen bir bilgisayar işletim sistemidir. Günümüzdeki pek çok açık kaynak kodlu işletim sistemleri birer UNIX türevidir. Bunlar çok işlemcili çok pahalı makinalardan, tek işlemcili basit ve çok ucuz ev bilgisayarlarına kadar pek çok cihaz üzerinde çalışabilen sistemlerdir. C programlama dili, 1970’lerin başında yeni ortaya çıkan Unix işletim sistemi için geliştirilmiştir.

Günümüz sayısal bilgisayarları, ikili sayı sistemi ile çalışır. Her bilgi 0 ve 1 rakamlarından oluşan veri bitlerine dönüştürülür. İkili sayı sisteminde her bir rakama bit denir. 1 bitlik bir veri ya 0 ya da 1 olur. Yani 2 değişik durum oluşabilir. 2 bitlik bir sayı ise, 00, 01, 10 ya da 11 olabilir, yani 4 farklı durum oluşabilir. Bunu basitçe hesaplamak istersek, 2bitsayısı şeklinde formüle edebiliriz. Mesela 32 bitlik bir veri 232 farklı durumda (4.294.967.296 çeşit) olabilir. C dilinde bir sayısal değişken için 32 bit (4 byte) kullanılır. Bunlara 32 bitlik işaretli tamsayı da denir. İşaretli denmesinin sebebi, hem negatif hem de pozitif sayıları tutabilmesidir. Bunu da, en soldaki bir biti işaret için kullanarak yapar. Bu -2.147.483.648 ile 2.147.483.647 arasında farklı bir durumu ifade eder.

2038 tarihinde yaşanacak Y2038 problemi nedir?

Unix işletim sistemi zamanını 1 Ocak 1970 tarihinden beri saniye bazında hesaplıyor. Sorun 32-bitlik UNIX ve türevi sistemlerde 19 Ocak 2038 Salı günü saat 03:14:07’de sayacın başa dönmesiyle ortaya çıkacaktır. Bu tarihten itibaren, standart 32-bit time_t kitaplığını kullanan herhangi bir C programı, tarihi hesaplarken sorun yaşayacaktır. İşaretli tam sayılarla ilgili sorun, bir otomobilin kilometre sayacı gibi davranmamalarıdır.

5 basamaklı bir kilometre sayacı 99999 km ulaştığında ve sürücü fazladan bir kilometre gittiğinde, basamaklar “00000’e döner”. Ancak işaretli bir tam sayı maksimum değerine ulaştığında ve ardından artırıldığında, mümkün olan en düşük negatif değerine geri döner. Yani 2.147.483.647 değerine 1 tane daha eklemek, zamanın 13 Aralık 1901 saat 20:45:52 olan minimum -2.147.483.647 değerine dönmesine neden olacaktır. Yani bilgisayar zamanda geriye gittiğini düşünecektir.

Kalan Zamanı sayaç üzerinden görebilirsiniz. Kaynak: https://en.wikipedia.org/

Y2038 Probleminden Kaçınmak Mümkün mü?

Microsoft Windows’un kendi zaman tutma sistemi vardır, ancak MacOS doğrudan Unix üzerinde oluşturulmuştur. Daha da önemlisi, internet sunucularından çamaşır makinasına kadar her şeydeki birçok bilgisayar işlemcisi, Unix tabanlı sistemler kullanmaktadır. Bu nedenle hepsi Y2K38 hatasına karşı savunmasızdır. Şu anki en basit çözüm, bu 32-bit sistemlerin 64-bit’e yükseltilmesidir. Bu, maksimum sayı sayıyı 9.223.372.036.854.775.808 yapar. Bu da yakın zamanda ulaşamayacağımız bir sınırdır.

Aslında, bugün çoğu bilgisayar zaten 64 bit işlemcilerle çalışıyor. Tarih 19 Ocak 2038’i gösterdiği zaman muhtemelen 32 bit işlemciler iyice azalmış olacak. Ancak tamamen 64 bitlik bir dünyada yaşadığımızda güvende olacağız. Soru şu: 2038’den önce hayatımızdaki tüm mikro işlemcileri yükseltebilecek miyiz?

Bu sorun 2000 yılında yaşadığımız milenyum hatasından çok daha kapsamlı bir sorun. Hatırlamayanlara kısaca not düşelim. 2000 yılı öncesi zamanlarda bilgisayarlar tarihleri iki haneli sayılar ile ölçerdi. 01/01/99 gibi. Ancak 1900 yılının da 2000 yılının da son iki hanesi sıfır olduğu için benzer bir gündem ortaya çıkmıştı. Nispeten daha az kapsamlı bir sorun olduğu için büyük bir çabayla neredeyse her şey güncellenmiş ve olası bir sorun baştan engellenmişti. Aynı başarıyı tekrar elde edip edemeyeceğimizi zaman gösterecek.

Kaynaklar:

Matematiksel

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.