---
title: Ölü Kilit (Deadlock) Oluşumu
slug: olu-kilit-deadlock-olusumu-55b3b
url: /detay/olu-kilit-deadlock-olusumu-55b3b
type: article
language: Türkçe
entity:
  primary: Ölü Kilit (Deadlock) Oluşumu
  type: article
  disambiguation: Ölü Kilit (Deadlock): Bilgisayar bilimlerinde kaynak yarışından kaynaklanan sistem kilitlenmesi.  Çözüm ve önleme yöntemlerini öğrenin!
  categories:
    - name: Bilişim Ve İletişim Teknolojileri
      slug: bilisim-ve-iletisim-teknolojileri
      url: /kategori/bilisim-ve-iletisim-teknolojileri
    - name: Yazılım Ve Yapay Zekâ
      slug: yazilim-ve-yapay-zeka
      url: /kategori/yazilim-ve-yapay-zeka
  tags:
    - deadlock
    - Coffman Koşulları
    - Eşzamanlı Programlama
    - Ölü Kilit
    - Kaynak Yönetimi
    - İşletim sistemleri
author: Eda Coşar
created_at: 2025-05-23T02:11:02.663116+03:00
updated_at: 2025-06-14T20:27:33.963921+03:00
image: https://cdn.t3pedia.org/media/uploads/2025/05/22/O9o82neMN4chDhYGDbcfUQnExGBs32yo.jpg
---

# Ölü Kilit (Deadlock) Oluşumu

<!-- CONTEXT: KURE Information Cards for "Ölü Kilit (Deadlock) Oluşumu" -->

## KURE Information Cards

### KURE Information Card: Ölü Kilit Oluşumu

![deadlock.jpg](https://cdn.t3pedia.org/media/uploads/2025/05/22/4aIEK24zGtQ9f2fdb2egfUsEudDlhTc3.jpg)

| Field | Value |
|-------|-------|
| Çözüm Önerileri | Önleme, Algılama, Kurtarma, Kaçınma. |
| Koşullar | Karşılıklı dışlama, Tutma ve bekleme, Önalım yok, Döngüsel bekleme. |
| Tanım | İşlemlerin döngüsel bekleme ile kilitlenmesi. |
| Açıklama | Ölü kilit birden fazla işlemin kaynaklar için birbirini beklemesi ve ilerleyememesi durumudur. Sistem kilitlenmesine yol açar ve kaynak yönetimi ile çözülür. |

<!-- CONTEXT: Article Content for "Ölü Kilit (Deadlock) Oluşumu" -->

## Article Content

Ölü kilit (deadlock), bilgisayar bilimlerinde, özellikle işletim sistemleri ve eşzamanlı programlama alanlarında, birden fazla işlem veya [iş parçacığının](/tr/detay/threads-is-parcaciklari-1a635/llms.txt) (thread) kaynaklara erişim için birbirini beklemesi ve bu nedenle hiçbirinin ilerleyememesi durumudur. Bu durum, sistemin kilitlenmesine yol açarak işlemlerin tamamlanmasını engeller. Ölü kilit, genellikle paylaşılan kaynakların (örneğin, bellek, dosya veya veritabanı kilitleri) yanlış yönetilmesi sonucu ortaya çıkar ve modern bilgi işlem sistemlerinde performans ve güvenilirlik açısından ciddi bir sorundur. Karışıklık matrisi gibi değerlendirme araçlarının aksine, ölü kilit oluşumu doğrudan sistem tasarımı ve kaynak yönetimi ile ilgilidir. Bu makale, ölü kilit oluşumunun nedenlerini, koşullarını, önleme yöntemlerini ve çözüm yaklaşımlarını detaylı bir şekilde ele almaktadır.

### **Ölü Kilit Oluşumunun Temelleri**

Ölü kilit, birden fazla işlemin veya iş parçacığının aynı anda belirli kaynaklara erişmeye çalışması ve bu kaynaklara erişim sırasında birbirlerini engellemesiyle meydana gelir. Örneğin, bir işlem bir kaynağı kilitlemişse ve başka bir kaynağa ihtiyaç duyuyorsa, ancak ikinci kaynak başka bir işlem tarafından kilitlenmişse, her iki işlem de ilerleyemez. Bu durum, sistemde bir döngüsel bekleme (circular wait) oluşturur ve işlemlerin tamamlanması mümkün olmaz.

##### **Ölü Kilit Oluşumunun Koşulları**

Ölü kilit oluşumu için dört temel koşulun aynı anda gerçekleşmesi gerekir, bunlar Coffman koşulları olarak bilinir:

- **Karşılıklı Dışlama (Mutual Exclusion)**: En az bir kaynağın yalnızca bir işlem tarafından kullanılabilir olması gerekir. Bu, kaynakların paylaşılamaz olduğu anlamına gelir.
- **Tutma ve Bekleme (Hold and Wait)**: Bir işlem, halihazırda en az bir kaynağı tutarken başka bir kaynağı beklemelidir.
- **Önalım Yok (No Preemption)**: Kaynaklar, yalnızca onları tutan işlem tarafından serbest bırakılabilir; başka bir işlem veya sistem tarafından zorla alınamaz.
- **Döngüsel Bekleme (Circular Wait)**: İşlemler arasında bir döngü oluşur; her işlem, bir sonraki işlemin tuttuğu bir kaynağı bekler ve bu döngü kapanır.

Bu dört koşulun tamamı gerçekleştiğinde ölü kilit kaçınılmazdır. Ölü kilit oluşumunu anlamak ve önlemek için bu koşulların her birini ayrı ayrı incelemek önemlidir.

![Image](https://cdn.kureansiklopedi.com/media/uploads/2025/05/22/54yr7ZcHeg9zcne3QEvyQunWrJLWnQUc.jpg)
*İki işlemin (P1 ve P2) iki kaynağı (R1 ve R2) tutarak ve birbirinin kaynağını bekleyerek oluşturduğu bir ölü kilit senaryosunu gösteren diyagram. (Görsel yapay zeka tarafından üretilmiştir.)*

### **Ölü Kilit Oluşumunun Nedenleri ve Örnekleri**

Ölü kilitler, özellikle çoklu iş parçacığı veya süreç içeren sistemlerde yaygın olarak görülür. Aşağıda, ölü kilit oluşumuna yol açan yaygın senaryolar ve örnekler sunulmaktadır.

##### **İşletim Sistemlerinde Ölü Kilit**

İşletim sistemlerinde, süreçler genellikle dosya, bellek veya giriş/çıkış aygıtları gibi kaynaklara erişim için yarışır. Örneğin, iki süreç (P1 ve P2) iki kaynağı (R1 ve R2) kullanıyorsa ve P1, R1’i kilitleyip R2’yi beklerken, P2, R2’yi kilitleyip R1’i bekliyorsa, bir ölü kilit oluşur. Bu durum, özellikle veritabanı sistemlerinde [kilitlenme (locking) mekanizmalarında](/tr/detay/kilit-mekanizmasi/llms.txt) sıkça karşılaşılan bir sorundur.

##### **Veritabanı Sistemlerinde Ölü Kilit**

[Veritabanı yönetim sistemlerinde](/tr/detay/veritabani-yonetim-sistemleri-7ffb7/llms.txt), işlemler (transactions) aynı anda birden fazla tabloya veya satıra erişmeye çalıştığında ölü kilit oluşabilir. Örneğin, bir işlem bir tabloyu güncellerken başka bir tabloya erişmek için bekliyorsa ve ikinci işlem tam tersi bir kilit sırası izliyorsa, her iki işlem de kilitlenir. Modern veritabanı sistemleri, bu tür durumları tespit etmek ve çözmek için ölü kilit algılama algoritmaları kullanır.

##### **Programlama Düzeyinde Ölü Kilit**

[Eşzamanlı programlamada](/tr/detay/threads-is-parcaciklari-b70ce/llms.txt), özellikle çok iş parçacıklı uygulamalarda, kilit (lock) mekanizmaları yanlış kullanıldığında ölü kilitler oluşabilir. Örneğin, Java’da iki iş parçacığı, birbirinin sahip olduğu bir monitörü (monitor) beklediğinde ölü kilit meydana gelebilir. Aşağıdaki basit bir Java kodu örneği, ölü kilit oluşumunu göstermektedir:

Bu kodda, iki iş parçacığı farklı sıralarda iki kaynağı kilitlemeye çalışır ve bu, bir ölü kilit durumuna yol açar.

### **Ölü Kilit Önleme ve Çözüm Yöntemleri**

Ölü kilitlerin oluşmasını önlemek veya çözmek için çeşitli stratejiler geliştirilmiştir. Bu stratejiler, sistem tasarımına ve uygulama alanına bağlı olarak farklılık gösterir.

##### **Ölü Kilit Önleme**

Ölü kilit önleme, Coffman koşullarından en az birinin gerçekleşmesini engelleyerek ölü kilit oluşumunu tamamen ortadan kaldırmayı amaçlar:

- **Karşılıklı Dışlamayı Kaldırma**: Kaynakların paylaşıabilir hale getirilmesi, örneğin yazma yerine salt okunur erişim sağlanması, ölü kilit riskini azaltabilir. Ancak bu, her zaman pratik değildir.
- **Tutma ve Beklemeyi Önleme**: Tüm kaynakların bir işlem başlamadan önce tahsis edilmesi, tutma ve bekleme koşulunu ortadan kaldırır. Bu yaklaşım, kaynak kullanımını verimsiz hale getirebilir.
- **Önalımı Sağlama**: Kaynakların işlemlerden zorla alınabilmesi, ölü kilit oluşumunu engelleyebilir. Ancak bu, işlemlerin durumunu koruma zorlukları yaratabilir.
- **Döngüsel Beklemeyi Önleme**: Kaynaklara erişim sıralarını standartlaştırarak (örneğin, tüm işlemler kaynakları aynı sırayla kilitlemelidir), döngüsel bekleme engellenebilir. Bu, genellikle kilit sıralama (lock ordering) teknikleriyle uygulanır.

##### **Ölü Kilit Algılama ve Kurtarma**

Bazı sistemler, ölü kilitleri önlemek yerine algılamayı ve kurtarmayı tercih eder. Ölü kilit algılama, kaynak tahsis grafikleri (resource allocation graphs) veya bekleme zincirleri analizi gibi yöntemlerle gerçekleştirilir. Algılandığında, sistem genellikle bir işlemi sonlandırarak veya kaynakları serbest bırakarak kurtarma yapar. Örneğin, veritabanı sistemlerinde bir işlem geri alınabilir (rollback) ve yeniden başlatılabilir.

##### **Ölü Kilitten Kaçınma**

Ölü kilitten kaçınma, kaynak tahsis kararlarını dinamik olarak değerlendirerek yapılır. [Bankacı Algoritması](/tr/detay/deadlock-formation-4bc3f/llms.txt) (Banker’s Algorithm), işletim sistemlerinde bu amaçla kullanılan ünlü bir yöntemdir. Bu algoritma, kaynak taleplerini analiz ederek sistemin güvenli bir durumda kalmasını sağlar.

### **Sınırlamalar ve Dikkat Edilmesi Gerekenler**

Ölü kilit yönetimi, sistem performansını ve karmaşıklığını etkileyebilir. Örneğin, önleme yöntemleri kaynak kullanımını verimsiz hale getirebilir veya sistem tasarımını karmaşıklaştırabilir. Algılama ve kurtarma yöntemleri ise ek hesaplama yükü getirir ve işlemlerin sonlandırılması veri kaybına yol açabilir. Ayrıca, gerçek zamanlı sistemlerde ölü kilitlerin hızlı bir şekilde çözülmesi kritik önem taşır.

<!-- CONTEXT: Academic Sources and References for "Ölü Kilit (Deadlock) Oluşumu" -->

## Academic Sources and References

1. Kurt, Burak. “İşletim Sistemleri Ders Notları: Ders 5.” İstanbul Teknik Üniversitesi, 2015. https://web.itu.edu.tr/bkurt/Courses/os/lecture5.pdf. Erişim tarihi: 23 Mayıs 2025.
2. Çankaya, İsmail. “Ölümcül Kilitlenme (DEAD LOCK) Nedir ve Nasıl Önlenir?” Csharpnedir.com, 2010. https://www.csharpnedir.com/articles/read/?id=742&title=%C3%96l%C3%BCmc%C3%BCl%20Kilitlenme(DEAD%20LOCK)%20Nedir%20ve%20Nas%C4%B1l%20%C3%96nlenir. Erişim tarihi: 23 Mayıs 2025.