2014-09-28 11 views
10

क्या कोई मुझे परिभाषाओं और अनुक्रमिक स्थिरता और quiescent स्थिरता के बीच अंतर समझा सकता है? सबसे गूंगा रूप में संभव: |अनुक्रमिक स्थिरता और quiescent स्थिरता के बीच अंतर क्या हैं?

मैं इस पढ़ा है: Example of execution which is sequentially consistent but not quiescently consistent

लेकिन मैं अनुक्रमिक और मौन स्थिरता ही :(

+0

देखें: http: // coldattic।जानकारी/shvedsky/pro/blogs/a-foo-walks-in-a-bar/posts/88 – jessehouwing

+1

क्विज़ेंट स्थिरता का अर्थ है कि एक ऑपरेशन को उसके बाद एक ऑपरेशन निष्पादित करने के बाद संगत माना जाता है और इससे पहले किसी अन्य पर निष्पादित किया जाता है (यानी "काफी" समय में)। अनुक्रमिक स्थिरता का अर्थ यह है कि संरचना अलग-अलग धागे से ऑर्डर ऑपरेशन करने के बावजूद लगातार बनी हुई है। –

+0

@jessehouwing धन्यवाद धन्यवाद लिंक ने बहुत मदद की है। – theCuriousOne

उत्तर

1

सबसे पहले आप को समझना चाहिए कि क्या कार्यक्रम आदेश है को समझने में सक्षम नहीं हूँ, यह सचमुच है तो आप अपने कार्यक्रम रन कैसे उम्मीद निर्देशों की उपस्थिति के क्रम में

लेकिन एक प्रोग्राम ऑर्डर केवल एक थ्रेड प्रोग्राम के लिए है, यदि आपके पास मल्टीथ्रेड हैं, तो समस्या तब आती है जब प्रोग्राम ऑर्डर नहीं हो सकता है या यहां तक ​​कि अस्तित्व में नहीं है क्योंकि कभी-कभी आप यह नहीं बता सकते कि कौन सा थ्रेड की विधि कॉल पहले होती है।

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

एक अनुक्रमिक स्थिरता ओवरलैप की अनुमति देता है, लेकिन एक एक कार्यक्रम आदेश सभी विधि कॉल एक जगह में रखा जा सकता है, जिसमें पा सकते हैं की आवश्यकता है और अभी भी सही मान देता है और सही ढंग से व्यवहार करता है।

+0

ठीक है जब आप कहते हैं कि "क्विज़ेंट स्थिरता एक स्पष्ट प्रोग्राम ऑर्डर का वर्णन करती है" इसका मतलब है कि प्रोग्राम विधि कॉल क्विज़ेंट पॉइंट से अलग होती है जो दूसरे के लिए पूर्ण दिखाई देती है। जैसा कि --- <विधि कॉल सेट एक> ---- (quiescent अवधि) ------ <विधि कॉल सेट बी> -। एकाधिक धागे द्वारा सेट 'ए' में किए गए कॉल पूर्ण हो जाएंगे और विधि कॉल सेट 'बी' में कॉल के रूप में पूर्ण होंगे। – theCuriousOne

+0

अनुक्रमिक स्थिरता को थ्रेड के प्रोग्राम ऑर्डर के साथ और अधिक करना है। धागे के भीतर कॉल कार्यक्रम क्रम में होना चाहिए। अन्य धागे की ओवरलैपिंग कॉल को एक इच्छा के रूप में चारों ओर स्थानांतरित किया जा सकता है। हालांकि आंदोलन अन्य धागे के कार्यक्रम आदेश को बदल नहीं सकता है। i.e दो धागे के बीच ओवरलैपिंग/गैर ओवरलैपिंग कॉल को प्रत्येक थ्रेड के प्रोग्राम ऑर्डर को बरकरार रखने की इच्छा रखने के रूप में पुन: व्यवस्थित किया जा सकता है। – theCuriousOne

9

अनुक्रमिक स्थिरता की आवश्यकता है कि संचालन प्रत्येक कार्यक्रम में निर्दिष्ट क्रम में प्रभावी हो। असल में यह प्रत्येक व्यक्तिगत प्रक्रिया के भीतर प्रोग्राम ऑर्डर लागू करता है, और सभी प्रक्रियाओं को यह मानने की अनुमति देता है कि वे संचालन के समान क्रम को देख रहे हैं।

P1 -- q.enq(x) ----------------------------- 
P2 -------------- q.enq(y) ---- q.deq():y -- 

यह एक फीफो कतार से अपेक्षित व्यवहार नहीं है: मान लीजिए कि हम 2 प्रक्रियाओं enqueuing और एक कतार q पर आइटम dequeuing करते हैं। हम एक्स को डेक्यू करने की उम्मीद करेंगे क्योंकि P1 encues x P2 enqueues y से पहले। हालांकि अनुक्रमिक स्थिरता मॉडल में इस परिदृश्य की अनुमति है क्योंकि अनुक्रमिक स्थिरता की आवश्यकता नहीं है कि सभी प्रक्रियाओं द्वारा देखा गया क्रम सही (वास्तविक समय ऑर्डर) है। वहाँ कम से कम एक अनुक्रमिक निष्पादन है कि इन परिणामों की व्याख्या कर सकते हैं और एक है:

P2:q.enq(y) P1:q.enq(x) P2:q.deq():y 

इस निष्पादन प्रत्येक प्रक्रिया जिसका अर्थ है प्रत्येक प्रक्रिया में वे एक प्रक्रिया में निर्दिष्ट कर सकें, ताकि अपने अभियान कार्यान्वित कार्यक्रम के क्रम में आपरेशन कार्यान्वित में ।

क्विज़ेंट स्थिरता के लिए गैर-ओवरलैपिंग ऑपरेशंस को उनके वास्तविक समय के क्रम में प्रभावी होने की आवश्यकता होती है, लेकिन ओवरलैपिंग ऑपरेशन को फिर से व्यवस्थित किया जा सकता है। इसलिए, quiescent स्थिरता मॉडल में एक ही परिदृश्य की अनुमति नहीं है क्योंकि हम से पहले प्रभावी होने के लिए y के बजाय x वापस करने के लिए q.enq(x) की अपेक्षा करते हैं। इसके अलावा quiescent स्थिरता कार्यक्रम क्रम को संरक्षित नहीं करता है। यदि q.enq(x) और q.enq(y) समवर्ती (ओवरलैपिंग) संचालन होंगे, तो उन्हें फिर से व्यवस्थित किया जा सकता है और q.deq():y क्विज़ेंटली संगत होगा।

मूल रूप से कुछ निष्पादन अनुक्रमिक रूप से सुसंगत होते हैं लेकिन लगातार संगत नहीं होते हैं, और इसके विपरीत।

संबंधित मुद्दे