İçeriği Paylaş:

Ölümcül Kilitlenme (Deadlock)

Ölümcül Kilitlenme (Deadlock)Bilgisayar sistemleri, bir anda sadece tek bir kullanıcı tarafından kullanılabilecek kaynaklar ile doludur.*Yazıcı, disket sürücüleri, kesiciler, cd yazıcı, cd okuyucu,…Aynı anda iki süreç yazıcıdan çıktı almaya çalışırsa ve alabilirse oluşan çıktı anlamsız verilerden oluşur. Aynı anda iki süreç aynı dosya ya yazar ise oluşan dosya bozulur ya da dosya sistemi bozulur.Her işletim sistemi, belirli kaynaklara aynı anda sadece tek bir sürecin erişmesini sağlayan erişim mekanizmalarına sahiptir.Süreçler aynı anda birden fazla paylaşılan kaynağı kullanabilir.Örneğin, A ve B süreçleri tarayıcıdan aldıkları veriyi CD ye kayıt etmek istesinler. A süreci tarayıcının kullanım hakkını elde etsin, B süreci de CD nin yazım hakkını elde etsin.A süreci yazıcıya yazmak istediğinde B’nin kullanımı nedeniyle A sürecine yetki verilmez.Aynı şekilde B sürecide tarayıcıya erişmeye çalıştığında o da A sürecinin tarayıcı yetkisine sahip olması nedeniyletarayıcıya erişemez.                                                            3Bu durumda her iki süreçte bloklanırlar ve hiçbir zaman bu  durumdan  kurtulamazlar. Gerçekleşen bu duruma ölümcül kilitlenme (deadlock) denilir.Sistem kaynaklarını ortak olarak kullanan veya birbirleri ile haberleşen bir grup sürecin kalıcı olarak bloklanması durumudur.Genelde süreçlerin ellerindeki kaynakları bırakmadan, başka süreçlere ait olan kaynakları istedikleri durumlarda gerçekleşir.Bilgisayarda bulunan kaynaklar aşağıdaki şekilde kategorileştirilebilir.-Ele geçirilebilir (preemptable)-Ele geçirilemez (non-preemptable)Ele geçirilebilir kaynak, bir süreç bu kaynağa sahip ise elinden alındığında problemler oluşturmuyan kaynaktır.(bellek)Ele geçirilemeyen kaynak, süreç bu kaynağa sahiptir ve elinden alınamaz. Örneğin, bir süreç cd yazıcıyı kullanıyorsa cd yazıcının elinden alınması oluşan cd nin bozulmasına yol açar. Ölümcül kilitlenme bu kaynaklarda oluşur. Bir kaynağı kullanmak için aşağıdaki adımlar izlenir:

  1. Kaynağı iste
  2. Kaynağı kullan
  3. Kaynağı serbest bırak

Genelde her kaynağa bir semafor verilir. Kaynak kullanmadan önce semafora ait olan down() metodu çalıştırılır, kaynak kullanılır, kaynak ile işlem bittikten sonra up() metodu çalıştırılır.image001image005Aynı kaynakların farklı sıralarda istenilmesinde ölümcül kilitlenme olma olasılığı yüksektir.Örneğin sistemimizde, 200 K bellek bölgesi süreçler istediklerinde bu süreçlerin kullanımına verilsin. Bellek kullanan başka süreçlerin olmadığını düşünürsek, aşağıdaki durumda ölümcül kilitlenme olma olasılığı vardır.

  1. Süreç                 2.Süreç

————                       ————iste(80K)                   iste(70K)…                              ……                              …iste(60K)                   iste(80K)Süreçler, mesaj alıp vererek haberleşiyor olsunlar. Süreç beklediği mesaj gelene kadar bloklansın. Aşağıdaki durumda ölümcül kilitlenme olma olasılığı vardır.

  1. Süreç                               2.Süreç

————                                 ————receive(Süreç2)                                               receive(Süreç1)…                                            ……                                            …send(Süreç2,mesaj)                                               send(Süreç1,mesaj) 

İçeriği Paylaş:
İlginizi Çekebilir
Yorum Yapılmamış

Henüz Hiç Yorum Yapılmadı..

Yorum Yaz

Ölümcül Kilitlenme (Deadlock)

İşletim Sistemleri

7/11/2016 | Yorum Yok | 64 | Mustafa Küçükakarsu