Süreç zamanlama, işletim sisteminin sıradaki CPU’yu hangi hazır sürece vereceğine karar vermesidir. Basitçe söylemek gerekirse, şu anda kimin çalışacağına ve kimin bekleyeceğine karar veren kuraldır. Bu kural bekleme süresini, yanıt süresini, adaleti ve genel verimi değiştirir.

Süreç zamanlama önemlidir çünkü aynı süreç kümesi FCFS, SJF veya round robin altında çok farklı bir sırayla tamamlanabilir. Bu tek fikri anlarsanız, ders kitaplarındaki örneklerin çoğu çok daha kolay okunur.

İşletim Sisteminde Süreç Zamanlama Ne Anlama Gelir

Tipik işletim sistemi modelinde süreçler hazır, çalışıyor ve bekliyor gibi durumlar arasında geçiş yapar. Zamanlayıcı, hazır süreçler arasından seçim yapar.

Bu yüzden süreç zamanlamaya sık sık CPU zamanlama da denir. Yeni iş üretmez. Bekleyen işlerin CPU hizmetini hangi sırayla alacağını belirler.

Modern sistemlerde çekirdek çoğu zaman doğrudan iş parçacıklarını zamanlar, ancak klasik “süreç zamanlama” terimi eğitimde hâlâ standart ifadedir.

Bir Zamanlayıcı Neyi En İyi Hale Getirmeye Çalışır

Bir zamanlayıcı genellikle birkaç hedef arasında denge kurmaya çalışır:

  • düşük bekleme süresi
  • etkileşimli işler için hızlı yanıt
  • iyi verim
  • adalet
  • öngörülebilir davranış

Bu hedefler birbiriyle çelişebilir. Basitleştirilmiş bir örnekte ortalama bekleme süresini düşüren bir politika, pratikte yine de adaletsiz görünebilir; adil bir zaman paylaşımı politikası da kısa bir işin tamamlanmasını geciktirebilir.

Kesmeli ve Kesmesiz Zamanlama

Kesmesiz bir zamanlayıcı, çalışan bir sürecin CPU patlaması bitene veya süreç bloklanana kadar CPU’yu elinde tutmasına izin verir. İlk gelen ilk hizmet alır bunun standart örneğidir.

Kesmeli bir zamanlayıcı, çalışan bir süreci durdurup CPU’yu başka bir sürece verebilir. Round robin ve birçok öncelikli zamanlayıcı bunu yapar.

Bu ayrım önemlidir çünkü sistemin uzun süren işleri kesmesine izin verildiğinde yanıt süresi çoğu zaman iyileşir.

Yaygın Süreç Zamanlama Algoritmaları

İlk Gelen İlk Hizmet Alır

İlk gelen ilk hizmet alır ya da FCFS, süreçleri varış sırasına göre çalıştırır. Anlaması kolaydır ve uygulanması basittir, ancak baştaki uzun bir iş, arkasındaki tüm kısa işlerin beklemesine neden olabilir.

En Kısa İş Önce

En kısa iş önce ya da SJF, CPU patlaması en küçük olan süreci tercih eder. Patlama sürelerinin doğru bilindiği basitleştirilmiş bir durumda ortalama bekleme süresini azaltabilir. Gerçek sistemlerde ise bu süre genellikle tahmin edilmek zorundadır.

Round Robin

Round robin, her hazır sürece quantum adı verilen küçük bir zaman dilimi verir. Süreç bu dilimde bitmezse yeniden hazır kuyruğuna döner. Bu, etkileşimli iş yüklerinde genellikle adaleti ve tepki hızını artırır.

Öncelikli Zamanlama

Öncelikli zamanlama, önce en yüksek öncelikli hazır süreci çalıştırır. Bazı görevlerin diğerlerinden daha önemli olduğu durumlarda yararlı olabilir, ancak düşük öncelikli görevler çok uzun süre beklerse aç kalma riski ortaya çıkar.

Bekleme Süresi ile Bir Çözümlü Örnek

Üç sürecin de 00 anında geldiğini ve her birinin yalnızca CPU süresine ihtiyaç duyduğunu varsayalım:

  • P1P_1: 6 ms6\ \mathrm{ms}
  • P2P_2: 2 ms2\ \mathrm{ms}
  • P3P_3: 1 ms1\ \mathrm{ms}

Şunları varsayalım:

  • bir tane CPU vardır
  • G/Ç nedeniyle bloklanma yoktur
  • bağlam değiştirme maliyeti yok sayılır

Bu koşullar altında bekleme süresi, bir süreç çalışmadan önce hazır kuyruğunda geçirdiği süredir. Dönüş süresi ise şöyledir:

turnaround time=completion timearrival time\text{turnaround time} = \text{completion time} - \text{arrival time}

FCFS

FCFS kullanılırsa sıra P1P2P3P_1 \rightarrow P_2 \rightarrow P_3 olur.

