Joel'in yanıtı doğru olsa da, gerçekte, biraz daha karmaşık.
Dikkate alınması gereken ilk şey (ve burada sadece PC'lere odaklanacağım), bir bilgisayarda birkaç saat olması ve her birinin kendi kullanımı vardır.
En popüler ve anlaşılması en kolay gerçek zamanlı saattir . Temelde içinde basit bir saati olan bir çiptir. Genellikle standart saatler ile aynı tipte kuvars kristalleri vardır ve genellikle bilgisayar kapatıldığında zaman tutmak için bir pilleri vardır. Onlarla ilgili sorun, Syntech'in bağlantılarından da görülebileceği gibi, çok doğru olmamalarıdır. 32.768 kHz kristal, işlemcileri megahertz ve gigahertz aralığında olan modern sistemlerde herhangi bir zaman işleyişi için çok yavaş.
İşte bir sonraki noktaya geliyoruz: Kesin zaman ölçümleri ve geri sayımlar için kullanılan dahili saatler var.
Basit bir saat programlanabilir aralık zamanlayıcısıdır . Yaptığı şey belli bir süre beklemek ve daha sonra CPU'ya bir kesinti göndermek. CPU kesmeyi aldığında, yaptığı her şeyi durduracak ve kesmeyi oluşturan göreve eğilimli olacaktır. Bu şekilde CPU'nun bir şey yapılıp yapılmadığını sürekli kontrol etmesi gerekmez. Bunun yerine diğer işlere odaklanabilir ve PIT'nin iş bittiğinde bunu söyletmesini sağlayabilir. PIT, 1.193182 MHz saat kaynağı kullanır ve bu nedenle basit RTC'den çok daha hassastır.
Bir sonraki ilginç ölçüm sistemi zaman damgası sayacıdır . Bunun arkasındaki fikir, çeşitli sistem zamanlayıcılarını kullanan işlemcinin saat kaynağını kullanarak çok daha kesin zaman ölçümleri alabilmemizdir. PIT'in 1.193182 MHz saati var, ancak en eski x86 işlemcilerin bile çok daha yüksek bir saati vardı. Böylece, ayarlanan her işlemci döngüsünden sonra güncellenen bir zamanlayıcıya sahip olacağız. O zaman işlemcilerin çok istikrarlı saatleri vardı ve TSC kullanımı hassas zaman ölçümleri yapmak için güzel bir yoldu. Ancak TSC kullanımı bir takım problemler getirir. Farklı işlemciler farklı kene hızlarına sahiptir ve farklı hızlarda zamanı ölçer. Daha sonra, teknoloji geliştikçe frekanslarını değiştirebilecek modern işlemciler elde ettik. Bu büyük bir sorundur, CPU saatinin artık sabit olmadığını ve zamanı ölçmek için kullanamadığımızı söylüyor.
İşte bu yüzden yüksek hassasiyetli olay zamanlayıcılarımız var. HPET, 10 MHz saat kullanır ve bu nedenle PIT'den daha hassastır. Öte yandan, saat kaynağı CPU saatine bağlı değildir ve CPU saati değişse bile zamanı ölçmek için kullanılabilir. Geri sayım olarak çalışan PIT'den farklı olarak, HPET bilgisayarın açılmasından bu yana geçen zamanı ölçer ve bir eylem gerektiğinde zaman zaman karşılaştırır.
Bahsetmemiz gerektiğine inandığım bilgisayarlar için başka zaman kaynakları da var. Bazı bilgisayarlar atomik saatlere bağlanır ve zamanı tam olarak ölçmek için bunları kullanabilir.
Daha az pahalı ve daha yaygın bir seçenek, bilgisayarın dahili zaman kaynaklarını kalibre etmek için harici zaman kaynağını kullanmaktır. Örneğin GPS alıcıları yüksek hassasiyetli zaman ölçümleri sağlamak için kullanılabilir, çünkü GPS uyduları dahili atom saatlerine sahiptir.
GPS alıcısından daha az yaygın olan bir başka seçenek, örneğin DCF77 gibi radyo istasyonlarını tutarak zaman bilgisinin kodunu çözen özel bir radyo alıcısı kullanmaktır. Bu tür zaman istasyonları kendi yüksek hassasiyetli zaman kaynaklarına sahiptir ve çıkışlarını radyo üzerinden iletir. Radyo dalgaları ışık hızında ilerlediğinden, gecikme genellikle önemsizdir.