Kilitlenme (Deadlock)
Yazan : Şadi Evren ŞEKER
İşletim sistemlerinde çeşitli sebeplerle iki işlemin birbirini kilitlemesi durumudur. Benzer bir örnek güncel hayatta da yaşanabilir.
Örneğin Ali kapıdan geçmek için Ahmet’in önce geçmesini şart koşuyor. Benzer şekilde Ahmet de Ali’nin önce geçmesini şart koşuyor. İki kişide karşısındaki önce geçmezse geçmiyor bu durumda iki si de kapıdan sonsuza kadar geçemez ve bu durum ismi kilitlenme (deadlock)’tır.
Bu durum işletim sistemlerinde iki işlem (process) arasında sıkça yaşanır. Örneğin aşağıda semafor (semaphore )kullanılarak senkronize edilmiş iki işlemin kod örneğini inceleyelim:
Process A
{
Wait(B);
....
Signal(A);
}
Process B
{
Wait(A);
....
Signal(B);
}
Yukarıdaki örnekte Process A ve Process B isminde iki işlem bulunuyor. A işlemi B’yi, B işlemi ise A’yı bekliyor. Bu durumda ikisi de aynı anda başlayan bu işlemler kilitlenerek sonsuza kadar birbirini beklerler.
Yukarıdaki örnekte olduğu gibi işlemler arası senkranizasyon bir kilitlenme sebebidir. Ancak tek kilitlenme sebebi bu değildir. Diğer sık rastlanan bir kilitleme sebebi de kaynaklara erişimde yaşanır.
Kaynak ayrımı (resource allocation) sırasında birden fazla işlem birden fazla kaynağa erişiyorsa şöyle bir durum olabilir:
A işlemi X kaynağını kendisine almış ve Y kaynağı için sıra bekliyor olsun
B işlemi ise Y kaynağını kendisine almış ve X kaynağı için sıra bekliyor olsun
Yukarıdaki bu durumda A işlemi, Y kaynağını almadan X kaynağını bırakmayacaktır, benzer şekilde B işlemi de X kaynağına erişmeden Y kaynağını bırakmayacaktır. Dolayısıyla bu iki işlem birbirini kilitlemiş olurlar.
Kilitlenmenin (deadlock) çözülmesi için en kolay ve en etikili yol, programı yazarken kilitlenmeye engel olacak ve kilitlenme içermeyen kod yazmaktır.
« Kıtlık (Starvation) | Playfair Şifrelemesi (Playfair Cipher) »
Yorumlar
Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'Kilitlenme (Deadlock)' isimli yazı 20 Nov 2008 tarihinde, saat: 07:18 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam 308 defa okunmuştur.
Benzer yazıları işletim sistemleri kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.
Yazarın Kitabı
Bu yazının yazarı Şadi Evren ŞEKER'in son çıkan kitabı "Programlama ve Veri Yapılarına giriş (C, C++ ve JAVA ile)" hakkında bilgi almak için Buraya tıklayabilirsiniz.
Eklenen Son Yazılar
- Özyineli Diller (Recursive Languages)
- Özyineli Geçiş Ağları (Reursive Transition Networks)
- Gellish (Kontrollü Doğal Dil)
- Karar Problemi (Decision Problem)
- Masfuf (Matris , Matrix)
- Turing Makinesi (Turing Machine)
- Özyineli Sayılabilir Diller (Recursively Enumerable Languages)
- Chomsky Hiyerarşisi ( Chomsky Hierarchy )
- Anlamsal Ağlar (Semantic Network)
- Mana Ağları (Sematic Webs, Anlamsal Ağ)
Yapılan Son Yorumlar
- vildan: teşekkürler..
- Şadi Evren ŞEKER: Elbette; farklı iki örnek daha...
- rasim: daha baska ornekler verebılırmısınız
- Zeynep Kaya: İyi günler.Benim size bi sorum daha...
- Zeynep Kaya: Cok tesekkür ederim yardımınız icin..
Yakın Yazılar
Bağlantılar