Kilitlenme ve açlık arasındaki temel fark, bunlar arasındaki neden sonuç ilişkisidir; açlığa neden olan çıkmazdır. Kilitlenme ve açlık arasındaki bir diğer ilginç fark, açlığın bazen bir kilitlenmeden kurtulmaya yardımcı olurken, kilitlenmenin bir sorun olduğudur. Bilgisayar dünyasında, bir bilgisayar programı yazarken, programa gereken hizmeti yerine getirmek için aynı anda çalışacak birden fazla işlem / iş parçacığı olacaktır. Bu nedenle, adil bir sisteme sahip olmak için, programcı tüm süreçlerin / iş parçacıklarının ihtiyaç duydukları kaynaklara ulaşmasını veya yeterli kaynaklara erişmesini sağlamalıdır. Aksi takdirde, bir kilitlenme olacaktır ve daha sonra açlığa neden olacaktır. Genel olarak, adil bir sistem herhangi bir kilitlenme veya açlık içermez. Kilitlenmeler ve açlıklar esas olarak birçok iş parçacığı sınırlı kaynaklar için rekabet ettiğinde ortaya çıkacaktır.
Bir kilitlenme iki iş parçacığı veya işlem birbirinin görevi tamamlamasını beklediğinde ortaya çıkan bir durum. Sadece telefonu kapatacaklar ancak görevlerini asla durdurmayacak veya bitirmeyecekler. Bilgisayar biliminde çıkmazlar her yerde görülebilir. Bir işlem veritabanında, kendi işlemindeki her iki işlem aynı iki bilgi satırını güncelleştirir, ancak ters sırada, bir kilitlenmeye neden olur. Eşzamanlı programlamada, birbiriyle yarışan iki eylem birbirinin ilerlemesini bekleyeceği zaman bir kilitlenme meydana gelebilir. Telekomünikasyon sistemlerinde, sinyal kaybı veya bozulması nedeniyle kilitlenme meydana gelebilir.
Şu anda, kilitlenme çok işlemli sistemlerde ve paralel hesaplamadaki ana sorunlardan biridir. Bir çözüm olarak, bir kilitleme sistemi denir süreç senkronizasyonu yazılımın yanı sıra donanım için de uygulanır.
Tıp bilimi sözlüğünden, açlık, yaşamın sürdürülmesi için gerekli olan ciddi veya toplam besin eksikliğinin bir sonucudur. Benzer şekilde, bilgisayar biliminde açlık karşılaşılan bir problem birden çok iş parçacığı veya işlem aynı kaynağı beklediğinde, buna kilitlenme denir.
Bir kilitlenmeden çıkmak için, işlemlerden veya iş parçacıklarından birinin, diğer iş parçacığının veya işlemin kaynağı kullanabilmesi için vazgeçmesi veya geri dönmesi gerekir. Bu sürekli olarak gerçekleşirse ve aynı işlem veya iş parçacığının, diğer işlemlerin veya iş parçacıklarının kaynağı kullanmasına izin verirken her seferinde vazgeçmesi veya geri dönmesi gerekiyorsa, geri alınan seçilen işlem veya iş parçacığı, açlık denen bir duruma girer. bu nedenle, çıkmazdan kurtulmak için açlık çözümlerden biridir. Bu nedenle, bazen açlık denir bir tür canlı kilit. Çok sayıda yüksek öncelikli işlem veya iş parçacığı olduğunda, daha düşük öncelikli bir işlem veya iş parçacığı her zaman bir kilitlenmede açlıktan ölür.
Gibi birçok açlık olabilir kaynakları aç bırakmak ve CPU üzerinde açlıktan ölmek. Açlık konusunda birçok yaygın örnek vardır. Bunlar, daha ünlü olan Okuyucular-yazar sorunu ve yemek felsefecilerinin problemidir. Spagetti kase ile yuvarlak bir masada oturan beş sessiz filozof var. Çatallar her bitişik filozofun arasına yerleştirilir. Her filozof dönüşümlü olarak düşünmeli ve yemelidir. Bununla birlikte, bir filozof sadece hem sol hem de sağ çatalları olduğunda spagetti yiyebilir.
“Yemek Felsefecileri”
• Kilitlenmede, iki iş parçacığı veya işlem birbirini bekleyecek ve her ikisi de ilerlemiyor.
• Açlık durumunda, iki veya daha fazla iş parçacığı veya işlem aynı kaynağı beklediğinde, bir kişi geri alınır ve diğerlerinin ilk önce kaynağı kullanmasına izin verir ve sonraki açlık iş parçacığı veya işlemi yeniden dener. Bu nedenle, tüm iş parçacıkları veya işlemler her nasılsa ilerleyecektir.
• Bir kilitlenme durumunda, hem yüksek öncelikli iş parçacıkları / işlemler hem de düşük öncelikli iş parçacıkları / işlemler birbirini sonsuza kadar bekleyecektir. Asla bitmez.
• Ancak, açlıktan önce düşük öncelikli olanlar bekleyecek veya geri dönecek, ancak yüksek öncelikli olanlar devam edecek.
• Bir kilitlenme dairesel bir beklemedir.
• Açlık bir tür canlı kilittir ve bazen bir kilitlenmeden kurtulmaya yardımcı olur.
• Bir kilitlenme açlığa neden olur, ancak açlık bir kilitlenmeye neden olmaz.
• Karşılıklı dışlama, bekletme ve bekletme, önleme veya dairesel bekleme nedeniyle bir kilitlenme meydana gelecektir.
• Açlık, kaynakların azlığı, kaynakların kontrolsüz yönetimi ve süreç öncelikleri nedeniyle oluşur.
Özet:
Kilitlenme ve açlık, donanımın yanı sıra programlama sırasında ortaya çıkan veri yarışları ve yarış koşulları nedeniyle ortaya çıkan sorunlardan bazılarıdır. Bir kilitlenme durumunda, iki iş parçacığı, açlıktan bir iş parçacığı geri döner ve diğer iş parçacığının kaynakları kullanmasına izin verirken, yürütmeden sonsuz sayıda birbirini bekler. Bir kilitlenme açlığa neden olurken, açlık bir ipliğin bir kilitlenmeden çıkmasına yardımcı olur.
Görüntüler Nezaket: