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

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


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


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


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


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


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

Revision as of 21:37, 18 July 2023

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

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

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

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

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

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

मेमोरी पूल बनाम मॉलोक

फ़ायदे

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

कमियां

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

यह भी देखें

बाहरी संबंध