स्व-स्थिरीकरण

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

पहली नज़र में, स्व-स्थिरीकरण की गारंटी एल्गोरिदम के अधिक पारंपरिक गलती-सहिष्णुता की तुलना में कम आशाजनक लग सकती है, जिसका उद्देश्य यह गारंटी देना है कि सिस्टम हमेशा कुछ प्रकार के राज्य संक्रमणों के तहत एक सही स्थिति में रहता है। हालाँकि, पारंपरिक गलती सहिष्णुता हमेशा प्राप्त नहीं की जा सकती है। उदाहरण के लिए, यह प्राप्त नहीं किया जा सकता है जब सिस्टम एक गलत स्थिति में शुरू किया जाता है या एक घुसपैठिया द्वारा दूषित होता है। इसके अलावा, उनकी जटिलता के कारण, डिबग करना और वितरित प्रणालियों का विश्लेषण करना बहुत कठिन है। इसलिए, एक वितरित प्रणाली को गलत स्थिति तक पहुंचने से रोकना बहुत कठिन है। वास्तव में, स्व-स्थिरीकरण के कुछ रूपों को कई आधुनिक कंप्यूटर और दूरसंचार नेटवर्क में शामिल किया गया है, क्योंकि यह उन्हें उन दोषों से निपटने की क्षमता देता है जो एल्गोरिथ्म के डिजाइन में भविष्यवाणी नहीं थे।

1974 में एड्सगर डब्ल्यू। दिज्क्स्ट्रा के सेमिनल पेपर के बाद एड्सगर डिसकस्ट्रा | नतीजतन, Dijkstra के पेपर ने 2002 ACM PODC प्रभावशाली-पेपर अवार्ड प्राप्त किया, जो वितरित कंप्यूटिंग समुदाय में सर्वोच्च मान्यताओं में से एक है। इसके अलावा, Dijkstra की मृत्यु के बाद, पुरस्कार का नाम बदल दिया गया और अब इसे Dijkstra अवार्ड कहा जाता है।

इतिहास
1974 में E.W. DIJKSTRA ने इस क्षेत्र में आगे के शोध को प्रेरित करते हुए ,आत्म-स्थिरीकरण की अवधारणा को प्रस्तुत किया। उनके प्रदर्शन में स्व-स्थिर करने वाले आपसी बहिष्करण एल्गोरिदम की प्रस्तुति शामिल थी। इसने पहला सेल्फ-स्टेबलाइजिंग एल्गोरिदम भी दिखाया जो सिस्टम पर मजबूत मान्यताओं पर भरोसा नहीं करता था। व्यवहार में उपयोग किए जाने वाले कुछ पिछले प्रोटोकॉल वास्तव में स्थिर हो गए थे, लेकिन केवल एक घड़ी के अस्तित्व को मानते हुए जो सिस्टम के लिए वैश्विक था, और प्रत्येक सिस्टम संक्रमण की अवधि पर एक ज्ञात ऊपरी सीमा को मानता था।यह केवल दस साल बाद था जब लेस्ली लामपोर्ट ने 1983 के सम्मोहक के एक सम्मेलन में डायज्क्स्ट्रा के काम के महत्व को इंगित किया, जो कि डिस्ट्रिब्यूटेड कंप्यूटिंग के सिद्धांतों पर संगोष्ठी नामक शोधकर्ता थे। इस सुरुचिपूर्ण गलती-सहिष्णुता अवधारणा पर अपना ध्यान केंद्रित किया। अपनी बात में, लैमपोर्ट ने कहा: "मैं इसे Dijkstra के सबसे शानदार काम के रूप में मानता हूं। उनका सबसे शानदार प्रकाशित पेपर।यह लगभग पूरी तरह से अज्ञात है।मैं इसे गलती सहिष्णुता पर काम में एक मील का पत्थर मानता हूं ।मैं आत्म-स्थिरीकरण को गलती सहिष्णुता में एक बहुत ही महत्वपूर्ण अवधारणा मानता हूं और अनुसंधान के लिए एक बहुत ही उपजाऊ क्षेत्र है।" बाद में, Dijkstra के काम को ACM-PODC प्रभावशाली पेपर अवार्ड से सम्मानित किया गया, जो तब वार्षिक ACM-PODC संगोष्ठी में दिए गए वितरित कंप्यूटिंग में ACM (द एसोसिएशन फॉर कम्प्यूटिंग              मशीनरी) Dijkstra पुरस्कार बन गया।

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

Dijkstra का पेपर, जो स्व-स्थिरीकरण की अवधारणा का परिचय देता है, एक टोकन रिंग के संदर्भ में एक उदाहरण प्रस्तुत करता है; एक सर्कल में ऑर्डर किए गए कंप्यूटरों का एक नेटवर्क। यहां, प्रत्येक कंप्यूटर या प्रोसेसर एक प्रोसेसर की पूरी स्थिति को देख सकता है जो तुरंत इसे पहले करता है और यह राज्य का अर्थ यह हो सकता है कि प्रोसेसर में एक टोकन होता है या इसमें टोकन नहीं होता है। आवश्यकताओं में से एक यह है कि उनमें से एक को किसी भी समय एक टोकन पकड़ना होगा।दूसरी आवश्यकता यह निर्धारित करती है कि प्रत्येक नोड टोकन को कंप्यूटर/प्रोसेसर के पास से गुजरता है ताकि वह सफल हो सके ताकि टोकन अंततः रिंग को प्रसारित करे।
 * इस नेटवर्क में प्रत्येक कंप्यूटर के लिए एक टोकन न पकड़ना एक सही स्थिति है, क्योंकि टोकन को दूसरे कंप्यूटर द्वारा आयोजित किया जा सकता है।हालाँकि, यदि प्रत्येक कंप्यूटर टोकन नहीं रखने की स्थिति में है, तो नेटवर्क पूरी तरह से सही स्थिति में नहीं है।
 * इसी तरह, यदि एक से अधिक कंप्यूटर एक टोकन रखते हैं, तो यह नेटवर्क के लिए एक सही स्थिति नहीं है, हालांकि यह किसी भी कंप्यूटर को व्यक्तिगत रूप से देखकर गलत नहीं देखा जा सकता है।चूंकि प्रत्येक कंप्यूटर केवल अपने दो पड़ोसियों की राज्यों का निरीक्षण कर सकता है, इसलिए कंप्यूटर के लिए यह तय करना कठिन है कि नेटवर्क पूरी तरह से सही स्थिति में है या नहीं।

पहले सेल्फ-स्टेबलाइजिंग एल्गोरिदम ने बाद में उन्हें मरम्मत करने के लिए स्पष्ट रूप से त्रुटियों का पता नहीं लगाया।इसके बजाय, उन्होंने लगातार सिस्टम को एक वैध स्थिति की ओर धकेल दिया।चूंकि एक त्रुटि का पता लगाने के लिए पारंपरिक तरीके अक्सर बहुत मुश्किल और समय लेने वाले थे, इस तरह के व्यवहार को वांछनीय माना जाता था।(ऊपर उद्धृत कागज में वर्णित विधि पूरे नेटवर्क से एक ही स्थान पर बड़ी मात्रा में जानकारी एकत्र करती है; उसके बाद, यह निर्धारित करने का प्रयास करता है कि क्या एकत्रित वैश्विक राज्य सही है; यहां तक कि यह निर्धारण अकेले एक कठिन कार्य हो सकता है)।

दक्षता में सुधार
हाल ही में, शोधकर्ताओं ने स्थानीय जाँच का उपयोग करके स्व-स्थिरीकरण प्रणालियों के लिए प्रकाश-वजन त्रुटि का पता लगाने के लिए नए तरीके प्रस्तुत किए हैं। और सामान्य कार्यों के लिए। स्थानीय शब्द कंप्यूटर नेटवर्क के एक हिस्से को संदर्भित करता है। जब स्थानीय पहचान का उपयोग किया जाता है, तो एक नेटवर्क में एक कंप्यूटर को एक त्रुटि & mdash का पता लगाने के लिए पूरे नेटवर्क के साथ संवाद करने की आवश्यकता नहीं होती है; प्रत्येक कंप्यूटर को केवल अपने निकटतम पड़ोसियों के साथ संवाद करने से त्रुटि का पता लगाया जा सकता है। इन स्थानीय डिटेक्शन विधियों ने सेल्फ-स्टेबलाइज़िंग एल्गोरिदम को काफी हद तक डिजाइन करने के कार्य को सरल बनाया। ऐसा इसलिए है क्योंकि त्रुटि का पता लगाने वाले तंत्र और रिकवरी तंत्र को अलग से डिज़ाइन किया जा सकता है। इन पहचान विधियों के आधार पर नए एल्गोरिदम भी बहुत अधिक कुशल हो गए। इसके अलावा, इन पत्रों ने गैर -स्व -स्थिर एल्गोरिदम को बदलने के लिए कुशल सामान्य ट्रांसफार्मर का सुझाव दिया, ताकि वे स्वयं स्थिर हो सकें। विचार है, इन 4 भागों का संयोजन स्वयं स्थिर है (जब तक कि सुधार गलती के चरणों के दौरान गलती का कोई ट्रिगर नहीं होता है, उदा। )। उपरोक्त पत्रों में प्रारंभिक आत्म स्थिरीकरण प्रोटोकॉल भी प्रस्तुत किए गए थे।अधिक कुशल रीसेट प्रोटोकॉल बाद में प्रस्तुत किए गए, उदा। अतिरिक्त दक्षता समय-अनुकूली प्रोटोकॉल की धारणा के साथ पेश की गई थी। इनके पीछे का विचार यह है कि जब केवल कम संख्या में त्रुटियां होती हैं, तो रिकवरी का समय (और और होना चाहिए) कम किया जा सकता है।Dijkstra के मूल स्व-स्थिरीकरण एल्गोरिदम में यह संपत्ति नहीं है।
 * 1) एक ही समय में गैर स्व स्थिर प्रोटोकॉल चलाएं,
 * 2) उपर्युक्त पता लगाने के तरीकों का उपयोग करके दोषों का पता लगाएं (दिए गए प्रोटोकॉल के निष्पादन के दौरान),
 * 3) फिर, सिस्टम को कुछ पूर्व निर्धारित प्रारंभिक स्थिति में वापस करने के लिए एक (सेल्फ स्टैबलाइजिंग) रीसेट प्रोटोकॉल लागू करें, और अंत में, अंत में,
 * 4) दिए गए (गैर-स्व स्थिर) प्रोटोकॉल को पुनरारंभ करें।

