Test ve set için fikir birliği numarası neden 2?


17

Wikipedia'ya göre ,

Test ve ayarlama işlemi, iki eşzamanlı işlemden fazla olmamak üzere, beklemesiz uzlaşma problemini çözebilir.

Neden ikiden fazla işlem için sorunu çözemiyor?

Yanıtlar:


17

Aynı sayfada olduğumuza emin olmak için, önce bu üç tanımı ele alalım:

Tanım. Test ve set, bir iş parçacığının eski değeri elde ettiği ve 1 yazdığı bazı ikili kayıtlarda (sadece 0 ve 1'in olası değerler olduğunu söyleyelim) bir okuma-değiştirme-yazma talimatıdır.

Tanım. Konsensüs arasında ulaşıldığında bütün IFF parçacığı parçacığı aynı değere (tutarlılık gereksinimi) karar ve tüm ipler aslında konuları birinde (geçerlilik gereksinimi) tarafından önerilmiştir bir değere karar.nnn

Definition. Her yöntem çağrısının sonlu sayıda adımda tamamlanması halinde bir konsensüs protokolü beklemez.

Şimdi iki kanıt taslağını takip edin.

İddia 1. Test ve setin mutabakat sayısı en az 2'dir. Kanıt. Diyelim ki fikir birliğine ulaşması gereken 0 ve 1 numaralı dişlerimiz var. Bunu, her bir iş parçacığının aşağıdaki konsensüs protokolünü izlemesine izin vererek yapabiliriz:

  1. Önerilen değerinizi ; burada t , iş parçacığı kimliğidir ve A , 2 boyutlu bir dizidir.bir[t]tbir
  2. R ve 0 başlatıldığında , bazı kayıtlarında test ve ayar talimatlarını uygulayın .R,R,
  3. Dönüş değeri 0 ise, önce sizdiniz: dönüş . Aksi takdirde, ikincisiniz: A dönüşü [ | t - 1 | ] .bir[t]bir[|t-1|]

Konsensüs ve bekleme-solukluğun sağlandığını kendiniz doğrulayabilirsiniz.

(Bir sonraki kanıt için, bazı kanıtları ve tanımları yerleştireceğim çünkü takip etmeyi kolaylaştıracağını düşünüyorum.)

İddia 2. Test ve setin konsensüs sayısı en fazla 2'dir. Kanıt. Çelişki ile. Sırasıyla a , b ve c değerlerine karar vermek isteyen üç , B ve C iş parçacığına sahip olduğumuzu ve test ve set (ve atomik okuma ve yazma) kullanılarak uygulanan geçerli bir bekleme gerektirmeyen konsensüs protokolümüz olduğunu varsayalım ).birBCbirbc

Konsensüs sürecini yönlendirilmiş bir ağaç olarak görselleştirebiliriz, burada:

  • Kök, iş parçacıklarının hiçbirinin 'hareket etmediği' durumdur;
  • Bir düğümün sol çocuğu, hareketinden sonra ortaya çıkan durumu , orta çocuk B'nin hareketinden sonra ortaya çıkan durumu ve sağ çocuk C'nin hareketinden sonra ortaya çıkan durumu temsil eder ;birBC
  • Bir yaprak düğümü, tüm dişlerin bittiği bir durumu temsil eder. Bir yaprak düğümü ile ilişkili bir değer , b ya da c değeri üzerinde bir değer, söz konusu çalıştırma için karar verildi bağlıdır.birbc

Tanım. Eğer uzlaşma sürecinin sonucu henüz belirlenmediyse, bir devletin çok değerlikli olmasına izin verin . Başka bir deyişle, kalan hamlelerin olası tüm araya sokmaları aynı sonuca yol açmaz. Bir durum olsun tek değerlikli konsensüs sürecinin sonucu ne olduğu tespit edilmiştir.

Kök çok değerlidir. Kanıt. Sadece bir iş parçacığı etkinse ve diğer iş parçacıkları sonsuza kadar uykuda kalırsa , X sonlu sayıda adımda bitirir (bekleme silik varsayımı ile garanti edilir) ve x'e karar verir (çünkü bu değere ve sadece karar konsensüs geçerlilik şartı sağlanacaktır). Bizim durumumuz için, a , b ve c'nin hepsi olası sonuçlardır. XXxbirbc

Tanım. Kritik bir aşamasında olan bir hareket ek özelliği ile, çok değerli olduğu bir durum olsun belirleyecek bir ve bir hareket B belirleyecektir b .birbirBb

Kritik bir durum var. Kanıt. Yukarıdan çok değerlikli bir durumda başladığımızı biliyoruz. Let hiç hiçbir hamle yapmak. Uzun ya Olarak A veya B , bir tek değerli bir devlet haline ağacı zorlamaz, bir hamle yapalım. Wait-freeness ağacın sonlu olduğunu garanti eder, bu nedenle bir noktada kritik bir durumla karşılaşılmalıdır. CbirB

Şimdi kritik bir durumda olduğumuz bir senaryo düşünün. Orada en az iki olasılık:

1) ilerleyişi (böylece belirleme yapar a ) ve durur. B sonra hareketini yapar ve durur. Sonraki C bitene kadar çalışır ve sonunda a .birbirBCbir

