01-01-1970 Tarihi Neden iPhone Düşmanı?

Her işletim sisteminin içinde sorunlar vardır. Zaman geçtikçe ve bunlar fark edildikçe düzeltilir. Normalde bunun hakkında yazmayacaktım fakat meraklıları için çok ilginç olacağını düşünüyorum. Etrafımızda ki iPhone kullanıcılarını düşünürsek, bence telefonları hakkında bazı bilgilere sahip olmaları gerektiğini düşünüyorum. Son zamanlarda 1970 tarihi iPhone’ların işletim sisteminin çökmesine sebebiyet veriyor.

Bunun sebebi nedir?

Unix epoch sayesinde gelişen integer underflow. Eğer bu terimi anlıyorsanız, helal olsun 😀 Okumanıza gerek yok demektir. Ama eğer anlamadıysanız, buyrun birlikte anlamaya çalışalım neler olduğunu.

Bilgisayarlar için 1 Ocak 1970 özel bir tarih. Bilgisayarların ilk keşfedildiği zamanlarda bir mekanizmaya ihtiyaç vardı bilgisayarın saati hesaplayabilmesi için.

Fakat bunu yapmak okadar da kolay değildi çünkü zamanı zorlaştıran insanlar tarafından çıkarılan terimler vardı saatler, günler, aylar gibi. Tek gereken şey hiç durmayan bir saatti.

Bunu yapmanın en kolay yolu ise bir tam sayı. 1 Ocak 1970 tarihi ”0” olarak seçildi ve o zamandan itibaren geçen zamanı bilgisayarlar her bir saniye olarak hesapladı. Mesela şuan bu yazıyı yazarken telefonumda, bilgisayarımda aynı sistemi kullanıyor. İkisinde de saat bizim şuan gördüğümüz gibi değil fakat saniyelerle ifade ediliyor.

Örnek olarak ben şuan tarihi 18 Ocak 2017 vede saati 12:24 olarak görüyorum fakat bilgisayarım bunu 1484702748 saniye olarak görüyor.

Burada bilmeniz gereken şey, 1 Ocak 1970’in gecesi saat 12 bu sistemde 0 olarak alınıyor.

Asıl sorunumuza geri dönersek. Bu sorun sadece 64-bit işletim sistemine sahip iPhone’larda oluyor.

64-Bit nedir?

64-Bit 64 tane binary rakamın olduğu anlamına geliyor. Şuana kadar 32-Bit sistem kullanılıyordu vede onlarda böyle bir sorun yoktu çünkü üstüne yıllarca çalışılmış bir sistemdi. 32 den 64 e geçmenin bir sürü prosedürü var. Bazı kodların değiştirilmesi gerekiyor ve sanırım işte tam olarak burada bir detayı kaçırdılar.

Bit Sistemi Nasıl Çalışır?

Şimdi burada 64-Bit göstermek pek mantıklı olmaz. Bu yüzden 4-Bit yapalım. Örnek olarak ;

‘’0000’’ = 0

‘’0001’’ = 1

‘’0010’’ = 2

‘’0011’’ = 3

‘’1010’’ = 10

‘’1111’’ = 15

15, 4-Bit ile depolayabileceğiniz en yüksek sayıdır. Daha yükseğe çıkamazsınız. Fakat denerseniz ne olur? İşte o zamam Tam Sayı Taşması (Integer Overflow) olur. ‘’1111’’ den sonra ‘’0000’’ olur ve başa döner. 4-Bit sistem kullanıldığı zaman gördüğünüz gibi bu sorun oluyor fakat 64-Bit sistemde 15 quin trillion sayısını geçtikten sonra sorun yaşarsınız. Evet, gerçek bir sayı. Bu yüzden şimdilik bir sorunumuz yok 😀

Biraz Daha Detaya İnelim İsterseniz

Yine 4-Bitten örnek verelim. Eğer ‘’1111’’ +1 sıfır olarak geliyorsa, ‘’0000’’ -1 bize ne sonuç verir? İşte buna Integer Underflow deniliyor. Bu sistemde negatif sayı bulunma ihtimalinin olmadığına göre başa saracak ve mümkün olan en yüksek rakamı verecektir. Bu sistemde negatif sayıların kullanıldığı durumlar far, eğer Apple bunu kullanıyor olsa bu sorunu yaşamazdı fakat neden kullansın ki? Sonuçta negatif bir zaman kavramı yoktur. Sonuçta neden birisi kullandığı telefonda ki tarihi 1970’ten öncesine ayarlamaya çalışsın ki? Bunu benim sormam garip çünkü denemedim değil. Ama eğer denemeye çalışırsanız fark edeceksiniz ki 1 Ocak 1970’ten öncesine gidemezsiniz.

İşte sorun tam olarakta burada ortaya çıkıyor. Eğer zamanı 1 Ocak 1970 olarak ayarlarsanız telefonunuz bunu ‘’0000000000000000000000000000000000000000000000000000000000000000’’ olarak algıyacaktır. Normalde sorun yok dimi? Fakat son olan aramanızı veya gelen mesajın zamanını hesaplamaya kalkıştığı zaman negatif sayı bulamaz. Az önce bahsettiğim gibi Integer Underflow gerçekleşir ve olabilecek en yüksek sayıyı gösterir. Bu yaklaşık 04-12-292277026596 tarihini gösterir. Buda sistemin çökmesine sebebiyet veriyor.

Bu bir spekülasyon, Apple hatalarını Kabul etmek konusunda çok iyi değillerdir. Eğer sorun tam olarak bu değilse bile, bu hatayı yapmamanız için bir uyarı niteliği taşımasını umut ediyorum bu yazının.

Son Olarak

Şuanda belirli bir sistem var vede telefonlar seri üretim şeklinde üretiliyor fakat bu konuma gelmemiz okadar da kolay olmadı. Hepimizin bildiği gibi ilk bilgisayarlar bir oda kadar büyüktü. Yıllar sonra kilolarca ağırlığında olan ilk ”Laptop”lar üretildi. Daha sonradan tabletler derken akıllı telefonlar yerlerini aldı.

2016 Q3’te 363.2 milyon telefon satıldı. Hepimiz bir şekilde akıllı telefon kullanıyoruz fakat kullandığımız cihazlar hakkında pek bilgiye sahip değiliz malesef. Sizlere bu konu hakkında biraz yardımcı olmak amacıyla önümüzdeki günler ve haftalar içinde ilginç bulduğum bilgileri paylaşacağım.

 

2 YORUMLAR

CEVAP VER

Please enter your comment!
Please enter your name here