Test ve ayar veya takas olmadan donanım kilidi uygulamaları var mı?


19

Kilitler genellikle test ve ayar ve makine düzeyinde talimatlar aracılığıyla uygulanır. Bunları kullanmayan başka uygulamalar var mı?

Ayrıca, kritik bölüm sorununa yönelik tüm donanım seviyesi çözümlerinin yalnızca devre dışı bırakma, test etme ve ayarlama ve takas olarak üç kategoriye ayrılabileceğini söyleyebilir miyiz?

Yanıtlar:


13

Evet, yalnızca bellek yükleme ve saklama talimatlarıyla karşılıklı dışlama uygulayabilirsiniz. Bu soruna art arda daha basit çözümler geliştirme geleneği uzun süredir var.

Bildiğim en eski versiyon olan "Dekker'ın çözümü", Dijkstra, Edsger W'de tanıtıldı ; F. Genuys, ed., Programlama Dilleri: NATO İleri Eğitim Enstitüsü , s. 43-112, Academic Press, 1968 . O zamandan beri onlarca çözüm var. Daha dikkate değer olanlardan sadece birkaçını tartışacağım.

Lamport, Leslie; "Dijkstra'nın Eşzamanlı Programlama Problemine Yeni Bir Çözüm", Comm ACM 17 (8): 453-455, 1974 , "Fırın algoritması" nı sunar (çünkü insanların sırayla olacağı sırayı belirlemek için sayı alan analojisine dayanır) fırın mağazasında servis). Bu algoritmanın özellikle dikkate değer özelliklerinden biri, karşılıklı dışlama problemini çözmek için hiçbir donanım atomisitesinin gerekli olmadığını göstermesidir. Aynı konuma çakışan yazmalar herhangi bir değer döndürebilir ve algoritma yine de çalışır. Lamport bunu ana sayfasındaki makalenin açıklamasında biraz tartışıyor .

Peterson'ın çözümü, Peterson, GL; "Karşılıklı dışlama sorunu hakkındaki mitler," Inf. Proc. Lett. , 12 (3): 115-116, 1981 , anlaşılması kolay ve gerekçelendirilmesi için özel olarak tasarlanmış bir metindir . Sonunda, benim favorim Lamport, Leslie; "Hızlı Karşılıklı Dışlama Algoritması," ACM Trans. Zorunlu. Sist. , 5 (1): 1-11, 1987. Bu makalede Lamport, kritik bölüm için çok az çekişme olduğu (yaygın) durumda karşılıklı dışlama sorununa bir çözüm optimize etmeye çalışıyordu. Karşılıklı dışlanma ve kilitlenme özgürlüğünü garanti eder, ancak adaleti garanti etmez. Bu, (normal), N işlemcilerini çekişme olmadığında O (1) zamanda senkronize edebilen normal okuma ve yazma kullanan ilk karşılıklı dışlama algoritmasıdır. (Çekişme olduğunda, O (N) testine geri döner.) Çekişmesiz durumda yapabileceğiniz en iyi şeyin yedi hafıza erişimi olduğunu resmi olmayan bir şekilde gösterir. (Dekker ve Peterson her ikisi de 4 ile yaparlar, ancak sadece 2 işlemciyi işleyebilirler, algoritmalarını N'ye genişlettiğinizde fazladan bir O (N) erişimi eklemeleri gerekir.)

Görünüşe göre, sadece bellek okuma ve yazma kullanarak karşılıklı dışlama çözme problemi üzerinde çalışan insanlar, diğer insanların problemi ve çözümlerini anlama (eksikliği) yüzünden hayal kırıklığına uğrarlar. Bu kısmen Peterson'ın makalesi başlığıyla ("Karşılıklı dışlama sorunuyla ilgili mitler") ve kısmen Lamport'un 1991'de yayınladığı kısa bir notla gösterilmiştir: Lamport, Leslie; "Karşılıklı Dışlama Sorunu Çözüldü", Comm ACM 34 (1): 110, 1991 , Lamport ana sayfasında biraz acı bir şekilde anlatılıyor .

İkinci sorunuzu cevaplamak için: Hayır. Kritik bölüm sorununa üçten fazla donanım seviyesi çözümü kategorisi vardır (sadece yükleri ve depoları kullanmak bir tanesidir, diğerleri karşılaştırma ve takas talimatları, yük bağlantılı / mağaza koşullu içerir talimatlar (atomisiteyi test etmek için önbellek tutarlılık protokolünü kullanarak) ve getirme ve ekleme talimatları.) Başka bir anlamda gerçekten sadece bir çözüm kategorisi vardır: küresel bir olay sırasını kabul etmek için bir dizi asenkron işlem almayı içerenler .

(Bu cevabın, çok farklı bir soru için verdiğim daha önceki bir cevabın (kapsamlı) bir düzenlemesi olduğunu unutmayın .)


ll / sc, elbette, sadece kilit alımı yerine tüm kritik bölümü kapsayan daha genel bir işlem belleğine genişletilebilir. Donanımı garantileyen şey arasındaki ayrım da önemli görünüyor; ileri ilerleme bazen garanti edilir (yani, bir ajan belirli bir zamanda bir kilit elde etmek için yarışı kazanacaktır), ancak adaletle ilgili zayıf kavramların bile genellikle yazılıma (biraz anlaşılır şekilde) bağlı olduğu görülmektedir.
Paul A. Clayton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.