Kilitlenme Operating Sistemi: Döngüsel Bekleme Nedir (Örnekler)

⚡ Akıllı Özet

İşletim sisteminde kilitlenme, bir dizi işlemin her birinin bir kaynağı elinde tutması ve farklı bir işlemin elinde tuttuğu başka bir kaynağı beklemesi nedeniyle bloke olması ve hiçbir işlemin ilerleyemediği dairesel bir zincir oluşturması durumunda ortaya çıkar.

  • 🔒 Tanım: Bir kilitlenme, her biri bir kaynağı elinde tutan ve birbirini bekleyen süreçleri dondurur.
  • 🧩 Dört koşul: Karşılıklı dışlama, bekle ve tut, öncelik tanımama ve döngüsel bekleme stratejilerinin hepsi birlikte geçerli olmalıdır.
  • 🔁 Dairesel bekleme: Süreçler, her biri bir sonrakinin elinde bulunan kaynağı bekleyen kapalı bir zincir oluşturur.
  • 🛡️ önleme: Dört koşuldan herhangi birinin bozulması, çıkmazın oluşmasını engeller.
  • 🏦 Kaçınma: Bankacı algoritması, sistemin güvenli bir durumda kalmasını sağlamak için kaynak taleplerini kontrol eder.
  • 🤖 Yapay zeka açısı: Makine öğrenimi kilitlenme modellerini tespit eder ve Copilot kilitleme kodunun yazılmasına ve incelenmesine yardımcı olur.

Kilitlenme OperaZamanlama Sistemi

Deadlock Nedir?

çıkmaz bir yerde meydana gelen bir durumdur. işletim sistemi Bir işlem, başka bir bekleyen işlemin talep edilen kaynağı elinde tutması nedeniyle bekleme durumuna girdiğinde kilitlenme meydana gelir. Kilitlenme, çoklu işlemde yaygın bir sorundur; burada birkaç işlem, yazılım kilidi veya yumuşak kilit olarak bilinen, karşılıklı olarak birbirini dışlayan belirli bir kaynak türünü paylaşır.

Bir kilitlenme meydana geldiğinde, ilgili süreçlerin hiçbiri devam edemez, bu nedenle işletim sistemi müdahale edene kadar etkilenen çalışma durur.

Kilitlenme Örneği

  • Gerçek hayattan bir örnek olarak, trafiğin yalnızca tek yönde akmasını gösterebiliriz.
  • Burada köprü bir kaynak olarak kabul edilir.
  • Dolayısıyla, bir kilitlenme meydana geldiğinde, araçlardan biri geri adım atarak (kaynakları önceden kullanarak ve geri alarak) sorun çözülebilir.
  • Kilitlenme durumu oluşması durumunda birkaç aracın geri çekilmesi gerekebilir.
  • Dolayısıyla açlıktan ölmek mümkündür.

Kilitlenme Örneği

Çıkmaza örnek

Dairesel bekleme nedir?

Bir işlem, ikinci bir işlemin elinde bulunan bir kaynağı beklerken, o işlem de üçüncü bir işlemin elinde bulunan bir kaynağı bekler ve bu böyle devam eder. Son işlem, ilk işlemin elinde bulunan bir kaynağı bekleyene kadar bu süreç sürer. Bu, dairesel bir zincir oluşturur.

Örneğin, A süreci A kaynağını talep ederken B kaynağına tahsis ediliyor. Aynı şekilde, B süreci B kaynağını talep ederken A kaynağına tahsis ediliyor. Bu, döngüsel bir bekleme döngüsü oluşturuyor.

Döngüsel bekleme örneği

Örneğin, bir bilgisayarda üç USB sürücü ve üç işlem olduğunu varsayalım. Bu üç işlemin her biri USB sürücülerden birini kullanıyor. Dolayısıyla, her işlem başka bir sürücü istediğinde, her biri hala kullanımda olan bir USB sürücünün serbest bırakılmasını beklediği için üç işlem de kilitlenme durumuna girer. Bu da döngüsel bir zincire yol açar.

Döngüsel bekleme örneği

Döngüsel bekleme örneği

İşletim Sisteminde Kilitlenme Algılama

