Gerçek zamanlı sistemler için Gerçek Zamanlı Saat (RTC) gerekli midir? [kapalı]


11

Yüksek çözünürlüklü zamanlayıcılardan oluşan gerçek zamanlı bir Linux sistemi ve donanımı üzerinde çalıştığımızı varsayarsak, bir RTC'ye sahip olmak sistemin gerçek zamanlılığını etkiler mi?

Burada CPU ve bellek kullanımını azalttığını söylüyor, ancak farkı bir şekilde karşılaştırmanın bir yolu var mı?


13
Bağlantıdaki karşılaştırma sadece aptalca.
boru

10
Evet, @pipe ve bunun üstünde, rakamlar bile tamamen yanlış. "100 yılda 1 sn hata" ile DS12C887 fiyatlı RTC çipini memnuniyetle satın alacağım. Aslında, tasarruflarımın satın almama izin verdiği kadar çok satın alacağım. Bu 300ppb doğruluktur. 100 yıldan fazla. Bu orada bazı ciddi frekans iyiliği.
Marcus Müller

8
Gerçek zaman sistemleri ve Gerçek zaman saati farklı şeylerdir ve karşılaştırma yoktur. RTC zaman tutmak içindir ve Gerçek Zamanlı Sistem gerçek zamanlı olarak hizmet vermek için kullanılır (UTC'de olduğu gibi, çabuklukta olduğu gibi)
MaNyYaCk


4
@JimmyB Bunun gibi saatler zamanlama içindir , zaman değil ! Bir referans çağınız olsa bile, genellikle TAI (veya GPS) olarak ayarlıyoruz ve UTC'ye ihtiyacımız olduğunda ilgili UTC düzeltmesini uyguluyoruz. GPS durumunda bu düzeltme parametresi efemeris'den gelir. UTC, bu anlamda bir tür "saat dilimi" dir - benzer şekilde, DST yürürlüğe girdiğinde saatinizi sıfırlamazsınız ve yeniden stabilize olmasını beklersiniz - sıfırlanacak bir şey yoktur, çünkü saat size bir zaman damgası değil, darbeler verir.
Yörüngedeki Hafiflik Yarışları

Yanıtlar:


40

Bağladığınız makale tam ve saçmalık. "Gerçek zamanlı saat" içindeki "gerçek zamanlı" (makalede açıklanan ciltli cihazın türüne atıfta bulunmak için kullanıldığından) ve "gerçek zamanlı sistemler" deki "gerçek zamanlı" tamamen farklı terimlerdir. Birincisi, geçerli takvim süresini saklamak (iddia edilen bağlantılı makale gibi yüksek hassasiyetin aksine genellikle çok zayıf bir yaklaşım) ve uzun ömürlü bir düğme / bozuk para tipi pil kullanarak harici güç olmadan ilerletmek anlamına gelir. İkincisi, olay zamanından yanıt zamanına kadar gecikme süresinde sert sınırlara sahip olaylara yanıt vermek anlamına gelir.

Makalenin güvenilmez olarak kabul edilmesi için birkaç parça daha:

Neredeyse önemsiz. 100 yılda 1 sn.

100 yılda 1 saniye yaklaşık 317 ppt'dir (evet, bu trilyon başına parça sayısı ). Piyasada bulunan herhangi bir saat teknolojisi ile bu tür bir saat istikrarı elde edemezsiniz. Yılda 1 saniyeye çıkarmak için bile, sıcaklığı düzenleyen yüksek güçlü, her zaman açık bir fırın gerektiren en az bir OCXO gerekir. Uzun ömürlü madeni para piliyle çalışan bir cihazla alabileceğiniz fikri gülünç.

dijital saat, katılım sistemi, dijital kamera gibi gerçek zamanlı sistemler

Bunların hiçbiri gerçek zaman sistemleri olarak adlandırılamaz.


1
Aslında bu sistemler büyük olasılıkla "yumuşak gerçek zamanlı" da olsa gerçek zamanlı bileşenlere sahiptir, çünkü bir işleme işaretinin eksik / taşmasının sonuçları küçüktür. Yine de bağlantının yazarının düşündüğü yanlış anlamıyla değil.
Graham

3
@Graham: Bir anlamda yaparlar, ancak kenar boşlukları o kadar büyüktür ki, genellikle onları gerçek zamanlı olmayan olarak düşünürsünüz. Nihayetinde herhangi bir etkileşimli sistem, tanımı yeterince genişletirseniz gerçek zamanlıdır, çünkü dakikalar veya saatler boyunca tepki vermediğinde, birisi çöktüğünü varsayacaktır. :-) Bu yüzden sadece küçük marjlar ve onları kaçırmanın ciddi sonuçları olduğunda bir şeyi "gerçek zamanlı" olarak sınıflandırmanın yararlı olduğunu düşünüyorum.
R .. GitHub BUZA YARDIMCI DURDUR

