Neden RTLinux

RTLinux tasarım nedenleri standart Linux çekirdeğinin çalışması incelenerek anlaşılabilir. Linux çekirdeği, donanımı kullanıcı seviyesindeki görevlerden ayırır. İyi bir ortalama başarım sağlamak veya iyi bir iş çıkarmak için çekirdek her göreve birer öncelik atar ve bunlar üzerinde bazı zamanlama algoritmaları kullanır. Bu görev, CPU tarafından zaman dilimlerine bölüştürülerek dış ortamda çalıştırılır, böylece çekirdek her bir kullanıcı seviyeli görevi geçici olarak durdurabilir. Bu sıralama algoritmaları ile birlikte aygıt sürücüleri, kesintisiz sistem çağrıları, geçersiz durum kesme sinyali kullanımı ve sanal bellek işlemleri önceden kestirilemezlik kaynaklardır. Dolayısıyla bu kaynaklar bir görevin gerçek zamanlı başarımı için engel teşkil eder.

'mpg123' ya da başka bir çalıcı kullanarak müzik dinliyorsanız gerçek zamanlı olmayan başarım hakkında bir fikriniz vardır. Önceden belirlenen zaman dilimi için bu süreç çalıştırıldıktan sonra, standart Linux çekirdeği görevin önceliğini hiçe sayıp CPU'yu başka bir göreve verebilir (örneğin; X sunucusunu veya Netscape'i açan bir göreve). Sonuç olarak müziğin sürekliliği kaybolur. Böylece çekirdek, CPU zamanının bütün süreçler arasında doğru dağılımını sağlamayı denerken bir takım başka olayların meydana gelmesini engelleyebilir.

Bir gerçek zamanlı çekirdek, altındaki süreçlerin zamanlama gereksinimlerini garantileyebilmelidir. RTLinux çekirdeği, yukarıda bahsedilen önceden kestirilemezlik kaynaklarının kaldırılmasıyla gerçek zamanlı başarımları sağlayabilir. RTLinux çekirdeğinin standart Linux çekirdeği ve donanım arasında oturduğunu varsayabiliriz. Bu durumda Linux çekirdeği gerçekzaman katmanını asıl donanım olarak görür. Artık, kullanıcı her bir görev için ayrı ayrı ve bütün görevler için önceliklikleri belirleyebilir ve tanıtabilir. Kullanıcı, zamanlama algoritmaları, öncelikler, çalışma sıklığı vb. üstünde kararlar vererek süreçler için doğru zamanlamayı sağlayabilir. RTLinux çekirdeği, en düşük önceliği standart Linux çekirdeğine atar. Böylece kullanıcı görevleri gerçekzamanda çalışabilir.

Güncel gerçek zamanlı başarım bütün donanım kesme sinyallerinin durdurulması ile elde edilir. Sadece RTLinux ile ilgili kesmeler için rutin kesme servisi çalışır. Bütün diğer kesme sinyalleri, RTLinux çekirdeğinin boşta kalması nedeniyle standart Linux çekirdeği çalışmaya başladığında yazılım kesmeleri olarak Linux çekirdeğine aktarılmak üzere tutulurlar.. RTLinux yürütücüsü yürütme gücünü kendine ayırmaz.

Gerçek zamanlı görevler ayrıcalıklıdır (yani donanıma doğrudan erişirler) ve sanal belleği kullanmazlar. Gerçek zamanlı görevler, belleğe özdevimli yüklenebilen özel Linux modülleri olarak yazılırlar. Bir gerçek zamanlı görev için ilklendirme kodu, gerçek zamanlı görev yapısını ilklendirir ve RTLinux çekirdeğine süre sonu, periyodu ve en son çıkan kısıtlamaları hakkında bilgi verir.

RTLinux'un varlığı, Linux çekirdeğinin yapısına dokunmadığından Linux çekirdeği ile birlikte anlamlı olur. Linux çekirdeğinin gelecekteki gelişimine engel olmaksızın, nispeten basit değişikliklerle mevcut Linux çekirdeğini tam bir gerçek zamanlı ortama dönüştürmeyi başarır.