Kilit konvoyu ile kilit / ileti dizisi çekişmesi arasındaki fark nedir?

Aug 18 2020

Wikipedia'dan kilit konvoyunda:

Bir kilit konvoyu, eşit önceliğe sahip birden fazla iş parçacığı aynı kilit için tekrar tekrar mücadele ettiğinde oluşur. Kilitlenme ve canlı kilit durumlarından farklı olarak, bir kilit konvoyundaki ipler ilerler; ancak, bir iş parçacığı kilidi elde etmeye her çalıştığında ve başarısız olduğunda, zamanlama kuantumunun kalanını bırakır ve bir bağlam anahtarını zorlar. Tekrarlanan bağlam anahtarlarının ek yükü ve zamanlama miktarının yetersiz kullanılması genel performansı düşürür.

Wikipedia'dan kilit / ileti dizisi çekişmesi üzerine:

kilit çekişmesi: bu, bir işlem veya iş parçacığı başka bir işlem veya iş parçacığı tarafından tutulan bir kilidi almaya çalıştığında ortaya çıkar. Mevcut kilitler ne kadar ince taneli olursa, bir işlemin / iş parçacığının diğeri tarafından tutulan bir kilit talep etme olasılığı o kadar düşüktür. (Örneğin, tüm tablo yerine bir satırı veya tüm satır yerine bir hücreyi kilitleme.);

Biri lütfen bunların her ikisini de biraz daha ayrıntılandırabilir mi? Bana öyle geliyor ki esasen aynılar ya da değilse, o zaman kesinlikle kilit çekişmesi kilit konvoyuna neden olur. Durum bu mu yoksa ayrı ve bağımsız kavramlar mı? Ayrıca, "zamanlama kuantumunun geri kalanını bırakır ve bir bağlam anahtarını zorlar" cümlesini anlamıyorum.

Yanıtlar

1 ajit Sep 03 2020 at 13:30

Bir kilit meşgul olduğunda kilitleme algoritmalarında kullanılan iki engelleme yaklaşımı vardır . döndürme bekleme veya engelleme (uyku moduna geç, işlemciyi bırak ve işletim sisteminin iş parçacığı uyandırmasını ve yeniden programlamasını bekle). Engelleme stratejisi kullanıldığında, belirtildiği gibi konvoyu kilitleyin.
İşletim sistemi iş parçacıklarını zaman dilimlerine göre bir çekirdek üzerinde planlar . Her iş parçacığı, belirli bir zaman dilimi için işlemciyi alır, örneğin 2 ms. Round-robin'de işletim sistemifashion hazır sıradaki tüm konuları tek tek planlayın. Programı aldıktan ve yürütmeye başladıktan sonra bir iş parçacığı söylerseniz, diyelim ki 100 bizden sonra, bir kilit isteyin. Kilit meşgulse, iş parçacığı kilidi alamaz, işlemciyi bloke eder ve işlemciden vazgeçer. Yani kalan 1.9ms (2ms-100us) zaman dilimi iş parçacığı tarafından kullanılmaz. Kilit serbestken işletim sistemi tarafından uyandırıldıktan sonra bile, iş parçacığı döngüsel sıradaki sırasını beklemek zorundadır. Aktif iş parçacığı sayısı 100'lerde olabilir.

Kilit çekişmesi konvoy etkisine neden olur.