İşletim sistemi bir bilgisayarda çalışan en temel yazılımdır. Bilgisayarın belleğini ve işlemlerini yönetmenin yanı sıra, donanımın ayrıntılarını, onu kullanan uygulama programlarından korumaktan sorumludur. Bir bilgisayarın işletim sistemi, süreçler arasında eşit dağılımın aksine, kullanıcılara ve programlara kaynakların adil bir şekilde tahsis edilmesini sağlar. Adil bir zamanlama sistemi, bir işlemin diğerini sırada beklerken CPU'yu kullanmasına izin verir. Sonuç olarak, her iş parçacığı, aksi takdirde işlemi geciktirecek en yaygın iki koşulu önleyen sınırlı kaynaklara yeterli erişim sağlar: Kilitlenme ve Açlık. Her ikisi de süreçlerin kaynaklara erişemediği ilgili kavramlardır. Bu makalede, çeşitli cephelerde ikisini karşılaştıran bazı önemli noktalar vurgulanmaktadır.
Kilitlenme, bir dizi iş parçacığının engellendiği bir durumdur, çünkü bir kaynağı tutan her işlem sonunda başka bir işlem tarafından tutulan diğer bazı kaynaklara erişmeye çalışır ve sonunda adil bir sistem zamanlamasını önler. Bir kilitlenme durumu, aşağıdaki dört koşul geçerli olduğunda ortaya çıkar: Karşılıklı dışlama, bir anda bir kaynağa yalnızca bir işlemin erişebileceği anlamına gelir; Herhangi bir önleme koşulu, bir kaynağın ancak kaynağı tutan süreç tarafından gönüllü olarak serbest bırakılabileceği anlamına gelmez; Bekletme ve Bekleme, bir işlem tutma kaynaklarının diğer işlemler tarafından tutulan ek kaynaklar isteyebileceği anlamına gelir; Dairesel bekleme, her bir işlemin kendi kaynaklarını serbest bırakmasını bekleyen dairesel bir zincirde iki veya daha fazla işlemin sıkıştığı anlamına gelir.
Açlık, düşük öncelikli bir işlem aynı kaynağa erişen yüksek öncelikli işlemlerin sürekli akışı nedeniyle kaynağa erişme şansı olmadığından, bir süreç süresiz olarak bekleme süresine girdiğinde ortaya çıkan bir durumdur. Bir kaynak yönetimi sorunudur, çünkü bir işlemin ihtiyaç duyduğu kaynağa erişimi reddedilir ve böylece süreci belirsiz bir bekleme süresine iter. Bunun nedeni, gereksinim duyduğu kaynağın, işlemin kaynaklara, dolayısıyla adı aç kalmasına neden olan sürece asla ayrılmamasıdır. Açlıktan kaçınmanın en iyi yolu, adil bir zamanlama sistemi sağlamak için uzun süre bekleme süresindeki süreçlerin önceliğini kademeli olarak artıran yaşlanma tekniğini kullanmaktır..
Hem kilitlenme hem de açlık, süreçlerin kaynaklara erişmesini engelleyen adil bir sistem planlamasını önleyen ilgili kavramlardır. Kilitlenme, adından da anlaşılacağı gibi, her işlem başka bir işlem tarafından tutulan bir kaynak elde etmek için bekleyen bir dizi iş parçacığının veya işlemin engellendiği bir koşulu belirtir ve böylece programların çalışmayı durdurduğu bir kilitlenme durumu ile sonuçlanır. Açlık, diğer taraftan, düşük öncelikli bir işlemin yüksek öncelikli bir işleme ayrılan bir kaynağa erişimi engellendiği için bir işlemin donmasına neden olan bir kilitlenme ile tetiklenir..
Bir kilitlenme, bir iş parçacığı veya bir işlem bekleme süresine girdiğinde ortaya çıkan belirli bir koşulu ifade eder, çünkü talep ettiği sistem kaynağı başka bir işlem tarafından tutulur ve bu da başka bir işlemin kaynağını serbest bırakmasını ve böylece bir kilitlenme oluşturmasını bekler. Bu, kaynak kullanımının zayıf olmasından kaynaklanır. Açlık, düşük öncelikli bir sürecin ihtiyaç duyduğu kaynaklara erişiminin reddedildiği belirsiz bir erteleme koşuludur, çünkü kaynaklar başka bir yüksek öncelikli sürece tahsis edilmektedir. Sistemi kaynakları yalnızca yüksek öncelikli süreçlere ayırmaya zorlayan bir kaynak yönetimi sorunudur.
Kilitlenme, aşağıdaki dört koşul aynı anda meydana geldiğinde ortaya çıkan nihai açlık şeklidir: Karşılıklı Dışlama, Önleme Yok, Beklet ve Bekle ve Dairesel Bekleme. Bir kilitlenme koşulu yalnızca dört koşulun tamamının geçerli olduğu sistemlerde oluşur. Açlık, etrafta dolaşmak için yeterli kaynak olmadığı ve işlemlerin önceliğinin azalmaya başladığı veya süreçlerin kaynakları kontrolsüz olarak diğer süreçlere teslim etmeye başladığı gibi farklı koşullara göre oluşur. Düşük öncelikli bir işlem, en yüksek öncelikli işlemler için ayrılmış bir kaynak isterse, işlem sonsuza kadar aç kalır. Açlık, kaynaklar keyfi olarak tahsis edildiğinde, işlemlerin daha uzun bir süre beklemesine neden olduğunda da ortaya çıkar..
Açlık, aslında yaşlanma tekniğini de kullanan öncelik kuyruğuna sahip uygun bir zamanlama algoritması kullanılarak önlenebilir - her isteğin önceliğine yaşlanma faktörünü ekleyen bir zamanlama tekniği, yani bekleyen düşük öncelikli işlemlerin öncelik düzeyini arttırır. uzun zamandır. Ayrıca, programlara daha fazla kaynak sağlanması, kaynakların sürekli sıkışıklığını önlemelidir. Sistemin bir kilitlenmeye girmesini önlemek için, eşzamanlı olarak başkalarını beklerken süreçlerin bir veya daha fazla kaynağa erişimi reddedilmeli ve aynı anda yalnızca bir işlemin kaynağa erişmesine izin verilmelidir.
Hem kilitlenme hem de açlık, çok işlemli işletim sistemlerinde veya dağıtılmış sistemlerde, ihtiyaç duydukları kaynakları beklerken bir veya daha fazla iş parçacığının veya işlemin sıkışmasına neden olan ilgili kavramlardır. Kilitlenme, bir veya daha fazla işlem aynı kaynağa erişim istediğinde ortaya çıkan ve işlemin donmasına neden olan bir durumdur, buna karşın açlık, süreci belirsiz bir erteleme durumuna iten kilitlenme nedeniyle oluşur. yüksek öncelikli süreç ve sonsuza kadar beklemek gerekir.