Livelock: Nedir, Örnek, Deadlock ile Farkı

Livelock nedir?

A livelock örtüşen birçok paylaşılan kilit birbirine müdahale etmeye devam ettiğinden, özel kilit talebinin tekrar tekrar reddedildiği bir durumdur. Süreçler durumlarını değiştirmeye devam ediyor, bu da onların görevi tamamlamasını daha da engelliyor. Bu da onların görevi tamamlamasını engeller.

Livelock örnekleri

Örnek 1:

Livelock'un en kolay örneği, iki kişinin bir koridorda yüz yüze buluşması ve her ikisinin de diğerinin geçmesine izin vermek için kenara çekilmesidir. Aynı anda aynı şekilde hareket ettikleri için hiçbir ilerleme kaydedemeden bir yandan diğer yana hareket etmeye başlarlar. Burada asla birbirlerini geçmezler.

Örnek 2:

Livelock örnekleri

Yukarıdaki resimde gördüğünüz gibi, verilen iki işlemin her biri iki kaynağa ihtiyaç duyar ve kendileri için gerekli kilitleri elde etmeye çalışmak için ilkel yoklama giriş kayıt defterini kullanırlar. Deneme başarısız olursa yöntem tekrar çalışır.

  1. A İşlemi Y kaynağını tut
  2. B Süreci X kaynağını tutar
  3. A Süreci X kaynağı gerektirir
  4. B süreci Y kaynağı gerektirir

Varsayalım ki, önce A süreci çalışır ve X veri kaynağını alır, ardından B süreci çalışır ve Y kaynağını alır, hangi süreç önce çalışırsa çalışsın, hiçbiri daha fazla ilerleme kaydetmez.

Ancak her iki işlem de engellenmiyor. Herhangi bir ilerleme kaydedilmeden CPU kaynaklarını tekrar tekrar kullanırlar, ancak aynı zamanda herhangi bir işlem bloğunu da durdururlar.

Dolayısıyla bu durum öyle bir durum değil çıkmaz çünkü bloke olan tek bir süreç yok ama çıkmaza benzer bir durumla karşı karşıyayız, o da LIVELOCK.

Livelock'a Ne Yol Açar?

Livelock, belirli bir sistemdeki izin verilen işlemlerin toplam sayısının, süreç tablosundaki toplam giriş sayısına göre tanımlanması gerektiğinde ortaya çıkar. Bu nedenle süreç tablosu yuvalarına Sonlu Kaynaklar adı verilmelidir.

Deadlock Nedir?

Kilitlenme, bir başka bekleyen işlemin talep edilen kaynağı tutması nedeniyle herhangi bir işlemin bekleme durumuna girmesiyle işletim sisteminde oluşan bir durumdur. Kilitlenme, çoklu işlemede, birkaç işlemin yumuşak kilit veya yazılım olarak bilinen belirli bir tür karşılıklı olarak özel kaynağı paylaştığı yaygın bir sorundur.

Kilitlenme Örneği

  • Gerçek dünyadan bir örnek, yalnızca tek yöne giden trafik olabilir.
  • Burada köprü bir kaynak olarak kabul edilir.
  • Yani, çıkmaza girildiğinde bir aracın geri gitmesiyle (kaynakların önceden alınması ve geri alma) kolayca çözülebilir.
  • Kilitlenme durumu oluşması durumunda birkaç aracın geri çekilmesi gerekebilir.
  • Yani açlık mümkündür.
Kilitlenme Örneği
Kilitlenme Örneği

Açlık nedir?

Açlık, tüm düşük öncelikli süreçlerin engellendiği ve yüksek öncelikli süreçlerin devam ettiği bir durumdur. Herhangi bir sistemde, yüksek/düşük öncelikli kaynaklara yönelik talepler dinamik olarak gerçekleşmeye devam eder. Bu nedenle kimin ne zaman destek alacağına karar vermek için bazı politikalara ihtiyaç vardır.

Bazı algoritmalar kullanılarak, bazı işlemler çıkmaza girmemiş olsalar bile istenilen hizmeti alamayabilirler. Açlık, bazı iş parçacıkları paylaşılan kaynakları uzun bir süre boyunca kullanılamaz hale getirdiğinde ortaya çıkar.

Açlık Örneği

Örneğin, bir nesne, geri dönmesi uzun zaman alacak olan senkronize bir yöntem sunar. Bir iş parçacığı bu yöntemi sıklıkla kullanırsa, aynı nesneye sıklıkla senkronize erişime ihtiyaç duyan diğer iş parçacıkları sıklıkla engellenir.

Deadlock, Açlık ve Livelock Arasındaki Fark

  • Kilitlenme, talep edilen kaynağın başka bir bekleyen işlem tarafından tutulması nedeniyle herhangi bir işlemin bekleme durumuna girmesiyle oluşan bir durumdur.
  • Öte yandan, bir canlı kilit, bir çıkmaza neredeyse benzer; ancak canlı kilitte yer alan süreçlerin durumları her zaman birbirine dönüşür, hiçbiri ilerlemez.
  • Dolayısıyla Livelock, kaynak açlığının benzersiz bir örneğidir.

ÖZET

  • Tanım: Livelock, birçok örtüşen paylaşılan kilidin birbirini engellemeye devam etmesi nedeniyle özel kilit talebinin tekrar tekrar reddedildiği bir durumdur.
  • Livelock, belirli bir sistemdeki izin verilen işlemlerin toplam sayısının, süreç tablosundaki toplam giriş sayısına göre tanımlanması gerektiğinde ortaya çıkar.
  • Kilitlenme, bir işletim sisteminde herhangi bir işlemin, talep edilen kaynağı elinde tutan başka bir bekleyen işlem nedeniyle bekleme durumuna girmesiyle oluşan bir durumdur.
  • Gerçek dünyadan bir örnek, yalnızca tek yöne giden trafik olabilir.
  • Livelock'a bir örnek, iki kişinin bir koridorda yüz yüze buluşması ve her ikisinin de diğerinin geçmesine izin vermek için kenara çekilmesi olabilir.
  • Açlık, tüm düşük öncelikli süreçlerin engellendiği ve yüksek öncelikli süreçlerin devam ettiği bir durumdur.