Sobes.tech
Junior — Middle

Kaynaklarda karşılıklı kilitlenme nedir ve sistemlerde hangi durumlarda ortaya çıkar?

sobes.tech yapay zeka

AI'dan gelen yanıt

Deadlock (ölü kilit) çoklu görev sistemlerinde, iki veya daha fazla süreç (veya akış) birbirini sonsuza dek engellediği, birbirleri tarafından kullanılan kaynakların serbest bırakılmasını beklediği bir durumdur.

Bu, dört koşulun aynı anda sağlandığında ortaya çıkar:

  1. Karşılıklı dışlama — bir kaynak yalnızca bir süreç tarafından tutulabilir.
  2. Tutma ve bekleme — bir süreç bir kaynağı tutar ve başka bir kaynağı bekler.
  3. Zorla serbest bırakmanın imkansızlığı — bir kaynağın, süreç onu gönüllü olarak serbest bırakmadıkça alınması mümkün değildir.
  4. Döngüsel bekleme — her biri bir kaynağı bekleyen süreçler döngüsü vardır, bu kaynaklar sırasıyla diğer süreçler tarafından tutulmaktadır.

Örnek: A süreci kaynak 1'i aldı ve kaynak 2'yi bekliyor, B süreci ise kaynak 2'yi aldı ve kaynak 1'i bekliyor — her ikisi de sonsuza dek engellenmiş durumdadır.

iOS ve diğer sistemlerde, deadlocklar genellikle senkronizasyonun yanlış kullanımı nedeniyle ortaya çıkar, örneğin, farklı sıralarda birden fazla kilit alınması durumunda.

Deadlockları önlemek için kullanılır:

  • kaynakların edinilmesinde sıralama;
  • zaman aşımı süreleri;
  • diğer kaynaklar beklenirken kaynakların tutulmaması;
  • özel senkronizasyon mekanizmalarının kullanımı.