Kaynak zamanlayıcı, kilitlenme durumunu tespit edebilir. Kaynak zamanlayıcı, işletim sisteminin kaynakları düzenli tutmasına yardımcı olur. tracFarklı süreçlere tahsis edilen tüm kaynakların k'sı. Bir kilitlenme tespit edildiğinde, kaynakların öncelikli olarak kullanılması, bir sürecin geri alınması veya kilitlenmiş süreçlerden bir veya daha fazlasının sonlandırılması yoluyla çözülebilir.

İşletim Sisteminde Kilitlenme Önleme

Bir kilitlenmenin oluşmasını önlemek önemlidir. Sistem, kilitlenmeye yol açmadığından emin olmak için her işlemi yürütülmeden önce kontrol eder. Gelecekte kilitlenmeye neden olabilecek küçük bir işlemin bile yürütülmesine asla izin verilmez.

Çıkmaz önleme, gerekli dört koşuldan en az birinin sağlanamamasını garanti altına alan bir dizi yöntemdir.

Ön Alım Yok

Bir kaynak, ancak o kaynağı elinde bulunduran süreç görevini tamamladıktan sonra, o süreç tarafından gönüllü olarak serbest bırakılabilir.

  • Eğer elinde bazı kaynaklar bulunan bir işlem, kendisine hemen tahsis edilemeyen başka bir kaynak talep ederse, elindeki tüm kaynaklar serbest bırakılır.
  • Öncelik verilen kaynaklar, işlemin beklediği kaynaklar listesine eklenir.
  • Süreç, ancak hem eski kaynaklarını hem de talep ettiği yeni kaynakları geri kazanabildiğinde yeniden başlatılır.

Karşılıklı dışlama

Mutual Exclusion, Mutex'in tam açılımıdır. Özel bir ikili sistem türüdür. semafor Paylaşılan bir kaynağa erişimi kontrol etmek için kullanılır. Uzun süreli öncelik tersine çevirme sorunlarını önlemek için bir öncelik devralma mekanizması içerir ve daha yüksek öncelikli görevleri mümkün olan en kısa süre boyunca bloke eder.

Salt okunur dosyalar gibi paylaşılan kaynaklar asla kilitlenmelere yol açmaz, ancak yazıcılar ve teyp sürücüleri gibi kaynaklara tek bir işlemin özel erişimi gerekir.

Tut ve Bekle

Bu durumda, süreçlerin bir veya daha fazla kaynağı aynı anda beklerken tutması engellenmelidir.

Dairesel Bekleme

Bu yöntem, tüm kaynak türlerinin tam bir sıralamasını zorunlu kılar. Döngüsel bekleme önleme ayrıca, her işlemin kaynakları artan bir numaralandırma sırasına göre talep etmesini gerektirir.

Kilitlenmeden Kaçınma Algorithms

Kilitlenme meydana geldikten sonra harekete geçmek yerine, kilitlenmeyi önlemek daha iyidir. Önleme, kaynakların nasıl kullanılacağı gibi ek bilgilere ihtiyaç duyar. Kilitlenme önleme, her sürecin ihtiyaç duyabileceği her türden maksimum kaynak sayısını beyan ettiği kullanışlı bir modeldir.

Kaçınma Algorithms

Kilitlenme önleme algoritması, döngüsel bekleme durumunun asla oluşmaması için kaynak tahsis durumunu dinamik olarak değerlendirir.

Bir kaynak türünün tek bir örneği için:

  • Kaynak tahsis grafiği kullanın.
  • Grafikteki bir döngü, kilitlenmenin oluşması için gerekli ve yeterlidir.

Bir kaynak türünün birden fazla örneği için:

  • Bir döngü, kilitlenmenin oluşması için gerekli ancak yeterli değildir.
  • Kullan Bankacı algoritması.

Açlık ve Kilitlenme Arasındaki Fark

İşte kilitlenme ve açlık arasındaki bazı önemli farklar:

çıkmaz Açlık
İşlemlerden birinin bloke olması durumunda kilitlenme durumu ortaya çıkar. Açlık durumu, yüksek öncelikli süreçler çalışırken düşük öncelikli tüm süreçlerin bloke olması durumudur.
Çıkmaz sonsuz bir süreçtir. Açlık uzun bir bekleyiş ama sonsuz bir süreç değil.
Her çıkmazda mutlaka açlık vardır. Her kıtlık mutlaka bir çıkmaz anlamına gelmez.
Karşılıklı dışlama, bekleme ve tutma, öncelik tanımama ve döngüsel bekleme durumlarının aynı anda meydana gelmesiyle kilitlenme oluşur. Bu durum, önceliklerin kontrolsüz belirlenmesi ve kaynakların kötü yönetimi nedeniyle ortaya çıkar.