3
@R .. Tüm sistemler gerçek zamanlı değildir, büyük marjlarla bile. Bir sistem ise yetenekli süresiz asılı nedeniyle, gerçek zamanlı sistem olamaz. Sistemler , bir zaman diliminin sadece sınırlı bir süre alacağını ve bir asmanın (kilitlenme / canlı kilit) tanım gereği sonsuz olacağını mutlak garantilere sahip olmalıdır .
orman

2
Ancak gerçek zamanlı bir sistemin tam olarak ne olduğu hakkında bir meta-tartışma bir yorum bölümüne ait değildir.
boru

1
@Uwe: Gerçekten berbat ettim, ama şimdi tekrar baktığım için 10'un 2 faktörü tarafından kapandığımı düşünüyorum - 0.316ppb olmamalı mı? Secs_per_year = 31556952 olduğu 1s / (100 * secs_per_year) olarak hesaplanır.
R .. GitHub BUZA YARDIMCI DURDUR

39

Gerçek Zamanlı Sistemler, belirli bir sürede dahili veya harici bir olaya / uyarana cevap veren bir şeydir ve bu süre genellikle mili veya mikro saniyedir. RTC yerine küçük hassasiyetli bir zamanlayıcıya ihtiyaç duyar.

Ve sorunuzun cevabı Hayır, sistemin gerçek zamanını etkilemez.


1
Bu kısa ve IMO sorununun yanıtı.
Rev1.0

Bankalar gibi bazı Federal kuruluşlar, sunucularında atom saatlerine dayalı olarak 1ns RTC'ler kullanır. Mikrodalga bağlantıları ile kurcalama ipucu bile alıcıya geçiş süresini değiştirecektir. Hızlı RTC ayrıca çok fazlı semaforlar için de iyidir.
Sparky256

4
Bazı gerçek zamanlı sistemler, tamamen olay güdümlü olduklarından bir zamanlayıcıya ihtiyaç duymazlar ve olaylardan herhangi birinin zamana dayalı olmasına gerek yoktur. Sistemin, her bir olaya, o etkinliğe ayrılan zaman da dahil olmak üzere, ayrılan zaman dilimi içinde yanıt vermesi gerekir. Bazı durumlarda, önleyici bir çekirdek gerekebilir. Harici zamanlayıcılar, sistemin zaman kısıtlamaları dahilinde çalıştığını doğrulamak için kullanılabilir.
rcgldr

2
Gerçek bir dünya örneği istiyorsanız, Motorola 6809 / Hitachi 6309 işlemciler için MicroWare'in OS-9 işletim sistemi bir Gerçek Zamanlı İşletim Sistemidir. Tandy Color Computer serisi 6809'ları kullandı ve OS-9 (ilk olarak * nix benzeri bir işletim sistemine maruz kaldığım) ve gerçek zamanlı saatler bu sistemde hiçbir zaman standart ekipman değildi ve OS-9'un çalışması için gerekli değildi.
zmerch

3

Sisteminiz sıfırlandıktan ve RTC'ye sahip olduktan sonra çevrimdışıysa, günlüklere uygun tarihler koyabilir. Günlükleri, bunlara bakmanız gerektiğinde büyük olabilir ve yanlış zaman damgasına sahip olmak sizi, yazılım geliştiricilerinizi ve müşterilerinizi delirtir ve genel olarak soruşturma neredeyse imkansız hale gelir.

Bahsettiğiniz makalede kolay ya da zor, düşük ya da yüksek bir tür kişisel görüştür. Daha önce hiç yapmadıysanız ve net sistem gereksinimleri ve çalışma beyanı yoksa zor ve maliyetlidir; ve neye ihtiyacınız olduğunu ve kullanılacak en iyi cihazın ne olduğunu bildiğinizde kolay ve ucuzdur.


Soru, gerçek zamanlı bir sistemde RTC yokken RTC'nin azaltılmış CPU zamanının ve bellek kullanımının nasıl ölçüleceğidir. Cevabınız buna cevap vermiyor.
boru

