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.
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.
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 TYPE | TASK EXECUTION | DEVICE I/O METHOD(S) |
---|---|---|
Endless Loop | No tasks. | Polled I/O Only. |
Basic Cyclic Executive | As often as possible. | Polled I/O Only. |
Time-Driven Cyclic Executive | Single frequency. | Polled I/O Only. |
Multi-rate Cyclic Executive | Multiple frequencies. | Polled I/O Only. |
Multi-rate Executive for Periodic Tasks | Multiple frequencies, at higher precision | Polled I/O Only. |
Multi-rate Executive with Interrupts | Multiple frequencies, at higher precision | Polled and Interrupt-driven I/O. |
Priority-based Preemptive Scheduler | Periodic and Non-periodic tasks. | Polled and Interrupt-driven I/O. |
Deadline Scheduler | Periodic and Non-periodic tasks. +Better handling of real-time requirements | Polled and Interrupt-driven I/O. |
Partition Scheduler | Periodic and Non-periodic tasks. +Better handling of tasks with required execution. | Polled and Interrupt-driven I/O. |
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.
Cooperative MultiTaskingBasic 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.
Sanırım artık bu yöntemi kullanan işletim sistemi kalmadı. Açıklaması şöyle.
Bir başka açıklama şö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.
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.