İşletim Sistemi Kavramları 7- Deadlock

DEADLOCK ve STARVATION

Deadlock ve Starvation, işletim sistemlerinde işlem süreçlerinin ilerleyememesine neden olan önemli iki durumdur. Starvation’da, bir işlem ihtiyaç duyduğu kaynağa erişemediği için ilerleyemez. Bu kaynak; işlemci, bellek, ağ ya da disk gibi unsurlar olabilir. İşlem, bu kaynaklara ulaşamadığı için açlıktan “ölür” ve beklemeye devam eder. Bu durum, kaynak kullanımı protokolüne uygun bir şekilde işlese dahi gerçekleşebilir.

Deadlock ise iki veya daha fazla işlemin birbirlerinin kaynaklarına ihtiyaç duyması ancak birbirini beklemesi sonucunda ortaya çıkar. Örneğin, bir işlem bir kaynağı kullanırken diğer kaynağı beklerken, diğer işlem de tam ters kaynakları bekleyebilir. Bu durumda, işlemler bir döngüye girer ve ilerleyemez. Deadlock, Starvation’u tetikleyebilecek bir durumdur, ancak Starvation, Deadlock olmadan da gerçekleşebilir.

Kaynak Yönetimi ve Deadlock Koşulları

Sistemdeki her kaynak belirli kurallar dahilinde kullanılmalıdır. Deadlock’un oluşabilmesi için aşağıdaki dört koşulun aynı anda sağlanması gerekir:

  1. Mutual Exclusion: Kaynaklar, yalnızca bir işlem tarafından kullanılabilir.
  2. Hold and Wait: İşlem bir kaynağı tutarken, diğer kaynakları beklemeye devam eder.
  3. No Preemption: Tahsis edilen kaynaklar zorla alınamaz.
  4. Circular Wait: İşlemler, kaynak talebi konusunda dairesel bir bekleme durumuna girer.

Eğer bu koşullardan biri geçersizse, Deadlock oluşmaz.

Deadlock ve Starvation Örnekleri

Sistemde yalnızca bir işlemci olduğunu varsayalım ve Preemptive Scheduling (öncelikli zamanlama) uygulanmıyor. Eğer bir işlem sonsuz döngüye girerse, diğer işlemler işlemciyi kullanamadıkları için Starvation yaşanır. Aynı zamanda, işlemler birbirleri ile kaynak konusunda ilişkili hale geldiğinden, bir Deadlock durumu oluşur.

Deadlock Çözüm Yöntemleri

Deadlock’un önlenmesi (Prevention) ve kaçınılması (Avoidance) için bazı yöntemler vardır:

  • Deadlock Prevention: Deadlock’u oluşturan dört koşuldan birini engellemek.
  • Deadlock Avoidance: Deadlock oluşumunu savuşturarak engellemek.

Deadlock durumunda, işlemleri sonlandırmak (kill) veya bu işlemleri yeniden başlatmak bir çözüm olarak kullanılabilir.

Banker’s Algoritması

Banker’s algoritması, her işlem için ihtiyaç duyulan kaynakların maksimum miktarını belirleyerek kaynak yönetimini sağlar. Bir işlemin ihtiyacı karşılanmadığında, işlem beklemeye alınır. Bu algoritma ile Deadlock oluşma olasılığı azaltılır.

Resource Allocation Graph (Kaynak Tahsis Grafiği)

Resource Allocation Graph (RAG) üzerinde oklar, kaynak talebini veya kaynak kullanımını gösterir. Eğer okların yönüne göre kaynak tahsisini ve işlemleri izleyebiliyorsak Deadlock yoktur. Ancak süreç takip edilemiyorsa, Deadlock var demektir.

Bu konuda ayrıntılı bilgi için Yıldız Teknik Üniversitesi Bilgisayar Mühendisliği Bilgi Teknolojileri Programı kapsamında Doç. Dr. Ali Gökhan Yavuz‘un ders notlarına başvurulabilir.

You may also like...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir