Livelock: Nedir, Örnek, Deadlock ile Farkı
⚡ Akıllı Özet
Livelock, süreçlerin birbirlerine yanıt olarak durumlarını sürekli değiştirdiği ancak gerçek bir ilerleme kaydedemediği, görevlerini tamamlamadan veya bloke olmadan aktif kalıp CPU döngülerini tükettiği bir eşzamanlılık durumudur.

Livelock nedir?
A livelock Bu, birçok talebin çakışması nedeniyle özel kilit talebinin tekrar tekrar reddedildiği bir durumdur.ping Paylaşılan kilitler sürekli olarak birbirine müdahale ediyor. Süreçler sürekli olarak durumlarını değiştiriyor, bu da görevi tamamlamalarını engelliyor.
Livelock örnekleri
Örnek 1:
Livelock'un en basit örneği, bir koridorda yüz yüze gelen ve her ikisinin de diğerinin geçmesine izin vermek için kenara çekildiği iki kişidir. Her ikisi de aynı anda aynı yöne doğru hareket ettikleri için hiçbir ilerleme kaydedemeden bir yandan diğer yana hareket etmeye devam ederler. Burada asla birbirlerinin yolunu kesmezler.
Örnek 2:
Yukarıdaki resimde, iki işlemin her birinin iki kaynağa ihtiyacı var ve ihtiyaç duydukları kilitleri elde etmek için ilkel yoklama yöntemini kullanıyorlar. Bir girişim başarısız olursa, yöntem tekrar deniyor.
- A süreci Y kaynağını elinde bulundurmaktadır.
- B Süreci X kaynağını tutar
- A süreci X kaynağını gerektirir.
- B süreci Y kaynağını gerektirir.
Önce A sürecinin çalışıp X kaynağını elde ettiğini, ardından B sürecinin çalışıp Y kaynağını elde ettiğini varsayalım. Hangi sürecin önce çalıştığına bakılmaksızın, ikisi de daha fazla ilerleme kaydedemez.
Ancak, bu iki işlemden hiçbiri engellenmiyor. Herhangi bir ilerleme kaydetmeden sürekli olarak CPU kaynaklarını tüketiyorlar, ancak hiçbir zaman işlem engeli nedeniyle durmuyorlar.
Dolayısıyla bu durum bir çıkmazÇünkü tek bir işlem bile engellenmiyor; bunun yerine, canlı kilitlenme (LIVELOCK) olarak adlandırılan, kilitlenmeye eşdeğer bir durumla karşı karşıyayız.
Livelock'a Ne Yol Açar?
Sistemde kilitlenme (livelock), sistemin izin verdiği işlem sayısıyla ilişkilidir ve bu sayı işlem tablosundaki toplam giriş sayısıyla tanımlanır. Bu nedenle, işlem tablosundaki bu yuvalar sınırlı kaynaklar olarak kabul edilir. İşlemler, sürekli olarak birbirlerine öncelik vererek bu sınırlı kaynaklar için tekrar tekrar deneme yaptığında, hiçbiri ilerleme kaydedemez ve sistem kilitlenmeye girer.
Deadlock Nedir?
A çıkmaz Bir işletim sisteminde, bir işlemin, talep edilen kaynağı elinde tutan başka bir bekleyen işlem nedeniyle bekleme durumuna girmesi durumudur. Kilitlenme, çoklu işlemde yaygın bir sorundur; burada birkaç işlem, yazılım kilidi veya yumuşak kilit olarak bilinen, karşılıklı olarak birbirini dışlayan belirli bir kaynak türünü paylaşır.
Kilitlenme Örneği
- Gerçek hayattan bir örnek olarak, trafiğin yalnızca tek yönde akmasını gösterebiliriz.
- Burada köprü bir kaynak olarak kabul edilir.
- Bir kilitlenme durumu oluştuğunda, araçlardan birinin geri adım atması (kaynakları öncelikli olarak ele geçirme ve geri alma) durumunda sorun kolayca çözülebilir.
- Kilitlenme durumu oluşması durumunda birkaç aracın geri çekilmesi gerekebilir.
- Dolayısıyla açlıktan ölmek mümkündür.
Kilitlenme Örneği
Açlık nedir?
Açlık durumu, yüksek öncelikli süreçler devam ederken düşük öncelikli süreçlerin engellendiği bir durumdur. Herhangi bir sistemde, yüksek ve düşük öncelikli kaynaklara yönelik talepler dinamik olarak sürekli olarak gerçekleşir. Bu nedenle, kimin ne zaman hizmet alacağına karar vermek için bir politika gereklidir.
Bazı algoritmalarla, kilitlenme olmasa bile belirli süreçler istenen hizmeti alamayabilir. Açlık durumu, bazı iş parçacıklarının paylaşılan kaynakları uzun süre kullanılamaz hale getirmesi durumunda ortaya çıkar.
Açlık Örneği
Örneğin, bir nesne, geri dönüş süresi uzun sürebilecek senkronize bir yöntem sunar. Eğer bir iş parçacığı bu yöntemi sık sık kullanıyorsa, aynı nesneye sık sık senkronize erişime ihtiyaç duyan diğer iş parçacıkları genellikle engellenir.
Deadlock, Açlık ve Livelock Arasındaki Fark
- Bir işletim sisteminde, bir işlemin talep ettiği kaynağın başka bir bekleyen işlem tarafından tutulması nedeniyle bekleme durumuna geçmesi durumu, kilitlenme olarak adlandırılır.
- Öte yandan, canlı kilitlenme (livelock), bir çıkmaz kilitlenmeye (deadlock) oldukça benzerdir; ancak canlı kilitlenmede yer alan süreçlerin durumları, birbirlerine yanıt olarak sürekli değişir ve hiçbiri ilerleme kaydetmez.
- Dolayısıyla, kilitlenme, kaynak kıtlığının eşsiz bir örneğidir.