Deadlock'un Avantajları

İşte kilitlenmeyi giderme yöntemini kullanmanın avantajları:

  • Bu durum, tek seferlik yoğun bir faaliyet gerçekleştiren süreçler için iyi sonuç verir.
  • Çıkmaz durumunda önceliklendirmeye gerek yoktur.
  • Durumu kolayca kaydedilebilen ve geri yüklenebilen kaynaklar için uygulandığında kullanışlı bir yöntemdir.
  • Derleme zamanı kontrolleri yoluyla uygulanması mümkündür.
  • Sistem tasarımında sorun çözüldüğü için çalışma zamanı hesaplamasına gerek yoktur.

Deadlock'un Dezavantajları

İşte kilitlenme yönetimi yönteminin dezavantajları:

  • Bu durum, sürecin başlatılmasını geciktirir.
  • Süreçler, gelecekteki kaynak ihtiyaçlarını önceden bilmelidir.
  • Gereğinden çok daha sık önceden müdahale ediyor.
  • Artımlı kaynak taleplerine izin vermez.
  • Bu durum, önceliklendirme kayıplarına yol açabilir.

SSS

Bir kilitlenmenin oluşması için dört Coffman koşulunun aynı anda sağlanması gerekir: karşılıklı dışlama, bekleme ve tutma, öncelik tanımama ve dairesel bekleme. Bu koşullardan herhangi birinin ortadan kalkması, kilitlenmenin oluşmasını engeller.

Önleme, dört koşuldan birini önceden ortadan kaldırarak kilitlenmenin asla oluşmasını engeller. Kaçınma ise koşullara izin verir ancak çalışma zamanı kontrolleri kullanır, örneğin... Bankacı algoritmasıSistemi güvenli bir durumda tutmak için.

Kilitlenme durumunda, bloke olmuş süreçler tamamen durur ve durumlarını asla değiştirmezler. livelockSüreçler sürekli durum değiştiriyor ve işlemciyi kullanıyor ancak yine de ilerleme kaydedemiyor. Kilitlenme, kaynak yetersizliğinin özel bir durumudur.

Çoğu genel amaçlı sistem, aşağıdakiler de dahil olmak üzere: Windows Linux gibi sistemler, devekuşu algoritmasını kullanarak nadir görülen kilitlenmeleri görmezden gelir çünkü önleme maliyetlidir. Veritabanları ve gerçek zamanlı sistemler ise bunun yerine aktif tespit ve kurtarma rutinleri çalıştırır.

Kaynak tahsis grafiği, süreçleri ve kaynakları istek ve atama kenarlarıyla birbirine bağlanan düğümler olarak eşler. Grafikteki bir döngü, olası bir kilitlenmeyi işaret eder; tek örnekli kaynaklarda, bir döngü her zaman bir kilitlenmenin var olduğu anlamına gelir.

Hayır. Gerçek bir kilitlenme kalıcıdır, çünkü bloke olan süreçler kaynaklarını asla kendi başlarına serbest bırakmazlar. İşletim sistemi, bir kaynağı önceden tahsis ederek, geri alarak veya süreçlerden birini sonlandırarak bu kilitlenmeyi çözmelidir.

Makine öğrenimi modelleri, kaynak isteği kalıplarını öğrenerek kilitlenmeleri oluşmadan önce tahmin eder ve işaretler. Yapay zeka zamanlayıcıları, istekleri yeniden sıralayabilir veya kilitleme politikalarını ayarlayabilir; bu da veritabanlarında, bulut platformlarında ve dağıtılmış sistemlerde faydalıdır.

Evet. GitHub Copilot, riskli kilit sıralamasını tespit edebilir, tutarlı kilit edinimi önerebilir ve kilitlenmeleri ortaya çıkaran testler üretebilir. Çıktısını ilk aşama olarak değerlendirin ve eşzamanlılık mantığını uygun analiz araçlarıyla doğrulayın.

Bu yazıyı şu şekilde özetleyin: