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

From Vigyanwiki
Revision as of 22:54, 24 February 2023 by alpha>Indicwiki (Created page with "{{Short description|Programming technique for efficiently duplicating data}} {{More citations needed|date=August 2020}} कॉपी-ऑन-राइट (COW), जिसे...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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


कंप्यूटर स्टोरेज में

स्नैपशॉट (कंप्यूटर स्टोरेज) के लिए गाय का उपयोग अंतर्निहित तंत्र के रूप में भी किया जा सकता है, जैसे कि लॉजिकल वॉल्यूम प्रबंधन, फ़ाइल सिस्टम जैसे Btrfs और ZFS द्वारा प्रदान किया गया,[9] और डेटाबेस सर्वर जैसे Microsoft SQL Server#Replication Services। आमतौर पर, स्नैपशॉट केवल संशोधित डेटा को संग्रहीत करते हैं, और मूल के करीब संग्रहीत होते हैं, इसलिए वे केवल वृद्धिशील बैकअप का एक कमजोर रूप हैं और पूर्ण बैकअप के लिए स्थानापन्न नहीं कर सकते हैं।[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.