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

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Short description|Programming technique for efficiently duplicating data}}कॉपी-ऑन-राइट (COW), जिसे कभी-कभी निहित साझाकरण के रूप में संदर्भित किया जाता है<ref>{{cite web|title= निहित साझाकरण|url= http://doc.qt.io/qt-5/implicit-sharing.html|website= Qt Project|access-date= 4 August 2016}}</ref> या छायांकन,<ref>{{cite journal|last= Rodeh|first= Ohad|title= बी-ट्रीज़, शैडोइंग और क्लोन|journal= ACM Transactions on Storage|date= 1 February 2008|volume= 3|issue= 4|page= 1|doi= 10.1145/1326542.1326544|url= http://liw.fi/larch/ohad-btrees-shadowing-clones.pdf |access-date= 4 August 2016|citeseerx= 10.1.1.161.6863|s2cid= 207166167}}</ref> एक संसाधन-प्रबंधन विधि  है जिसका उपयोग [[कंप्यूटर प्रोग्रामिंग]] में संशोधित संसाधनों पर डुप्लिकेट या कॉपी ऑपरेशन को कुशलतापूर्वक प्रयुक्त करने के लिए किया जाता है।<ref name="Linux">{{cite book |title=लिनक्स कर्नेल को समझना|url=https://books.google.com/books?id=9yIEji1UheIC&q=%22copy%20on%20write%22&pg=PA295 |last1=Bovet |first1=Daniel Pierre |last2=Cesati |first2=Marco |date=2002-01-01 |publisher=O'Reilly Media |isbn=9780596002138 |page=295}}</ref> यदि किसी संसाधन की प्रतिलिपि बनाई गई है किन्तुसंशोधित नहीं किया गया है, तो नया संसाधन बनाना आवश्यक नहीं है; संसाधन को प्रतिलिपि और मूल के बीच साझा किया जा सकता है। संशोधनों को अभी भी एक प्रतिलिपि बनानी चाहिए, इसलिए विधि : प्रतिलिपि संचालन पहले लिखने तक स्थगित कर दिया गया है। इस तरह से संसाधनों को साझा करके, संसाधन-संशोधित कार्यों में छोटा ओवरहेड जोड़ते हुए, असंशोधित प्रतियों की संसाधन खपत को महत्वपूर्ण रूप से कम करना संभव है।
{{Short description|Programming technique for efficiently duplicating data}}कॉपी-ऑन-राइट (सीओडब्लू), जिसे कभी-कभी निहित साझाकरण के रूप में संदर्भित किया जाता है<ref>{{cite web|title= निहित साझाकरण|url= http://doc.qt.io/qt-5/implicit-sharing.html|website= Qt Project|access-date= 4 August 2016}}</ref> या छायांकन,<ref>{{cite journal|last= Rodeh|first= Ohad|title= बी-ट्रीज़, शैडोइंग और क्लोन|journal= ACM Transactions on Storage|date= 1 February 2008|volume= 3|issue= 4|page= 1|doi= 10.1145/1326542.1326544|url= http://liw.fi/larch/ohad-btrees-shadowing-clones.pdf |access-date= 4 August 2016|citeseerx= 10.1.1.161.6863|s2cid= 207166167}}</ref> एक संसाधन-प्रबंधन विधि  है जिसका उपयोग [[कंप्यूटर प्रोग्रामिंग]] में संशोधित संसाधनों पर प्रतिलिपि या कॉपी ऑपरेशन को कुशलतापूर्वक प्रयुक्त करने के लिए किया जाता है।<ref name="Linux">{{cite book |title=लिनक्स कर्नेल को समझना|url=https://books.google.com/books?id=9yIEji1UheIC&q=%22copy%20on%20write%22&pg=PA295 |last1=Bovet |first1=Daniel Pierre |last2=Cesati |first2=Marco |date=2002-01-01 |publisher=O'Reilly Media |isbn=9780596002138 |page=295}}</ref> यदि किसी संसाधन की प्रतिलिपि बनाई गई है किन्तुसंशोधित नहीं किया गया है, तो नया संसाधन बनाना आवश्यक नहीं है; संसाधन को प्रतिलिपि और मूल के बीच साझा किया जा सकता है। संशोधनों को अभी भी एक प्रतिलिपि बनानी चाहिए, इसलिए विधि : प्रतिलिपि संचालन पहले लिखने तक स्थगित कर दिया गया है। इस तरह से संसाधनों को साझा करके, संसाधन-संशोधित कार्यों में छोटा ओवरहेड जोड़ते हुए, असंशोधित प्रतियों की संसाधन खपत को महत्वपूर्ण रूप से कम करना संभव है।


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


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


कॉपी-ऑन-राइट विधि  को शून्य से भरा [[भौतिक स्मृति]] का पृष्ठ बनाकर कुशल [[स्मृति आवंटन]] का समर्थन करने के लिए बढ़ाया जा सकता है। जब मेमोरी आवंटित की जाती है, तो लौटाए गए सभी पृष्ठ शून्य के पृष्ठ को संदर्भित करते हैं और सभी को कॉपी-ऑन-राइट चिह्नित किया जाता है। इस तरह, डेटा लिखे जाने तक प्रक्रिया के लिए भौतिक मेमोरी आवंटित नहीं की जाती है, प्रक्रियाओं को भौतिक मेमोरी की तुलना में अधिक वर्चुअल मेमोरी आरक्षित करने और वर्चुअल एड्रेस स्पेस से बाहर चलने के कठिन परिस्थिति पर मेमोरी का उपयोग करने की अनुमति देता है। संयुक्त एल्गोरिथ्म [[ मांग पेजिंग ]] के समान है।<ref name="Linux" />
कॉपी-ऑन-राइट विधि  को शून्य से भरा [[भौतिक स्मृति|भौतिक मेमोरी]] का पृष्ठ बनाकर कुशल [[स्मृति आवंटन|मेमोरी आवंटन]] का समर्थन करने के लिए बढ़ाया जा सकता है। जब मेमोरी आवंटित की जाती है, तो लौटाए गए सभी पृष्ठ शून्य के पृष्ठ को संदर्भित करते हैं और सभी को कॉपी-ऑन-राइट चिह्नित किया जाता है। इस तरह, डेटा लिखे जाने तक प्रक्रिया के लिए भौतिक मेमोरी आवंटित नहीं की जाती है, प्रक्रियाओं को भौतिक मेमोरी की तुलना में अधिक वर्चुअल मेमोरी आरक्षित करने और वर्चुअल एड्रेस स्पेस से बाहर चलने के कठिन परिस्थिति पर मेमोरी का उपयोग करने की अनुमति देता है। संयुक्त एल्गोरिथ्म [[ मांग पेजिंग ]] के समान है।<ref name="Linux" />
 
कॉपी-ऑन-राइट पेज का उपयोग [[लिनक्स कर्नेल]] के [[कर्नेल समान-पृष्ठ विलय]]|समान-पेज मर्जिंग फीचर में भी किया जाता है।<ref>{{cite web|last=Abbas|first=Ali|title=कर्नेल सेमपेज मर्जिंग प्रक्रिया|url=http://alouche.net/blog/2011/07/18/the-kernel-samepage-merging-process/|website=alouche.net|access-date=4 August 2016|archive-url=https://web.archive.org/web/20160808174912/http://alouche.net/blog/2011/07/18/the-kernel-samepage-merging-process/|archive-date=8 August 2016 }}</ref>


कॉपी-ऑन-राइट पेज का उपयोग [[लिनक्स कर्नेल]] के [[कर्नेल समान-पृष्ठ विलय]] समान-पेज मर्जिंग फीचर में भी किया जाता है।<ref>{{cite web|last=Abbas|first=Ali|title=कर्नेल सेमपेज मर्जिंग प्रक्रिया|url=http://alouche.net/blog/2011/07/18/the-kernel-samepage-merging-process/|website=alouche.net|access-date=4 August 2016|archive-url=https://web.archive.org/web/20160808174912/http://alouche.net/blog/2011/07/18/the-kernel-samepage-merging-process/|archive-date=8 August 2016 }}</ref>


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


=== उदाहरण ===
=== उदाहरण ===
C++ मानक पुस्तकालय द्वारा प्रदान की गई [[स्ट्रिंग (सी ++)]]C++) वर्ग को विशेष रूप से प्रारंभिक C++98 मानक में कॉपी-ऑन-राइट कार्यान्वयन की अनुमति देने के लिए डिज़ाइन किया गया था,<ref name="meyers">{{cite book |first=Scott |last=Meyers |author-link=Scott Meyers |date=2012 |title=प्रभावी एसटीएल|publisher=Addison-Wesley |pages=64–65 |url=https://books.google.com/books?id=U7lTySXdFk0C&pg=PT734|isbn=9780132979184 }}</ref> किन्तुनए C++11 मानक में नहीं:<ref>{{cite web|title=मूल स्ट्रिंग के लिए समवर्ती संशोधन|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2534.html|website=Open Standards|access-date=13 February 2015}}</ref>
[[स्ट्रिंग (सी ++)|सी ++]] स्टैण्डर्ड लाइब्रेरी द्वारा प्रदान की गई [[स्ट्रिंग (सी ++)]] वर्ग को विशेष रूप से प्रारंभिक C++98 मानक में कॉपी-ऑन-राइट कार्यान्वयन की अनुमति देने के लिए डिज़ाइन किया गया था,<ref name="meyers">{{cite book |first=Scott |last=Meyers |author-link=Scott Meyers |date=2012 |title=प्रभावी एसटीएल|publisher=Addison-Wesley |pages=64–65 |url=https://books.google.com/books?id=U7lTySXdFk0C&pg=PT734|isbn=9780132979184 }}</ref> किन्तु नए [[स्ट्रिंग (सी ++)|सी ++]]11 मानक में नहीं है :<ref>{{cite web|title=मूल स्ट्रिंग के लिए समवर्ती संशोधन|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2534.html|website=Open Standards|access-date=13 February 2015}}</ref>
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
std::string x("Hello");
std::string x("Hello");
Line 23: Line 22:
y += ", World!";    // Now y uses a different buffer; x still uses the same old buffer.
y += ", World!";    // Now y uses a different buffer; x still uses the same old buffer.
</syntaxhighlight>
</syntaxhighlight>
[[PHP]] प्रोग्रामिंग भाषा में, संदर्भों को छोड़कर सभी प्रकार कॉपी-ऑन-राइट के रूप में कार्यान्वित किए जाते हैं। उदाहरण के लिए, तार और सरणियाँ संदर्भ द्वारा पारित की जाती हैं, किन्तुसंशोधित होने पर, यदि उनके पास गैर-शून्य संदर्भ संख्याएँ हैं, तो उन्हें डुप्लिकेट किया जाता है। यह उन्हें असाइनमेंट पर कॉपी करने या उन्हें अपरिवर्तनीय बनाने की प्रदर्शन समस्याओं के बिना मूल्य प्रकार के रूप में कार्य करने की अनुमति देता है।<ref>{{cite web |last1=Pauli |first1=Julien |last2=Ferrara |first2=Anthony |last3=Popov |first3=Nikita |title=स्मृति प्रबंधन|url=http://www.phpinternalsbook.com/zvals/memory_management.html#reference-counting-and-copy-on-write |website=PhpInternalsBook.com |access-date=4 August 2016 |date=2013 }}</ref>
[[PHP|पीएचपी]] प्रोग्रामिंग भाषा में, संदर्भों को छोड़कर सभी प्रकार कॉपी-ऑन-राइट के रूप में कार्यान्वित किए जाते हैं। उदाहरण के लिए, तार और सरणियाँ संदर्भ द्वारा पारित की जाती हैं, किन्तु संशोधित होने पर, यदि उनके पास गैर-शून्य संदर्भ संख्याएँ हैं, तो उन्हें प्रतिलिपि किया जाता है। यह उन्हें असाइनमेंट पर कॉपी करने या उन्हें अपरिवर्तनीय बनाने की प्रदर्शन समस्याओं के बिना मूल्य प्रकार के रूप में कार्य करने की अनुमति देता है।<ref>{{cite web |last1=Pauli |first1=Julien |last2=Ferrara |first2=Anthony |last3=Popov |first3=Nikita |title=स्मृति प्रबंधन|url=http://www.phpinternalsbook.com/zvals/memory_management.html#reference-counting-and-copy-on-write |website=PhpInternalsBook.com |access-date=4 August 2016 |date=2013 }}</ref> [[क्यूटी (सॉफ्टवेयर)]] ढांचे में, कई प्रकार कॉपी-ऑन-राइट (क्यूटी की शर्तों में निहित रूप से साझा) हैं। क्यूटी आंतरिक संदर्भ काउंटर को बढ़ाने या घटाने के लिए परमाणु तुलना और स्वैप संचालन का उपयोग करता है। चूंकि प्रतियां सस्ती हैं, क्यूटी प्रकारों को अधिकांशतः [[मल्टीथ्रेडिंग (कंप्यूटर आर्किटेक्चर)]] द्वारा लॉक (कंप्यूटर विज्ञान) की आवश्यकता के बिना [[आपसी बहिष्कार]] जैसे सुरक्षित रूप से उपयोग किया जा सकता है। गाय के लाभ इस प्रकार सिंगल और मल्टीथ्रेडेड प्रणाली दोनों में मान्य हैं।<ref>{{cite web |title=थ्रेड्स और इम्प्लिक्टली शेयर्ड क्लासेस|url=http://doc.qt.io/qt-5/threads-modules.html#threads-and-implicitly-shared-classes |website=Qt Project |access-date=4 August 2016 }}</ref>
[[क्यूटी (सॉफ्टवेयर)]] ढांचे में, कई प्रकार कॉपी-ऑन-राइट (क्यूटी की शर्तों में निहित रूप से साझा) हैं। क्यूटी आंतरिक संदर्भ काउंटर को बढ़ाने या घटाने के लिए परमाणु तुलना और स्वैप संचालन का उपयोग करता है। चूंकि प्रतियां सस्ती हैं, क्यूटी प्रकारों को अधिकांशतः [[मल्टीथ्रेडिंग (कंप्यूटर आर्किटेक्चर)]] द्वारा लॉक (कंप्यूटर विज्ञान) की आवश्यकता के बिना [[आपसी बहिष्कार]] जैसे s मान्य हैं।<ref>{{cite web |title=थ्रेड्स और इम्प्लिक्टली शेयर्ड क्लासेस|url=http://doc.qt.io/qt-5/threads-modules.html#threads-and-implicitly-shared-classes |website=Qt Project |access-date=4 August 2016 }}</ref>




== कंप्यूटर स्टोरेज में ==
== कंप्यूटर संचयन में ==
स्नैपशॉट (कंप्यूटर स्टोरेज) के लिए गाय का उपयोग अंतर्निहित तंत्र के रूप में भी किया जा सकता है, जैसे कि लॉजिकल वॉल्यूम प्रबंधन, फ़ाइल प्रणाली जैसे [[Btrfs]] और [[ZFS]] द्वारा प्रदान किया गया,<ref>{{cite web |url=http://sakisk.me/files/copy-on-write-based-file-systems.pdf |title=कॉपी-ऑन-राइट आधारित फाइल सिस्टम प्रदर्शन विश्लेषण और कार्यान्वयन|last=Kasampalis |first=Sakis |date=2010 |page=19 |access-date=11 January 2013 }}</ref> और डेटाबेस सर्वर जैसे Microsoft SQL Server#Replication Services। सामान्यतः पर, स्नैपशॉट केवल संशोधित डेटा को संग्रहीत करते हैं, और मूल के करीब संग्रहीत होते हैं, इसलिए वे केवल वृद्धिशील बैकअप का कमजोर रूप हैं और [[पूर्ण बैकअप]] के लिए स्थानापन्न नहीं कर सकते हैं।<ref>{{cite web |last=Chien |first=Tim |title=स्नैपशॉट बैकअप नहीं हैं|url=http://www.oracle.com/technetwork/documentation/rman-fra-snapshot-322251.html |website=Oracle.com |publisher=Oracle |access-date=4 August 2016 }}</ref>
स्नैपशॉट (कंप्यूटर संचयन) के लिए गाय का उपयोग अंतर्निहित तंत्र के रूप में भी किया जा सकता है, जैसे कि लॉजिकल वॉल्यूम प्रबंधन, फ़ाइल प्रणाली जैसे [[Btrfs|बीटीआरएफएस]] और [[ZFS|जेडएफएस]] द्वारा प्रदान किया गया,<ref>{{cite web |url=http://sakisk.me/files/copy-on-write-based-file-systems.pdf |title=कॉपी-ऑन-राइट आधारित फाइल सिस्टम प्रदर्शन विश्लेषण और कार्यान्वयन|last=Kasampalis |first=Sakis |date=2010 |page=19 |access-date=11 January 2013 }}</ref> और डेटाबेस सर्वर जैसे माइक्रोसॉफ्ट एसक्यूएल सर्वर या प्रतिकृति सेवाएं। सामान्यतः पर, स्नैपशॉट केवल संशोधित डेटा को संग्रहीत करते हैं, और मूल के करीब संग्रहीत होते हैं, इसलिए वे केवल वृद्धिशील बैकअप का कमजोर रूप हैं और [[पूर्ण बैकअप]] के लिए स्थानापन्न नहीं कर सकते हैं।<ref>{{cite web |last=Chien |first=Tim |title=स्नैपशॉट बैकअप नहीं हैं|url=http://www.oracle.com/technetwork/documentation/rman-fra-snapshot-322251.html |website=Oracle.com |publisher=Oracle |access-date=4 August 2016 }}</ref>




Line 35: Line 33:
* डर्टी काउ - लिनक्स कर्नेल के लिए कंप्यूटर सुरक्षा भेद्यता
* डर्टी काउ - लिनक्स कर्नेल के लिए कंप्यूटर सुरक्षा भेद्यता
* [[फ्लाईवेट पैटर्न]]
* [[फ्लाईवेट पैटर्न]]
* [[स्मृति प्रबंधन]]
* [[स्मृति प्रबंधन|मेमोरी प्रबंधन]]
* [[लगातार डेटा संरचना]]
* [[लगातार डेटा संरचना]]
* रेफ्स
* रेफ्स

Revision as of 21:51, 2 March 2023

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

वर्चुअल मेमोरी प्रबंधन में

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

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

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

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

सॉफ्टवेयर में

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

उदाहरण

सी ++ स्टैण्डर्ड लाइब्रेरी द्वारा प्रदान की गई स्ट्रिंग (सी ++) वर्ग को विशेष रूप से प्रारंभिक C++98 मानक में कॉपी-ऑन-राइट कार्यान्वयन की अनुमति देने के लिए डिज़ाइन किया गया था,[5] किन्तु नए सी ++11 मानक में नहीं है :[6]

std::string x("Hello");

std::string y = x;  // x and y use the same buffer.

y += ", World!";    // Now y uses a different buffer; x still uses the same old buffer.

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


कंप्यूटर संचयन में

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


यह भी देखें

संदर्भ

  1. "निहित साझाकरण". Qt Project. Retrieved 4 August 2016.
  2. Rodeh, Ohad (1 February 2008). "बी-ट्रीज़, शैडोइंग और क्लोन" (PDF). ACM Transactions on Storage. 3 (4): 1. CiteSeerX 10.1.1.161.6863. doi:10.1145/1326542.1326544. S2CID 207166167. Retrieved 4 August 2016.
  3. 3.0 3.1 Bovet, Daniel Pierre; Cesati, Marco (2002-01-01). लिनक्स कर्नेल को समझना. O'Reilly Media. p. 295. ISBN 9780596002138.
  4. Abbas, Ali. "कर्नेल सेमपेज मर्जिंग प्रक्रिया". alouche.net. Archived from the original on 8 August 2016. Retrieved 4 August 2016.
  5. Meyers, Scott (2012). प्रभावी एसटीएल. Addison-Wesley. pp. 64–65. ISBN 9780132979184.
  6. "मूल स्ट्रिंग के लिए समवर्ती संशोधन". Open Standards. Retrieved 13 February 2015.
  7. Pauli, Julien; Ferrara, Anthony; Popov, Nikita (2013). "स्मृति प्रबंधन". PhpInternalsBook.com. Retrieved 4 August 2016.
  8. "थ्रेड्स और इम्प्लिक्टली शेयर्ड क्लासेस". Qt Project. Retrieved 4 August 2016.
  9. Kasampalis, Sakis (2010). "कॉपी-ऑन-राइट आधारित फाइल सिस्टम प्रदर्शन विश्लेषण और कार्यान्वयन" (PDF). p. 19. Retrieved 11 January 2013.
  10. Chien, Tim. "स्नैपशॉट बैकअप नहीं हैं". Oracle.com. Oracle. Retrieved 4 August 2016.