noimage

İçeriği Paylaş:

Ölümcül Kilitlenme (Deadlock) Onarımı

Ölümcül Kilitlenme (Deadlock) OnarımıAlgoritma bir ölümcül kilitlenme tespit etmiş ise ne yapılmalıdır ?

  1. Keserek onarma (Recovery through preemption) Bazı durumlarda kaynağı geçici olarak sahibinden alıp başkasına vermek mümkün olabilir. Bu tip durumlarda sisteme el ile müdahele yapılması genellikle gerekmektedir.

Örneğin; Bir yazıcı başkasına kesilerek verilebilir. Yazıcı askıya alınır. Yazdırmış olduğu kağıtlar bir yere konulur. Yazıcı başka bir sürece verilir. Bu sürecin çalışması bittiğinde eski sürece geri dönülür.Bu şekilde onarım oldukça zordur.

  1. Geri alarak onarma (Recovery through rollback) Sistem tasarımcıları ve işleticileri sistemde ölümcül kilitlenmelerin olası olduğunu biliyorsa, süreçler için periyodik olarak kontrol noktaları oluştur.

Kontrol noktası sürecin mevcut durumunun bir dosya ya yazılmasıdır. Bu şekilde süreç daha sonra bu noktadan çalışmasına devam edebilir. Kontrol noktası sürecin bellek görünümünü ayrıca kaynaklarının durumunuda içermelidir. Her kontrol dosyası farklı dosyaya yazılır.Ölümcül kilitlenme halinde hangi kaynaklara ihtiyaç olduğu belirlenir. Bu kaynaklar sahibinden alınır ve ihtiyaç duyana verilir. Kaynakların işleri bittiğinde alındıkları süreç kontrol noktasından itibaren tekrar çalıştırılmaya başlanır.

  1. Öldürerek onarma (Recovery through killing process)

Kaba fakat en kolay yol bir veya birden fazla sürecinöldürülmesidir.Bir döngü deki süreci öldürerek ölümcül kilitlenme çözülebilir.Döngü dışındaki bir süreci öldürmek de ölümcül kilitlenmeyi çözebilir.En iyisi tekrar çalıştırılması problem oluşturmayacak olan sürecin öldürülmesidir.(Deadlock avoidance)Ölümcül  hata  tespitinde, sürecin ihtiyaç duyduğu tüm kaynakları R matrisinde verdiğini varsaydık.Bir çok sistemde kaynaklar belirli bir çalışma anında istenirler.Sistem istenilen kaynağın verilmesinin güvenli olup olmadığına karar vermelidir.Güvenli ve Güvensiz DurumHerhangi bir zaman anında sistemin durumuE,A vektörleri ve C,R matrisleri ile gösterilir. Eğer A durumu ölümcül kilitli değilse sistem güvenlidir.1Örneğin tek bir kaynak için durumu inceleyelim. Elimizde bu kaynaktan 10 adet olsun. Aşağıda A,B,C süreçlerinin durumları gösterilmektedir.Buradaki durum güvenlidir, çünkü tüm süreçlerin tamamlanmasına imkan veren seçim sırası bulunur.2Buradaki durum güvensiz bir durumdur.Tek Kaynak için Banker AlgoritmasıÖrneğin, kaynağımız 10 adet disket sürücüsü olsun ve elimizde 4 adet süreç bulunsun(A,B,C,D süreçleri).Algoritma süreçlerden her istek geldiğinde, kaynağın verilmesinin güvenli olup olmadığını kontrol eder.Güvenli ise kaynak tahsis edilir, değilse bu istek ertelenir.1Birden fazla kaynak için Banker Algoritması2Sistemde var olan kaynaklar Tahsis edilmiş kaynaklar Kullanılabilir kaynaklarTahsis edilmiş kaynaklar İhtiyaç duyulan kaynaklar

  1. R matrisinden ihtiyaç duyulan kaynaklar aranır. Eğer bu satırlarda A vektöründen daha küçük bir satır yoksa sistem öümcül
  1. Bu sürecin tüm istekleri aynı anda karşılansın. Tüm sahip oldukları A vektörüne eklenir.
  1. 1-2 adımlarını tüm süreçler sonlandı olarak işaretleninceye kadar tekrar

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

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

Yorum Yaz

Ölümcül Kilitlenme (Deadlock) Onarımı

İşletim Sistemleri

2/09/2017 | Yorum Yok | 164 | Mustafa Küçükakarsu