परीक्षण और सेट के लिए सर्वसम्मति संख्या 2 क्यों है?


17

विकिपीडिया के अनुसार ,

परीक्षण और सेट ऑपरेशन दो से अधिक समवर्ती प्रक्रियाओं के लिए प्रतीक्षा-मुक्त सर्वसम्मति समस्या को हल कर सकता है।

यह दो से अधिक प्रक्रियाओं के लिए समस्या का समाधान क्यों नहीं कर सकता है?

जवाबों:


17

बस यह सुनिश्चित करने के लिए कि हम एक ही पृष्ठ पर हैं, पहले हम इन तीन परिभाषाओं पर विचार करें:

परिभाषा। टेस्ट-एंड-सेट कुछ बाइनरी रजिस्टर पर एक रीड-संशोधित-राइटिंग इंस्ट्रक्शन है (मान लें कि केवल 0 और 1 संभावित मान हैं) जहां एक थ्रेड पुराना मान प्राप्त करता है और 1 लिखता है।

परिभाषा। आम सहमति के बीच तक पहुँच जाता है iff सभी धागे n सूत्र एक ही मूल्य पर (स्थिरता की आवश्यकता) तय और सभी धागे एक मूल्य है कि वास्तव में धागे में से एक (वैधता आवश्यकता) द्वारा प्रस्तावित किया गया था पर फैसला।nn

Defintion। एक सर्वसम्मति प्रोटोकॉल प्रतीक्षा-मुक्त है यदि प्रत्येक विधि कॉल चरणों की एक सीमित संख्या में समाप्त होती है।

अब दो प्रूफ स्केच का पालन करें।

दावा 1. परीक्षण और सेट की सर्वसम्मति संख्या कम से कम 2. प्रमाण। मान लीजिए कि हमारे पास दो धागे 0 और 1 हैं जिन्हें आम सहमति तक पहुंचने की आवश्यकता है। हम प्रत्येक थ्रेड को नीचे सर्वसम्मति प्रोटोकॉल का पालन करके ऐसा कर सकते हैं:

  1. अपने प्रस्तावित मूल्य को लिखें , जहाँ t थ्रेड आईडी है और A का आकार 2 है।A[t]tA
  2. कुछ रजिस्टर पर परीक्षण और सेट निर्देश , आर 0 के लिए आरंभीकृत के साथ करें ।RR
  3. यदि रिटर्न मान 0 है, तो आप पहले थे: वापस करें । अन्यथा, आप दूसरे थे: वापसी [ | टी - 1 | ] हो गयाA[t]A[|t1|]

आप खुद को सत्यापित कर सकते हैं कि आम सहमति और प्रतीक्षा-परिश्रम संतुष्ट हैं।

(अगले सबूत के लिए, मैं कुछ सबूतों और परिभाषाओं को घोंसला बनाऊंगा क्योंकि मुझे लगता है कि इससे पालन करना आसान हो जाएगा।)

दावा 2. परीक्षण और सेट की सर्वसम्मति संख्या सबसे अधिक है 2. प्रमाण। विरोधाभास से। मान लीजिए कि हमें तीन सूत्र है , बी और सी है कि मूल्यों पर फैसला करना चाहते हैं एक , और , क्रमशः, और है कि हम (कुछ वैध प्रतीक्षा मुक्त आम सहमति प्रोटोकॉल है कि परीक्षण और सेट का उपयोग कार्यान्वित किया जाता है है और परमाणु रीड और राईट )।ABCabc

हम एक निर्देशित पेड़ के रूप में आम सहमति प्रक्रिया की कल्पना कर सकते हैं, जहां:

  • जड़ वह अवस्था है जहाँ किसी भी सूत्र ने 'एक चाल' नहीं बनाई है;
  • एक नोड का बायाँ बच्चा उस स्थिति का प्रतिनिधित्व करता है जो एक कदम के बाद होता है , मध्य का बच्चा उस स्थिति का प्रतिनिधित्व करता है जो B के एक कदम के बाद होता है , और दायाँ बच्चा उस अवस्था का प्रतिनिधित्व करता है जो C के एक कदम के बाद परिणाम करता है ;ABC
  • एक पत्ता नोड एक ऐसी स्थिति का प्रतिनिधित्व करता है जिसमें सभी धागे समाप्त हो गए हैं। एक पत्ता नोड के साथ जुड़े एक मूल्य है , , या , जहां मूल्य पर निर्भर करता है कि विशेष रूप से मूल्य निष्पादन के लिए पर निर्णय लिया गया।abc