1
@pipe CPU mimarisine ve gereksinimlerine bağlıdır. Verilen kıt bilgilerle cevap vermek mümkün değildir. Cevabım, RTC'nin nasıl olabileceğine dair genel bla-bla yerine neden orada olması gerektiğini söylüyor . Programcı ve sistem mimarı zamanlamaya harcanan zaman açısından iyi bir sistem ve kod, kötü sistem ve kod tasarlayabilir.
Anonim

3

Çoğu sistemde, bir RTC çevre biriminin diğer zaman tutma biçimlerine göre tek gerçek avantajı, sistemin geri kalanı uyku durumuna geçtiğinde veya bazı durumlarda tamamen kapatıldığında RTC'nin zaman ölçümlerinin etkilenmeyeceğidir. Aslında birçok RTC çevre birimi, yaklaşık günün saatini kaydetmekten başka pek çok amaç için onları pratik olmayacak şekilde tasarlanmıştır. Örneğin, birçok RTC çevre birimi (muhtemelen çoğunluk ancak belki de bir süper büyüklük değil), bir saniyelik artışlarla raporlama süresini sınırlandırır ve bunların çoğu, bir alarm ayarlarken veya en azından bazen senkronizasyon için meşgul beklemeyi gerektirir. bazı durumlarda - sadece zamanı okumaya bile çalışıyorum. Sonuç olarak, bir RTC kullanmanın normal yolu, değerini başlangıçta daha kullanışlı bir saate kopyalamak ve "duvar zamanı" her ayarlandığında,

ve art arda dört okumadan birincisi ve sonuncusu arasında 1/32768 saniyeden daha fazla bir süre geçmediği sürece eşleşen (ve böylece doğrudur) iki tane içermesi garanti edilecektir. Alarmın ayarlanması sahte uyandırma olayları oluşturabilir, ancak sıra:

  • uyandırma mandalından kesmeyi devre dışı bırak
  • 0x7FFFFFFF kenelere (yaklaşık 9 saat) kadar uyanma süresini ayarlayın
  • uyandırma devresini sıfırla
  • saati oku
  • yeni okunan süre uyanma zamanına ulaşıldığını gösterirse, uygun şekilde hareket edin
  • uyandırma mandalından kesmeyi etkinleştir

genel amaçlı zaman tutma kullanımına uygun olacak şekilde tüm kenar kasalarını yeterince kolay bir şekilde kullanmalıdır. Ne yazık ki, hangi nedenle olursa olsun, RTC çevre birimleri asla bu şekilde tasarlanmamıştır, bunun yerine daha karmaşık ve daha az yararlıdır.


"Gerçek" RTC'ler ayrıca, yazılımda kendinizi uygulamak için külfetli olabilen takvim işlevselliği (ayın günü, haftanın günü, artık yıllar, ...) da sağlar.
JimmyB

1
@JimmyB: Tarihler ve saatler ile önemsiz olmayan bir şey yapması gereken yazılımlar genellikle böyle bir mantığı içerecek ve kullanıcı I / O gerçekleştirme dışında işleri doğrusal formatta tutabilmek, işe yaramazdan dönüştürmek zorunda kalmadan çok daha temiz olacaktır BCD YMDhms, RTC'yi her okuduğunda doğrusal zamana ve yazma sırasında yararsız olandan tekrar dönüştürür.
supercat

1
@JimmyB: Basit bir örnek olarak, eğer sistem 2016-03-01 00:30 gibi görünen bir sisteme güç verecekse ve en son 2015-10-01 saat 00:30:00'da açılmışsa, zaman olur mu? Yazılımın, zamanın 2015-02-29 23:30:00 olduğunu belirlemek için Şubat'ta 2016'da 29 gün olduğunu bilmeliydi, bu yüzden takvim donanımı tam olarak ne satın alıyor?
supercat

OP'de atıfta bulunulan RTC yongası artık yılları kendiliğinden doğru şekilde ele alıyor.
JimmyB

1
@JimmyB: Yaz Saati Uygulamasından sonra sistem ilk kez açıldığında, yazılımın saati bir saat geri ayarlayabilmesi gerekir. Bu, gece yarısı ve sabah 1 arasında gerçekleşirse, bunun için takvimin bir gün geri ayarlanması gerekir ve bu da takvimlerin anlaşılmasını gerektirir. Gerçekten de, bir kullanıcının hafta içi ve tarihi manuel olarak ayarlaması gerekmedikçe, Yaz Saati Uygulamasını uygulamanın en kolay yolu doğrusal tarihlerle çalışmaktır.
supercat

