मेमोरी पूल: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Short description|Dynamic memory allocation method}}मेमोरी पूल, जिसे [[निश्चित आकार के ब्लॉक आवंटन]] भी कहा जाता है, मेमोरी प्रबंधन के लिए [[पूल (कंप्यूटर विज्ञान)]] का उपयोग है जो [[गतिशील स्मृति आवंटन|गतिशील मेमोरी आवंटन]] की अनुमति देता है। गतिशील मेमोरी आवंटन [[मॉलोक]] और [[सी++]] के [[ नया (सी++) |नया (सी++)]] जैसी तकनीकों के उपयोग से हासिल किया जा सकता है और किया गया है; हालांकि स्थापित और विश्वसनीय कार्यान्वयन, ये परिवर्तनीय ब्लॉक आकारों के कारण [[विखंडन (कंप्यूटर)]] से ग्रस्त हैं, प्रदर्शन के कारण इन्हें [[वास्तविक समय कंप्यूटिंग]] में उपयोग करने की अनुशंसा नहीं की जाती है। अधिक कुशल समाधान समान आकार वाले कई मेमोरी ब्लॉकों को पूर्व-आबंटित करना है जिन्हें मेमोरी पूल कहा जाता है। एप्लिकेशन रन टाइम (प्रोग्राम जीवनचक्र चरण) पर [[हैंडल (कंप्यूटिंग)]] द्वारा दर्शाए गए ब्लॉकों को आवंटित, एक्सेस और मुक्त कर सकता है।
{{Short description|Dynamic memory allocation method}}'''मेमोरी पूल''', जिसे [[निश्चित आकार के ब्लॉक आवंटन|निश्चित आकृति  के ब्लॉक आवंटन]] भी कहा जाता है, मेमोरी प्रबंधन के लिए [[पूल (कंप्यूटर विज्ञान)|पूल]] का उपयोग होता है जो [[गतिशील स्मृति आवंटन|गतिशील मेमोरी आवंटन]] की अनुमति देता है। गतिशील मेमोरी आवंटन [[मॉलोक]] और [[सी++]] के [[ नया (सी++) |नवीन]] जैसी तकनीकों के उपयोग से प्राप्त किया जा सकता है और किया भी गया है; यघपि  स्थापित और विश्वसनीय कार्यान्वयन, ये परिवर्तनीय ब्लॉक आकृतियों के कारण [[विखंडन (कंप्यूटर)|विखंडन]] से ग्रस्त होते हैं, प्रदर्शन के कारण इन्हें [[वास्तविक समय कंप्यूटिंग|वास्तविक समय प्रणाली]] में उपयोग करने की अनुशंसा नहीं की जाती है। अधिक कुशल समाधान समान आकृति वाले विभिन्न मेमोरी ब्लॉकों को पूर्व-आबंटित करना होता है जिन्हें '''मेमोरी पूल''' कहा जाता है। एप्लिकेशन रन टाइम (प्रोग्राम जीवनचक्र चरण) पर [[हैंडल (कंप्यूटिंग)|हैंडल]] द्वारा प्रदर्शित किये गए ब्लॉकों को आवंटित, अभिगम और मुक्त कर सकता है।


कई RTOS#मेमोरी एलोकेशन|रियल-टाइम ऑपरेटिंग सिस्टम मेमोरी पूल का उपयोग करते हैं, जैसे [[लेनदेन प्रसंस्करण सुविधा]]
कई रियल-टाइम ऑपरेटिंग सिस्टम मेमोरी पूल का उपयोग करते हैं, जैसे [[लेनदेन प्रसंस्करण सुविधा]]


कुछ प्रणालियाँ, जैसे वेब सर्वर [[Nginx]], चर-आकार आवंटन के समूह को संदर्भित करने के लिए ''मेमोरी पूल'' शब्द का उपयोग करती हैं, जिन्हें बाद में ही बार में हटाया जा सकता है। इसे ''क्षेत्र'' के नाम से भी जाना जाता है; क्षेत्र-आधारित [[स्मृति प्रबंधन|मेमोरी प्रबंधन]] देखें.
कुछ प्रणालियाँ, जैसे वेब सर्वर [[Nginx|एनजीआईएनएक्स]], चर-आकृति आवंटन के समूह को संदर्भित करने के लिए ''मेमोरी पूल'' शब्द का उपयोग करती हैं, जिन्हें पश्चात् में एक ही बार में हटाया जा सकता है। इसे एक ''क्षेत्र'' के नाम से भी जाना जाता है; क्षेत्र-आधारित [[स्मृति प्रबंधन|मेमोरी प्रबंधन]] देखें।


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


*पूल से मेमोरी आवंटित करें। फ़ंक्शन उस पूल का निर्धारण करेगा जहां आवश्यक ब्लॉक फिट बैठता है। यदि उस पूल के सभी ब्लॉक पहले से ही आरक्षित हैं, तो फ़ंक्शन अगले बड़े पूल में से को खोजने का प्रयास करता है। आवंटित मेमोरी ब्लॉक को हैंडल (कंप्यूटिंग) के साथ दर्शाया जाता है।
*पूल से मेमोरी आवंटित करें। फलन  उस पूल का निर्धारण करेगा जहां आवश्यक ब्लॉक उपयुक्त स्थित होता है। यदि उस पूल के सभी ब्लॉक पहले से ही आरक्षित होते हैं, तो फलन अगले बड़े पूल में से को अन्वेषण का प्रयास करता है। आवंटित मेमोरी ब्लॉक को हैंडल के साथ प्रदर्शित किया जाता है।
* आवंटित मेमोरी तक पहुंच सूचक प्राप्त करें।
* आवंटित मेमोरी तक अभिग्म सूचक प्राप्त करें।
*पूर्व में आवंटित मेमोरी ब्लॉक को मुक्त करें।
*पूर्व में आवंटित मेमोरी ब्लॉक को मुक्त करें।
*उदाहरण के लिए हैंडल को के साथ कार्यान्वित किया जा सकता है <code>unsigned int</code>. मॉड्यूल हैंडल को पूल इंडेक्स, मेमोरी ब्लॉक इंडेक्स और संस्करण में विभाजित करके आंतरिक रूप से व्याख्या कर सकता है। पूल और मेमोरी ब्लॉक इंडेक्स हैंडल के साथ संबंधित ब्लॉक तक तेजी से पहुंच की अनुमति देता है, जबकि संस्करण, जो प्रत्येक नए आवंटन पर बढ़ाया जाता है, उन हैंडल का पता लगाने की अनुमति देता है जिनका मेमोरी ब्लॉक पहले ही मुक्त हो चुका है (बहुत लंबे समय तक रखे गए हैंडल के कारण)।
*उदाहरण के लिए हैंडल को के साथ कार्यान्वित किया जा सकता है। मॉड्यूल हैंडल को पूल इंडेक्स, मेमोरी ब्लॉक इंडेक्स और संस्करण में विभाजित करके आंतरिक रूप से व्याख्या कर सकता है। पूल और मेमोरी ब्लॉक इंडेक्स हैंडल के साथ संबंधित ब्लॉक तक शीघ्रता से अभिग्म की अनुमति देता है, जबकि संस्करण, जो प्रत्येक नए आवंटन पर बढ़ाया जाता है, उन हैंडल का पता लगाने की अनुमति देता है जिनका मेमोरी ब्लॉक पहले ही मुक्त हो चुकी होती है (बहुत लंबे समय तक रखे गए हैंडल के कारण)।


== मेमोरी पूल बनाम मॉलोक ==
== मेमोरी पूल विरुद्ध मॉलोक ==
फ़ायदे
लाभ
*मेमोरी पूल निरंतर निष्पादन समय के साथ मेमोरी आवंटन की अनुमति देता है। यदि प्रत्येक ऑब्जेक्ट के लिए मेमोरी आवंटित करने के लिए ''मॉलोक'' का उपयोग किया जाता है, तो पूल में हजारों ऑब्जेक्ट के लिए मेमोरी रिलीज़ केवल ऑपरेशन है, एक-करके नहीं।
*मेमोरी पूल निरंतर निष्पादन समय के साथ मेमोरी आवंटन की अनुमति देता है। यदि प्रत्येक वस्तु के लिए मेमोरी आवंटित करने के लिए ''मॉलोक'' का उपयोग किया जाता है, तो पूल में हजारों वस्तुओं के लिए मेमोरी रिलीज़ केवल एक ऑपरेशन होता है, नाकि एक- एक करके होता है।
*मेमोरी पूल को पदानुक्रमित वृक्ष संरचनाओं में समूहीकृत किया जा सकता है, जो नियंत्रण प्रवाह#लूप्स और [[रिकर्सन (कंप्यूटर विज्ञान)]] जैसी विशेष प्रोग्रामिंग संरचनाओं के लिए उपयुक्त है।
*मेमोरी पूल को पदानुक्रमित ट्री संरचनाओं में समूहीकृत किया जा सकता है, जो नियंत्रण प्रवाह लूप्स और [[रिकर्सन (कंप्यूटर विज्ञान)|रिकर्सन]] जैसी विशेष प्रोग्रामिंग संरचनाओं के लिए उपयुक्त होता है।
*निश्चित आकार के ब्लॉक मेमोरी पूल को आवंटित ब्लॉक के आकार जैसी विशेषताओं का वर्णन करते हुए, प्रत्येक आवंटन के लिए आवंटन मेटाडेटा संग्रहीत करने की आवश्यकता नहीं होती है। विशेष रूप से छोटे आवंटन के लिए, यह पर्याप्त स्थान बचत प्रदान करता है।
*निश्चित आकृति  के ब्लॉक मेमोरी पूल को आवंटित ब्लॉक के आकृति  जैसी विशेषताओं का वर्णन करते हुए, प्रत्येक आवंटन के लिए आवंटन मेटाडेटा संग्रहीत करने की आवश्यकता नहीं होती है। विशेष रूप से छोटे आवंटन के लिए, यह पर्याप्त स्थान बचत प्रदान करता है।
*आउट ऑफ मेमोरी त्रुटियों से बचने के लिए वास्तविक समय प्रणालियों पर नियतात्मक व्यवहार की अनुमति देता है।
*आउट ऑफ मेमोरी त्रुटियों से बचने के लिए वास्तविक समय प्रणालियों पर नियतात्मक व्यवहार की अनुमति देता है।
कमियां
हानियाँ
*मेमोरी पूल को उस एप्लिकेशन के लिए ट्यून करने की आवश्यकता हो सकती है जो उन्हें तैनात करता है।
*मेमोरी पूल को उस एप्लिकेशन के लिए ट्यून करने की आवश्यकता हो सकती है जो उन्हें स्थापित करता है।


==यह भी देखें==
==यह भी देखें==

Revision as of 22:05, 18 July 2023

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

कई रियल-टाइम ऑपरेटिंग सिस्टम मेमोरी पूल का उपयोग करते हैं, जैसे लेनदेन प्रसंस्करण सुविधा

कुछ प्रणालियाँ, जैसे वेब सर्वर एनजीआईएनएक्स, चर-आकृति आवंटन के समूह को संदर्भित करने के लिए मेमोरी पूल शब्द का उपयोग करती हैं, जिन्हें पश्चात् में एक ही बार में हटाया जा सकता है। इसे एक क्षेत्र के नाम से भी जाना जाता है; क्षेत्र-आधारित मेमोरी प्रबंधन देखें।

सरल मेमोरी पूल कार्यान्वयन

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

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

मेमोरी पूल विरुद्ध मॉलोक

लाभ

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

हानियाँ

  • मेमोरी पूल को उस एप्लिकेशन के लिए ट्यून करने की आवश्यकता हो सकती है जो उन्हें स्थापित करता है।

यह भी देखें

बाहरी संबंध