Zaman çizelgesi:

06:P1,68:P2,89:P30 \to 6: P_1,\qquad 6 \to 8: P_2,\qquad 8 \to 9: P_3

Bekleme süreleri:

  • P1=0P_1 = 0
  • P2=6P_2 = 6
  • P3=8P_3 = 8

Ortalama bekleme süresi:

0+6+83=143 ms\frac{0 + 6 + 8}{3} = \frac{14}{3}\ \mathrm{ms}

SJF

Kesmesiz SJF kullanılırsa sıra P3P2P1P_3 \rightarrow P_2 \rightarrow P_1 olur.

Zaman çizelgesi:

01:P3,13:P2,39:P10 \to 1: P_3,\qquad 1 \to 3: P_2,\qquad 3 \to 9: P_1

Bekleme süreleri:

  • P3=0P_3 = 0
  • P2=1P_2 = 1
  • P1=3P_1 = 3

Ortalama bekleme süresi:

0+1+33=43 ms\frac{0 + 1 + 3}{3} = \frac{4}{3}\ \mathrm{ms}

Bu örnek temel sezgiyi gösterir. İş yükü değişmedi, ama kural sonucu değiştirdi. Burada SJF daha düşük bir ortalama bekleme süresi verir çünkü kısa işler uzun işin arkasında takılı kalmaz.

Bu, SJF’nin gerçek dünyada her zaman en iyi seçim olduğu anlamına gelmez. Yalnızca bu örneğin varsayımları altında zamanlama sırasının çok önemli olduğunu gösterir.

Akılda Tutulması Gereken Sezgi

Süreç zamanlamayı CPU için kuyruk disiplini gibi düşünün. Hazır kuyruğunda aynı işler bulunabilir, ancak bu kuyruğa hangi kuralla hizmet verildiği kullanıcıların ne deneyimlediğini değiştirir.

İlk yanıtın hızlı gelmesini en çok önemsiyorsanız, sık paylaşımı tercih edebilirsiniz. Çok sayıda kısa işi hızlı bitirmeyi önemsiyorsanız, kısa patlamaları öne çıkaran bir politikayı tercih edebilirsiniz. Katı zamanlama gereksinimleri sizin için önemliyse, yine farklı bir zamanlayıcıya ihtiyaç duyabilirsiniz.

Zamanlama Sorularında Yaygın Hatalar

Bir politikanın her durumda en iyi olduğunu varsaymak

Her iş yükü için tek bir kazanan yoktur. Bir politika ortalama bekleme süresinde çok iyi görünebilir ama adalet veya son tarihler açısından kötü olabilir.

Bekleme süresi, yanıt süresi ve dönüş süresini karıştırmak

Bu metrikler birbiriyle ilişkilidir ama aynı şey değildir. Özellikle yanıt süresi genellikle ilk CPU hizmetine veya ilk görünür yanıta kadar geçen süreyi ifade ederken, dönüş süresi işin gelişinden tamamlanmasına kadar geçen tüm süreyi ölçer.

Formülün arkasındaki koşulu göz ardı etmek

Metrikler yalnızca belirtilen varsayımlar altında anlamlıdır. Bir soru G/Ç bloklanması, farklı varış zamanları veya bağlam değiştirme ek yükü içeriyorsa, zaman çizelgesi ve sonuçlar değişir.

Politikanın kesmeli olup olmadığını unutmak

SJF ile shortest remaining time first aynı kural değildir. Öncelikli zamanlama da daha yüksek öncelikli bir işin mevcut işi kesip kesememesine göre farklı davranır.

Süreç Zamanlama Nerelerde Kullanılır

Süreç zamanlama, işletim sisteminin CPU zamanını paylaşmak zorunda olduğu her yerde önemlidir:

  • uygulamaların hızlı tepki vermesi gereken masaüstü ve mobil sistemler
  • çok sayıda isteği işleyen sunucular
  • verimi önemseyen toplu iş sistemleri
  • zamanlama garantilerini önemseyen gerçek zamanlı sistemler

Gerçek zamanlayıcılar genellikle ders kitaplarındaki sürümlerden daha karmaşıktır, ancak aynı ödünleşimler yine ortaya çıkar.

Kendi Sürümünüzü Deneyin

Örneği, P2P_2 daha geç gelecek şekilde değiştirin ya da FCFS yerine 2 ms2\ \mathrm{ms} quantum kullanan round robin uygulayın ve bekleme düzeninin nasıl değiştiğine bakın. Elle yaptıktan sonra bir adım daha ileri gitmek isterseniz, kendi sürümünüzü GPAI Solver’da deneyin ve tahmin ettiğiniz zaman çizelgesini hesaplanan çizelgeyle karşılaştırın.

Bir soruyla yardıma mı ihtiyacın var?

Sorunuzu yükleyin ve saniyeler içinde doğrulanmış adım adım çözüm alın.

GPAI Solver Aç →