Anlık Zamanlama
Önceki Sürecin İşlemci Önceliği ve Zamanlama Sonraki
Anlık Zamanlama
Aynı mutlak önceliğe sahip iki süreç aynı anda çalışmaya hazırsa, çekirdek bir karar vermek zorundadır, çünkü bir kerede sadece biri çalışabilir. Eğer süreçlerin mutlak öncelikleri 0 ise çekirdek bu kararı Geleneksel Zamanlama bölümünde anlatıldığı gibi verir. Aksi takdirde vereceği kararı bu bölümde anlatacağız.
Farklı mutlak önceliklere sahip iki süreç çalışmaya hazırsa verilecek karar basittir, bu Mutlak Öncelik bölümünde açıklanmıştı.
Her sürecin kendine ait zamanlama kuralları vardır. Sıfırdan farklı mutlak önceliği olan süreçler için bunlar iki tanedir:
  1. ilk gelen alır
  2. döner turnuva düzenlenir
En duyarlı durum, tüm süreçlerin aynı zamanlama kurallarına sahip olduğu ama farklı mutlak önceliklere sahip olduğu durumdur ki, bundan daha önce söz edilmişti.
Turnuvada, süreçler işlemciyi paylaşırlar, her biri küçük bir zaman diliminde çalışırlar ve döner turnuva bağlamında bunu her turda bir kere yaparlar. Şüphesiz, bu turnuvaya sadece aynı mutlak önceliğe sahip ve aynı anda çalışmaya hazır süreçler katılırlar.
İlk gelen alır durumunda ise, en uzun bekleyen süreç işlemciyi alır ve işlemciyi bırakmaya gönüllü olana kadar, bırakmaktan başka çare kalmayana dek (beklemeye geçmek gibi) ya da daha yüksek öncelikli bir süreç işlemciyi alana kadar işlemciyi tutar.
İlk gelen alır kuralı, en yüksek mutlak öncelik ve kesmelerle sayfalama hatalarının dikkati denetlenmesiyle, bir sürecin mutlak olarak ve olumlu manada işlemciyi tam hızında çalıştırdığı takdirde kullanılması vazgeçilmezdir; değilse anlamlı değildir.
Süreçlerin sched_yield çağrılarında, zamanlama kuralını belirtirken turnuva ile ilk gelen alır arasında iyi bir uzlaşımın sonucu olarak ilk gelen alır kuralını kullanmak konusunda akıllıca davranmalıdırlar.
Farklı zamanlama kuralları olan aynı mutlak önceliğe sahip süreçler açısından zamanlamanın nasıl çalıştığını anlamak için, süreçlerin çalışmaya hazır süreçler listesine nasıl dahil edildiği ve nasıl listeden çıkarıldıkları ile ilgili ayrıntıları iyi bilmek zorundasınız:
Her iki durumda da, çalışmaya hazır süreçlerin listesi gerçek bir kuyruk olarak düzenlenir. Süreç çalışmaya hazır olduğunda kuyruğun sonuna eklenir ve zamanlayıcı onu çalıştırmaya karar verdiğinde kuyruğun başına çekilir.Çalışmaya hazır olmak ile çalışıyor olmanın aynı anda olan şeyler olmadıklarına dikkat edin. Zamanlayıcı bir süreci çalıştırıyorsa o artık çalışmaya hazır bir süreç değildir ve dolayısıyla artık çalışmaya hazır süreçler listesinde değildir. Sürecin çalışması durduğunda tekrar çalışmaya hazır duruma gelir.
Turnuva kuralına göre çalışacak bir süreç ile ilk gelen alır kuralına göre çalışacak bir süreç arasındaki tek fark, ilk durumdaki sürecin belli bir süre sonra işlemciyi bırakmak zorunda kalacağıdır. Bu olduğunda süreç tekrar çalışmaya hazır duruma gelir ve kuyruğa tekrar eklenir. Burada bahsedilen süre oldukça kısadır. Hem de gerçekten kısadır. Örneğin, Linux çekirdeğinde turnuva zaman dilimi, geleneksel zamanlama ile ilgili zaman diliminden bin kere daha kısadır.
Bir süreç, kendini başlatan süreç ile aynı zamanlama kuralları ile oluşturulur. Bu durumu değiştirebilen işlevler Temel Zamanlama İşlevleri bölümünde açıklanmıştır.
Sadece ayrıcalıklı bir süreç, mutlak önceliği 0'dan farklı bir sürecin zamanlama kuralını ayarlayabilir.
Önceki Üst Ana Başlık Sonraki
Mutlak Önceliğin Kullanımı Başlangıç Temel Zamanlama İşlevleri
Bir Linux Kitaplığı Sayfası