Berk Akademi
Birebir ders başvurusu Ücretsiz ön görüşme Ana Sayfa

Deadlock Nedir? Dört Koşul ve Teşhis Yöntemi

deadlock-nedir-dort-kosul-ve-teshis-yontemi
Bu yazıda neler var?
  1. Deadlock Nedir ve Sistem Neden İlerleyemez?
  2. Deadlock İçin Gerekli Dört Koşul Aynı Örnekle Nasıl Sınanır?
  3. Kaynak Tahsis Grafiğinde Bekleme Döngüsü Nasıl Bulunur?
  4. Deadlock ve Starvation Arasındaki Fark Nedir?
  5. Deadlock Önleme, Kaçınma ve Tespit Yaklaşımları Nasıl Ayrılır?
  6. Sınavda Deadlock Teşhisi İçin Adım Adım Kontrol Listesi
  7. Sık Sorulan Sorular

Deadlock, iki veya daha fazla process ya da thread’in birbirinin elindeki kaynakları beklediği ve bu nedenle hiçbirinin ilerleyemediği kilitlenme durumudur. Sistem yalnızca yavaşlamaz; bekleme zinciri çözülemediği sürece ilgili işlemler yeni adımlar gerçekleştiremez.

Bir process, çalışan bir programın işletim sistemi tarafından yönetilen örneğidir. Thread ise bir process içindeki yürütme akışıdır. Kilit, aynı paylaşılan kaynağa aynı anda erişimi düzenleyen kontrol mekanizmasıdır. İki kişinin karşılıklı olarak birbirinin elindeki anahtarı beklemesi gibi, bir işlem elindeki kaynağı bırakmadan başka bir kaynağı beklediğinde deadlock ortaya çıkabilir.

Deadlock Nedir ve Sistem Neden İlerleyemez?

Paylaşılan kaynak; dosya, bellek bölgesi, yazıcı, veritabanı bağlantısı veya bir kilit nesnesi olabilir. Bir process bu kaynaklardan birini kullanırken ikinci bir kaynağa ihtiyaç duyabilir. İkinci kaynak başka bir process tarafından tutuluyorsa işlem beklemeye geçer.

Örneğin P1, R1 kaynağını kullanıyor ve işlemine devam etmek için R2’yi istiyor olsun. R2, P2’nin elindeyse P1 bekler. Aynı anda P2 de R2’yi tutuyor ve R1’i bekliyorsa iki işlem birbirinin ilerlemesini engeller. P1, R2’yi alamadığı için R1’i bırakmaz; P2 de R1’i alamadığı için R2’yi bırakmaz.

Bu durum, her beklemede ortaya çıkmaz. Bir process kaynağı kısa süreliğine bekliyor ve kaynak kısa süre sonra serbest kalıyorsa bu yalnızca geçici beklemedir. İşlemlerden biri kaynakları tutmadan bekliyorsa sistem yavaşlayabilir; fakat bu tek başına deadlock anlamına gelmez. Deadlock’ta önemli olan, kaynakları tutma ve bekleme ilişkilerinin birbirini kapatan bir döngü oluşturmasıdır.

Deadlock teşhisinde genellikle şu sorular sorulur: Hangi işlem hangi kaynağı tutuyor, hangi kaynağı istiyor ve beklediği kaynak kimin elinde? Bu sorulara sistematik yanıt vermek, karmaşık görünen kilitlenmeyi görünür hâle getirir. Algoritmik düşünme becerini ölçmek için algoritmik düşünme bilgi testini çözerek benzer neden-sonuç ilişkilerini adım adım inceleyebilirsin.

Deadlock İçin Gerekli Dört Koşul Aynı Örnekle Nasıl Sınanır?

Deadlock İçin Gerekli Dört Koşul Aynı Örnekle Nasıl Sınanır?

Aşağıdaki senaryoda iki process ve iki kaynak vardır:

İşlem Tuttuğu kaynak Beklediği kaynak Bekleme nedeni
P1 R1 R2 R2, P2 tarafından tutuluyor
P2 R2 R1 R1, P1 tarafından tutuluyor

Mutual exclusion: Kaynak aynı anda paylaşılamıyor mu?

Mutual exclusion, bir kaynağın aynı anda yalnızca bir process veya thread tarafından kullanılabilmesidir. R1 ve R2 kilitli kaynaklar olarak düşünülüyorsa bu koşul vardır. P1, R1’i kullanırken P2’nin aynı R1’e erişmesine izin verilmez.

Hold and wait: İşlem elindekini tutup yenisini mi bekliyor?

Hold and wait, bir işlemin en az bir kaynağı elinde tutarken başka bir kaynak için beklemesidir. P1, R1’i bırakmadan R2’yi; P2 ise R2’yi bırakmadan R1’i beklediği için koşul sağlanır.

No preemption: Kaynak zorla geri alınamıyor mu?

No preemption, bir kaynağın işletim sistemi tarafından zorla geri alınamaması ve onu tutan işlemin kaynağı gönüllü olarak bırakmasının beklenmesidir. Buradaki ayrım önemlidir: İşlem kaynağı kendi kararıyla bırakabiliyorsa gönüllü bırakma vardır; başka bir işlem kaynağı zorla alamıyorsa no preemption koşulu söz konusudur.

Circular wait: Bekleme ilişkisi döngü oluşturuyor mu?

Circular wait, işlemlerin kapalı bir bekleme zinciri oluşturmasıdır. Bu örnekte P1, P2’nin tuttuğu R2’yi; P2 de P1’in tuttuğu R1’i bekler. Böylece P1 → R2 → P2 → R1 → P1 biçiminde bir döngü oluşur.

Dört koşulun tamamı birlikte sağlandığında bu özel senaryoda deadlock oluşabilir. Koşullardan biri yoksa aynı döngü tamamlanmaz; örneğin kaynaklardan biri paylaşılabilir hâle gelir veya kaynak zorla geri alınabilirse iki işlemin kalıcı biçimde birbirini beklemesi önlenebilir.

Kaynak Tahsis Grafiğinde Bekleme Döngüsü Nasıl Bulunur?

Kaynak tahsis grafiği, işlemler ile kaynaklar arasındaki talep ve tahsis ilişkilerini görselleştirir. Grafikte process düğümleri işlemleri, kaynak düğümleri ise kilit, dosya, bellek alanı veya başka bir sistem kaynağını temsil eder.

  • Process’ten kaynağa giden kenar: İşlem kaynağı istiyor demektir. Örneğin P1 → R2, P1’in R2’yi beklediğini gösterir.
  • Kay­naktan process’e giden kenar: Kaynak ilgili işleme tahsis edilmiştir. Örneğin R1 → P1, R1’in P1 tarafından tutulduğunu gösterir.

Önceki iki işlem ve iki kaynak örneğini kullanalım. P1, R1 kaynağını tutuyor ve R2’yi istiyor. P2 ise R2 kaynağını tutuyor ve R1’i istiyor. Bu ilişkiler grafiğe şöyle aktarılır:

Process Tuttuğu kaynak Beklediği kaynak
P1 R1 R2
P2 R2 R1

Tablodaki her ilişkiyi kenara dönüştürelim:

  • R1 → P1: R1, P1’e tahsis edilmiştir.
  • P1 → R2: P1, R2’yi istemektedir.
  • R2 → P2: R2, P2’ye tahsis edilmiştir.
  • P2 → R1: P2, R1’i istemektedir.

Şimdi grafiği herhangi bir düğümden izleyebilirsin: P1 → R2 → P2 → R1 → P1. Başladığın P1 düğümüne yeniden dönmen, grafikte bir bekleme döngüsü bulunduğunu gösterir. Bunun anlamı şudur: P1, R2’yi bırakması için P2’nin ilerlemesini bekler; P2 ise R1’i bırakması için P1’in ilerlemesini bekler. Böylece bekleme zinciri kapanır ve iki işlem de ilerleyemez.

Mini teşhis: Döngüyü kendin bul

Aşağıdaki durumu incele: P1, R1’i tutuyor ve R2’yi istiyor. P2, R2’yi tutuyor ve R1’i istiyor. Önce her process’in beklediği kaynağı yaz, ardından talep ve tahsis kenarlarını sırala. Son olarak bir düğümden başlayıp başladığın düğüme dönerek döngüyü bulmaya çalış.

Beklenen sonuç: P1’in beklediği kaynak R2’dir; R2 ise P2’dedir. P2’nin beklediği kaynak R1’dir; R1 de P1’dedir. Bu nedenle zincir P1 → R2 → P2 → R1 → P1 biçiminde kapanır.

Temel düzeyde bu döngü, deadlock teşhisi için güçlü bir işarettir. Ancak yorum yapılırken kaynakların nasıl paylaşıldığı ve tahsis modelinin nasıl çalıştığı da dikkate alınır. Bu yüzden yalnızca çizimdeki bir döngüye değil, deadlock’un dört gerekli koşulunun birlikte oluşup oluşmadığına bakmak gerekir.

Deadlock ve Starvation Arasındaki Fark Nedir?

Deadlock ve Starvation Arasındaki Fark Nedir?

Deadlock durumunda işlemler karşılıklı bekleme döngüsüne girer. Döngüdeki işlemlerden biri beklediği kaynağı alamadığı için ilerleyemez; diğer işlemler de aynı zincirin parçası olduğu için sistemin ilgili bölümü kilitlenir. Starvation durumunda ise bir işlem uzun süre kaynak veya işlemci zamanı alamazken sistemdeki diğer işlemler çalışmaya devam edebilir.

Soru Deadlock Starvation
Kimler bekliyor? İşlemler karşılıklı olarak birbirini bekler. Genellikle belirli bir işlem uzun süre bekler.
Sistem genelinde ilerleme var mı? İlgili işlemler ilerleyemez. Diğer işlemler ilerlemeye devam edebilir.
Beklemenin nedeni nedir? Kaynaklar arasında bekleme döngüsüdür. Adaletsiz planlama veya kaynak paylaşımıdır.

Deadlock’un oluşması için mutual exclusion, hold and wait, no preemption ve circular wait koşullarının birlikte değerlendirilmesi gerekir. Starvation ise bu dört koşulun tamamını gerektirmez; önceliklendirme, işlemci zamanının adil dağıtılmaması veya bir kaynağın sürekli olarak başkalarına verilmesi gibi nedenlerle ortaya çıkabilir.

Bu ayrımı pekiştirmek için farklı bekleme senaryolarında “Kim bekliyor, kim ilerliyor ve bekleme döngüsü var mı?” sorularını adım adım yanıtlayabilirsin. Algoritmik düşünme becerini ölçmeye yönelik bilgi testini çözmek, bu tür ilişkileri grafik ve koşul mantığıyla değerlendirmene yardımcı olabilir.

Deadlock Önleme, Kaçınma ve Tespit Yaklaşımları Nasıl Ayrılır?

Deadlock yönetiminde üç temel yaklaşım vardır: önleme, kaçınma ve tespit. Önleme yaklaşımı, deadlock için gerekli dört koşuldan en az birinin oluşmasına izin vermemeye çalışır. Kaçınma yaklaşımı, bir kaynak talebi karşılanmadan önce sistemin güvenli durumda kalıp kalmayacağını değerlendirir. Tespit yaklaşımı ise deadlock oluştuktan sonra bekleme ilişkilerini inceleyerek kilitlenmeyi bulmayı hedefler.

Yaklaşım Ne zaman devreye girer? Hangi sorunu çözmeye çalışır? Temel karar mantığı nedir?
Önleme Kaynak tahsisi ve kilit kullanımı tasarlanırken Deadlock oluşmasına yol açabilecek koşulları baştan sınırlamak Dört koşuldan en az birinin birlikte gerçekleşmesini engelle
Kaçınma Process yeni bir kaynak talep ettiğinde Yeni tahsisin sistemi riskli bir duruma sürüklemesini önlemek Talebi ancak sistem güvenli durumda kalacaksa karşıla
Tespit Kaynaklar tahsis edildikten ve bekleme başladıktan sonra Oluşmuş deadlock durumunu bulmak Bekleme ilişkilerini ve döngüleri inceleyerek kilitlenen process’leri belirle

Güvenli durum, sistemdeki mevcut kaynak tahsislerinin uygun bir sırayla tamamlanabilme ihtimalinin bulunmasıdır. Bu kavram, deadlock’un kesinlikle oluşmayacağı anlamına gelmez; yalnızca mevcut kararın sistemi doğrudan çözümsüz bir bekleme döngüsüne sokmadığını ifade eder. Bu nedenle kaçınma, her talebi otomatik olarak reddetmek yerine kaynak talebinin sistem üzerindeki etkisini değerlendirmeye dayanır.

Sınavda Deadlock Teşhisi İçin Adım Adım Kontrol Listesi

