Gerçek zamanlı uygulamaları tasarlarken unutmamanız gereken tek şey diğer süreçlerden daha yüksek bir mutlak önceliğin sürecin çalışma sürekliliğini garanti etmeyeceğidir. İşlemcinin çalışmasını kazaya uğratan iki şey vardır: kesmeler ve sayfalama hataları.
Kesme eylemcileri süreçler arasında unutulur gider. Komutlarını işlemci çalıştırır ama onlar bir sürecin parçası değillerdir. Bir kesme en yüksek öncelikli süreci bile durdurur. Bu durumda önemsiz derecede küçük gecikmelere izin vermelisiniz ve sürecinizin komutları arasında çok uzun gecikmelere sebep olabilecek kesme eylemcilere sahip aygıtların olmadığından da emin olmalısınız.
Benzer şekilde, bir sayfalama hatası, basit bir komut dizisinin uzun bir zaman alıyormuş gibi görünmesine sebep olur. Aslında, sayfalama hatası sırasında bundan etkilenmeyen süreçler çalışmaya devam eder, çünkü G/Ç'ların tamamlanması gerekir, ancak yüksek öncelikli süreç onları atıp tekrar çalışmaya devam eder. Esas sorun G/Ç için, öncelikli sürecin kendisinin bekleme durumuna geçmesi olurdu. Bu evreyi etkisiz hale getirmek için mlock veya mlockall kullanılır.
Bir öncelik vermeyi seçerken ve ayrıca yüksek mutlak öncelikli bir yazılım da çalıştırıyorsanız, aklınızda tutmanız gereken şey, tek işlem birimli tek işlemcili bir sistemde bu önceliğin mutlaklığının bunlar arasında bölüneceğidir. Diğer süreçlere göre daha yüksek mutlak öncelikli bir sürecin, yazılımındaki bir hatadan dolayı sonsuz döngüye girdiğini varsayalım. Çalışması sırasında işlemciden asla vazgeçmeyecektir. Bir komut çalıştırmak için onu öldürmekten başka çareniz kalmaz. Hatalı yazılım denetimi tamamen, her yönden ele geçirir.
Bundan kaçınmanın iki yolu vardır: 1) bir yerlerde çalışmakta olan daha yüksek öncelikli bir kabuk bulundurursunuz (root'un açtığı bir kabuk örneğin). 2) yüksek öncelikli süreç grubu ile ilişkili bir denetim uçbirimi tutarsınız. Çalışmaya başlayan bir kesme eylemciden kaçacak ya da <C-c> tuşladığınızda sinyal alıp da durmayacak bir öncelik mevcut değildir.
Bazı sistemler mutlak önceliği, işlemci zamanının belli bir yüzdesini bir sürece ayırmak manasında kullanırlar. Bir süper yüksek öncelikli ve ayrıcalıklı bir sürecin işlemci kullanımını sürekli gözlemesini sağlayarak, böylece paylaşıma girmeyen bir sürecin mutlak önceliğini yükselterek ve onu aşan bir sürecin mutlak önceliğini düşürerek bunu yaparlar.
| Not |
---|
Mutlak öncelik kimi zaman "durağan öncelik" diye de anılır; bu kılavuzda bu terimi kullanmıyoruz, çünkü mutlak önceliğin en önemli özelliğini, mutlaklığını kaybederiz. |