स्व-स्थिरीकरण एल्गोरिदम की एक उपयोगी संपत्ति यह है कि वे परतों से बने हो सकते हैं यदि परतें किसी भी परिपत्र निर्भरता को प्रदर्शित नहीं करती हैं।रचना का स्थिरीकरण समय तब प्रत्येक परत के व्यक्तिगत स्थिरीकरण समय के योग से घिरा होता है। Dijkstra के काम के लिए नए दृष्टिकोण बाद में उभरे जैसे कि Krzysztof Apt और Ehsan Shoja के प्रस्ताव के मामले में, जिसमें दिखाया गया कि कैसे स्व-स्थिरीकरण को रणनीतिक खेलों की मानक अवधारणाओं का उपयोग करके स्वाभाविक रूप से तैयार किया जा सकता है, विशेष रूप से एक सुधार पथ की अवधारणा। इस विशेष कार्य ने स्व-स्थिरीकरण और खेल सिद्धांत के बीच लिंक को प्रदर्शित करने की मांग की।

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

परिभाषा
एक प्रणाली आत्म-स्थिर है यदि और केवल अगर:
 * 1) किसी भी राज्य से शुरू होकर, यह गारंटी दी जाती है कि सिस्टम अंततः एक सही स्थिति (अभिसरण) तक पहुंच जाएगा।
 * 2) यह देखते हुए कि सिस्टम एक सही स्थिति में है, यह एक सही स्थिति में रहने की गारंटी है, बशर्ते कि कोई गलती न हो (बंद)।

एक प्रणाली को यादृच्छिक रूप से आत्म-स्थिरीकरण कहा जाता है यदि और केवल अगर यह स्व-स्थिर है और एक सही स्थिति तक पहुंचने के लिए आवश्यक राउंड की अपेक्षित संख्या कुछ स्थिरांक से बंधी है $$k$$. उपर्युक्त अर्थों में स्व-स्थिरीकरण का डिजाइन एक कठिन काम के रूप में जाना जाता है।वास्तव में, वितरित एल्गोरिदम के एक वर्ग में स्थानीय जाँच की संपत्ति नहीं होती है: नेटवर्क राज्य की वैधता का मूल्यांकन एक ही प्रक्रिया द्वारा नहीं किया जा सकता है।सबसे स्पष्ट मामला DIJKSTRA के टोकन-रिंग को ऊपर परिभाषित किया गया है: कोई भी प्रक्रिया यह पता नहीं लगा सकती है कि नेटवर्क राज्य वैध है या नहीं उस मामले में जहां एक से अधिक टोकन गैर-पड़ोसी प्रक्रियाओं में मौजूद है।इससे पता चलता है कि एक वितरित प्रणाली का स्व-स्थिरीकरण एक प्रकार की सामूहिक बुद्धिमत्ता है जहां प्रत्येक घटक अपने स्थानीय ज्ञान के आधार पर स्थानीय कार्रवाई कर रहा है, लेकिन अंततः यह अंत में वैश्विक अभिसरण की गारंटी देता है।

ऊपर परिभाषित स्व-स्थिरीकरण को डिजाइन करने की कठिनाई को दूर करने में मदद करने के लिए, अन्य प्रकार के स्थिरीकरण को तैयार किया गया था।उदाहरण के लिए, कमजोर स्थिरीकरण वह संपत्ति है जो एक वितरित प्रणाली में हर संभव स्थिति से अपने वैध व्यवहार तक पहुंचने की संभावना है। कमजोर स्थिरीकरण डिजाइन करना आसान है क्योंकि यह सिर्फ हर रन के लिए अभिसरण के बजाय वितरित प्रणाली के कुछ रनों के लिए अभिसरण की संभावना की गारंटी देता है। एक स्व-स्थिरीकरण एल्गोरिथ्म चुप है अगर और केवल अगर यह एक वैश्विक राज्य में परिवर्तित हो जाता है जहां एल्गोरिथ्म द्वारा उपयोग किए जाने वाले संचार रजिस्टरों के मूल्य निश्चित रहते हैं।

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

बाहरी संबंध

 * libcircle - An implementation of self-stabilization using token passing for termination.

]