Unix zamanı ve ISO 8601 yazımı
SI dışı birim · büyüklük: bir zaman anı, 1970'ten beri tam sayı saniye olarak
19 Ocak 2038'de, evrensel zamanla saat üç on dört dakika yedi saniyede, otuz iki bit genişliğinde bir saniye sayacı 2 147 483 647'ye ulaşacak — kapsayabildiği en büyük sayıya. Sonraki tık en üst biti kaldıracak ve aynı ikili sözcük artık negatif olarak okunacak: zamanı tam da bu sayımla saklayan saatler 2038'de değil, 1901 Aralık'ında bulacaklar kendilerini. Uzak geleceğin bir tuhaflığı değil bu — bir sanayi denetleyicisi ya da bir su sayacı, geriye kalan on iki yıldan daha uzun hizmet eder.
Sayım son derece yalın kurulmuştur: saniyeler 1 Ocak 1970 gece yarısından ardı ardına akar ve bir gün onda her zaman tam 86 400 saniye tutar. İki tuhaflığının da kaynağı işte bu yalınlıktır. Bir yandan sayıdan anında bir takvim tarihi çıkar ve tersi, öyle ki her olay günlüğü, her veri tabanı ve her dosya sistemi zamanı onunla tutar. Öte yandan artık saniye böyle bir sayımda hiç anlatılamaz, yani adına rağmen o saniyeleri değil, kesirleriyle günleri numaralar ve gerçekte UTC yazımının doğrusal bir işlevidir, geçen zamanın sayacı değil.
01 · Tanım
Unix zamanı, 1 Ocak 1970 gece yarısından eşgüdümlü evrensel zamanla geçen saniyelerin sayısıdır; her günün tam 86 400 saniye tuttuğu varsayımıyla. ISO 8601 yazımı aynı şeyi başka türlü söyler: takvim tarihiyle, günün saatiyle ve başlangıç meridyeninden kaydırmanın belirtilmesiyle; alanlar kesinlikle kabadan inceye akar.
86 400 saniye kaydı ufak bir ayrıntı değil, tanımdaki en özlü noktadır. Yer'in dönüş hizmetinin ilan ettiği artık saniyeyi sayım içine alamaz, bu yüzden ekleme anında sistem ya bir ve aynı değeri iki kez yineler ya da saati geri alır. Bundan önemli bir şey çıkar: iki unix sayısının farkı, aralarına bir ekleme düşmüşse, iki olay arasında gerçekten geçen saniyelerin sayısı değildir — atom ölçeğinden sapma çoktan yirmi yedi saniyeye ulaştı.
Sınır ise tanıma değil, saklamanın genişliğine bağlıdır. İşaretli otuz iki bit en büyük değer olarak 2 147 483 647'yi verir; bu 19 Ocak 2038'e düşer; bir sonraki artış en üst biti bire çevirir ve sayıyı negatif yapar, saati 13 Aralık 1901'e fırlatarak. Altmış dört bit sınırı iki yüz doksan iki milyar yıl ileri iter, ama aynı altmış dört bit'teki tam nanosaniyeler daha 2262'de tükenir.
Standarda göre yazım başka bir işi çözer — saklamayı değil, değişimi — ve bu yüzden onda sayının hiç sahip olmadığı şeyler ağır basar: saat kaydırması, tarihle saat arasındaki ayraç ve dizgi uzunlukları eşit olduğunda abecesel sıranın zaman sırasıyla çakışması kuralı. İşte bu son özellik biçimi dosya adlarında ve günlüklerde sıralamanın temeli yapmıştır.
Zamanı sürgüyle götürün ve yazmacın dolmasını izleyin: bitler sağdan sola yanar ve en üstteki, işaret biti, karanlık kaldığı sürece sayı artıdır ve tarih büyür. Sayaç 2 147 483 647'yi aşar aşmaz en üst bit kırmızı parlar, bütün sayı negatif olur ve saat 1901'e sıçrar.
Yeşil doğru atom ölçeğidir; orada her saniye gerçekten bir saniyedir. Kırmızı basamaklı olan Unix zamanıdır; her eklemede bir ve aynı damgayı iki kez verir, bu yüzden çizgi yerinde durur. Sapma çoktan yirmi yedi saniyedir ve büyür; bu yüzden sayım takvim tarihine yarar, fizikte sürelerin ölçülmesine değil.
02 · Dönüşüm
Bir zaman damgası ya da tarih girin
Sayımın bütün katları arasında — saniyeler, milisaniyeler, mikro- ve nanosaniyeler — çevirmeler kesindir, çünkü yalnız bir çarpanla ayrılırlar. Yaklaşık olan tek bir satır: atom ölçeğine çevirme, verilen ana kadar kaç artık saniyenin biriktiğini bilmeyi ister.
Standarda göre bir dizginin çözümlemesini sayfa, Z harfli genişletilmiş yazımda yapar; ayraçsız temel biçim ince ayarlara taşınmıştır.
2038 yılı sorunu standartta değil, donanımda ve eski koddadır: otuz iki bitlik damgalar sayaçların gömülü yazılımında, sanayi denetleyicilerinde, dosya sistemi biçimlerinde ve alanın çoktan dört baytla bildirildiği veri tabanlarında oturur. Kaynaklarda türü değiştirmek yeterince kolaydır; geriye kalan on iki yılda milyonlarca kurulu aygıtı gözden geçirmekse 2000 yılından önce duran işle aynı türden bir iştir.
| Değer | Açıklama | ||
|---|---|---|---|
| {u} | {name} | {value} | {note} |
03 · Büyüklük mertebeleri
logaritmik ölçek: saniyeden altmış dört bit'in sınırına04 · Ölçüm aletleri
Bir olaya damga neyle vurulur
Pilli ayrı bir yonga; aygıt kapalıyken sayımı sürdürür. Genellikle bir unix damgası değil, takvim alanlarını ayrı ayrı saklar ve yıl alanının genişliği kendisine özgüdür; öyle ki eski kartlarda 2038 üzerine söz, yonganın kendisinin hangi yıla kadar saydığı sorusuyla başlar.
NTP kuralı bir makinenin saatini birkaç milisaniye kesinlikle ortak zamana getirir ve yine o, bir eklemeyi özel bir bayrakla bir gün önceden bildirir. Kendi sınırı da vardır ve o daha önce gelir: sayım 1900'den işaretsiz otuz iki bit'te akar ve 2036 Şubat'ında taşar.
Günlüğe damga ya sayıyla ya da standarda göre dizgiyle yazılır ve ikincisi tam olarak tek bir nedenle yeğlenir: eşit uzunluktaki dizgilerde abecesel sıra zaman sırasıyla çakışır, öyle ki kayıtlar tarih çözümlenmeden sıralanır. İşte bu yüzden biçim, hesap tekniğinin çok ötesine yayılmıştır.
Bir aygıtın 2038'e hazırlığı tek bir yolla sınanabilir — saatini uğursuz sınırın ötesine almak ve günlüklere, belgelere ve aralık hesabına ne olacağını görmek. Böylece faturalamada, geçiş denetimi dizgelerinde ve anahtarların geçerlilik sürelerinde bozulmalar çoktan bulunmuştur; orada gelecekteki bir tarih toplamayla kurulur ve sınırın kendisinden çok önce taşar.
05 · Yazım kuralları
Kabadan inceye, ve her zaman kaydırmayla
Standart alanların azalan sırasını, yılın dört basamağını, tarih ayracı olarak kısa çizgiyi ve saatten önce T harfini ister; saat kaydırması ya başlangıç meridyeni için Z harfiyle ya da artı-eksi saat ve dakika olarak verilir. Unix damgası basamak ayrımı olmaksızın tam sayıyla yazılır ve kat her zaman belirtilmelidir, çünkü binlik bir çarpan saniyeleri milisaniyelerden ayırır ve sayının büyüklüğüne bakarak ikisi kolayca karıştırılır.
Birinci yazım ülkeden ülkeye başka türlü okunur ve bu yüzden veri değişiminde kabul edilemez. İkincisi hem ayracı hem kaydırmayı düşürür, öyle ki an her iki yönde bir gün belirsiz kalır. Üçüncüsü baştaki sıfırları yitirir, bu yüzden dizgiler abecesel sıralanmaz olur — oysa biçim tam da bu özelliği için değerlidir. Dördüncüsü unix sayımını atom ölçeğine eşitler, oysa aralarında yirmi yedi saniyelik birikmiş ekleme yatar.
06 · Komşu birimler
Yanında aynı ilkeye göre kurulmuş, ama başka bir başlangıçtan giden bütün sayımlar durur: NTP zamanı 1900'den, Jülyen günü çağımızdan önce 4713 yılının öğleninden, uydu dizgesinin ölçeği 1980 Ocak'ından. Yalnız devirde ve birimde ayrılırlar, bu yüzden bir sabit çıkarılarak çevrilirler.
işaretli saniyeler
sınırı daha 2036'ya düşüyor
artık saniyeler dürüstçe sayılmış
Simetrium’un künyelerinden yanında duranlar Jülyen günü, çevirme sabitinin alındığı yer, UTC, TAI ve UT1 ölçekleri, kaybolan artık saniyeleri açıklayan, saniye sayımın birimi olarak, ve bit, genişliği sınırı belirleyen.
07 · Tarihsel bölüm
Bit kıtlığından seçilmiş bir devir
İlk Unix elkitabında zaman 1971 başından saniyenin altmışta biriyle sayılırdı ve otuz iki bit'te böyle bir sayım ancak iki yıl kadar tutardı. O kadar çabuk tükeniyorlardı ki devri sistemin her sürümünde kaydırmak gerekecekti; saniyenin kesirlerinden tamların yararına vazgeçildi.
Tam saniyelere geçerek geliştiriciler yüz otuz altı yıllık bir yedek kazandılar ve başlangıcı zorunluluktan değil, elverişlilikten seçebildiler. 1 Ocak 1970 alındı — geçmişteki en yakın yuvarlak tarih; makine kayıtları zaten oraya ulaşmıyordu — ve o günden beri bir kez bile değiştirilmedi, gerçi sistem birden çok kez temelinden yeniden yazıldı.
Uluslararası Standartlar Örgütü birbirinden ayrılan ulusal biçimleri tek bir biçime indirdi ve temeline yalın bir kural koydu: alanlar kabadan inceye akar, hepsi baştaki sıfırlarla. Yan etki niyetten daha önemli çıktı — böyle dizgiler sayı gibi sıralanır ve biçim dosya adlarına, günlüklere ve değişim kurallarına yayıldı.
Masaüstü ve sunucu dizgeleri altmış dört bit'e çoktan geçti ve orada sınır her makul ufkun ötesine itildi. Tehlike başka yerde kaldı: yirmi yıllık ömrü olan aygıtların gömülü yazılımında, alanın dört baytla bildirildiği dosya biçimlerinde ve gelecekteki sürelerin hesabında; bunlar bugünkü tarihe on beş yıl eklenir eklenmez daha bugün taşar.
Adına rağmen saniye saymayan bir sayım
Unix zamanının tanımı saniye sayımı gibi işitilir, ama günde tam 86 400 saniye koşulu onu başka bir şey yapar: UTC yazımının doğrusal bir işlevi, geçen zamanın ölçüsü değil. Yer'in dönüş hizmeti her ekleme ilan ettiğinde, sayım bir ve aynı değeri iki kez yinelemek ya da geri sıçramak zorundadır ve iki damganın farkından tam da o saniye yiter. Yarım yüzyılda böyle yitiklerden yirmi yedi tanesi birikti; bu yüzden gerçek süre gereken işlerde bu değil, atom ölçeği alınır.
İkinci tuhaflık hiç de tanımda değil, saklamanın biçimindedir ve bu onu kataloğumuzda ne doğanın ne bir uzlaşmanın koyduğu, bir makine sözcüğünün genişliğinin koyduğu tek sınır yapar. Jülyen günü hiç bitmez, çünkü bir sayıdır; Unix zamanı 19 Ocak 2038'de biter, çünkü dört baytlık bir alandır. Bir büyüklükle onun gösterimi arasındaki fark ölçübilimcileri genellikle az ilgilendirir, burada ise her şeyi tam da o belirler.
Katalog · ölçü birimleri
Her büyüklük için bir künye
Yedi SI temel birimi, kendi adı olan yirmi iki türetilmiş birim ve sistem dışı büyüklükler; bunlar olmadan ne teknik ne de takvim yürür.