3

Bu, "gerçek zamanlı" teriminin kullanımını çevreleyen bir terminoloji meselesi gibi görünüyor.

Gerçek zamanlı saat

Gerçek zamanlı saat, kararlı / doğru (bazı tolerans dahilinde) zaman işleyişi için bir cihazdır, böylece ana bilgisayar sistemi olayları / eylemleri gerçekleşme zamanı ve tarihiyle ilişkilendirmek için kullanabilir.

Gerçek zamanlı bir saati, bilgisayarla bağlantılı bir dijital saatin iç kısımlarına benzer olarak düşünebilirsiniz. İstikrarlı ve makul derecede doğru olacak şekilde tasarlanmış, bağımsız olarak çalışan bir zaman referansına sahiptir. Dijital bir saat gibi, ana bilgisayar kapatıldığı için şimdiki zamanın izini kaybetmez. Kullanıcılara sistem her başlatıldığında geçerli saati ve tarihi yeniden girmek veya sürüklenmeyi telafi etmek için sık sık ayar yapmak zorunda kalmamak için bilgisayarlara gerçek zamanlı saatler çoğunlukla kolaylık sağlamak amacıyla yerleştirilmiştir.

Gerçek zamanlı bir saatin alternatifi, sistem saati tarafından yönlendirilen yazılım ve dahili zamanlayıcıların kullanılmasıdır. Böyle bir yaklaşım uygulanabilir (orijinal IBM PC bu şekilde çalıştı), ancak özellikle kararlı değil; işletim sisteminin kapatıldığı, kilitlendiği veya kilitlendiği herhangi bir noktada tarih / saati de kaybeder.

Gerçek zamanlı sistem

"Gerçek zamanlı" terimi bir bilgisayar sistemine veya uygulamaya uygulandığında, gerçek dünyadaki olaylara çok kısa ve belirleyici bir sürede yanıt veren sistemi tanımlar - tanımlı siparişle genellikle sadece birkaç milisaniye, bazen daha az eşzamanlı girişlerin. Gerçek zamanlı sistemler, makine kontrolü - robotik, simülasyonlar ve oyunlar gibi şeyler için kullanılır. Gerçek zamanlı bir uygulama, geçerli saat ve tarih bilgisinden faydalanabilse de, bir uygulama sadece geçerli saat ve tarihi kullandığından "gerçek zamanlı" değildir.

Yüksek çözünürlüklü zamanlayıcılara karşı gerçek zamanlı saatler

Yukarıda belirtildiği gibi, gerçek zamanlı bir saatin amacı, geçerli tarih ve saati, genellikle sadece ikincisine kadar güvenilir bir şekilde takip etmektir; iyi olanın asgari kayması olacaktır (her gün kazanılan veya kaybedilen saniye). Gerçek zamanlı saatler genellikle yüksek çözünürlüğe sahip değildir; temel saatleri genellikle modern CPU saatlerine kıyasla oldukça yavaş çalışır; bu, ana bilgisayarın uzun bir süre kapalı kalması durumunda saatin güvenilir şekilde zaman tutmaya devam etmesi için güç tüketimini (bağımsız güç kaynağında boşaltma) en aza indirmektir.

Yüksek çözünürlüklü bir zamanlayıcı geçerli saat veya tarihle ilgili değildir; amacı zaman aralıklarını bir miktar hassasiyetle, belki de mikrosaniye ve hatta daha azıyla ölçmektir. Bunu başarmak için, sabit, yüksek frekanslı bir saati temel almalıdır - tipik olarak bilgisayar sistemi saati. Yüksek çözünürlüklü zamanlayıcılar da genellikle uzun süreler boyunca kayma ile ilgili değildir, çünkü genel amaç kısa süreler üzerinde zaman ölçümüdür. Yüksek çözünürlüklü zamanlayıcılar, gerçek zamanlı saatler ile aynı güç tüketimi endişesine sahip değildir, çünkü ana bilgisayar kapalıyken yapacakları bir iş yoktur.


