İşletim Sistemi, RTOS Ve Bare-Metal
İşletim sistemi kavramının dünya çapında kabul görmüş kesin bir tanımı bulunmamaktadır. Kilobaytlar seviyesinde ve sadece görev planlaması yapabilen küçük bir program parçasına işletim sistemi denildiği gibi, GNU/Linux gibi yüzlerce MB alan işgal eden ve işin arka planında korkunç kaoslar dönen sisteme de işletim sistemi(operating system, OS) denilmektedir. Buna rağmen genel manasıyla baktığımızda, bir grup sistem servisleri ve program işletme servisleri sunan, hedef donanım kaynaklarını(RAM, CPU, Kalıcı bellek vb.) yönetmek amacıyla yazılmış bir grup yazılıma işletim sistemi diyoruz. Yönetmek ise en etkin ve verimli şekilde kullanmak manasına geliyor.
En basit tabirle günlük rutinler ve iş çalışmalarımız için kullanıdığımız işletim sistemlerine genel amaçlı işletim sistemleri adını veririz. Windows 10, Ubuntu, iOS ve Android gibi işletim sistemleri genel amaçlı işletim sistemlerine örnekler olarak gösterilebilir. Burada bazı okurlar belki “Ubuntu değil Linux o” diyebilir, bu konuya başka bir yazıda değinebiliriz…
İşletim sistemlerinin bizimle ilgili kısmına dönecek olursak, birçok genel amaçlı işletim sistemi en başta zamanlama konusunda garanti sağlamamaktadır. Bununla birlikte genel amaçlı bir işletim sisteminin kendisini idame ettirdiği iç yazılımlardan ötürü, tahmin edilemez kilitlenme ve gecikme durumlarıyla karşılaşabiliriz. Ek olarak genel amaçlı işletim sistemleri gerçekten çok büyük bellek ve kalıcı bellek alanlarına ihtiyaç duyarlar. Dolayısıyla genel amaçlı işletim sistemleri gömülü sistemlerde kullanılmak için uygun yazılımlar değildir. Özetle Windows 10’u ABS fren sisteminde kullanmayı düşünmek gerçekten komik olur.
Bir gerçek zamanlı işletim sistemi (Real-Time Operating System) ise gömülü sistem uygulamalarını gerçekleştirmek için tasarlanmış işletim sistemidir. RTOS’lar temel olarak performansı garanti etmek için yazılırlar. Buradaki “performans” tabirinden kasıt genelde zamanlama garantisidir. Daha düzgün bir ifade ile “tahmin edilebilir performans” asıl hedeftir. Örneğin, bir hava yastığı sisteminden beklenen, kaza anından çok kısa bir süre sonra yastıkları şişirmesidir. Bu sistemdeki performans kastı, mümkün olan her koşulda ve zamanda, her ne zaman kaza olursa olsun hava yastıklarının kaza anında şişmesidir. Yaygın yanlış anlayışta olduğu gibi buradaki “performans” ibaresi “sistemin hızının mümkün olan en üst seviyede olması” değildir. FREERTOS, TIRTOS, SafeRtos, Nuttx gibi yazılımlar piyasadaki birçok RTOS’tan bazılarıdır.
Çok küçük ama gerçekten çok küçük kapasiteli gömülü donanımlar için her zaman RTOS kullanmak mümkün olmaz. Bu durumlarda tasarım doğruca Bare-Metal dediğimiz tarza yönlenir. Bare-Metal kavramı, yazılan kodun direk olarak işlemci üzerinde çalıştığını, bu kodu yönetmek için RTOS gibi ayrı bir yazılım kullanılmadığını ifade eder. Kaynak olarak kapasitesi küçük sistemlerde genelde tasarlanması kolay ve küçük yazılımlar yer alır. Bu tarz küçük yazılımlar ise basit bir sonsuz döngü işletmesi içerisinde, zamanlanmış bir iki görev ve basit senkronizasyon teknikleri kullanılarak tasarlanabilir. Hatta interrupt(kesme) mekanizmaları ile sistemin kapasitesi güçlendirilip, kilit-görev işlemleri yapılabilir. Örneğin 8-bit bir donanımla basit bir USB-Serial çevirici tasarlanmanız istendi ise burada çözüm Bare-Metal programlama tekniğidir.