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 (deadlocks)’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.

Yorumlar

  1. freelancer03

    1-sorum
    Ölümcül kilitlenme (deadlock) durumu algoritmalarından biri olarak bilinen devekuşu (ostrich)yöntemi ile ilgili,
    I. Literatürde yer alır ancak pratikte kullanılmaz.
    II. Ölümcül kilitlenme durum ve olasılığını tümüyle göz ardı etmek anlamına gelir.
    III. Güncel işletim sistemlerinde sıklıkla kullanılır.

    2-sorum
    Ölümcül kilitlenmeye (deadlock) ilişkin olarak kullanılan Banker algoritması ile ilgili,
    I. Güvenli durum (safe state), ölümcül kilitlenmeye neden olmaz.
    II. Güvensiz durum (unsafe state), mutlaka ölümcül kilitlenmeye neden olur.
    III. Güvensiz durumdaki işlemler (process), ölümcül kilitlenme içinde demektir.

    1.sorunun cevabı : yalnız II ve III olarak belirtilmiş.
    2.sorunun cevabı : yalnız I olarak belirtilmiş.

    hocam, banker ve devekuşu algoritmaları nedir?Bu algoritmaların deadlock da etkisi nedir? Hangi durumlarda kullanılır?
    Ayrıca Tampon Bellek ıskası(cache miss), bulunamayan bölge hatası(missing-segment-fault), genel koruma hatası(general protection fault), küçümenlik durumu(underflow, işi hariç tutma(job exclusion) konuları hakkında bilgiye ihtiyacım var.
    Teşekkürler..

  2. solnishka

    tampon bellek ıskası: mikroişlemcinin aradığı veriyi yada komutu ön bellekte bulamaması

    underflow:overflow un tersi eksi olarak taşma durumu

    general protection fault:değişik sistemlerdeki invalid fault,access violation,segmentation fault gibi hataların kaynağıdır.bir process varolmayan veya erişim yetkisi olmayan bir hafıza bloguna erişmek istemesinde oluşan hata.

  3. Veli Topcu

    Banker ve deve kuşu algoritmaları işletim sistemlerindeki ölümcül kilitlenme (deadlock) durumunu onlemek için geliştirilen algoritmalardır.Devekuşu yöntemi problemi gormezden gelmek anlamına gelir.Olümcül kilitlenme durum ve olasılığını tümüyle gözardı etmek anlamına gelir şıklardaki gibi.güncel işletim sistemlerinde sıklıkla kullanılır.Banker yontemi bir guvenli durum(safe state) yontemidir.güvenli durum olümcül kilitlenmeye neden olmaz.Eger sistemde olumcul kılıtlenme varsa o sıstem kesınlıkle guvensız durumdadır(unsafe state).Eger sistem guvensız durumdaysa sıstemın kılıtlenme olasılıgı vardır (ama mutlaka olumcul kılıtlenmeye neden olur denılemez.)
    Tampon bellek-Bir diskten okumak gerçek bellekten okumaktan çok daha yavaştır. Ek olarak, nispeten kısa zaman aralıkları ile aynı disk yüzeyi tekrar tekrar okunacaktır. Örneğin birisi; önce gelmiş bir mesajı okuyabilir, daha sonra cevaplarken bir metin düzenleyiciden o mesajı okur ve postalarken, sistemin eposta dizinine bir kopyasını alması için onu okutabilir. Veya ls komutunun bir sistem üzerinde kullanıcılar tarafından ne kadar sıklıkla kullanıldığını bir düşünün. Diskten bir kere okutup, bu bilgiyi işi bitince bellekte tutmak yöntemiyle sistem hızını artırabiliriz fakat önce okuyun. Bu işleme disk tamponlanması ve bu iş için kullanılan belleğe tampon bellek denir.
    Sayfa hatası (page fault) sanal bellek tekniğinde başvurulan veri o anda ana bellekte bulunamıyorsa oluşur ve aranan sayfa ana bellekte mevcut değil demektir.
    küçümenlik durumu-Bilgisayarda sonucun sıfırdan farklı, ama bir makinada gösterimlenebilen en küçük nicelikten de küçük olması durumu.

    12 nisanda STS sinavinda basarilar dilerim 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir