29 Aralık 2016 Perşembe

RTOS 
Real Time Operating System

    Mikrodenetleyiciler küçük ve kaynakları sınırlı işlemcilerdir. işlemciler programlarını ROM veya FLASH'ta tutarlar. Programları buradan yürütürler. Programın çalışması için RAM'e ihtiyaç duyarlar. Tipik bir program direkt olarak ROM'dan çalışır.

    Mikro denetleyiciler en alt gömülü uygulamalar kullanarak özelleştirilmiş işlemleri yaparlar. FreeRTOS, Real Time Scheduling, Görevler arası iletişim(inter-task communication) , zamanlama(timing) ve senkronizasyon ilkelerini içerir. 

    İşletim sistemi tasarımlarında önemli bir konu olan işlemci zamanlama algoritmalarına bir göz atalım. (CPU scheduling algorithms). Bu algoritmaların çalışma prensibi şöyledir; sırası gelen işlem biz bunlara genelde fonksiyon diyoruz. Bekleme sırasına alınarak görevlendirici (dispatcher) olarak adlandırılan bir işlem tarafından CPU'ya gönderilir. RTOS işlemci zamanlama algoritmasının izin verdiği kadar, fonksiyonu bitene kadar veya belirli bir zaman geçene kadar çalıştırır ve hafızadan kaldırır. Böylece birden çok fonksiyon tek bir işlemci tarafından çalıştırılır. Burada kullanılan algoritmaları iki kısımda inceleyebiliriz;
  • Kesintili algoritmalar (preemptive algorithms)
  • Kesintisiz algoritmalar (nonpreemptive algorithms)
    Kesintili algoritmalarda bir Task( bundan sonra işlemlere Task  diyeceğiz) RTOS tarafından belirlenmiş bir süre kadar çalıştırılır ve diğer bir Task'ın çalıştırılmasına geçer. Böylece birden fazla Task zaman paylaşımlı olarak çalıştırılmış olur.

    Kesintisiz algoritmalarda  çalıştırılan Task bitene kadar diğer Task çalıştırılmaz. Task'lar birbirlerini beklerler. Kesintisiz algoritmalara örnek;
  
En Kısa Task İlk (Shortest job first)
İlk Gelen İlk Çıkar (First in first out)
İlk Gelen Son Çıkar (First in last out)

Birbirini Dışlama (Mutually Exclusive)


    İki Task'ın birbiri ile ilişkisizliğini belirtmek için kullanılan terimdir. Bazı dokümanlarda Mutex olarak kısaltılarak da kullanılır.

    İki Task paralel olarak çalıştırıldığında (aslında zaman paylaşımlı kısım kısım çalıştırıldığında) aynı kaynağı veya global tanımlanmış aynı değişkeni kullanabilirler. Bu kullanım yazılımda hatalara sebep olabilir. Bu problemin çözümü için Task'ların senkronize edilmesi gerekmektedir. Temel işletim sistemlerinde 4(dört) yöntem kullanılır.
  • Koşullu Değişkenler (Conditional Variable)
  • Semaforlar (Semaphores)
  • Kilitler (Locks)
  • Monitörler (Monitors)
    Biz bunlardan Semaforları inceleyelim.

Semafor (Semaphors)


    İşletim sistemlerinde eş zamanlı programlamada sıkça kullanılan bir yöntemdir. Birden fazla Task'ın aynı anda çalışması durumunda birbirleri için risk teşkil ettikleri zamanlarda Task'ların birbirlerini beklemesini sağlayan bir mekanizmadır.

    Semafor kullanımında bölünmezlik (atomicity) baş roldedir. Yani tanımlanmış bir semafor'un içerisinde çalışan birden fazla fonksiyon işletim sistemi tarafından tek bir Task olarak kabul edilir ve araya herhangi bir Task girerek çalıştırılmaz. Semafor'lar iki tipte kullanılırlar;
  • İkili Semafor'lar (Binary Semaphores)
  • Tam sayı Semafor'lar ( Integer Semaphores)
    İkili semafor'lar sadece iki Task arasında eşleme sağlarlar. Üçüncü bir Task'a eşleme sağlamazlar. Tam sayı semafor'lar istenilen sayıda Task arasında eşleme sağlarlar.

Kaynak: ST UM1722.pdf , Yrd.Doç.Dr.Şadi Evren ŞEKER


Hiç yorum yok:

Yorum Gönder