2) hareketini yapar ( b'yi belirler ) ve durur. Sonraki C bitene kadar çalışır, sonunda b . A hamle yapmaz.BbCbbir

Atomik okumalar ve yazmaların fikir birliği 1 olduğundan, ve B'nin hareketleri aynı kayıtta test ve ayar talimatları olmak zorundaydı (eğer kayıtlar farklıysa, C , A ve B'nin hamleleri oldu). Gönderen C biz bu olmalı, böylece 'ın bakış açısından, o zaman, senaryolar 1 ve 2, ayırt edilemeyen C hem karar a ve b . Bu imkansız. birBCbirBCCbirb

Test ve set talimatının hem İstem 1 hem de 2'den gelen 2 numaralı fikir birliğine sahip olması.


Cevabınız için teşekkürler Roy. Bu konuda açıklamanız kadar açık olan herhangi bir materyale işaret edebilir misiniz? :). Bulduğum tüm materyaller çok resmi idi.
sanatana

@sanatana: Sorunuza cevap vermeyi unuttum, üzgünüm. Hâlâ alakalı ise: Herlihy ve Shavit'in 'Çok İşlemcili Programlama Sanatı' (özellikle bölüm 5) ve Fokkink tarafından Eşzamanlılık ve Çok İş Parçalığı kursunun ders materyali: cs.vu.nl/~tcs/cm (esas alınmıştır) Herlihy ve Shavit'in kitabı). Sayfanın alt kısmında Herlihy'in video derslerine bir bağlantı bulacaksınız (27 Eylül dersi fikir birliği ile ilgilidir). Malzemeyi inceledikten sonra, bu tür bir kanıt için bir ikili ağaç düşünmenin yeterli olduğunu anlıyorum. Belki daha sonra cevabımı güncelleyeceğim.
Roy O.

@RoyO. Cevabınızın 3 süreçle fikir birliğine varmanın hiçbir yolu olmadığını gösterdiğini görüyorum. Herhangi bir şekilde hala fikir birliğine varabileceğimizi kanıtlamış olsaydık, ama bu protokolün beklemeyeceğini anlamak istedim.
nihai neden

6

Wikipedia makalesinde size soruyu cevaplayan bir referans var, ama belki de 26 sayfalık makaleyi okumak istemezsiniz. Test ve setin 3 işlem için ikili konsensüsü çözemediğini gösteren (oldukça teknik) kanıtın basitleştirilmiş bir versiyonunu vereceğim. Bu tür bir argüman fikir birliği sayılarının ispatlanmasında yaygın olarak kullanılmaktadır.

Diyelim ki, 3 işlem için TAS kayıtlarını kullanan bir konsensüs algoritmamız var.

