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?
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:
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.n
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:
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 ).
Konsensüs sürecini yönlendirilmiş bir ağaç olarak görselleştirebiliriz, burada:
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. ◻
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 .
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. ◻
Ş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 .
2) hareketini yapar ( b'yi belirler ) ve durur. Sonraki C bitene kadar çalışır, sonunda b . A hamle yapmaz.
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. ◻
Test ve set talimatının hem İstem 1 hem de 2'den gelen 2 numaralı fikir birliğine sahip olması.
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:
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.
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).
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.