Sınav sorularında deadlock teşhisi yaparken yalnızca grafikte bir ok veya döngü görmek yeterli değildir. Önce process’lerin hangi kaynakları tuttuğunu ve hangilerini beklediğini belirlemeli, ardından dört gerekli koşulu birlikte sınamalısın.

  1. Process ve kaynakları belirle: Örnekte P1 ve P2 process’leri, R1 ve R2 kaynakları olsun.
  2. Tutulan kaynakları yaz: P1, R1’i; P2 ise R2’yi tutuyor.
  3. Beklenen kaynakları yaz: P1, R2’yi; P2 ise R1’i bekliyor.
  4. Mutual exclusion durumunu kontrol et: R1 ve R2 aynı anda yalnızca bir process tarafından kullanılabiliyorsa bu koşul sağlanır.
  5. Hold and wait durumunu kontrol et: Her iki process de elindeki kaynağı bırakmadan başka bir kaynak bekliyorsa bu koşul vardır.
  6. No preemption koşulunu kontrol et: Kaynaklar process’lerden zorla alınamıyor, yalnızca process kaynağı bıraktığında serbest kalıyorsa koşul sağlanır.
  7. Circular wait durumunu ara: P1’in R2’yi, R2’nin P2’yi; P2’nin R1’i, R1’in de P1’i beklediği zinciri kur.
  8. Dört koşulu birlikte değerlendir: Dört koşulun tamamı aynı anda sağlanıyorsa deadlock sonucunu gerekçelendir.
  9. Eksik koşumu açıkla: Döngü yoksa veya dört koşuldan biri sağlanmıyorsa neden deadlock denemeyeceğini belirt.

Senaryonun kaynak tahsis tablosu şu şekilde özetlenebilir:

Process Tuttuğu kaynak Beklediği kaynak
P1 R1 R2
P2 R2 R1

Kaynak tahsis grafiğinde bekleme ilişkisi basitleştirilerek şöyle gösterilebilir:

P1 --bekliyor--> R2 --tahsis edilmiş--> P2
P2 --bekliyor--> R1 --tahsis edilmiş--> P1

Bekleme döngüsü: P1 → P2 → P1

Bu döngüde P1, P2’nin tuttuğu R2’yi; P2 ise P1’in tuttuğu R1’i beklemektedir. Her iki process de elindeki kaynağı bırakmadan ilerleyemediği için sistem bu iki process açısından kilitlenmiştir.

Deadlock ve işletim sistemi gibi konular ilgini çekiyorsa, yazılım ve bilgisayar bilimi alanlarının sana ne kadar uygun olduğunu görmek için ücretsiz kariyer testini çözebilirsin.

Sık Sorulan Sorular

Deadlock oluşması için dört koşulun dördü de aynı anda gerekli midir?

Evet. Mutual exclusion, hold and wait, no preemption ve circular wait koşullarının dördü birlikte sağlanmadıkça klasik anlamda deadlock oluşmaz. Koşullardan biri eksikse bekleme yaşanabilir; ancak bu durum doğrudan deadlock olarak adlandırılmaz.

Kaynak tahsis grafiğinde döngü görmek her zaman deadlock anlamına gelir mi?

Her zaman değil. Tek örnekli kaynaklarda döngü deadlock için güçlü bir göstergedir; ancak birden fazla örneği bulunan kaynaklarda döngünün gerçekten çözümsüz olup olmadığı ayrıca değerlendirilmelidir. Bu nedenle grafiğin yanında kaynakların sayısı ve process’lerin talepleri de incelenmelidir.

Deadlock ile starvation arasındaki en temel fark nedir?

Deadlock’ta process’ler birbirlerini beklediği için grup hâlinde ilerleyemez. Starvation’da ise bir process uzun süre kaynak veya işlem sırası alamaz; sistemin diğer process’leri çalışmaya devam edebilir.

Deadlock önleme ile deadlock tespiti arasındaki amaç farkı nedir?

Deadlock önleme, kilitlenme oluşmadan önce gerekli koşullardan birini sınırlamayı amaçlar. Deadlock tespiti ise kilitlenme oluştuktan sonra bekleme ilişkilerini inceleyerek hangi process’lerin bu durumdan etkilendiğini belirlemeye çalışır.

Deadlock sorularında doğru sonuca ulaşmanın anahtarı, grafikteki döngüyü görmekle yetinmeyip dört koşulu tek tek ve birlikte değerlendirmektir.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara