“Windows gerçek zamanlı bir işletim sistemi değil” ne anlama geliyor?


19

Görünüşe göre gecikme denetimi yapan LatencyMon adlı bir uygulama ile karşılaştım .

İşlemciye ne kadar fazla yük koyarsanız, sistemin o kadar az duyarlı veya daha az gizli olduğunu her zaman anladım. Ancak, LatencyMon sayfasının ikinci bölümünde, ilk cümle "Windows gerçek zamanlı bir işletim sistemi değildir" (RTOS) der. Bu beni düşündürdü. Demek istediğim, bu Linux, Unix veya Mac OS X gibi herhangi bir işletim sisteminden farklı mı?

Herhangi bir "gerçek zamanlı" işletim sistemi var mı? Yoksa ürünlerini satın almanız sadece bir pazarlama programı mıdır?

DÜZENLE:

Ayrıca, orada RTOS örnekleri var mı?


4
Örneğin, QNX gerçek zamanlıdır.
yeni123456

Yanıtlar:


21

Wikipedia aslında burada şaşırtıcı bir bilgi zenginliğine sahip.

Gerçek zamanlı işletim sistemi (RTOS), gerçek zamanlı uygulama isteklerine hizmet etmek üzere tasarlanmış bir işletim sistemidir (OS).

Bir RTOS'un temel özelliği, bir uygulamanın görevini kabul etmek ve tamamlamak için geçen süre ile ilgili tutarlılık düzeyidir; değişkenlik değişkendir. Zor bir gerçek zamanlı işletim sistemi, yumuşak bir gerçek zamanlı işletim sisteminden daha az titreşime sahiptir. Baş tasarım hedefi yüksek verim değil, yumuşak veya sert performans kategorisinin garantisidir. Genellikle veya genellikle bir son teslim tarihini karşılayabilen bir RTOS yumuşak bir gerçek zamanlı işletim sistemidir, ancak bir son teslim tarihini belirleyici olarak karşılayabiliyorsa, bu gerçek zamanlı bir işletim sistemidir.

Bir RTOS, programlama için gelişmiş bir algoritmaya sahiptir. Zamanlayıcı esnekliği, işlem önceliklerinin daha geniş, bilgisayar sistemi düzenlemesini sağlar, ancak gerçek zamanlı bir işletim sistemi daha dar bir uygulama kümesine daha fazla ayrılmıştır. Gerçek zamanlı bir işletim sistemindeki temel faktörler minimum kesme gecikmesi ve minimum iplik değiştirme gecikmesidir; gerçek zamanlı bir işletim sistemi, belirli bir zaman diliminde gerçekleştirebileceği iş miktarına göre ne kadar hızlı veya ne kadar öngörülebilir şekilde yanıt verebileceğine değer verir.

Bu, çok az işletim sisteminin gerçekten yaptığı bir şeydir, çünkü birçok iş yükü için daha az verimlidir. Ana tüketici işletim sistemlerinin hiçbiri şu anda (ya da benim bildiğim kadarıyla) gerçek zamanlı değil. Ne yazık ki, gerçek zamanlı olmayan bir ortamda bazen başka şeyleri beklemek zorunda kalmak anlamına gelir. Bu, genellikle makul bir süre içinde bir şey vermediğinde sorun haline gelir.

Şu anda en iyi bilinen, en yaygın kullanılan, gerçek zamanlı işletim sistemleri şunlardır:

LynxOS
OSE
QNX
RTLinux
VxWorks
Windows CE

Bkz gerçek zamanlı işletim sistemlerinin listesi kapsamlı bir liste için.


6
Gerçek zamanlı işletim sistemleri normalde çok kesin bir zaman aralığında karar / hesaplama / vb. Tamamlanması gereken son derece hassas kontrol sistemleri gibi çok özel görevlerde kullanılır.
Lamar B

RTOS örnekleri var mı? Soruyu bu açıdan güncellemek.
Chad Harrison


@ Ta.speot.is ne dedi - makalede zaten bağlı bazı var. Yine de içeri gireceğim.
Shinrai

Wiki sayfasının altına gelmedim ... Üzgünüm ama: /
Chad Harrison

19

