कॉपी-ऑन-राइट (सीओडब्लू): Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{Short description|Programming technique for efficiently duplicating data}} | {{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> यदि किसी संसाधन की प्रतिलिपि बनाई गई है किन्तुसंशोधित नहीं किया गया है, तो नया संसाधन बनाना आवश्यक नहीं है; संसाधन को प्रतिलिपि और मूल के बीच साझा किया जा सकता है। संशोधनों को अभी भी एक प्रतिलिपि बनानी चाहिए, इसलिए विधि : प्रतिलिपि संचालन पहले लिखने तक स्थगित कर दिया गया है। इस तरह से संसाधनों को साझा करके, संसाधन-संशोधित कार्यों में छोटा ओवरहेड जोड़ते हुए, असंशोधित प्रतियों की संसाधन खपत को महत्वपूर्ण रूप से कम करना संभव है। | ||
कॉपी-ऑन-राइट (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> यदि किसी संसाधन की प्रतिलिपि बनाई गई है किन्तुसंशोधित नहीं किया गया है, तो नया संसाधन बनाना आवश्यक नहीं है; संसाधन को प्रतिलिपि और मूल के बीच साझा किया जा सकता है। संशोधनों को अभी भी एक प्रतिलिपि बनानी चाहिए, इसलिए विधि : प्रतिलिपि संचालन पहले लिखने तक स्थगित कर दिया गया है। इस तरह से संसाधनों को साझा करके, संसाधन-संशोधित कार्यों में छोटा ओवरहेड जोड़ते हुए, असंशोधित प्रतियों की संसाधन खपत को महत्वपूर्ण रूप से कम करना संभव है। | |||
== आभासी स्मृति प्रबंधन में == | == आभासी स्मृति प्रबंधन में == | ||
Line 15: | Line 12: | ||
== सॉफ्टवेयर में == | == सॉफ्टवेयर में == | ||
COW का उपयोग लाइब्रेरी (कंप्यूटर साइंस), [[अनुप्रयोग प्रक्रिया सामग्री]] और [[ सिस्टम सॉफ्ट्वेयर | प्रणाली सॉफ्ट्वेयर]] कोड में भी किया जाता है। | COW का उपयोग लाइब्रेरी (कंप्यूटर साइंस), [[अनुप्रयोग प्रक्रिया सामग्री]] और [[ सिस्टम सॉफ्ट्वेयर | प्रणाली सॉफ्ट्वेयर]] कोड में भी किया जाता है। | ||
Line 29: | Line 24: | ||
</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> | ||
[[क्यूटी (सॉफ्टवेयर)]] ढांचे में, कई प्रकार कॉपी-ऑन-राइट (क्यूटी की शर्तों में निहित रूप से साझा) हैं। क्यूटी आंतरिक संदर्भ काउंटर को बढ़ाने या घटाने के लिए परमाणु तुलना और स्वैप संचालन का उपयोग करता है। चूंकि प्रतियां सस्ती हैं, क्यूटी प्रकारों को अधिकांशतः [[मल्टीथ्रेडिंग (कंप्यूटर आर्किटेक्चर)]] द्वारा लॉक (कंप्यूटर विज्ञान) की आवश्यकता के बिना [[आपसी बहिष्कार]] जैसे | [[क्यूटी (सॉफ्टवेयर)]] ढांचे में, कई प्रकार कॉपी-ऑन-राइट (क्यूटी की शर्तों में निहित रूप से साझा) हैं। क्यूटी आंतरिक संदर्भ काउंटर को बढ़ाने या घटाने के लिए परमाणु तुलना और स्वैप संचालन का उपयोग करता है। चूंकि प्रतियां सस्ती हैं, क्यूटी प्रकारों को अधिकांशतः [[मल्टीथ्रेडिंग (कंप्यूटर आर्किटेक्चर)]] द्वारा लॉक (कंप्यूटर विज्ञान) की आवश्यकता के बिना [[आपसी बहिष्कार]] जैसे 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> | ||
Revision as of 21:28, 2 March 2023
कॉपी-ऑन-राइट (COW), जिसे कभी-कभी निहित साझाकरण के रूप में संदर्भित किया जाता है[1] या छायांकन,[2] एक संसाधन-प्रबंधन विधि है जिसका उपयोग कंप्यूटर प्रोग्रामिंग में संशोधित संसाधनों पर डुप्लिकेट या कॉपी ऑपरेशन को कुशलतापूर्वक प्रयुक्त करने के लिए किया जाता है।[3] यदि किसी संसाधन की प्रतिलिपि बनाई गई है किन्तुसंशोधित नहीं किया गया है, तो नया संसाधन बनाना आवश्यक नहीं है; संसाधन को प्रतिलिपि और मूल के बीच साझा किया जा सकता है। संशोधनों को अभी भी एक प्रतिलिपि बनानी चाहिए, इसलिए विधि : प्रतिलिपि संचालन पहले लिखने तक स्थगित कर दिया गया है। इस तरह से संसाधनों को साझा करके, संसाधन-संशोधित कार्यों में छोटा ओवरहेड जोड़ते हुए, असंशोधित प्रतियों की संसाधन खपत को महत्वपूर्ण रूप से कम करना संभव है।
आभासी स्मृति प्रबंधन में
कांटा (प्रणाली कॉल) के कार्यान्वयन में ऑपरेटिंग प्रणाली कंप्यूटर प्रक्रिया की आभासी मेमोरी साझा करने में कॉपी-ऑन-राइट इसका मुख्य उपयोग पाता है। सामान्यतः पर, प्रक्रिया किसी भी मेमोरी को संशोधित नहीं करती है और पता स्थान को पूरी तरह से बदलकर तुरंत नई प्रक्रिया निष्पादित करती है। इस प्रकार, फोर्क के समयप्रक्रिया की सभी मेमोरी को कॉपी करना व्यर्थ होगा, और इसके बजाय कॉपी-ऑन-राइट विधि का उपयोग किया जाता है।
कंप्यूटर संग्रहण के कुछ पृष्ठों को केवल पढ़ने के लिए चिह्नित करके और पृष्ठ के संदर्भों की संख्या को ध्यान में रखते हुए पृष्ठ तालिका का उपयोग करके कॉपी-ऑन-राइट को कुशलतापूर्वक कार्यान्वित किया जा सकता है। जब डेटा इन पृष्ठों पर लिखा जाता है, तो ऑपरेटिंग-प्रणाली कर्नेल (ऑपरेटिंग सिस्टम) लिखने के प्रयास को रोकता है और नया भौतिक पृष्ठ आवंटित करता है, जो कॉपी-ऑन-राइट डेटा के साथ प्रारंभ होता है, चूंकि केवल संदर्भ होने पर आवंटन को छोड़ा जा सकता है . कर्नेल तब पृष्ठ तालिका को नए (लिखने योग्य) पृष्ठ के साथ अद्यतन करता है, संदर्भों की संख्या घटाता है, और लेखन करता है। नया आवंटन सुनिश्चित करता है कि एक प्रक्रिया की स्मृति में परिवर्तन दूसरे में दिखाई नहीं दे रहा है।
कॉपी-ऑन-राइट विधि को शून्य से भरा भौतिक स्मृति का पृष्ठ बनाकर कुशल स्मृति आवंटन का समर्थन करने के लिए बढ़ाया जा सकता है। जब मेमोरी आवंटित की जाती है, तो लौटाए गए सभी पृष्ठ शून्य के पृष्ठ को संदर्भित करते हैं और सभी को कॉपी-ऑन-राइट चिह्नित किया जाता है। इस तरह, डेटा लिखे जाने तक प्रक्रिया के लिए भौतिक मेमोरी आवंटित नहीं की जाती है, प्रक्रियाओं को भौतिक मेमोरी की तुलना में अधिक वर्चुअल मेमोरी आरक्षित करने और वर्चुअल एड्रेस स्पेस से बाहर चलने के कठिन परिस्थिति पर मेमोरी का उपयोग करने की अनुमति देता है। संयुक्त एल्गोरिथ्म मांग पेजिंग के समान है।[3]
कॉपी-ऑन-राइट पेज का उपयोग लिनक्स कर्नेल के कर्नेल समान-पृष्ठ विलय|समान-पेज मर्जिंग फीचर में भी किया जाता है।[4]
सॉफ्टवेयर में
COW का उपयोग लाइब्रेरी (कंप्यूटर साइंस), अनुप्रयोग प्रक्रिया सामग्री और प्रणाली सॉफ्ट्वेयर कोड में भी किया जाता है।
उदाहरण
C++ मानक पुस्तकालय द्वारा प्रदान की गई स्ट्रिंग (सी ++)C++) वर्ग को विशेष रूप से प्रारंभिक C++98 मानक में कॉपी-ऑन-राइट कार्यान्वयन की अनुमति देने के लिए डिज़ाइन किया गया था,[5] किन्तुनए C++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.
PHP प्रोग्रामिंग भाषा में, संदर्भों को छोड़कर सभी प्रकार कॉपी-ऑन-राइट के रूप में कार्यान्वित किए जाते हैं। उदाहरण के लिए, तार और सरणियाँ संदर्भ द्वारा पारित की जाती हैं, किन्तुसंशोधित होने पर, यदि उनके पास गैर-शून्य संदर्भ संख्याएँ हैं, तो उन्हें डुप्लिकेट किया जाता है। यह उन्हें असाइनमेंट पर कॉपी करने या उन्हें अपरिवर्तनीय बनाने की प्रदर्शन समस्याओं के बिना मूल्य प्रकार के रूप में कार्य करने की अनुमति देता है।[7] क्यूटी (सॉफ्टवेयर) ढांचे में, कई प्रकार कॉपी-ऑन-राइट (क्यूटी की शर्तों में निहित रूप से साझा) हैं। क्यूटी आंतरिक संदर्भ काउंटर को बढ़ाने या घटाने के लिए परमाणु तुलना और स्वैप संचालन का उपयोग करता है। चूंकि प्रतियां सस्ती हैं, क्यूटी प्रकारों को अधिकांशतः मल्टीथ्रेडिंग (कंप्यूटर आर्किटेक्चर) द्वारा लॉक (कंप्यूटर विज्ञान) की आवश्यकता के बिना आपसी बहिष्कार जैसे s मान्य हैं।[8]
कंप्यूटर स्टोरेज में
स्नैपशॉट (कंप्यूटर स्टोरेज) के लिए गाय का उपयोग अंतर्निहित तंत्र के रूप में भी किया जा सकता है, जैसे कि लॉजिकल वॉल्यूम प्रबंधन, फ़ाइल प्रणाली जैसे Btrfs और ZFS द्वारा प्रदान किया गया,[9] और डेटाबेस सर्वर जैसे Microsoft SQL Server#Replication Services। सामान्यतः पर, स्नैपशॉट केवल संशोधित डेटा को संग्रहीत करते हैं, और मूल के करीब संग्रहीत होते हैं, इसलिए वे केवल वृद्धिशील बैकअप का कमजोर रूप हैं और पूर्ण बैकअप के लिए स्थानापन्न नहीं कर सकते हैं।[10]
यह भी देखें
- आवंटित-ऑन-फ्लश
- डर्टी काउ - लिनक्स कर्नेल के लिए कंप्यूटर सुरक्षा भेद्यता
- फ्लाईवेट पैटर्न
- स्मृति प्रबंधन
- लगातार डेटा संरचना
- रेफ्स
- समतलन पुराना होना
संदर्भ
- ↑ "निहित साझाकरण". Qt Project. Retrieved 4 August 2016.
- ↑ 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.0 3.1 Bovet, Daniel Pierre; Cesati, Marco (2002-01-01). लिनक्स कर्नेल को समझना. O'Reilly Media. p. 295. ISBN 9780596002138.
- ↑ Abbas, Ali. "कर्नेल सेमपेज मर्जिंग प्रक्रिया". alouche.net. Archived from the original on 8 August 2016. Retrieved 4 August 2016.
- ↑ Meyers, Scott (2012). प्रभावी एसटीएल. Addison-Wesley. pp. 64–65. ISBN 9780132979184.
- ↑ "मूल स्ट्रिंग के लिए समवर्ती संशोधन". Open Standards. Retrieved 13 February 2015.
- ↑ Pauli, Julien; Ferrara, Anthony; Popov, Nikita (2013). "स्मृति प्रबंधन". PhpInternalsBook.com. Retrieved 4 August 2016.
- ↑ "थ्रेड्स और इम्प्लिक्टली शेयर्ड क्लासेस". Qt Project. Retrieved 4 August 2016.
- ↑ Kasampalis, Sakis (2010). "कॉपी-ऑन-राइट आधारित फाइल सिस्टम प्रदर्शन विश्लेषण और कार्यान्वयन" (PDF). p. 19. Retrieved 11 January 2013.
- ↑ Chien, Tim. "स्नैपशॉट बैकअप नहीं हैं". Oracle.com. Oracle. Retrieved 4 August 2016.