परिभाषा। यदि सहमति प्रक्रिया का परिणाम अभी तक निर्धारित नहीं किया गया है, तो एक राज्य को बहुविकल्पी होने दें । दूसरे शब्दों में, शेष चालों के सभी संभव इंटरलेविंग्स एक ही परिणाम की ओर नहीं ले जाते हैं। जब सर्वसम्मति की प्रक्रिया का परिणाम निर्धारित किया जाता है , तो एक राज्य को एकसाथ रहने दें ।

जड़ बहुविध है। प्रमाण। यदि केवल एक थ्रेड सक्रिय है और अन्य थ्रेड्स हमेशा के लिए निष्क्रिय रहते हैं, तो X चरणों की एक सीमित संख्या में समाप्त हो जाएगा (प्रतीक्षा-निर्बाध धारणा द्वारा गारंटीकृत) और यह x तय करेगा (इसके लिए केवल इस मान और इसकी पहुंच है) निर्णय सर्वसम्मति वैधता की आवश्यकता को पूरा करेगा)। तो हमारी स्थिति के लिए, , बी और सी सभी संभावित परिणाम हैं। XXxabc

परिभाषा। एक महत्वपूर्ण राज्य एक राज्य में जो multivalent है, अतिरिक्त संपत्ति को द्वारा एक कदम के साथ होने दो का निर्धारण करेगा एक , और से एक कदम बी का निर्धारण करेगा AaBb

वहाँ एक महत्वपूर्ण राज्य मौजूद है। प्रमाण। ऊपर से हम जानते हैं कि हम एक बहुसंख्यक राज्य में शुरू करते हैं। को कोई भी चाल न चलने दें । जब तक या बी पेड़ को एक असंगत स्थिति में मजबूर नहीं करता है, तब तक इसे चलने दें। प्रतीक्षा-परिश्रम की गारंटी है कि पेड़ परिमित है, इसलिए किसी समय एक महत्वपूर्ण अवस्था का सामना करना होगा। CAB

अब एक परिदृश्य पर विचार करें जहां हम एक महत्वपूर्ण स्थिति में हैं। कर रहे हैं कम से कम दो संभावनाएं:

1) अपनी चाल बनाता है (जिससे निर्धारण होता है ) और हाल्ट। B तब अपनी चाल बनाता है और रुकता है। अगला सी चलाता है जब तक यह खत्म, अंत में निर्णय लेने से एकAaBCa

2) अपनी चाल बनाता है (जिससे बी निर्धारित करता है ) और हाल्ट। अगला C तब तक चलता है, जब तक वह खत्म नहीं हो जाता, अंत में b तय करता है । A चाल नहीं बनाता है।BbCbA

चूंकि परमाणु पढ़ता है और लिखता है, सर्वसम्मति संख्या 1, और बी की चालों को एक ही रजिस्टर पर परीक्षण-और-निर्धारित निर्देश होना था (यदि रजिस्टर अलग हैं, तो सी उस क्रम को नहीं बता पाएगा जिसमें ABCA और की चालें हुई)। से सी के परिप्रेक्ष्य, तो, परिदृश्यों 1 और 2 अप्रभेद्य हैं, इसलिए हम चाहते हैं कि होना आवश्यक है सी दोनों का फैसला करता है एक और । यह असंभव है। BCCab

परीक्षण और सेट निर्देश में सर्वसम्मति संख्या 2 का दावा 1 और 2 दोनों से किया गया है।


जवाब के लिए धन्यवाद रॉय। क्या आप इस विषय पर किसी भी सामग्री की ओर इशारा कर सकते हैं जो आपके स्पष्टीकरण के रूप में स्पष्ट है? :)। मुझे जो भी सामग्री मिली वह बहुत औपचारिक थी।
sanatana

@सान्तना: मैं आपके प्रश्न का उत्तर देना भूल गया, मुझे क्षमा करें। यदि यह अभी भी प्रासंगिक है: मैं सुझाव देता हूं कि हेरली और शविट की 'द आर्ट ऑफ मल्टीप्रोसेसर प्रोग्रामिंग' (विशेष रूप से अध्याय 5) और कॉनक्यूरेन्सी एंड मल्टीट्रेडिंग कोर्स की कोर्स सामग्री Fokkink: cs.vu.nl/~tcs/cm (जो आधारित है) हेरलहि और शविित की किताब)। पृष्ठ के निचले भाग में आपको हेरलहि द्वारा वीडियो व्याख्यान का लिंक मिलेगा (27 सितंबर का व्याख्यान आम सहमति के बारे में है)। सामग्री की समीक्षा के बाद मुझे एहसास हुआ कि इस तरह के सबूत के लिए एक द्विआधारी पेड़ पर विचार करना पर्याप्त है। शायद मैं बाद में अपना जवाब अपडेट करूंगा।
रॉय ओ।

@RoyO। मैं देखता हूं कि आपका उत्तर बताता है कि 3 प्रक्रियाओं के साथ आम सहमति पर पहुंचने का कोई तरीका नहीं है। बस यह समझना चाहता था कि क्या किसी भी तरह से हमने साबित कर दिया है कि हम अभी भी आम सहमति पर पहुंच सकते हैं, लेकिन यह प्रोटोकॉल प्रतीक्षा-मुक्त नहीं होगा?
परम कारण

6

विकिपीडिया लेख में एक संदर्भ होता है जो आपके प्रश्न का उत्तर देता है, लेकिन शायद आप उस 26 पृष्ठ के पेपर को पढ़ना नहीं चाहते हैं। मैं (काफी तकनीकी) प्रमाण का एक सरलीकृत संस्करण दूंगा, यह दिखाते हुए कि परीक्षण और सेट 3 प्रक्रियाओं के लिए द्विआधारी आम सहमति को हल नहीं कर सकता है। इस तरह के तर्क का व्यापक रूप से सर्वसम्मति संख्या साबित करने में उपयोग किया जाता है।

मान लें कि हमारे पास 3 प्रक्रियाओं के लिए टीएएस रजिस्टरों का उपयोग करके एक सर्वसम्मति एल्गोरिथ्म है।

किसी भी समय, प्रत्येक प्रक्रिया में एक चाल (निर्देश) होगा जो निष्पादित होने के लिए तैयार है। तीन निर्देशों में से कौन सा निष्पादित किया जाएगा गैर-नियतात्मक है।

मान लीजिए कि हम एक द्वीपीय स्थिति में हैं (एक ऐसी स्थिति जिसमें 0 या 1 निर्णय दोनों अभी भी संभव है) और जो भी प्रक्रिया आगे बढ़ती है, बाद की स्थिति असमान होगी। ऐसी स्थिति को अंततः प्रतीक्षा-मुक्त स्थिति के कारण पहुंचना चाहिए।

मान लीजिए (wlg) कि अगर प्रक्रिया 1 चलती है, तो राज्य 0-वैलेंट होगा, और अगर प्रक्रिया 2 चलती है, तो राज्य 1-वैलेंट होगा। दोनों चालों को एक ही रजिस्टर पर एक TAS ऑपरेशन (या कम से कम: किसी प्रकार का लिखना) होना चाहिए, क्योंकि अगर वे अलग-अलग रजिस्टरों पर TAS ऑपरेशन थे, तो हम यह नहीं बता सकते थे कि क्या प्रक्रिया 1 पहले चली गई या प्रक्रिया 2 पहले चली गई।

आइए इन दो संभावित निष्पादनों पर विचार करें:

  • प्रक्रिया 1 पहले चलती है, फिर प्रक्रिया 2 चलती है, फिर प्रक्रिया 3 चलती है
  • प्रक्रिया 2 पहले चलती है, फिर प्रक्रिया 3 रन अकेली है

प्रक्रिया 3 के दृष्टिकोण से, ये राज्य अप्रभेद्य हैं क्योंकि यह सिर्फ प्रक्रिया 2 द्वारा लिखे गए मूल्य को देखता है। हालांकि, पहले मामले में इसे 0 को आउटपुट के रूप में देना चाहिए, और दूसरे को आउटपुट के रूप में। स्पष्ट रूप से, यह एक विरोधाभास है।

प्रक्रिया 1 और 2 आपस में तय कर सकते हैं जो पहले चले गए (क्योंकि वे देख सकते हैं कि उनके लिखने से पहले रजिस्टर में क्या मूल्य था) लेकिन तीसरी दर्शक प्रक्रिया नहीं हो सकती।


1

3-प्रोसेसर की सहमति को हल करने के लिए परीक्षण-और-सेट का उपयोग नहीं किया जा सकता है, यह साबित करने का एक और तरीका यह है कि 2-प्रोसेसर की सहमति का उपयोग करके परीक्षण-और-सेट को लागू किया जा सकता है। फिर, यह मानते हुए कि परीक्षण-और-सेट 3-प्रोसेसर सहमति को हल कर सकता है, एक विरोधाभास की ओर जाता है: मान लीजिए कि परीक्षण-और-सेट 3-प्रोसेसर आम सहमति को हल कर सकता है; फिर 2-प्रोसेसर सर्वसम्मति का उपयोग करके इसके कार्यान्वयन के द्वारा परीक्षण-और-सेट की जगह 2-प्रोसेसर आम सहमति का उपयोग करके 3-प्रोसेसर आम सहमति का कार्यान्वयन प्राप्त होता है, जो असंभव है। इस प्रकार परीक्षण और सेट 3-प्रोसेसर आम सहमति को हल नहीं कर सकता है।

2-प्रोसेसर सर्वसम्मति का उपयोग करते हुए n- प्रोसेसर्स के लिए टेस्ट-एंड-सेट को लागू करने के लिए, प्रोसेसर एक टूर्नामेंट का उपयोग करके टेस्ट-सेट के एक विजेता को निर्धारित करते हैं, जिसमें प्रत्येक प्रोसेसर को 2-प्रोसेसर सर्वसम्मति (एक मैच में, प्रोसेसर का उपयोग करके लागू किया जाता है) उनके पहचानकर्ता को प्रस्ताव दें और सर्वसम्मति परिणाम उन्हें बताता है कि कौन जीतता है)।


0

व्यावहारिक अर्थ में एक कम सख्त आम सहमति परिभाषा पर्याप्त हो सकती है (यहाँ मैं इसे प्रकाश-सर्वसम्मति कहता हूँ):

परिभाषा । लाइट-सर्वसम्मति n थ्रेड्स iff (a) के बीच पहुँच जाती है, प्रत्येक थ्रेड या तो एक ही मान पर निर्णय लेता है या मान इसके लिए अज्ञात है, (b) कम से कम एक थ्रेड मूल्य जानता है और (c) यह मान वास्तव में किसी एक के द्वारा प्रस्तावित किया गया था धागे।

इसलिए यह आम सहमति अपने हल्के अर्थों में अनुमति देती है कि कुछ सूत्र आम सहमति नहीं जानते हैं, जो मूल्य तय किया गया है।

कोरोलरी : इस हल्के अर्थ में परीक्षण और सेट में अनंत प्रकाश-सर्वसम्मति संख्या होती है।

दावा : यह हल्का अर्थ व्यावहारिक है। उदाहरण के लिए, महत्वपूर्ण खंड में प्रवेश करने के लिए धागे का चयन करने के लिए यह सख्त अर्थों में आम सहमति बनाने के लिए आवश्यक नहीं है। यह कहना है: प्रत्येक थ्रेड को यह जानना होगा कि उसे चुना गया है या नहीं, हालांकि अगर वह चयनित नहीं है तो उसे यह जानना नहीं होगा कि उसका चयन किया गया था। दूसरे शब्दों में, पारस्परिक बहिष्करण के लिए सख्त-आम सहमति आवश्यक नहीं है, प्रकाश पर्याप्त है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.