कॉपी-ऑन-राइट (सीओडब्लू)

कॉपी-ऑन-राइट (सीओडब्लू), जिसे कभी-कभी निहित साझाकरण के रूप में संदर्भित किया जाता है या छायांकन, एक संसाधन-प्रबंधन विधि है जिसका उपयोग कंप्यूटर प्रोग्रामिंग में संशोधित संसाधनों पर प्रतिलिपि या कॉपी ऑपरेशन को कुशलतापूर्वक प्रयुक्त करने के लिए किया जाता है। यदि किसी संसाधन की प्रतिलिपि बनाई गई है किन्तुसंशोधित नहीं किया गया है, तो नया संसाधन बनाना आवश्यक नहीं है; संसाधन को प्रतिलिपि और मूल के बीच साझा किया जा सकता है। संशोधनों को अभी भी एक प्रतिलिपि बनानी चाहिए, इसलिए विधि : प्रतिलिपि संचालन पहले लिखने तक स्थगित कर दिया गया है। इस तरह से संसाधनों को साझा करके, संसाधन-संशोधित कार्यों में छोटा ओवरहेड जोड़ते हुए, असंशोधित प्रतियों की संसाधन खपत को महत्वपूर्ण रूप से कम करना संभव है।

वर्चुअल मेमोरी प्रबंधन में
फोर्क (प्रणाली कॉल) के कार्यान्वयन में ऑपरेटिंग प्रणाली कंप्यूटर प्रक्रिया की वर्चुअल मेमोरी साझा करने में कॉपी-ऑन-राइट इसका मुख्य उपयोग पाता है। सामान्यतः पर, प्रक्रिया किसी भी मेमोरी को संशोधित नहीं करती है और पता स्थान को पूरी तरह से बदलकर तुरंत नई प्रक्रिया निष्पादित करती है। इस प्रकार, फोर्क के समयप्रक्रिया की सभी मेमोरी को कॉपी करना व्यर्थ होगा, और इसके बजाय कॉपी-ऑन-राइट विधि का उपयोग किया जाता है।

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

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

कॉपी-ऑन-राइट पेज का उपयोग लिनक्स कर्नेल के कर्नेल समान-पृष्ठ विलय समान-पेज मर्जिंग फीचर में भी किया जाता है।

सॉफ्टवेयर में
सीओडब्लू का उपयोग लाइब्रेरी (कंप्यूटर साइंस), अनुप्रयोग प्रक्रिया सामग्री और प्रणाली सॉफ्ट्वेयर कोड में भी किया जाता है।

उदाहरण
सी ++ स्टैण्डर्ड लाइब्रेरी द्वारा प्रदान की गई स्ट्रिंग (सी ++) वर्ग को विशेष रूप से प्रारंभिक C++98 मानक में कॉपी-ऑन-राइट कार्यान्वयन की अनुमति देने के लिए डिज़ाइन किया गया था, किन्तु नए सी ++11 मानक में नहीं है : पीएचपी प्रोग्रामिंग भाषा में, संदर्भों को छोड़कर सभी प्रकार कॉपी-ऑन-राइट के रूप में कार्यान्वित किए जाते हैं। उदाहरण के लिए, तार और सरणियाँ संदर्भ द्वारा पारित की जाती हैं, किन्तु संशोधित होने पर, यदि उनके पास गैर-शून्य संदर्भ संख्याएँ हैं, तो उन्हें प्रतिलिपि किया जाता है। यह उन्हें असाइनमेंट पर कॉपी करने या उन्हें अपरिवर्तनीय बनाने की प्रदर्शन समस्याओं के बिना मूल्य प्रकार के रूप में कार्य करने की अनुमति देता है। क्यूटी (सॉफ्टवेयर) ढांचे में, कई प्रकार कॉपी-ऑन-राइट (क्यूटी की शर्तों में निहित रूप से साझा) हैं। क्यूटी आंतरिक संदर्भ काउंटर को बढ़ाने या घटाने के लिए परमाणु तुलना और स्वैप संचालन का उपयोग करता है। चूंकि प्रतियां सस्ती हैं, क्यूटी प्रकारों को अधिकांशतः मल्टीथ्रेडिंग (कंप्यूटर आर्किटेक्चर) द्वारा लॉक (कंप्यूटर विज्ञान) की आवश्यकता के बिना आपसी बहिष्कार जैसे सुरक्षित रूप से उपयोग किया जा सकता है। गाय के लाभ इस प्रकार सिंगल और मल्टीथ्रेडेड प्रणाली दोनों में मान्य हैं।

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

यह भी देखें

 * आवंटित-ऑन-फ्लश
 * डर्टी काउ - लिनक्स कर्नेल के लिए कंप्यूटर सुरक्षा भेद्यता
 * फ्लाईवेट पैटर्न
 * मेमोरी प्रबंधन
 * लगातार डेटा संरचना
 * रेफ्स
 * समतलन पुराना होना