Mühendislik

2038 Yılı Yani Year 2038 Problemi Nedir?

Günümüzde artık tamamen organize olmuş ve birbirine çoğu zaman görünmez kablolar ile bağlanmış bir dünyada yaşıyoruz. Günümüzde hemen hemen her ekipman parçası, bir mikroişlemci içeriyor. Bu gömülü sistemler, belirli süreçleri otomatikleştirmek ve sistemin diğer bölümleriyle koordine etmek için kullanılıyor. Sistemin işleyişinin harika olduğunu varsaymak için bir çok sebebimiz var. Ancak ya yanılıyorsak?

Tahminlere göre 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 da bu nedenle bir sorunla karşılaşacağız.

Günümüzde işletim sistemleriin hemen hepsi unix tabanlıdır.

Günümüzde kullanılan hemen hemen tüm işletim sistemleri 1960’lı yıllarda Bell Labs tarafından geliştirilen UNIX işletim sistemi tabanlıdır. Bu çok işlemcili pahalı makinalardan, tek işlemcili basit ve ucuz ev bilgisayarlarına kadar pek çok cihaz üzerinde çalışabilen bir sistemdir. C programlama dili de temelinde 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 durumdan biri olmaktadır. 2 bitlik bir sayı ise, 00, 01, 10 ya da 11 biçimde olacaktır. Yani 4 farklı durum oluşur.

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) olacaktır. 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. Şimdi tüm bunları neden anlattık sizlere?

2038 tarihinde yaşanacak 2038 yılı problemi nedir?

UNIX’in zamanı tutma şekli 32 bitlik bir sayma sistemiydi. Modern bilgisayarlar için standart olmaya devam eden bu 32-bit sistem, 1 Ocak 1970 00:00:00’den itibaren geriye doğru saymaktadır. Ancak bu sayacın sayabileceği saniye sayısı sınırlıdır. Az önce aktardığımız gibi bu süre her iki yönde de 2.147.483.647 saniyeye eşittir.

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/

2038 Yılı 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 bu hataya 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.

64 bit işletim sistemine sahip olmak bu sorunu ortadan kaldıracaktı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 ve ileri okumalar:


Dip Not:

Matematiksel, 2015 yılından beri yayında olan ve Türkiye’de matematiğe karşı duyulan önyargıyı azaltmak ve ilgiyi arttırmak amacıyla kurulmuş bir platformdur. Sitemizde, öncelikli olarak matematik ile ilgili yazılar yer almaktadır. Ancak bilimin bütünsel yapısı itibari ile diğer bilim dalları ile ilgili konular da ilerleyen yıllarda sitemize dahil edilmiştir. Bu sitenin tek kazancı sizlere göstermek zorunda kaldığımız reklamlardır. Yüksek okunurluk düzeyine sahip bir web sitesi barındırmak ne yazık ki günümüzde oldukça masraflıdır. Bu konuda bizi anlayacağınızı umuyoruz. Ayrıca yazımızı paylaşarak da büyümemize destek olabilirsiniz. Matematik ile kalalım, bilim ile kalalım

Matematiksel

Sibel Çağlar

Temel eğitimimi Kadıköy Anadolu Lisesinde tamamladım. Devamında Marmara Üniversitesi İngilizce Matematik Öğretmenliği bölümünü bitirdim. Çeşitli özel okullarda edindiğim öğretmenlik deneyiminin ardından matematiksel.org web sitesini kurdum. O günden bugüne içerik üretmeye devam ediyorum.

İlgili Yazılar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir