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 anında geldiğini ve her birinin yalnızca CPU süresine ihtiyaç duyduğunu varsayalım:
- :
- :
- :
Ş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:
FCFS
FCFS kullanılırsa sıra olur.
Zaman çizelgesi:
Bekleme süreleri:
Ortalama bekleme süresi:
SJF
Kesmesiz SJF kullanılırsa sıra olur.
Zaman çizelgesi:
Bekleme süreleri:
Ortalama bekleme süresi:
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, daha geç gelecek şekilde değiştirin ya da FCFS yerine 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ç →