Herhangi bir zamanda, her işlemin yürütülmeye hazır bir hamlesi (talimatı) olacaktır. Bu üç talimattan hangisinin uygulanacağı belirleyici değildir.

İki değerlikli bir durumda olduğumuzu (hem 0 hem de 1 kararının hala mümkün olduğu bir durum) ve hangi işlemden sonra hareket ederse, sonraki durumun tek değerli olacağını varsayalım. Böyle bir duruma eninde sonunda beklemesiz durum sağlanmalıdır.

İşlem 1 hareket ederse durumun 0-valent olacağını ve işlem 2 hareket ederse durumun 1-valent olacağını varsayalım. Her iki hareket de aynı kayıt üzerinde bir TAS işlemi (veya en azından bir tür yazma) olmalıdır, çünkü farklı kayıtlarda TAS işlemleri olsaydı, işlem 1'in önce mi yoksa işlem 2'nin önce mi hareket ettiğini anlayamadık.

Bu iki olası yürütmeyi ele alalım:

  • Önce İşlem 1 hamle, sonra İşlem 2 hamle, ardından İşlem 3 tek başına çalışır
  • İşlem 2 önce hareket eder, ardından işlem 3 tek başına çalışır

Proses 3 açısından bakıldığında, bu durumlar sadece proses 2 tarafından yazılan değeri gördüğü için ayırt edilemez. Ancak, ilk durumda çıktı olarak 0 ve ikinci olarak çıktı olarak 0 vermelidir. Açıkçası, bu bir çelişki.

Süreç 1 ve 2, hangisinin önce hareket ettiğine karar verebilir (çünkü yazmadan önce kayıtta hangi değerin olduğunu görebilirler), ancak üçüncü bir seyirci süreci yapamaz.


1

Test ve setin 3 işlemcili fikir birliğini çözmek için kullanılamayacağını kanıtlamanın bir başka yolu, test ve setin 2 işlemcili fikir birliği kullanılarak uygulanabileceğini göstermektir. Daha sonra, test ve setin 3 işlemcili fikir birliğini çözebileceğini varsaymak bir çelişkiye yol açar: Diyelim ki test ve set 3 işlemcinin fikir birliğini çözebilir; daha sonra test-ve-setini 2-işlemcilerin fikir birliğini kullanarak uygulamasıyla değiştirerek, 2-işlemcilerin fikir birliğini kullanarak imkansız olan 3-işlemcilerin fikir birliği elde edilir. Bu nedenle test etme ve ayarlama, 3 işlemcilerin fikir birliğini çözemez.

2 işlemcili konsensüs kullanarak n-işlemciler için test ve set uygulamak için, işlemcilerin her bir maçın 2 işlemcili konsensüs kullanılarak (bir maçta işlemciler kullanılarak yapıldığı) bir turnuva kullanarak test ve setin kazananı belirlemesine izin verin tanımlayıcılarını önerin ve fikir birliği sonucu onlara kimin kazandığını söyler).


0

Pratik anlamda daha az katı bir konsensüs tanımı yeterli olabilir (burada buna hafif konsensüs diyorum):

Tanım . (A) her bir iş parçacığı aynı değere karar veriyorsa veya değeri bilinmiyorsa, (b) en az bir iş parçacığı değeri biliyor ve (c) bu değer aslında konuları.

Bu nedenle, bu fikir birliği daha hafif anlamında, bazı iş parçacıklarının kararlaştırılan değeri, fikir birliğini bilmemesine izin verir.

Sonuç : Bu daha hafif anlamda test ve setin sonsuz ışık konsensüs sayısı vardır.

İddia : Bu daha hafif duyu pratiktir. Örneğin, kritik bölüme girmek için iş parçacığını seçmek için, tam anlamıyla fikir birliği oluşturmak gerekli değildir. Yani, her bir iş parçacığının seçilip seçilmediğini bilmek zorundadır, ancak seçili değilse, hangisinin seçildiğini bilmek zorunda kalmaz. Başka bir deyişle, karşılıklı dışlama için katı bir konsensüs gerekli değildir, ışık yeterlidir.

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.