Geleneksel Zamanlamaya Giriş
Mutlak öncelikler ortaya çıkmadan çok önceleri Unix sistemleri işlemci zamanlamasını bu şekilde yapıyordu. Posix Romalılar gibi çıkagelip gerçek zamanlı işlemin gereksinimlerini karşılamak üzere mutlak öncelikleri ortaya attı ve köydeki Sıfır Mutlak Öncelikli süreçlerin kendilerini kendi bildikleri zamanlama kurallarına göre yönetmelerine izin verdi.
Gerçekten, sıfırdan büyük mutlak öncelikler, esas olarak gerçek zamanlı işlem yapmak üzere tasarlanmış bilgisayarların sistemleri dışında günümüzdeki çoğu sistemde kullanılmamaktadır. Bu bakımdan, bu bölümde sadece çoğu yazılımcının bilmek istediği zamanlamadan söz edilecektir.
Bu zamanlamanın kapsamı hakkında daha temiz bir giriş olarak: Herhangi bir anda mutlak önceliği sıfır olan bir süreç ile mutlak önceliği sıfırdan büyük bir süreç aynı anda çalışmaya hazırsa, mutlak önceliği sıfır olan çalışmaz. Eğer mutlak önceliği sıfır olan bir süreç çalışmaktayken mutlak önceliği sıfırdan büyük bir süreç çalışmaya hazır olursa mutlak önceliği sıfır olanın çalışması hemen durdurulur.
Mutlak önceliği sıfır olma durumuna ek olarak, sürecin çalışması esnasında değişen bir öncelik olarak özdevimli öncelik olarak bilinen bir öncelik daha vardır. Mutlak önceliği sıfırdan büyük süreçler için özdevimli öncelik anlamlı değildir.
Özdevimli öncelik kimi zaman işlemciyi kimin alacağını, kimi zaman işlemciyi ne kadar süreyle kullanacağını, kimi zaman da bir sürecin başka bir süreci işlemciden kovup kovamayacağını belirler.
Linux'ta, değer bunların bir karışımı olarak ortaya çıkar. Fakat çoğunlukla bu değer sürecin işlemciyi kullanma süresini belirler. Özdevimli önceliği daha yüksek olan süreç, işlemciyi bir kere aldı mı, daha uzun süre onu kullanır. Eğer, G/Ç beklemek gibi şeyler yapmak için kendi zaman dilimi içinde işini bitiremezse, tekrar hazır olduğunda kendi zaman dilimini tamamlamak üzere işlemciyi alması için öne alınır. Bunun dışında, yeni zaman dilimleri için süreçlerin seçimi temel olarak turnuva sistemine göre yapılır. Fakat zamanlayıcı düşük öncelikli süreçlere bir kemik atar: Bir sürecin özdevimli önceliği, zamanlama işleminde her aşağılanışında yükselir. Linux'ta, oyunu hep şişko velet kazanır.
Bir sürecin özdevimli önceliğinin iniş çıkışları başka bir değerle düzene sokulur: nezaket değeri (ing.si "nice value" olan değer). Nezaket değeri bir tamsayıdır ve -20 ile 20 arasında olup, bir sürecin özdevimli önceliğinin uç değerlerini ifade eder. Daha yüksek bir nezaket daha düşük bir sınır gösterir.
Tipik bir Linux sisteminde, örneğin, nezaket değeri 20 olan bir süreç işlemci zamanının sadece 10 milisaniyesini alabilir, -20 olan bir süreç ise daha yüksek bir öncelikle işlemci zamanının 400 milisaniyesini alabilecektir.
Nezaket değeri gerçekten bir kibarlık, saygılılık belirtir. Başlarda, Unix'in cennet bahçesinde, tüm süreçler bilgisayar sisteminin nimetlerini eşit olarak paylaşırdı. Ama tüm süreçler aynı işlemci zamanını paylaşma ihtiyacı göstermez, bu durumda nezaket değeri, diğer süreçler yararına kibar bir sürecin payına düşen işlemci süresinden feragat etmesini sağlar. Dolayısıyla, nezaket değeri daha yüksek olan süreç daha kibar süreç olur. (Bir yılan geldi ve bir sürece bir negatif nezaket değeri sundu böylece bugün kaba özkaynak ayırma sistemi olarak bildiğimiz sistem ortaya çıktı).
Özdevimli öncelikler işlemci zamanının ayrılmasını nesnel olarak pürüzsüzleştirerek ve seyrek isteklere hızlı yanıt vererek yukarı ve aşağı doğru meylederler. Fakat kendi nezaket sınırlarını asla aşmazlar, böylece işlemcinin ağır yük altında olduğu durumda nezaket değeri etkin olarak bir sürecin ne kadar hızlı çalışacağını belirler.
Unix süreç önceliğinin toplumcu mirasına uymak için, bir süreç kendini çalıştıran süreçle aynı nezaket değeri ile oluşur ve onu yükseltebilir. Bir süreç ayrıca sahibi aynı kullanıcı olan (ya da aynı etkin kimlikli) başka bir sürecin de nezaket değerini yükseltebilir. Fakat sadece ayrıcalıklı süreç kendi nezaket değerini düşürebilir. Bir ayrıcalıklı süreç ayrıca başka bir sürecin nezaket değerini de arttırıp azaltabilir.
Nezaket değerlerini öğrenmek ve belirlemek için kullanılan GNU C kütüphanesi işlevleri Geleneksel Zamanlama İşlevleri bölümünde açıklanmıştır.
Geleneksel Zamanlama Başlangıç Geleneksel Zamanlama İşlevleri