Gerçek Zamanlı işletim sistemleri genellikle rehberlik veya sistem izleme gibi bir şeyden sorumlu olabilecekleri gömülü sistemler için kullanılır. Gerçek zaman sistemi hakkında hatırlanması gereken en önemli şey (ve onu gerçek zamanlı olmayan bir sistemden ayıran şey), gerçek zamanlı bir sistemde, eğer bir cevap geç kalırsa, yanlıştır. Excel'de bir dizi rakam eklemeyi (işlem gecikirse, gerçek bir etki yoksa) bir arabaya bir fren uygulamak (bir gecikmenin felaket olabileceği) eklemeyi düşünerek bunun nasıl çalıştığını kolayca görebilirsiniz.


10

Temel olarak, bir RTOS belirli bir (genellikle düşük) zaman aralığında bir IRQ'ya (kesme isteği) hizmet verebileceğini garanti edebilir. Standart işletim sistemlerinin böyle bir garantisi yoktur.

Çoğu modern sistemde, çoğu cihaz bir IRQ üretebilir. Bu, CPU'nun yaptığı işi durdurmasına (yani kesintiye uğramasına) ve bir kesme hizmeti programı çalıştırmasına neden olur. Buradaki fikir, bu servis programının cihazın ihtiyaç duyduğu her şeyi yapması, yani verileri cihazdan ve RAM'e alması, cihaza ne yapacağını söylemesi vb.

X86'da, CPU'da yalnızca 1 IRQ hattı bulunduğundan, bir kesinti aldığında, CPU kesinti kaynağını tanıyana ve yeniden etkinleştirene kadar daha fazla kesinti otomatik olarak devre dışı bırakılır (NMI, RESET ve SMI hariç). Bu nedenle, standart i386 / amd64 Windows altında iyi aygıt sürücüleri, bu durumda minimum işlem yapacak, sadece kesintileri yeniden etkinleştirmenin ve daha sonra kesintinin tam işlenmesini ertelemenin yeterli olacağı için (sistem teknik olarak yalnızca CPU başına 1 kesinti sunabiliyor) bir kerede çekirdek). Emin değilim ama Linux'un da aynı şeyi yaptığını düşünüyorum. Bununla birlikte, kesintinin servis edileceği zamanın kesin bir garantisi yoktur.

Diskler, klavyeler, NIC'ler gibi çoğu PC cihazı için, IRQ'larına servis yaparken küçük bir gecikme olursa, performans kaybı dışında kötü bir şey olmaz. Bu, cihazın hiçbir şeyi arabelleğe almadığı ve bilgisayarın gelen veri akışına gerçekten uyması gereken ses ve video girişi gibi cihazlar için daha fazla sorun olabilir.


Ne demek istediğini açıklayabilir misin "x86 sadece 1 IRQ hattına sahiptir"? Son kez bir 80186 bilgisayarı tel ördüğümde (kuşkusuz on yıllar önce), 8259 PIC'nin 8 kanalı olduğunu ve o zamanki nominal bilgisayarın ikinci bir kaskad olduğunu, toplam 15 kanal için NMI?
Glenn Slayden

PIC'ye tam olarak ihtiyacınız var çünkü x86'nın sadece bir IRQ hattı var Ancak x86 kesintileri devre dışı bırakılmışsa, PIC yalnızca CPU onları yeniden etkinleştirene kadar bekleyebilir ve IIRC bunu yapar. 68000 gibi IIRC diğer CPU'larda 3 kesme pimi vardı ve CPU'nun kendisinde kodlanmış bir öncelik seviyesi 0-7 bekleniyordu. Şimdi bunu düşündüğüme rağmen, belki 68000 herhangi bir IRQ aldıktan sonra tüm kesintileri devre dışı bırakır - 68000'i hiç programlamam.
LawrenceC

Ah evet, şimdi hatırlıyorum. Ve IIRC'nin 8259 çip tasarımının 'iç içe' yönünün - iç içe IRQ işlemeye izin vererek - işletim sistemini kesintileri olabildiğince az veya hiç devre dışı bırakmaya teşvik etmesi gerekiyordu, ancak PC kesme hatlarına gelişigüzel bir şekilde atandı. yaklaşmak? Her iki durumda da, kesinlikle CLI altında önemli miktarda kod çağırmak ... STI asla niyet değildi.
Glenn Slayden
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.