Ana içeriğe geç

CPU Zamanlama

İngilizcesi
CPU Scheduling
Türkçe karşılığı
işlemci zamanlama, çizelgeleme
Okunuşu
si-pi-yu skeculing

Günlük kullanımda iki ad da yaygın.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/cpu-scheduling

Kısaca

CPU zamanlama, işletim sisteminin her CPU çekirdeğinde hangi hazır process ya da thread'in ne kadar çalışacağına karar vermesidir; işlemci adil paylaşılır.

CPU zamanlama (CPU scheduling) nedir?

CPU zamanlama, kernel'ın bir parçası olan zamanlayıcının (scheduler) işidir; her an hangi hazır thread veya process'in her CPU çekirdeğinde çalışacağını seçer. Tipik bir bilgisayarda çekirdeklerden çok daha fazla çalıştırılabilir görev vardır; bu yüzden zamanlayıcı saniyede birçok kez aralarında geçiş yapar ve her şeyin aynı anda çalıştığı yanılsamasını yaratır.

Çoğu modern sistem kesintili (preemptive) zamanlama kullanır: her görev kısa bir zaman dilimi alır ve süresi dolduğunda ya da daha yüksek öncelikli bir görev hazır olduğunda kernel görevi keser, durumunu kaydeder ve bağlam geçişi (context switch) denen bir adımda başka bir görevi yükler. Klasik algoritmalar arasında ilk gelen ilk hizmet alır (FCFS), en kısa iş önce (SJF), round robin ve öncelikli zamanlama vardır; gerçek kernel'lar bu fikirleri birleştirir. Örneğin Linux uzun yıllar Completely Fair Scheduler'ı kullandı ve 2023'te EEVDF zamanlayıcısına geçti; ikisi de her göreve CPU zamanından adil bir pay vermeyi hedefler.

İyi bir benzetme, kasiyerin her müşteriye bir dakika hizmet verip sıradaki kişiye geçtiği tek bir kasa hattıdır. Herkes istikrarlı biçimde ilerler ve tek ürünlü bir alışverişçi dolu bir arabanın arkasında uzun süre takılıp kalmaz. Zamanlayıcılar farklı yönlere çeken hedefleri dengeler: yüksek verim, etkileşimli uygulamalar için düşük gecikme, adalet ve enerji verimliliği.

CPU zamanlama, cron gibi iş zamanlama araçlarından farklıdır. Cron işi, bir görevin saatler arayla olabilen hangi saatte başlayacağına karar verir; CPU zamanlayıcı ise zaten çalışmakta olan hangi görevin önümüzdeki birkaç milisaniye boyunca işlemciyi kullanacağına karar verir. Kodunuz thread'ler oluşturabilir, ancak her birinin gerçekte ne zaman çalışacağına nihayetinde zamanlayıcı karar verir.

Önemli noktalar

  • Zamanlayıcı, kernel'ın her CPU çekirdeğinde hangi görevin çalışacağını seçen bölümüdür.
  • Kesintili zamanlama görevlere kısa zaman dilimleri verir ve gerektiğinde onları keser.
  • Görevler arasında geçiş bir bağlam geçişi gerektirir ve küçük bir performans maliyeti vardır.
  • Klasik algoritmalar arasında FCFS, en kısa iş önce, round robin ve öncelikli zamanlama vardır.
  • Zamanlayıcılar verimi, duyarlılığı, adaleti ve güç kullanımını dengeler.

Örnek

Linux'ta zamanlama önceliğini etkilemekbash
# Start a CPU-heavy task with lower priority (a higher "nice" value)
nice -n 10 ./build.sh &

# Lower the priority of an existing process by its PID
renice -n 15 -p 12345

# Show the top CPU users along with their nice values
ps -eo pid,ni,pcpu,comm --sort=-pcpu | head -n 5

Sık sorulan sorular

Bağlam geçişi (context switch) nedir?

Bağlam geçişi, CPU'nun bir thread veya process'i çalıştırmayı bırakıp yazmaçlarını ve durumunu kaydetmesi, ardından başka birinin kaydedilmiş durumunu yüklemesidir. Birçok görevin bir çekirdeği paylaşmasını sağlar, ancak her geçiş zaman alır; bu yüzden çok fazla geçiş performansa zarar verebilir.

Kesintili (preemptive) ve kesintisiz (non-preemptive) zamanlama arasındaki fark nedir?

Kesintili zamanlamada işletim sistemi, CPU'yu başka bir göreve vermek için çalışan bir görevi kesebilir. Kesintisiz, yani işbirlikçi (cooperative) zamanlamada ise bir görev bitene ya da CPU'yu gönüllü olarak bırakana kadar CPU'yu tutar.

Round robin zamanlama nedir?

Round robin, her hazır göreve sırayla aynı küçük zaman dilimini verir ve kuyruğu tekrar tekrar döner. Basit ve adildir; bu da onu gerçek zamanlayıcılarda yaygın bir yapı taşı yapar.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar