Kesmelerin Önlenmesi(Disabling interrupts)
Kesmeler (interrupt) donanım ya da yazılımlar tarafından CPU'ya gönderilen özel sinyallerdir. Çok canlı bir toplantı sırasında, CPU'nun dikkatini çekmek üzere bilgisayarın bazı parçalarının birdenbire aynı anda ellerini kaldırmalarına benzetilebilirler. Bazen işletim sistemi işlemlerin önceliğini planlayarak, kesmeleri saklar ya da tutar. Bu, işletim sisteminin belirli işin mümkün olan en hızlı zamanda bitmesi için kesmeleri bazı kaynaklara göstermemesi demektir.Ama bellekle ilgili problemler ya da hata durumlarındaki gibi bazı kesmeler, çok önemli olduklarından asla görmezlikten gelinemezler. Bu gizlenemez kesmelerle (non-maskable/NMIs), diğer görevlerin ne olduğuna bakmaksızın, mümkün olduğunca en hızlı bir şekilde ilgilenilmelidir. Kesmeler, tek görevli sistemlerde işlemlerin yürütülmesinde bazı karışıklıklara yol açsalar da, işletim sisteminin işi bir çok görevli sistem içinde çok daha karmaşık olacaktır. Simdi, işletim sistemi uygulamaların çalışmasını düzenlemelidir, öyle ki siz böylece birkaç şeyin bir anda olduğuna inanırsınız. Bu çok karmaşıktır, çünkü CPU belirli bir zamanda sadece tek bir şey yapar. Aynı zamanda birçok şeyin bir arada olabildiği görüntüsünü vermek için, işletim sistemi bir saniyede binlerce kez birbirinden farklı işlemler arasında bir değiş tokuş yapmak zorundadır.
Bunun şöyle açıklayabiliriz:
Bir işlem RAM'in belirli bir kısmını işgal eder. Aynı zamanda, CPU ve işletim sisteminin bellek alanı içinde kaydın girişini yapar, sıralar ve bu kayıtları yığar. İki işlem çok görevli olduğu zaman, işletim sistemi belirli bir sayıda CPU çalışma döngüsünü bir programda paylaştırır. Bu döngülerin sıralanmasından sonra, işletim sistemi bütün kayıtların kopyalarını çıkarır, işlemler sırasında kullanılmış olanları sıralar ve yığar ve bu yürütmenin içinde hangi işlemlerin durdurulacağını not eder. Ardından ikinci işlem tarafından kullanılan bütün kayıtları yükler, yığar ve sıralar ve belirli bir sayıdaki CPU döngüsüne izin verir. Bunlar tamamlandığında, ikinci program tarafından kullanılmış bütün kayıtların kopyasını alır, yığar ve sıralar ve birinci programı yükler. Bu değişimler sırasında, bir işlemin izlerini muhafaza etmek için ihtiyaç duyduğu bütün bu bilginin içinde tutulduğu veri paketine, işlem kontrol bloğu (process control block) denir.

Paylaşım Değişkenleri (Locking Variables)
işlemcide işlemini görmek isteyen süreçler Kritik kısımlarının karşılıklı dışarlanması için kilit değişkenleri kulanırlar. Örneğin A ve B isimli iki süreçimiz olsun. Bu iki işlem kritik kısımlarını karşılıklı dışarlamak için ortak Kilit isimli bir değişken kullanmaktalar. Kilit başlangıçta 0 değerine sahip olup hiç bir işlemin kritik kısımda bulunmadığını göstermektedir. 1 olduğunda kritik kısmına giriş yapmış olan bir süreç bulunduğu anlaşılmaktadır. Ancak kilit değişkenlerinin de ortaklaşa kullanılan değişkenler olması sebebiyle yarış durumu problemi ortadan kalkmaz. Örneğin aşağıda verilen senaryo gerçekleştiğinde A ve B işlemlerinin aynı anda kendi kritik kısımlarına girmesi söz konusu olabilir. Başlangıçta Kilit 0 değerine sahip
1-A Kilit değerini okuyor (0)
2-B Kilit değerini okuyor (0)
3-B Kilit değerini 1 yapıyor
4-B Kritik Kısmına giriyor
5-A Kilit değerini 1 yapıyor
6-A Kritik Kısmına giriyor ??????? A ve B aynı anda kritik kısımlarında?????????

hazırlayan:Behice Balkaya
bölüm: bilgisayar müh.