1
Hafif bir eleyip sıkma olarak, "en kısa [...] mümkün" gerçek zamanlı sayılmaz. Gerçek zaman, deterministik zamandaki cevaptır veya aynı anda birden fazla olay meydana gelirse tanımlı sıralamayladır.
awjlogan

0

Bence gerçek zaman saatinin temel nedeni belli bir aralığa kadar olan doğru zaman. Normal saat genellikle kapasitörlerle kesilir ve yanlış ayarlanmış kapasitans / saat zamanlama devresinin direnci, kullanılan saatin zamanlamasındaki belirsizlik gibi çok çeşitli faktörlere bağlı olarak frekans üzerinde daha büyük tutarsızlıklar olabilir. performans için düello amacına hizmet eder ve aynı zamanda tekrar hataya neden olabilecek zamanları bölmek için genellikle programlanabilir mantık vardır.

Genellikle RTC'de zamanlayıcılar ve köpekler vb. Olabilir. Bunu normal bir saatle kolayca elde edemezsiniz. Veya üretimde saatin doğru olduğuna çok dikkat etmelisiniz. Ses gibi şeyleri ve yüksek hızlı sistem saati yerine rtc'yi kullanmanın gerekmeyebileceğini görebilirsiniz.

RTC'nin ne anlama geldiği konusunda kendim kesin olarak söyleyemem. Linux'un gömülü dünyada yaygın bir araç olduğunu biliyorum, ancak tüm gerçek zamanlı uygulamalar için ne kadar iyi çalıştığından emin değilim. Çok iş parçacıklı çalışma, yürütme sürelerini belirleyici yapamaz, ancak donanım performans gereksinimlerini büyük ölçüde aştığında, birçok çözüm gerçek zamanlı uygulamalarda bile iyi çalışır.

Sonra kritik ve düşük performanslı uygulamalar var. Burada istenen bir şey deterministik ve genellikle daha düşük karmaşıklık çözümüdür. Burada RTC açıkça kullanılabilir. Linux, kendisine bağlı kesintilere özel erişim sağlayabilir. Bana öyle geliyor ki, deterministik gerçek zamanlı olarak sadece bir rtc'ye değil, aynı zamanda onlara bir kesintiye veya işletim sistemine ihtiyacınız var.


1
Bir RTC'yi bir bekçi köpeğine tam olarak bağlamak, saatin "çeşitli şeylerle fazda" kalmasını nasıl sağlayabilir?
Dmitry Grigoryev

Harici saat kaynağı kullanıyorsanız, bu kaynağa ve kapasitans, direnç veya empedans gibi bağlayan devrelere bağımlısınız. Bu, çözümü bir dalga olan ve daha sonra faz açısı vb.Gibi harmonik salınımın yanı sıra, az önce sorduğunuz her şeyi cevaplamak için mikroişlemci uygulamasıyla tanımlanır. Tüm bu şeyler maalesef birçok uygulamada hesaba katılmalıdır.
marshal craft

0

İnternetteki diğer bilgisayarlarla güvenli iletişime güveniyorsanız, gerçek zamanlı bir saate ihtiyacınız olacak (% 100'ü olmamalıdır, ancak yerel bir zaman referansınız yoksa başka bir şeye güvenmeniz gerekir. ' t Tarihi bilmiyorsanız sertifikalara güven).

Yani, hayır, tüm 'gerçek zamanlı' sistemler için birine ihtiyacınız yok. Ancak, uygulamanıza bağlı olarak, düşük güç durumunda olduktan sonra iyi bir zaman düzeltmesi elde etmenin en enerji tasarruflu yolu olarak bir RTC isteyebilirsiniz.


Bu tamamen doğru değil. Örneğin, bir sertifikaya (özellikle sabitlenmiş bir sertifika) süresinin dolmasına veya teorik olarak geleceğe benzeyen bir belgede verilmiş olmasına rağmen güvenebilirsiniz. Bununla birlikte, bir SSL istemcisi olmaya çalışmadan önce NTP düzeltmenizi almak genellikle daha iyi bir fikirdir; doğal olarak NTP için güvenlik şemaları, zamanın mantıklı bir fikriyle başlamak zorunda kalmadan çalışacak şekilde tasarlanmalıdır.
Chris Stratton

4
Aşırı abartılı ve abartı iç açıcı ve güzel bir şey iken, asıl mesajı oluşturuyorsa, o zaman yanlıştır. Şifrelerin çalışma modlarının olmaması temel olarak saati veya tarihi gerektirir.
Paul Uszak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.