Tavsiye, 2024

Editörün Seçimi

OS'de Çıkmaz ve Açlık Arasındaki Fark

Hem Kilitlenme hem de Açlık, bir kaynak için talep edilen işlemlerin uzun süre ertelendiği koşullardır. Her ne kadar çıkmaz ve açlık her ikisi de birbirinden farklı olsa da. Kilitlenme, hiçbir işlemin yürütülmediği bir durumdur ve her biri diğer işlemler tarafından edinilmiş kaynakları bekler. Diğer taraftan, Açlıkta yüksek öncelikli süreç, kaynakları elde etmek için düşük öncelikli süreci önleyen kaynakları sürekli kullanır. Aşağıda gösterilen karşılaştırma tablosu ile kilitlenme ve açlık arasındaki bazı farklılıkları tartışalım.

Karşılaştırma Tablosu

Karşılaştırma TemelleriçıkmazAçlık
TemelKilitlenme, hiçbir işlemin olmadığı ve engellendiği yer.Açlık, düşük öncelikli işlemlerin engellendiği ve yüksek öncelikli işlemin devam ettiği yerdir.
Ortaya çıkan durumuKarşılıklı dışlanma, Beklet ve bekle, Önlem yok ve Dairesel olarak aynı anda bekleyin.Önceliklerin uygulanması, kontrolsüz kaynak yönetimi.
Diğer adıDairesel bekleLifelock.
kaynaklarKilitlenmede, istenen kaynaklar diğer işlemler tarafından engellenir.Açlıkta, talep edilen kaynaklar sürekli olarak yüksek öncelikli süreçler tarafından kullanılmaktadır.
önlemeKarşılıklı dışlanmayı, bekletmeyi ve bekletmeyi ve döngüsel beklemeyi önleme ve önceden izin verme.Yaşlanma.

Deadlock'un tanımı

Kilitlenme, CPU’daki birçok işlemin CPU’da bulunan sınırlı sayıda kaynak için rekabet ettiği bir durumdur. Burada, her işlem bir kaynak tutar ve başka bir işlem tarafından tutulan bir kaynak elde etmek için bekler. Tüm süreçler kaynakları döngüsel bir şekilde beklemektedir. Aşağıdaki resimde, Proses P1'in P2 prosesi tarafından istenen R2 kaynağını elde ettiğini ve Proses P1'in yine R2 tarafından tutulan R1 kaynağı için talep ettiğini görebilirsiniz. Böylece P1 ve P2 işlemleri kilitlenme oluşturur.

Kilitlenme, çok işlemeli işletim sistemlerinde, dağıtılmış sistemlerde ve ayrıca paralel bilgi işlem sistemlerinde yaygın bir sorundur. Karşılıklı dışlanma, Beklet ve bekle, Önlem yok ve Dairesel bekletme olan kilitlenmenin durumunu yükseltmek için aynı anda yapılması gereken dört koşul vardır.

  • Karşılıklı dışlama: Başka bir işlem aynı kaynağı isterse, bir seferde yalnızca bir işlem kaynak kullanabilir, kaynak kullanan işlemi serbest bırakana kadar beklemesi gerekir.
  • Beklet ve Bekle: Bir işlem bir kaynağı tutuyor olmalı ve başka bir işlem tarafından tutulan başka bir kaynağı almayı bekliyor olmalıdır.
  • Önlem Yok: Kaynakları tutan süreç önlenemez. Kaynağı tutan işlem görevini tamamladığında kaynağı gönüllü olarak serbest bırakmalıdır.
  • Dairesel bekleme: İşlem, kaynakları dairesel bir şekilde beklemelidir. Diyelim ki üç işlemimiz var {P0, P1, P2}. P0, P1 tarafından tutulan kaynağı beklemelidir; P1, P2 işlemi tarafından tutulan kaynağı almayı beklemeli ve P2, P0 tarafından tutulan işlemi almayı beklemelidir.

Kilitlenebilecek programları tespit edebilen bazı uygulamalar olmasına rağmen. Ancak işletim sistemi, kilitlenmeleri önlemekten asla sorumlu değildir. Kilitlenme ücretsiz programlar tasarlamak programcıların sorumluluğundadır. Kilitlenme oluşumu için gerekli olan yukarıdaki şartlardan kaçınılarak yapılabilir.

Açlık Tanımı

Açlık, bir kaynak için bir işlem isteğinin ve o kaynağın diğer işlemler tarafından sürekli olarak kullanıldığı, sonra talep eden işlem açlıkla karşı karşıya olduğu zaman olarak tanımlanabilir. Açlıkta, yürütmeye hazır bir işlem CPU'nun kaynağı tahsis etmesini bekler. Ancak, diğer süreçler istenen kaynakları sürekli olarak engellediğinden, süreç süresiz olarak beklemek zorundadır.

Açlık sorunu genellikle öncelikli programlama algoritmasında ortaya çıkar. Öncelikli programlama algoritmasında, daha yüksek önceliğe sahip olan sürece her zaman kaynak tahsis edilir, bu da daha düşük öncelikli işlemin istenen kaynağa ulaşmasını önler.

Yaşlanma açlık problemini çözebilir. Yaşlanma, kaynakları uzun süredir beklemekte olan sürecin önceliğini kademeli olarak artırmaktadır. Yaşlanma, önceliği düşük bir işlemin bir kaynak için süresiz olarak beklemesini önler.

OS'de Kilitlenme ve Açlık Arasındaki Temel Farklılıklar

  1. Bir kilitlenmede, işlemlerin hiçbiri yürütme için ilerlemiyor, her işlem başka bir işlem tarafından elde edilen kaynakları beklerken engelleniyor. Öte yandan açlık, daha yüksek önceliğe sahip işlemlerin, düşük öncelikli işlemlerin belirsiz bir şekilde bloke edilmesine neden olan kaynakları elde etmesini önleyerek, kaynakları sürekli olarak elde etmelerine izin verilen bir durumdur.
  2. Kilitlenme, dört koşul Karşılıklı dışlanma, Beklet ve bekle, Önlem yok ve Eşzamanlı bekletme aynı anda meydana geldiğinde ortaya çıkar. Ancak, açlık, kaynakları tahsis ederken süreç öncelikleri yerine getirildiğinde ya da sistemde kontrolsüz bir kaynak yönetimi olduğunda ortaya çıkar.
  3. Kilitlenme genellikle dairesel bekleme adıyla adlandırılır, oysa açlığa Lived lock adı verilir.
  4. Deadlock'ta kaynaklar süreç tarafından engellenirken, açlıkta süreçler öncelikli süreçler tarafından sürekli kullanılmaktadır.
  5. Karşılıklı dışlanma, Beklet ve bekle ve dairesel bekletme gibi koşullardan kaçınılması ve uzun süre kaynakları tutan işlemlerin önlenmesini sağlayarak kilitlenme önlenebilir. Öte yandan, açlık yaşlanma ile önlenebilir.

Sonuç:

Hem Kilitlenme hem de Açlık, işlem yürütmesini engelleyerek geciktirir. Bir yandan kilitlenmenin işlemlerin aç kalmasına neden olabileceği ve diğer taraftan açlığın işlemlerin kilitlenmeden çıkabileceği bir yerde.

Top