İsletim Sistemleri
İsletim Sistemleri

Scheduler Algoritmaları – İşletim Sistemleri

Scheduler Algoritmaları (Zamanlama Algoritmaları) İşletim Sistemleri nin belki de anlaması ve soyutluğu somutluğa dönüştürmesi en zor derslerden birisidir. İlerleyen yazılarda daha detayına ineceğiz fakat şimdilik giriş niteliğinde bazı bilgiler paylaşacağım.

Zamanlama algoritmaları işlemci zamanlama ve iş zamanlama olarak iki kısıma ayrılabilir. İşlemci zamanlaması işlemcinin görevleri hızlı bitirmesini temel alırken iş zamanlaması gerçekleşecek işlerin hızlı bitmesini temel alır. Tabiki CPU (İşlemci) zamanlaması içinde iş zamanlaması için de sistem multiprocessing ( çoklu işlem) destekliyomu desteklemiyormu önemlidir. Çok İşlemliliği destekliyor ve donanımda tek bir işlemci bulunuyorsa CPU bu işlemleri alır, bekletir ve sırayla işletir (ready queue). Tabiki CPU çok hızlı çalıştığı için biz bunun farkında olmayız. Şimdilik yazımız giriş niteliğinde olduğu için çok fazla teknik terimle boğmayacağım sizi. Genel olarak zamanlama algoritmaları hakkında bir fikir sahibi olacaksınız. İlerleyen yazılarla birlikte CPU’ yu daha verimli nasıl kullanılabilir onları tartışacağız.

Konuyu temel olarak anlamak için kısa bir örnek verelim. Örneğin 3 tane basketbol potası olsun. Siz bu üç potaya da basket atıyorsunuz. Bu örnekte siz CPU sunuz. Basket potaları da 3 temel iş parçacığı. Her birini atmanız için gelen top da birnevi sizin bekleme kuyruğunuz. Aynı anda 3 topu basket potasına atamayacağınız için basketi atıp topun size geri gelmesini beklemeniz gerekmekte. Basket atma olayını nasıl yapacağınız size kalmış. Birden fazla seçenek var bunun için. İlerideki yazılarda da göreceğiz. Fakat nasıl yaparsanız yapın amaç basketi hızlı atmak mı yoksa 3 basketi de en kısa sürede atmak mı. Eğer bir potaya bir basketi hızlı atmaksa bu iş zamanlaması, eğer basketleri hızlı atmak ise bu CPU zamanlamasıdır diyebiliriz. 

Scheduler Algoritmaları Teorisi

Scheduler Algoritmaları teorikte bize birçok seçenek sunsa da gerçek hayatta bazen yapılması imkansıza yakın olan seçenekler sunmakta. Örneğin process(işler) lerin Execute Time(çalışma zamanları) ‘larının önceden bilemiyor olmamız. Tahmin yürütülebilir fakat doğru sonuçlar üretilemez. Bu da bazı algoritmaların gerçekte kullanılmaması durumunu açıklayıcı sebep olabilir.

Scheduler algoritmalarını 3 tipte inceleyebiliriz. Bunlar yerine göre farklılık gösterdiği alanlara göre kullanılabiliyor. CPU zamanlaması şahsen benim en çok tercih ettiğim tip. 

  • Long-Term Scheduler
  • Short-Term Scheduler
  • Medium-Term Scheduler
Long-Term Short-Term Medium-Term
İş Zamanlayıcısı CPU Zamanlayıcısı İşlem değiştirme zamanlayıcısı
Hız Düşük Hız en yüksek Hız ortada
Çoklu programlama derecesini kontrol eder Çoklu programlama derecesini daha az kontrol eder Çoklu programlama derecesini az kontrol eder
Zaman paylaşım sistemlerinde yok veya çok az Zaman paylaşım sistemlerinde az
Zaman paylaşım sistemlerinin bir parçası
Havuzdan seçer ve belleğe yükler Yürütmeye hazır olanları seçer Yeniden belleğe sokar ve devam eder

 

Zamanlama algoritmaları ile ilgili çerez niteliğinde programlar yazacağımız için C Programlama Dili ‘ni iyi bilmeniz gerekmektedir. Özellikle C diyorum çünkü Linux işletim sisteminde POSIX Thread‘leri kullanarak kodlar yazmaktan bahsediyorum. Bunun için de C bilgisi gerekmekte.

 

1 Yorum

  1. Scheuler algoritmaları bı gayet güzel anlatmışsınız. Fakat fifo vb zamanlama algoritmaları ile de ilgili örnekler yapabilir misiniz? C programlama dili ornekleri mesela

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz