28 Eylül 2018 Cuma

ARINC 653 Scheduler

Giriş
Bir çok işletim sisteminde çeşit çeşit scheduler'lar görmek mümkün. Bunların kimisi çok basit bir döngüden ibaret iken, kimisi de gayet karmaşık olabiliyor. Aşağıda bazı scheduler'ların isimileri mevcut.
TASK SCHEDULER TYPETASK EXECUTIONDEVICE I/O METHOD(S)
Endless LoopNo tasks.Polled I/O Only.
Basic Cyclic ExecutiveAs often as possible.  Polled I/O Only.
Time-Driven Cyclic ExecutiveSingle frequency.Polled I/O Only.
Multi-rate Cyclic ExecutiveMultiple frequencies. Polled I/O Only.
Multi-rate Executive for Periodic TasksMultiple frequencies,
 at higher precision
Polled I/O Only.
Multi-rate Executive with InterruptsMultiple frequencies,
at higher precision
Polled and
Interrupt-driven I/O.
Priority-based Preemptive SchedulerPeriodic and
Non-periodic tasks.
Polled and
Interrupt-driven I/O.
Deadline SchedulerPeriodic and Non-periodic tasks.
+Better handling of real-time requirements
Polled and
Interrupt-driven I/O.
Partition SchedulerPeriodic and Non-periodic tasks.
+Better handling of tasks                                           with required execution.
Polled and
Interrupt-driven I/O.


ARINC 653 Scheduler Nasıl Çalışır?
ARINC 653 standardı iki kademeli scheduler tanımlıyor. İlk scheduler Bölümleme Scheduler'ı. Diğeri ise Bölümleme İçindeki Priority-based Preemptive Scheduler. Aşağıda her ikisini de açıklamaya çalıştım.

Bölümleme (Partition) Scheduler Nedir?
Bu scheduler bölümlemeleri çalıştırır. En önemli özelliği her bölümlemeye belirtilen zamanın ayrılacağını garanti eder. Böylece hiç bir bölümleme kendi zamanını aşamaz ve diğer bölümlemeleri mahrum bırakmaz (starvation).

Bölümleme İçi Priority-based Preemptive Scheduler Nedir?
Bölümlemeyi kendi başına çalışan sanal bir bilgisayar gibi düşünebiliriz. Bölümleme içinde priority-based preemptive scheduler çalışır. 

Non Preemptive Scheduling Nedir?
Geçişli zamanlama kavramını tam olarak anlayabilmek için önce tersini bilmek gerekir. Konuyu en iyi açıklayan sayfa burada. Özet olarak, bir uygulama süresi bitinceye veya bloke oluncaya kadar çalışabilir, yüksek önceliğe sahip bir başka uygulama hazır duruma gelince, işini yarıda bırakmaya zorlanamaz.

Preemptive Scheduling Nedir?
Preemptive Scheduling yazısına taşıdım

Önceliğin Tersine Çevrilmesi (Priority Inversion) Nedir?
Geçişli zamanla kullanılan sistemlerde, bazen amacın dışına çıkarak şöyle bir hata yapılabiliyor. Önceliği yüksek olan bir görev, düşük önceliğe sahip bir başka işin kaynağa koyduğu kilit sebebiyle sürekli bloke olabilir, ve bu yüzden görevini yerine getirmeden scheduler tarafından uyutulabilir. Böylece istemeden de olsa öncelikler tersine çevrilmiş olur ve düşük önemdeki iş, yüksek önemdeki işi keserek sürekli önüne geçer.

Önceliği Değiştirilmesi Mümkün mü ?
ARINC 653 bir uygulama yaratıldıktan sonra, önceliğinin değiştirilmesine izin vermez! Dolayısıyla tek atımlık bir kurşun vardır.

Genel Maksatlı Scheduler Nasıl Çalışır?
Çoğu genel maksatlı işletim sisteminde bulunan scheduler adil (fairness) olmayı hedefler. Yani, her uygulamaya az bile olsa işlemci ayrılmaya çalışılır. ARINC 653 bölümleme içindeki scheduler'ın ana amacı adil olmak değildir! Bu scheduler sadece öncelik ve zamana bakar. Dolayısıyla, en düşük önceliğe sahip uygulamaya sıra gelip gelmediği ile ilgilenmez.

Rate Monotonic Scheduling Nedir?
Konunun ARINC 653 ile alakası yok, ancak hazır okumuş ve anlamışken not almak istedim.
Rate Monotonic Scheduling ile periyodu en kısa olan işe en yüksek öncelik tanınır. The shorter the task's period, the higher its priority. Bu yöntemde görevler arasında bağımlılık olmadığı kabul edilir. Aşağıda açıklama mevcut.
Basic rate-monotonic analysis, one of the earlier theories used for determining schedulability – and the subject of one of the 20 most commonly cited papers in computer science – can only guarantee schedulability for tasks that do not share resources.
Cooperative MultiTasking
Sanırım artık bu yöntemi kullanan işletim sistemi kalmadı. Açıklaması şöyle.
Windows 3.1 uses cooperative multi-tasking – meaning that each application that is in the process of running is instructed to periodically check a message queue to find out if any other application is asking for use of the CPU and, if so, to yield control to that application. However, many Windows 3.1 applications would check the message queue only infrequently, or not at all, and monopolize control of the CPU for as much time as they required. A pre-emptive multi-tasking system like Windows 95 will take CPU control away from a running application and distribute it to those that have a higher priority based on the system’s needs.
Bir başka açıklama şöyle.
Preemptive (rather than cooperative) multitasking was a highly-touted feature for PC's in 1996, with its inclusion in Windows 95 for the first time. It was also highly-touted for 2001 Macs when included with OS X. Earlier versions of both these mainstream consumer OS's supported cooperative multitasking.






Hiç yorum yok:

Yorum Gönder