Değerli okuyucular, bu yazımızda; başta endüstriyel ürünlerde olmak üzere birçok alanda kullanılan real-time(gerçek zamanlı) işletim sistemlerinden, bu sistemlerin nerelerde kullanıldığından, nasıl uygulandığından ve gerçek zamanlı olmayan sistemlerle arasındaki farklarından bahsedeceğim.
Real-time sistemler, girdilere hemen cevap verebilen sistemlerdir. Adından da belli olduğu gibi gerçek zamanlı sistemlerde zaman kısıtı önemlidir ve diğer sistemlerden farklı olarak zaman, bu sistemler için önemli bir ölçüm birimidir. Real-time sistemler, kesmeler olmaksızın istikrarlı davranışlar sergileyebilen sistemlerdir. Genel amaçlı kullanılan işletim sistemleri real-time sistemler değildirler çünkü genel amaçlı sistemler, kesmelere karşı daha kararsız oldukları için reaksiyon gösterebilmeleri için fazlaca zaman geçer. Ayrıca real-time sistemler, gerçek yaşamda meydana gelen olayları anında simule eden sistemler olduğu içinde gerçek zamanlı sistemler adını almıştır.
Real-time sistemler iki şekilde sınıflandırılmaktadır: Hard real-time sistemler ve soft real-time sistemler. Hard real-time sistemlerde zaman sınırlamaları(deadlines) kaçınılmazdır ve hatalar ölümcül olabilmektedir. Soft real-time sistemlerde ise zaman sınırlaması bazen kabul edilebilir ve bu sistem performansında düşüş meydana getirir.
Real-time işletim sistemleri; gömülü sistemler, endüstriyel robotlar, uçak, roket gibi havada uçan platformlar, endüstriyel kontrol ve bilimsel araştırma ekipmanları gibi real-time sistemler için geliştirilmiş çok görevli(multitasking) bir işletim sistemidir.
Real time uygulamasını işletim sistemlerinde, kaynakları gerçek zamanlı olarak yönetme, kullanma mantığında görebiliriz. Komple gerçek zamanlı olarak geliştirilmiş işletim sistemi olmamasına karşın ilk olarak IBM firmasının American Airlines ve Sabre Airlines Reservation Ssystems için geliştirdiği large scale dediğimiz büyük çapta geliştirilen Transaction Processing Facility ‘ı görebiliriz. Günümüzde real-time sistemlerin geliştirilmesi ve pazarlanmasında onlarca firma bulunmaktadır. Bu firmaların yayınladığı ve güvenilirliği test edilmiş birkaç örnek verelim:
eCos (Red Hat) , AMX (KADAK), RTX (CMX Systems), INTEGRITY (Green Hills Software), LynxOS (LynuxWorks), Neutrino (QNX Software Systems), Nucleus (Mentor Graphics), RTOS-32 (OnTime Software), OS-9 (Microware), pSOSystem (Wind River)
QNX (QNX Software Systems), Linux/RT (TimeSys)
Yönetmek istediğimiz sistemlerin davranışlarının tahmin edilebilir olması bizim için çok önemlidir. Real-time sistemler de bunu destekleyecek şekilde scheduling, kaynak yönetimi, senkronizasyon, iletişim ve giriş/çıkış konularında faydalar sağlamaktadır. Tahmin edilebilir sistemler kararlı sistemlerdir ve sayısal işlemleri kendilerine ayrılan sınırlı zamanda gerçeklenebilir. Bu kararlılık, donanımsal yapı, işletim sistemi yapısı, geliştirilen programlama dili gibi birçok faktöre bağlıdır. Mimari yapı olarak donanım özelliklerinden kesmeler, direkt bellek erişimi, cep bellek gibi performans kazandıracak kriterler ise sistemi daha kompleks ve kararsız durum içine sokmaktadır. Yazılımsal yapı olarak işletim sisteminin de kararlılık üzerinde büyük etkisi bulunmaktadır. Bu nedenle scheduling algoritmaları, senkronizasyon mekanizması, hafıza yönetim ilkeleri ve giriş/çıkış algoritmaları da real-time sistemlere uygun hale getirilmeye çalışılmıştır.
Gerçek zamanlı işletim sistemlerinin gerçeklenmesinde birkaç önemli faktöre dikkat edilmiştir. Öncelikle uygulamanın basit ve sisteme ek yük getirmeyecek şekilde tasarlanması ve minimum fonksiyonla gerekmektedir. Ayrıca sistem performansı için virtual storage ’e izin verilmemeli, dosyalama ve giriş/çıkış sistemleri sınırlandırılmalıdır. Bununla birlikte scheduling algoritmasında sistem tasarımcısının seçimine göre FIFO, sabit öncelikli sıralama ya da round robin algoritmaları kullanılabilir.
Sistemimizi real-time haline getirmek için birkaç yöntem bulunmaktadır: small proprietary kernels, component based kernels, real-time versions of popular operating systems ve university reaserch kernels.
Ev kullanıcılarının geliştirdiği small proprietary kernels hızlı olduğu için gömülü sistemlerde kullanılmaktadır. Hızlı kaynak değişimi, küçük boyutu, kesmelere hızlı cevap verebilme özelliği, sabit ya da değişken hafıza yönetim seçenekleriyle hızlı bir işletim sağlaması ve ayrıca çok görevli çalışabilme yeteneği ile çok kullanıcılı sistemlere cevap verebilme özelliği bu tip kernelların tercih edilmesinde etkili olmuştur.
Component based kernels yönteminde ise nesne yönelimli bir yöntem olan MMLite ile bileşenler birleştirilerek oluşturulur. Genellikle bu bileşenler küçük boyuttadır ve her bileşen kendi işinden sorumludur.
Real-time versions of popular operating systems, bir diğer yöntem olarak real-time olmayan popüler işletim sistemlerini real-time hale getirme yöntemi olarak görebiliriz. Linux, Mach gibi popüler sistemlere, scheduling, giriş/çıkış, threadler ve processler arası iletişim konularında geliştirilerek real-time özelliği kazandırılır fakat geliştirmeler çoğu zaman problem çıkarabilir. Özellikle processler arası iletişim, hız ve tahmin edilebilirlik konularında öncelikten kaynaklanabilir.
University reaserch kernels yönteminde ise üniversitelerin araştırma amaçlı geliştirdikleri kernellar kullanılarak sisteme real-time özelliği kazandırılmaktadır. Bu yöntem en çok kullanılan yöntemlerden biri olduğu gibi çok örneği de bulunmaktadır. Örnek olarak MARS ve SPRING’ i verebiliriz.
Teknolojinin hızla ilerlediği bir zamanda kurduğumuz sistemlerin kararlı davranışlar sergilemesi ne kadar önemli ise bu tür sistemlerin donanımsal gelişime uygun hızda gelişmesi de o kadar önemlidir. Endüstri ve kontrol sistemleri gibi insan hayatını kolaylaştıran birçok alanda kullandığımız bu sistemler, ümit ediyoruz, daha birçok yerde insanoğlunun yararına sunulacaktır ve hayatı kolaylaştırmaya devam edecektir.