[]
bilgisayar saati nasıl anlıyor/ölçüyor?
sorum özellikle programcılara. bilgisayara bir iş yaptırmak için program yazılıyor, bilgisayar da komutlara göre işlemleri yapıyor. bu kısmı anlaşılır. ekrana şunu yaz, şu döngüye 100 kere gir filan onları yapıyor 100'e kadar sayarak. bunu hafızada bir değişken oluşturarak ve her seferinde 1 ekleyerek yapabilir kolayca. ama anlayamadığım şey bilgisayara 5 dk. bekle dersek bunu nasıl yapıyor? 5 dk.yı nasıl hesaplıyor? zaman kavramını nasıl anlıyor? umarım sormak istediğim soruyu anlatabilmişimdir.
anakartta saat var bildiğiniz.
img.dxcdn.com
rtc (real time clock) kendine ait pili var bilgisayarı kapatsan da çalışmaya devam ediyor.
edit:
biraz daha açıklamak gerekirse bildiğimiz saat değil aslında 1970-01-01 00:00:00 +0000 (UTC) tarihinden itibaren ne kadar süre geçmiş milisaniye cinsinden sayan bir cihaz diyelim.
Zaten bu veriyi aldıktan sonra işletim sistemi veya işletim sistemi yoksa senin yazdığın program bunu gerçek zamana dönüştürebiliyor basit bir şekilde.
(bkz: unix time)
img.dxcdn.com
rtc (real time clock) kendine ait pili var bilgisayarı kapatsan da çalışmaya devam ediyor.
edit:
biraz daha açıklamak gerekirse bildiğimiz saat değil aslında 1970-01-01 00:00:00 +0000 (UTC) tarihinden itibaren ne kadar süre geçmiş milisaniye cinsinden sayan bir cihaz diyelim.
Zaten bu veriyi aldıktan sonra işletim sistemi veya işletim sistemi yoksa senin yazdığın program bunu gerçek zamana dönüştürebiliyor basit bir şekilde.
(bkz: unix time)
- ocanal (29.10.17 12:44:18 ~ 12:51:47)
@ocanal
evet milisaniyeden hesaplanır ama milisaniyeyi nasıl ölçüyor? yani sormak istediğim o milisaniyeyi nasıl hesaplıyor? pilin zayıflaması filan etkiler mi saatin doğruluğunu?
evet milisaniyeden hesaplanır ama milisaniyeyi nasıl ölçüyor? yani sormak istediğim o milisaniyeyi nasıl hesaplıyor? pilin zayıflaması filan etkiler mi saatin doğruluğunu?
- gonul_isleri (29.10.17 12:52:09)
işin donanım boyutunu merak ediyorsun galiba,
osilatörleri araştırabilirsin.
frekans aralığına göre ne kadar süre geçtiğini hesap edebiliyorsun osilatör sinyalleriyle.
en.gowikipedia.org
şurdaki timing başlığına göz atabilirsin.
edit: pilin zayıflama ihtimali çok düşük çünkü sayma işi çok enerji harcayan bir iş değil haliyle bilgisayar yıllarca kapalı olsa bile yetecektir, bilgisayarı şarj ettiğinde zaten rtc'nin pili de şarj olacaktır.
bir de network'e bağlandığın anda ntp protokolü ile bu hizmeti veren servislerle saatini sync eder sistem.
tf.nist.gov
osilatörleri araştırabilirsin.
frekans aralığına göre ne kadar süre geçtiğini hesap edebiliyorsun osilatör sinyalleriyle.
en.gowikipedia.org
şurdaki timing başlığına göz atabilirsin.
edit: pilin zayıflama ihtimali çok düşük çünkü sayma işi çok enerji harcayan bir iş değil haliyle bilgisayar yıllarca kapalı olsa bile yetecektir, bilgisayarı şarj ettiğinde zaten rtc'nin pili de şarj olacaktır.
bir de network'e bağlandığın anda ntp protokolü ile bu hizmeti veren servislerle saatini sync eder sistem.
tf.nist.gov
- ocanal (29.10.17 12:59:36 ~ 13:04:22)
Osilatör sürekli aynı frekansta kare dalga üretiyor. Kaç tane kare dalga ürettiğini sayarak(counter ile) ne kadar süre geçtiği bulunuyor. Mesela 32768 Hz(genelde saatlerde kullanılan) olsun frekansı yani saniyede o kadar dalga üretiyor. Saniye bazında hesap yapılacaksa kullanılır. Milisaniye için direk 32kHz daha uygun olur.
- reactionic (29.10.17 13:13:45 ~ 13:15:14)
standart pc içinde bir adet RTC (pil ile beslenen real time clock devresi) ve işletim sistemi tarafından tutulan bir tick timer var. tick timer 1 ms periyotlarla hep artar.
değişken çok büyük olduğu için bu artma işlemi yıllarca devam edebilir orada sorun yok.
şimdi bu sorduğun sorunun net yanıtı için hangi programlama dili ile çalıştığını bilmek lazım. mesela C ile çalışıyorsan bu sana kalmış ister o anda tick timer değerini okur bundan 5 dakika ilerisini hesaplar ve belli periyotlarda o değere ulaşıp ulaşmadığını kontrol edersin. istersen sistem satini okur aynı şeyi gene yaparsın.
daha gelişmiş c# gibi dillerde derleyici arka planda bunu senin için yapar.
fakat bence bu işin temelini anlamak için yazılımsal kesmeler konusunu araştırmalısın.
değişken çok büyük olduğu için bu artma işlemi yıllarca devam edebilir orada sorun yok.
şimdi bu sorduğun sorunun net yanıtı için hangi programlama dili ile çalıştığını bilmek lazım. mesela C ile çalışıyorsan bu sana kalmış ister o anda tick timer değerini okur bundan 5 dakika ilerisini hesaplar ve belli periyotlarda o değere ulaşıp ulaşmadığını kontrol edersin. istersen sistem satini okur aynı şeyi gene yaparsın.
daha gelişmiş c# gibi dillerde derleyici arka planda bunu senin için yapar.
fakat bence bu işin temelini anlamak için yazılımsal kesmeler konusunu araştırmalısın.
- orpheus (29.10.17 17:05:43)
1