İşletim Sistemi Kavramları 6 – CPU Scheduler

CPU Zamanlama (Scheduling) Algoritmaları

İşletim sistemlerinde CPU zamanlama algoritmaları, işlemlerin CPU üzerinde ne zaman çalışacağını belirlemek için kullanılır. Bu algoritmalar, sistem performansını optimize etmek ve kaynak kullanımını etkinleştirmek amacıyla geliştirilmiştir. Genel olarak iki tip zamanlayıcı (scheduler) bulunmaktadır:

1. Short Term Scheduler (Kısa Dönem Zamanlayıcı)

  • Bu zamanlayıcı, kullanıcı ile etkileşimde olan ve hızlı yanıt vermesi gereken işlemler için kullanılır. Özellikle interaktif programlarda, kullanıcı işlemlerine hızlı tepki veren süreçleri yürütmek üzere CPU’yu yükler.
  • Kısa dönem zamanlayıcıların ana amacı, kullanıcı ile olan etkileşimi devam ettirmek ve işlemciyi yoğun bir şekilde kullanmaktır.
  • Bu zamanlayıcı, proseslerin hızlı bir şekilde CPU’ya erişmesini sağlar.

2. Long Term Scheduler (Uzun Dönem Zamanlayıcı)

  • Uzun dönem zamanlayıcı, uzun süre CPU’da kalması beklenen işlemler için kullanılır. Örneğin, bir yedekleme işlemi gibi CPU üzerinde uzun süre çalışan işlemler bu kategoriye girer.
  • Genellikle sunucu tabanlı mimarilerde ya da kullanıcı ile etkileşimi gerektirmeyen yapılarda kullanılır.
  • Uzun dönem zamanlayıcı, CPU kaynaklarını daha geniş bir zaman diliminde planlayarak sistemde yoğun bir kullanıcı trafiğinin olmadığı durumlarda görevlerin CPU üzerinde daha uzun süre kalmasını sağlar.

Dispatcher (Gönderici)

  • Dispatcher, hazır (ready queue) kuyruğundan bir işlemi seçip CPU’ya yükleyen kısımdır. Bu aşamada proses CPU’ya yüklenir ve gerekli bilgiler RAM’e kaydedilir.
  • Bir prosesi CPU’dan alarak durumunu kaydeder ve başka bir prosesi CPU’ya yükler. Bu süreçte program sayacı (Program Counter), işlem kaldığı yerden devam edebilsin diye kaydedilir ve yeniden yüklenir. Bu işlem, Context Switching (Bağlam Değiştirme) olarak bilinir.

Zamanlama Kriterleri (Scheduling Criteria)

Zamanlama algoritmalarının performansı, aşağıdaki kriterlere göre değerlendirilir:

  • CPU Utilization (CPU Kullanımı): CPU’nun ne kadar yoğun kullanıldığını gösterir. CPU kullanımının mümkün olduğunca yüksek olması istenir; ancak context switching gibi işlemler CPU’nun bazen boşta kalmasına neden olabilir.
  • Throughput (Verimlilik): Belirli bir zaman aralığında tamamlanan işlem sayısını ifade eder.
  • Turnaround Time (Dönüş Süresi): Bir işlemin başlangıcından bitimine kadar geçen süredir.
  • Waiting Time (Bekleme Süresi): İşlemin, CPU’ya erişmek için hazır kuyrukta (ready queue) ne kadar süre beklediğini gösterir.
  • Response Time (Tepki Süresi): Kullanıcının yaptığı işlemlere ne kadar hızlı yanıt verildiğini gösterir.

Bu kriterler bağlamında ideal bir zamanlama algoritması:

  • Maksimum CPU Utilization (CPU kullanımı),
  • Maksimum Throughput (verimlilik),
  • Minimum Turnaround Time (dönüş süresi),
  • Minimum Waiting Time (bekleme süresi),
  • Minimum Response Time (tepki süresi) sağlamalıdır.

Bu koşullar sağlandığında sistem en iyi performansa ulaşır.

Zamanlama Algoritmaları

1. First-Come First-Served Scheduler (Önce Gelen İlk Hizmet Alır – FCFS) [Non-Preemptive]

  • Bu algoritma, ilk gelen işlemi sıraya alarak bitene kadar çalıştırır. İşlem bittiğinde sıradaki işlem CPU’ya yüklenir.
  • Dispatcher, sırayla prosesleri CPU’ya yükler ve çalıştırır. Bu algoritmada bekleme süreleri yüksek olabilir.

2. Shortest Job First (SJF – En Kısa İş İlk) [Non-Preemptive]

  • İşlemleri bekleme sürelerine göre sıralar ve en kısa işlemi önce çalıştırır.
  • FCFS algoritmasına göre ortalama bekleme süresi daha kısadır, çünkü daha kısa süre gerektiren işlemler daha hızlı tamamlanır.

3. Shortest Remaining Time First (SRTF – En Kısa Kalan Zaman İlk) [Preemptive]

  • Bu algoritma, belirli bir aralıkla gelen işlemler arasında kalan en kısa zamanı olanı seçerek çalıştırır.
  • Örneğin, P1 işleminin kalan süresi 7 birimken P2’nin 4 birimse, P2 öncelikli olur. Yeni işlemler geldikçe en kısa kalan süreye sahip olan işlem CPU’ya yüklenir.
  • SRTF algoritması, proseslerin sürekli olarak yeniden değerlendirilmesi ve sıralanması nedeniyle daha verimlidir ancak context switching sayısını artırabilir.

4. Priority Scheduling (Öncelik Zamanlaması)

Bu algoritma, işlemlerin öncelik derecesine göre çalıştırılmasını sağlar. Yüksek öncelikli bir işlem geldiğinde, öncelikli olarak CPU’da çalıştırılır.

  • Starvation (Açlık): Düşük öncelikli işlemler, sürekli daha yüksek öncelikli işlemler geldikçe CPU’da çalıştırılamayabilir ve bu durumda açlık problemi ortaya çıkar.
  • Aging (Yaşlandırma): Bu yöntemde, sırada bekleyen işlemlerin öncelikleri zamanla artırılarak açlık problemi çözülür.

Preemptive: Eğer daha öncelikli bir işlem gelirse, CPU üzerindeki işlem durdurularak daha yüksek öncelikli işlem çalıştırılır.

Non-Preemptive: Çalışmakta olan öncelikli işlem tamamlanana kadar CPU’da kalır; yeni gelen daha yüksek öncelikli işlem, mevcut işlem bittikten sonra çalıştırılır.


Kaynakça

Yıldız Teknik Üniversitesi Bilgisayar Mühendisliği Bilgi Teknolojileri Programı

Operating System Concepts with Java — 8th Edition

Sadi Evren Şeker, İşletim Sistemleri Eğitim Videoları

İşletim Sistemleri Dersi (Doç. Dr. Ali Gökhan Yavuz)

You may also like...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir