Dynamic software updating
कंप्यूटर विज्ञान में, गतिशील सॉफ्टवेयर अद्यतन (डी. एस. यू.) कार्यक्रमों के उन्नयन से संबंधित अनुसंधान का एक क्षेत्र है जब वे चल रहे होते हैं। डी. एस. यू. का वर्तमान में उद्योग में व्यापक रूप से उपयोग नहीं किया जाता है। हालाँकि, शोधकर्ताओं ने डी. एस. यू. को लागू करने के लिए विभिन्न प्रकार की प्रणालियाँ और तकनीकें विकसित की हैं। इन प्रणालियों का आमतौर पर वास्तविक दुनिया के कार्यक्रमों पर परीक्षण किया जाता है। वर्तमान ऑपरेटिंग सिस्टम और प्रोग्रामिंग भाषाओं को आम तौर पर डीएसयू को ध्यान में रखते हुए डिज़ाइन नहीं किया जाता है। जैसे, डी. एस. यू. कार्यान्वयन आमतौर पर या तो मौजूदा उपकरणों का उपयोग करते हैं, या विशेष संकलकों को लागू करते हैं। ये संकलक मूल प्रोग्राम के शब्दार्थ को संरक्षित करते हैं, लेकिन एक गतिशील रूप से अद्यतन करने योग्य प्रोग्राम का उत्पादन करने के लिए स्रोत कोड या ऑब्जेक्ट कोड का उपयोग करते हैं। शोधकर्ता सुरक्षा और प्रदर्शन ओवरहेड का आकलन करने के लिए कार्यक्रमों के डीएसयू-सक्षम रूपों की तुलना मूल कार्यक्रम से करते हैं। परिचय किसी भी चल रहे प्रोग्राम को एक टुपल के रूप में सोचा जा सकता है, जहां वर्तमान प्रोग्राम स्थिति है और वर्तमान प्रोग्राम कोड है। गतिशील सॉफ्टवेयर अद्यतन प्रणाली एक चल रहे प्रोग्राम को एक नए संस्करण में बदल देती है। ऐसा करने के लिए, राज्य को अपेक्षित प्रतिनिधित्व में परिवर्तित किया जाना चाहिए। इसके लिए स्टेट ट्रांसफॉर्मर फंक्शन की आवश्यकता होती है। इस प्रकार, डी. एस. यू. एक प्रोग्राम को डी. एस. यू. में बदल देता है। एक अद्यतन को मान्य माना जाता है यदि और केवल तभी जब चल रहे कार्यक्रम को एक बिंदु टुपल तक कम किया जा सकता है जो कार्यक्रम के नए संस्करण के शुरुआती बिंदु से पहुँच योग्य है, एक कार्यक्रम में स्थान जहां एक गतिशील अद्यतन होता है उसे एक अद्यतन बिंदु के रूप में संदर्भित किया जाता है। मौजूदा डी. एस. यू. कार्यान्वयन अद्यतन बिंदुओं के उपचार में व्यापक रूप से भिन्न होते हैं। कुछ प्रणालियों में, जैसे कि अपस्टेयर और पॉलस, निष्पादन के दौरान किसी भी समय एक अद्यतन हो सकता है। जिनसेंग का संकलक अद्यतन बिंदुओं के लिए अच्छे स्थानों का अनुमान लगाने का प्रयास करेगा, लेकिन प्रोग्रामर-निर्दिष्ट अद्यतन बिंदुओं का भी उपयोग कर सकता है। किट्सुन और एकिडेन के लिए डेवलपर्स को सभी अद्यतन बिंदुओं को मैन्युअल रूप से निर्दिष्ट करने और नाम देने की आवश्यकता होती है। अद्यतन प्रणालियाँ कार्यक्रम परिवर्तनों के प्रकारों में भिन्न होती हैं जिनका वे समर्थन करते हैं। उदाहरण के लिए, केस्प्लाइस केवल कार्यों में कोड परिवर्तन का समर्थन करता है, और राज्य प्रतिनिधित्व में परिवर्तन का समर्थन नहीं करता है। ऐसा इसलिए है क्योंकि केस्प्लाइस मुख्य रूप से सामान्य अद्यतनों के बजाय सुरक्षा परिवर्तनों को लक्षित करता है। इसके विपरीत, एकिडेन एक प्रोग्राम को निष्पादित करने में सक्षम किसी भी अन्य प्रोग्राम में अपडेट कर सकता है, यहां तक कि एक अलग प्रोग्रामिंग भाषा में भी लिखा जा सकता है। सिस्टम डिजाइनर अद्यतनों के दायरे को सीमित करके मूल्यवान प्रदर्शन या सुरक्षा आश्वासन प्राप्त कर सकते हैं। उदाहरण के लिए, कोई भी अद्यतन सुरक्षा जांच अद्यतनों के दायरे को उन अद्यतनों तक सीमित करती है जो उस सुरक्षा जांच को पारित करते हैं। कोड और स्थिति को बदलने के लिए उपयोग किया जाने वाला तंत्र इस बात को प्रभावित करता है कि एक प्रणाली किस प्रकार के अद्यतन का समर्थन करेगी। डी. एस. यू. प्रणालियों का, उपकरणों के रूप में, विकासकर्ताओं के लिए उनके उपयोग में आसानी और स्पष्टता पर भी मूल्यांकन किया जा सकता है। जिनसेंग जैसी कई डी. एस. यू. प्रणालियों को विभिन्न स्थिर विश्लेषणों को पारित करने के लिए कार्यक्रमों की आवश्यकता होती है। जबकि ये विश्लेषण उन कार्यक्रमों के गुणों को साबित करते हैं जो डी. एस. यू. के लिए मूल्यवान हैं, वे स्वभाव से परिष्कृत और समझने में कठिन हैं। डी. एस. यू. प्रणालियाँ जो स्थिर विश्लेषण का उपयोग नहीं करती हैं, उन्हें एक विशेष संकलक के उपयोग की आवश्यकता हो सकती है। कुछ डी. एस. यू. प्रणालियों को न तो स्थिर विश्लेषण की आवश्यकता होती है और न ही विशेष संकलकों की। डी. एस. यू. प्रणाली द्वारा अद्यतन किए जाने वाले कार्यक्रमों को लक्षित कार्यक्रम कहा जाता है। डी. एस. यू. प्रणालियों के शैक्षणिक प्रकाशनों में आमतौर पर मामले के अध्ययन के रूप में कई लक्षित कार्यक्रम शामिल होते हैं। वीएसएफटीपीडी, ओपनएसएसएच, पोस्टग्रेएसक्यूएल, टोर, अपाचे, जीएनयू जेब्रा, मेमकचेड और रेडिस सभी विभिन्न प्रणालियों के लिए गतिशील अद्यतन लक्ष्य हैं। चूँकि कुछ कार्यक्रम गतिशील अद्यतन को ध्यान में रखते हुए लिखे जाते हैं, इसलिए व्यावहारिक उपयोग के लिए डी. एस. यू. प्रणाली का मूल्यांकन करने का एक मूल्यवान साधन मौजूदा कार्यक्रमों को फिर से तैयार करना है। संबंधित क्षेत्र गतिशील अद्यतन द्वारा संबोधित समस्या स्थान को कई अन्य के प्रतिच्छेदन के रूप में सोचा जा सकता है। उदाहरणों में चेकपॉइंटिंग, डायनेमिक लिंकिंग और दृढ़ता शामिल हैं। एक उदाहरण के रूप में, एक डेटाबेस जो अपने ऑन-डिस्क फ़ाइल प्रारूप के पिछले संस्करणों के साथ पिछड़े-संगत होना चाहिए, उसे एक गतिशील अद्यतन प्रणाली से अपेक्षित स्थिति परिवर्तन के समान प्रकार को पूरा करना चाहिए। इसी तरह, एक प्रोग्राम जिसमें एक प्लगइन वास्तुकला है, रनटाइम पर नए कोड को लोड करने और निष्पादित करने में सक्षम होना चाहिए। इसी तरह की तकनीकों का उपयोग कभी-कभी गतिशील मृत-कोड उन्मूलन के उद्देश्य से भी किया जाता है ताकि लोड या रनटाइम पर सशर्त मृत या पहुंच से बाहर कोड को हटाया जा सके और शेष कोड को इसके स्मृति पदचिह्न को कम करने या गति में सुधार करने के लिए फिर से जोड़ा जा सके। गतिशील सॉफ्टवेयर अद्यतन का सबसे पहला अग्रदूत अनावश्यक प्रणालियाँ हैं। एक अनावश्यक वातावरण में, मुख्य प्रणाली की विफलता की स्थिति में सक्रिय गणनाओं को नियंत्रित करने के लिए अतिरिक्त प्रणालियाँ मौजूद होती हैं। इन प्रणालियों में एक मुख्य मशीन और एक गर्म अतिरिक्त होता है। गर्म स्पेयर को समय-समय पर प्राथमिक प्रणाली के एक चेकप्वाइंट के साथ बोया जाता था। विफलता की स्थिति में, गर्म स्पेयर संभाल लेगा, और मुख्य मशीन नया गर्म स्पेयर बन जाएगी। इस पैटर्न को अद्यतन करने के लिए सामान्यीकृत किया जा सकता है। एक अद्यतन की स्थिति में, गर्म अतिरिक्त सक्रिय हो जाएगा, मुख्य प्रणाली अद्यतन हो जाएगी, और फिर अद्यतन प्रणाली नियंत्रण फिर से शुरू कर देगी। सबसे पहला वास्तविक गतिशील सॉफ्टवेयर अद्यतन प्रणाली डी. वाई. एम. ओ. एस. (गतिशील संशोधन प्रणाली) है। इंसुप ली के पी. एच. डी. शोध प्रबंध में 1983 में प्रस्तुत, डी. वाई. एम. ओ. एस. एक पूरी तरह से एकीकृत प्रणाली थी जिसमें एक इंटरैक्टिव यूजर इंटरफेस, एक मॉड्यूला संस्करण के लिए एक संकलक और रनटाइम और स्रोत कोड तक पहुंच थी। इसने DYMOS को मौजूदा प्रोग्राम के खिलाफ अपडेट टाइप-चेक करने में सक्षम बनाया। कार्यान्वयन डी. एस. यू. प्रणालियों को एक चल रहे प्रोग्राम में नए कोड को लोड करना चाहिए, और मौजूदा स्थिति को एक ऐसे प्रारूप में बदलना चाहिए जिसे नए कोड द्वारा समझा जा सके। चूंकि डी. एस. यू. के कई प्रेरक उपयोग-मामले समय-महत्वपूर्ण हैं (उदाहरण के लिए, एक जीवित और कमजोर प्रणाली पर एक सुरक्षा सुधार को तैनात करना), डी. एस. यू. प्रणालियों को पर्याप्त अद्यतन उपलब्धता प्रदान करनी चाहिए। कुछ डी. एस. यू. प्रणालियाँ यह सुनिश्चित करने का भी प्रयास करती हैं कि अद्यतन उन्हें लागू करने से पहले सुरक्षित हैं। इनमें से किसी भी समस्या का कोई प्रामाणिक समाधान नहीं है। आमतौर पर, एक डी. एस. यू. प्रणाली जो एक समस्या क्षेत्र में अच्छा प्रदर्शन करती है, वह दूसरों के साथ समझौता करके ऐसा करती है। उदाहरण के लिए, गतिशील अद्यतनों के अनुभवजन्य परीक्षण से संकेत मिलता है कि अद्यतन बिंदुओं की संख्या बढ़ाने से असुरक्षित अद्यतनों की संख्या में वृद्धि होती है। कोड परिवर्तन अधिकांश डी. एस. यू. प्रणालियाँ अद्यतनों के लिए कोड की इकाई के रूप में सबरूटीन का उपयोग करती हैं; हालाँकि, नई डी. एस. यू. प्रणालियाँ संपूर्ण-कार्यक्रम अद्यतनों को लागू करती हैं। यदि लक्ष्य कार्यक्रम को आभासी मशीन भाषा में लागू किया जाता है, तो वी. एम. नए कोड को लोड करने के लिए मौजूदा बुनियादी ढांचे का उपयोग कर सकता है, क्योंकि आधुनिक आभासी मशीनें डी. एस. यू. (मुख्य रूप से डीबगिंग) के अलावा अन्य उपयोग के मामलों के लिए रनटाइम लोडिंग का समर्थन करती हैं। हॉटस्पॉट जेवीएम रनटाइम कोड लोडिंग का समर्थन करता है, और जावा (प्रोग्रामिंग भाषा) को लक्षित करने वाले डीएसयू सिस्टम इस सुविधा का उपयोग कर सकते हैं। सी या सी + + जैसी मूल भाषाओं में, डी. एस. यू. प्रणालियाँ विशेष संकलकों का उपयोग कर सकती हैं जो कार्यक्रम में निर्देश सम्मिलित करते हैं। अद्यतन समय पर, इस निर्देश को नवीनतम संस्करण की ओर इंगित करने के लिए अद्यतन किया जाता है। यदि कोई डी. एस. यू. प्रणाली इन संकेतों को स्थिर रूप से सम्मिलित करने के लिए संकलक का उपयोग नहीं करती है, तो यह उन्हें द्विआधारी पुनर्लेखन के साथ रनटाइम पर सम्मिलित करती है। द्विआधारी पुनर्लेखन कार्यों को पुनः निर्देशित करने के लिए एक चल रहे देशी प्रोग्राम की स्मृति छवि में निम्न-स्तरीय कोड लिखने की प्रक्रिया है। हालांकि इसके लिए किसी कार्यक्रम के स्थिर विश्लेषण की आवश्यकता नहीं है, यह अत्यधिक मंच-निर्भर है। एकिडेन और किटसुने एक पूरी तरह से नया प्रोग्राम शुरू करके नया प्रोग्राम कोड लोड करते हैं, या तो फोर्क-एक्सेक या डायनेमिक लोडिंग के माध्यम से। इसके बाद मौजूदा कार्यक्रम स्थिति को नए कार्यक्रम स्थान में स्थानांतरित कर दिया जाता है। स्थिति परिवर्तन एक अद्यतन के दौरान, कार्यक्रम स्थिति को मूल प्रतिनिधित्व से नए संस्करण के प्रतिनिधित्व में परिवर्तित किया जाना चाहिए। इसे राज्य परिवर्तन कहा जाता है। एक कार्य जो किसी अवस्था वस्तु या वस्तुओं के समूह को परिवर्तित करता है, उसे ट्रांसफॉर्मर कार्य या अवस्था ट्रांसफॉर्मर के रूप में संदर्भित किया जाता है। डीएसयू सिस्टम या तो ट्रांसफॉर्मर कार्यों को संश्लेषित करने का प्रयास कर सकते हैं, या आवश्यकता हो सकती है कि डेवलपर उन्हें मैन्युअल रूप से आपूर्ति करे। कुछ प्रणालियाँ इन दृष्टिकोणों को मिलाती हैं, ट्रांसफॉर्मर के कुछ तत्वों का अनुमान लगाती हैं जबकि दूसरों पर डेवलपर इनपुट की आवश्यकता होती है। इन ट्रांसफॉर्मर कार्यों को या तो प्रोग्राम अवस्था में आलसी तरीके से लागू किया जा सकता है, क्योंकि पुराने संस्करण अवस्था के प्रत्येक टुकड़े को एक्सेस किया जाता है, या उत्सुकता से, अद्यतन समय पर सभी अवस्था को बदल दिया जाता है। आलसी परिवर्तन यह सुनिश्चित करता है कि अद्यतन निरंतर समय में पूरा हो जाएगा, लेकिन ऑब्जेक्ट एक्सेस पर स्थिर-स्थिति ओवरहेड भी शामिल है। तीव्र परिवर्तन में अद्यतन के समय अधिक खर्च होता है, जिसके लिए प्रणाली को दुनिया को रोकने की आवश्यकता होती है जबकि सभी ट्रांसफॉर्मर चलते हैं। हालांकि, उत्सुक परिवर्तन संकलकों को राज्य की पहुंच को पूरी तरह से अनुकूलित करने की अनुमति देता है, जो आलसी परिवर्तन से जुड़े स्थिर-स्थिति ओवरहेड से बचता है। अद्यतन सुरक्षा अधिकांश डीएसयू सिस्टम अद्यतन के लिए कुछ सुरक्षा गुणों को दिखाने का प्रयास करते हैं। सुरक्षा जाँच का सबसे आम रूप प्रकार सुरक्षा है, जहाँ एक अद्यतन को सुरक्षित माना जाता है यदि इसके परिणामस्वरूप कोई नया कोड पुराने राज्य प्रतिनिधित्व पर काम नहीं करता है, या इसके विपरीत। प्रकार सुरक्षा की जाँच आम तौर पर दो गुणों में से एक, सक्रियता सुरक्षा या सहमति-स्वतंत्रता सुरक्षा को दिखाकर की जाती है। यदि अद्यतन समय पर कॉल स्टैक पर कोई अद्यतन कार्य मौजूद नहीं है तो एक प्रोग्राम को सक्रियता-सुरक्षित माना जाता है। यह सुरक्षा साबित करता है क्योंकि नियंत्रण कभी भी पुराने कोड पर वापस नहीं आ सकता है जो डेटा के नए प्रतिनिधित्वों तक पहुंच सकता है। प्रकार की सुरक्षा को साबित करने का एक और तरीका स्वतंत्रता है, जहां कोड का एक खंड सुरक्षित माना जाता है यदि यह किसी दिए गए प्रकार की स्थिति तक इस तरह से नहीं पहुंचता है जिसके लिए प्रकार के प्रतिनिधित्व के ज्ञान की आवश्यकता होती है। यह कहा जा सकता है कि यह कोड राज्य तक ठोस रूप से नहीं पहुंच सकता है, जबकि यह अमूर्त रूप से राज्य तक पहुंच सकता है। कोड के किसी भी खंड में सभी प्रकार के लिए गैर-स्वतंत्रता को साबित या गलत साबित करना संभव है, और डीएसयू प्रणाली जिनसेंग इसका उपयोग प्रकार सुरक्षा को साबित करने के लिए करती है। यदि कोई फ़ंक्शन विपक्ष-मुक्त साबित होता है, तो इसे अद्यतन किया जा सकता है, भले ही वह स्टैक पर लाइव हो, क्योंकि यह पुराने प्रतिनिधित्व का उपयोग करके स्थिति तक पहुँचने से एक प्रकार की त्रुटि का कारण नहीं बनेगा। हेडन एट अल द्वारा स्वतंत्रता और सक्रियता सुरक्षा का अनुभवजन्य विश्लेषण। दिखाएँ कि दोनों तकनीकें सबसे सही अद्यतन की अनुमति देती हैं और सबसे गलत अद्यतन को अस्वीकार करती हैं। हालाँकि, मैन्युअल रूप से अद्यतन बिंदुओं का चयन करने से शून्य अद्यतन त्रुटियाँ होती हैं, और फिर भी लगातार अद्यतन उपलब्धता की अनुमति मिलती है। मौजूदा सिस्टम डी. वाई. एम. ओ. एस. डी. वाई. एम. ओ. एस. उल्लेखनीय है कि यह सबसे पहला प्रस्तावित डी. एस. यू. सिस्टम था। डी. वाई. एम. ओ. एस. में मॉड्यूला के व्युत्पन्न में लिखे गए कार्यक्रमों के लिए एक पूरी तरह से एकीकृत वातावरण होता है, जो सिस्टम को आर. ई. पी. एल. के समान एक कमांड इंटरप्रेटर, स्रोत कोड, संकलक और रनटाइम वातावरण तक पहुंच प्रदान करता है। डी. वाई. एम. ओ. एस. में, अद्यतन एक उपयोगकर्ता द्वारा इंटरैक्टिव वातावरण में एक कमांड निष्पादित करके शुरू किए जाते हैं। इस आदेश में निर्देश शामिल हैं जो निर्दिष्ट करते हैं कि कोई अद्यतन कब हो सकता है, जिसे कब-शर्तें कहा जाता है। डी. वाई. एम. ओ. एस. के लिए उपलब्ध जानकारी इसे चल रहे लक्ष्य कार्यक्रम के संबंध में अद्यतनों की प्रकार-सुरक्षा को लागू करने में सक्षम बनाती है। केस्प्लाइस, केपैच और केग्राफ्ट केस्प्लाइस एक डीएसयू प्रणाली है जो केवल लिनक्स कर्नेल को लक्षित करती है, जो खुद को विशेष डीएसयू प्रणालियों में से एक बनाती है जो लक्षित कार्यक्रम के रूप में एक ऑपरेटिंग सिस्टम कर्नेल का समर्थन करती है। केस्प्लाइस लिनक्स कर्नेल के वर्तमान और अद्यतन संस्करणों के बीच परिवर्तनों को निर्धारित करने के लिए स्रोत-स्तर के अंतर का उपयोग करता है, और फिर चल रहे कर्नेल में परिवर्तनों को डालने के लिए द्विआधारी पुनर्लेखन का उपयोग करता है। केस्प्लाइस का रखरखाव इसके मूल लेखकों, केस्प्लाइस इंक. द्वारा स्थापित एक वाणिज्यिक उद्यम द्वारा किया गया था, जिसे जुलाई 2011 में ओरेकल कॉर्पोरेशन द्वारा अधिग्रहित किया गया था। केस्प्लाइस का उपयोग वाणिज्यिक आधार पर और विशेष रूप से ओरेकल लिनक्स वितरण में किया जाता है। एसयूएसई ने केक्राफ्ट को लाइव कर्नेल पैचिंग के लिए एक ओपन-सोर्स विकल्प के रूप में विकसित किया, और रेड हैट ने केपैच के साथ भी ऐसा ही किया। वे दोनों एक चल रहे लिनक्स कर्नेल पर कार्य-स्तर परिवर्तनों को लागू करने की अनुमति देते हैं, जबकि एफ. टी. आर. ए. सी. द्वारा स्थापित लाइव पैचिंग तंत्र पर भरोसा करते हैं। केग्राफ्ट और केपैच के बीच प्राथमिक अंतर यह है कि वे अद्यतन कोड अनुभागों की रनटाइम स्थिरता सुनिश्चित करते हैं जबकि गर्म पैच लागू किए जाते हैं। केग्राफ्ट और केपैच को क्रमशः अप्रैल 2014 और मई 2014 में लिनक्स कर्नेल मेनलाइन में शामिल करने के लिए प्रस्तुत किया गया था, और लाइव पैचिंग के लिए न्यूनतम नींव को कर्नेल संस्करण 4 में लिनक्स कर्नेल मेनलाइन में विलय कर दिया गया था, जिसे 12 अप्रैल 2015 को जारी किया गया था। अप्रैल 2015 से, लिनक्स कर्नेल मेनलाइन द्वारा प्रदान किए गए सामान्य लाइव पैचिंग कोर में केपैच और केग्राफ्ट को पोर्ट करने पर काम चल रहा है। हालांकि, कार्यों के मूल और पैच किए गए संस्करणों के बीच सुरक्षित संक्रमण के लिए आवश्यक कार्य-स्तर स्थिरता तंत्र के कार्यान्वयन में देरी हुई है क्योंकि लिनक्स कर्नेल द्वारा प्रदान किए गए कॉल स्टैक उन स्थितियों में अविश्वसनीय हो सकते हैं जिनमें उचित स्टैक फ्रेम के बिना असेंबली कोड शामिल होता है; परिणामस्वरूप, पोर्टिंग कार्य प्रगति पर है। कर्नेल के कॉल स्टैक की विश्वसनीयता में सुधार करने के प्रयास में, कर्नेल की संकलन-समय ऑब्जेक्ट फ़ाइलों की जांच करने और यह सुनिश्चित करने के उद्देश्य से एक विशेष सैनिटी-चेक यूजरस्पेस उपयोगिता भी विकसित की गई है कि कॉल स्टैक हमेशा बनाए रखा जाए; यह कर्नेल ऊप्स संदेशों के हिस्से के रूप में अधिक विश्वसनीय कॉल स्टैक प्राप्त करने की संभावना भी खोलता है। जिनसेंग जिनसेंग एक सामान्य उद्देश्य वाली डी. एस. यू. प्रणाली है। यह एकमात्र डी. एस. यू. प्रणाली है जो विपक्ष-स्वतंत्रता सुरक्षा तकनीक का उपयोग करती है, जो इसे उन कार्यों को अद्यतन करने की अनुमति देती है जो स्टैक पर लाइव हैं जब तक कि वे अद्यतन प्रकारों तक ठोस पहुंच नहीं बनाते हैं। जिनसेंग को ओसीएएमएल में सी इंटरमीडिएट लैंग्वेज फ्रेमवर्क का उपयोग करके लिखे गए स्रोत-से-स्रोत संकलक के रूप में लागू किया जाता है। यह संकलक सभी फंक्शन कॉल और टाइप एक्सेस के लिए अप्रत्यक्षता डालता है, जिनसेंग को पूरे कार्यक्रम निष्पादन के लिए एक निरंतर-समय ओवरहेड लागू करने की कीमत पर आलस्य से स्थिति को बदलने में सक्षम बनाता है। जिनसेंग का संकलक पूरे प्रारंभिक कार्यक्रम और गतिशील पैच के विपक्ष-स्वतंत्रता गुणों को साबित करता है। जिनसेंग के बाद के संस्करण भी लेन-देन सुरक्षा की धारणा का समर्थन करते हैं। यह डेवलपर्स को एक तार्किक इकाई के रूप में फ़ंक्शन कॉल के एक अनुक्रम को एनोटेट करने की अनुमति देता है, जो प्रोग्राम शब्दार्थ का उल्लंघन करने से अपडेट को उन तरीकों से रोकता है जो सक्रिय सुरक्षा या सहमति-स्वतंत्रता सुरक्षा द्वारा पता नहीं लगाया जा सकता है। उदाहरण के लिए, जिनसेंग के लेखकों द्वारा जांच किए गए ओपनएसएसएच के दो संस्करणों में, महत्वपूर्ण उपयोगकर्ता सत्यापन कोड को दो कार्यों के बीच स्थानांतरित किया गया था जिन्हें अनुक्रम में कहा जाता है। यदि पहले फ़ंक्शन का पहला संस्करण निष्पादित किया गया, एक अद्यतन हुआ, और दूसरे फ़ंक्शन का नया संस्करण निष्पादित किया गया, तो सत्यापन कभी नहीं किया जाएगा। इस खंड को लेन-देन के रूप में चिह्नित करने से यह सुनिश्चित होता है कि एक अद्यतन सत्यापन को होने से नहीं रोकेगा। अपस्टेयर एक डी. एस. यू. प्रणाली है जो एक अद्वितीय अद्यतन तंत्र, स्टैक पुनर्निर्माण का उपयोग करती है। अपस्टेयर के साथ एक प्रोग्राम को अद्यतन करने के लिए, एक डेवलपर किसी भी संभावित स्टैक फ्रेम के बीच एक मानचित्रण निर्दिष्ट करता है। अपस्टेयर इस मानचित्रण का उपयोग किसी भी समय प्रोग्राम को तुरंत अपडेट करने के लिए, किसी भी संख्या में धागे के साथ, और किसी भी कार्य के साथ स्टैक पर रहने में सक्षम है। पॉलस पॉलस सी के लिए एक द्विआधारी-पुनर्लेखन डी. एस. यू. प्रणाली है जो अपने निष्पादन में किसी भी समय अपरिवर्तित कार्यक्रमों को अद्यतन करने में सक्षम है। कार्यों को अद्यतन करने के लिए, यह एक नए कार्य पर पुनर्निर्देशित करने के लिए एक लक्ष्य कार्य के लिए प्रस्तावना को फिर से लिखता है, इन पुनर्निर्देशनों को कई संस्करणों पर श्रृंखला बनाता है। यह उन कार्यों में स्थिर-स्थिति ओवरहेड से बचाता है जिन्हें अद्यतन नहीं किया गया है। कटाना कटाना एक शोध प्रणाली है जो उपयोगकर्ता-मोड ईएलएफ द्विआधारी के लिए सीमित गतिशील अद्यतन (केस्प्लिस और इसके कांटे के समान) प्रदान करती है। कटाना पैचिंग मॉडल ईएलएफ वस्तुओं के स्तर पर काम करता है, और इस प्रकार इसमें भाषा-अज्ञेयवादी होने की क्षमता है जब तक कि संकलन लक्ष्य ईएलएफ है। किट्सुन और एकिडेन एकिडेन और किट्सुन एकल डीएसयू प्रणाली के दो प्रकार हैं जो सी में लिखे गए कार्यक्रमों के लिए डीएसयू की राज्य-हस्तांतरण शैली को लागू करते हैं। एक ही कार्यक्रम के भीतर कार्यों को अद्यतन करने के बजाय, एकिडेन और किट्सुन पूरे कार्यक्रमों में अद्यतन करते हैं, दो निष्पादनों के बीच आवश्यक स्थिति को स्थानांतरित करते हैं। जबकि एकिडेन कांटा-एक्सेक के यूनिक्स मुहावरे का उपयोग करके एक नया कार्यक्रम शुरू करके, लक्ष्य कार्यक्रम की स्थिति को क्रमबद्ध करके और इसे स्थानांतरित करके इसे पूरा करता है, किट्सुन "इन-प्लेस" राज्य हस्तांतरण करने के लिए गतिशील लिंकिंग का उपयोग करता है। किट्सुन एकिडेन के कोडबेस से लिया गया है, और इसे एकिडेन का बाद का संस्करण माना जा सकता है। एकिडेन और किटसुने इस मायने में भी उल्लेखनीय हैं कि उन्हें विशेष रनटाइम या संकलक के बजाय मुख्य रूप से अनुप्रयोग-स्तर के पुस्तकालयों के रूप में लागू किया जाता है। इस प्रकार, एकिडेन या किटसुने का उपयोग करने के लिए, एक एप्लिकेशन डेवलपर को हस्तचालित रूप से उस स्थिति को चिह्नित करना चाहिए जिसे स्थानांतरित किया जाना है, और प्रोग्राम में मैन्युअल रूप से उन बिंदुओं का चयन करना चाहिए जहां एक अद्यतन हो सकता है। इस प्रक्रिया को आसान बनाने के लिए, किट्सुन में एक विशेष संकलक शामिल है जो अवस्था परिवर्तक लिखने के लिए एक डोमेन-विशिष्ट भाषा को लागू करता है। एर्लांग एर्लांग डायनेमिक सॉफ्टवेयर अपडेटिंग का समर्थन करता है, हालांकि इसे आमतौर पर "हॉट कोड लोडिंग" के रूप में जाना जाता है। एर्लांग को अद्यतनों पर किसी सुरक्षा गारंटी की आवश्यकता नहीं है, लेकिन एर्लांग संस्कृति का सुझाव है कि डेवलपर्स एक रक्षात्मक शैली में लिखते हैं जो अद्यतन द्वारा उत्पन्न प्रकार त्रुटियों को शालीनता से संभालेगा। पाइमौल्ट पाइथन में लिखे गए गतिशील अद्यतन के लिए एक प्रोटोटाइपिंग प्लेटफॉर्म है। यह अन्य प्रणालियों से कई तकनीकों को इकट्ठा करता है, जिससे उनके संयोजन और विन्यास की अनुमति मिलती है। इस मंच का उद्देश्य डेवलपर्स को उन अद्यतन तकनीकों को चुनने देना है जो उन्हें अपनी आवश्यकताओं के लिए अधिक उपयुक्त लगती हैं। उदाहरण के लिए, किट्सुन या एकिडेन की तरह आवेदन के पूरे कोड को बदलते समय राज्य के आलसी अद्यतन को जिनसेंग की तरह जोड़ा जा सकता है। माइक्रोसॉफ्ट विजुअल सी + + माइक्रोसॉफ्ट विजुअल सी + + के लिए आंतरिक पैचिंग तकनीक का उपयोग कर रहा है जो पैच की कार्यात्मक शुद्धता बनाए रखते हुए व्यक्तिगत सी + + कार्यों को पैच करने का समर्थन करता है। वर्तमान में ज्ञात अनुप्रयोग एज़्योर एस. क्यू. एल. डेटाबेस में एस. क्यू. एल. सर्वर है। दृढ़ता (कंप्यूटर विज्ञान) रनटाइम सत्यापन संदर्भ बाहरी लिंक केस्प्लिस होमपेज केस्प्लिस स्रोत कोड जिनसेंग परियोजना पृष्ठ और स्रोत कोड/अपस्टेयर पेपर/पॉलस पेपर होमपेज एर्लांग होमपेज कटाना होमपेज व्हाइटपेपर ब्लॉग पोस्ट दृश्य सी + + पैचिंग सिस्टम प्रशासन पर