şükela:  tümü | bugün
  • turnaround ve response time gibi metriklere odaklanmak yerine her process'in; cpu zamanının belirli bir kısmını kullanmasını hedefleyen scheduler türleri. bir diğer ismiyle proportional scheduler.

    somut örnekler olarak da lottery scheduler ve stride scheduler verilebilir.

    hazır canım sıkılıyorken bunları da açıklamak gerekirse:

    lottery scheduler bildiğimiz kura çekme mantığına dayanır. çalıştırılmaya hazır a, b ve c process'lerine, cpu'yu kullanmalarını istediğimiz miktarlarda biletler verilir. örneğin a:10 b:20 c:30 bilet almış olsun. daha sonra her çalışacak process seçileceği zaman; 0'dan toplam bilet sayısına kadar bir random sayı belirlenip, şanslı bilet hangi process'e vurduysa o process çalıştırılır. process'ler uzadıkça adalet (fairness) artar. sıkıntı olan kısım biletlerin dağıtımıdır.

    tam adil bir scheduler olarak stride scheduler'da da durumlar bunun tam zıttıdır. tekrar aynı şekilde a,b ve c process'leri 10,20 ve 30 önem ağırlıklarına sahipse; çok büyük bir sayı - örneğimizde 3000 olsun - bu ağırlıklara bölünerek herbir process'in stride'ı belirlenir. bu durumda a:300, b: 150, c:100 stride'lı olur. daha sonra çalıştırılacak process'lerin hepsine 0 pass değeri verilir. her karar aşamasında pass değeri en düşük olan process çalıştırılır ve çalıştırılan process'in pass'ine stride'ı eklenir.

    stride scheduler'ın lottery'ye karşı olan dezavantajı bir global state'inin olmasıdır. yani a,b ve c process'leri bir süre çalışıp pass değerlerini oldukça yükselttikten sonra gelen bir d process'ini 0'dan başlatırsak bu process cpu'yu uzun bir süre ele geçirir.