मेमोरी पूल: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{Short description|Dynamic memory allocation method}}मेमोरी पूल, जिसे [[निश्चित आकार के ब्लॉक आवंटन]] भी कहा जाता है, मेमोरी प्रबंधन के लिए [[पूल (कंप्यूटर विज्ञान)]] का उपयोग है जो [[गतिशील स्मृति आवंटन|गतिशील मेमोरी आवंटन]] की अनुमति देता है। गतिशील मेमोरी आवंटन [[मॉलोक]] और [[सी++]] के [[ नया (सी++) | | {{Short description|Dynamic memory allocation method}}'''मेमोरी पूल''', जिसे [[निश्चित आकार के ब्लॉक आवंटन|निश्चित आकृति के ब्लॉक आवंटन]] भी कहा जाता है, मेमोरी प्रबंधन के लिए [[पूल (कंप्यूटर विज्ञान)|पूल]] का उपयोग होता है जो [[गतिशील स्मृति आवंटन|गतिशील मेमोरी आवंटन]] की अनुमति देता है। गतिशील मेमोरी आवंटन [[मॉलोक]] और [[सी++]] के [[ नया (सी++) |नवीन]] जैसी तकनीकों के उपयोग से प्राप्त किया जा सकता है और किया भी गया है; यघपि स्थापित और विश्वसनीय कार्यान्वयन, ये परिवर्तनीय ब्लॉक आकृतियों के कारण [[विखंडन (कंप्यूटर)|विखंडन]] से ग्रस्त होते हैं, प्रदर्शन के कारण इन्हें [[वास्तविक समय कंप्यूटिंग|वास्तविक समय प्रणाली]] में उपयोग करने की अनुशंसा नहीं की जाती है। अधिक कुशल समाधान समान आकृति वाले विभिन्न मेमोरी ब्लॉकों को पूर्व-आबंटित करना होता है जिन्हें '''मेमोरी पूल''' कहा जाता है। एप्लिकेशन रन टाइम (प्रोग्राम जीवनचक्र चरण) पर [[हैंडल (कंप्यूटिंग)|हैंडल]] द्वारा प्रदर्शित किये गए ब्लॉकों को आवंटित, अभिगम और मुक्त कर सकता है। | ||
कई | कई रियल-टाइम ऑपरेटिंग सिस्टम मेमोरी पूल का उपयोग करते हैं, जैसे [[लेनदेन प्रसंस्करण सुविधा]]। | ||
कुछ प्रणालियाँ, जैसे वेब सर्वर [[Nginx]], चर- | कुछ प्रणालियाँ, जैसे वेब सर्वर [[Nginx|एनजीआईएनएक्स]], चर-आकृति आवंटन के समूह को संदर्भित करने के लिए ''मेमोरी पूल'' शब्द का उपयोग करती हैं, जिन्हें पश्चात् में एक ही बार में हटाया जा सकता है। इसे एक ''क्षेत्र'' के नाम से भी जाना जाता है; क्षेत्र-आधारित [[स्मृति प्रबंधन|मेमोरी प्रबंधन]] देखें। | ||
== सरल मेमोरी पूल कार्यान्वयन == | == सरल मेमोरी पूल कार्यान्वयन == | ||
साधारण मेमोरी पूल मॉड्यूल, उदाहरण के लिए, मॉड्यूल को | साधारण मेमोरी पूल मॉड्यूल, उदाहरण के लिए, मॉड्यूल को स्थापित करने वाले एप्लिकेशन के लिए अनुकूलित ब्लॉक आकृति के साथ [[संकलन समय]] पर तीन पूल आवंटित कर सकता है। एप्लिकेशन निम्नलिखित इंटरफ़ेस के माध्यम से मेमोरी आवंटित, अभिग्म और मुक्त कर सकता है: | ||
*पूल से मेमोरी आवंटित करें। | *पूल से मेमोरी आवंटित करें। फलन उस पूल का निर्धारण करेगा जहां आवश्यक ब्लॉक उपयुक्त स्थित होता है। यदि उस पूल के सभी ब्लॉक पहले से ही आरक्षित होते हैं, तो फलन अगले बड़े पूल में से को अन्वेषण का प्रयास करता है। आवंटित मेमोरी ब्लॉक को हैंडल के साथ प्रदर्शित किया जाता है। | ||
* आवंटित मेमोरी तक | * आवंटित मेमोरी तक अभिग्म सूचक प्राप्त करें। | ||
*पूर्व में आवंटित मेमोरी ब्लॉक को मुक्त करें। | *पूर्व में आवंटित मेमोरी ब्लॉक को मुक्त करें। | ||
*उदाहरण के लिए हैंडल को के साथ कार्यान्वित किया जा सकता | *उदाहरण के लिए हैंडल को के साथ कार्यान्वित किया जा सकता है। मॉड्यूल हैंडल को पूल इंडेक्स, मेमोरी ब्लॉक इंडेक्स और संस्करण में विभाजित करके आंतरिक रूप से व्याख्या कर सकता है। पूल और मेमोरी ब्लॉक इंडेक्स हैंडल के साथ संबंधित ब्लॉक तक शीघ्रता से अभिग्म की अनुमति देता है, जबकि संस्करण, जो प्रत्येक नए आवंटन पर बढ़ाया जाता है, उन हैंडल का पता लगाने की अनुमति देता है जिनका मेमोरी ब्लॉक पहले ही मुक्त हो चुकी होती है (बहुत लंबे समय तक रखे गए हैंडल के कारण)। | ||
== मेमोरी पूल | == मेमोरी पूल विरुद्ध मॉलोक == | ||
लाभ | |||
*मेमोरी पूल निरंतर निष्पादन समय के साथ मेमोरी आवंटन की अनुमति देता है। यदि प्रत्येक | *मेमोरी पूल निरंतर निष्पादन समय के साथ मेमोरी आवंटन की अनुमति देता है। यदि प्रत्येक वस्तु के लिए मेमोरी आवंटित करने के लिए ''मॉलोक'' का उपयोग किया जाता है, तो पूल में हजारों वस्तुओं के लिए मेमोरी रिलीज़ केवल एक ऑपरेशन होता है, नाकि एक- एक करके होता है। | ||
*मेमोरी पूल को पदानुक्रमित | *मेमोरी पूल को पदानुक्रमित ट्री संरचनाओं में समूहीकृत किया जा सकता है, जो नियंत्रण प्रवाह लूप्स और [[रिकर्सन (कंप्यूटर विज्ञान)|रिकर्सन]] जैसी विशेष प्रोग्रामिंग संरचनाओं के लिए उपयुक्त होता है। | ||
*निश्चित | *निश्चित आकृति के ब्लॉक मेमोरी पूल को आवंटित ब्लॉक के आकृति जैसी विशेषताओं का वर्णन करते हुए, प्रत्येक आवंटन के लिए आवंटन मेटाडेटा संग्रहीत करने की आवश्यकता नहीं होती है। विशेष रूप से छोटे आवंटन के लिए, यह पर्याप्त स्थान बचत प्रदान करता है। | ||
*आउट ऑफ मेमोरी त्रुटियों से बचने के लिए वास्तविक समय प्रणालियों पर नियतात्मक व्यवहार की अनुमति देता है। | *आउट ऑफ मेमोरी त्रुटियों से बचने के लिए वास्तविक समय प्रणालियों पर नियतात्मक व्यवहार की अनुमति देता है। | ||
हानियाँ | |||
*मेमोरी पूल को उस एप्लिकेशन के लिए ट्यून करने की आवश्यकता हो सकती है जो उन्हें | *मेमोरी पूल को उस एप्लिकेशन के लिए ट्यून करने की आवश्यकता हो सकती है जो उन्हें स्थापित करता है। | ||
==यह भी देखें== | ==यह भी देखें== |
Revision as of 22:05, 18 July 2023
मेमोरी पूल, जिसे निश्चित आकृति के ब्लॉक आवंटन भी कहा जाता है, मेमोरी प्रबंधन के लिए पूल का उपयोग होता है जो गतिशील मेमोरी आवंटन की अनुमति देता है। गतिशील मेमोरी आवंटन मॉलोक और सी++ के नवीन जैसी तकनीकों के उपयोग से प्राप्त किया जा सकता है और किया भी गया है; यघपि स्थापित और विश्वसनीय कार्यान्वयन, ये परिवर्तनीय ब्लॉक आकृतियों के कारण विखंडन से ग्रस्त होते हैं, प्रदर्शन के कारण इन्हें वास्तविक समय प्रणाली में उपयोग करने की अनुशंसा नहीं की जाती है। अधिक कुशल समाधान समान आकृति वाले विभिन्न मेमोरी ब्लॉकों को पूर्व-आबंटित करना होता है जिन्हें मेमोरी पूल कहा जाता है। एप्लिकेशन रन टाइम (प्रोग्राम जीवनचक्र चरण) पर हैंडल द्वारा प्रदर्शित किये गए ब्लॉकों को आवंटित, अभिगम और मुक्त कर सकता है।
कई रियल-टाइम ऑपरेटिंग सिस्टम मेमोरी पूल का उपयोग करते हैं, जैसे लेनदेन प्रसंस्करण सुविधा।
कुछ प्रणालियाँ, जैसे वेब सर्वर एनजीआईएनएक्स, चर-आकृति आवंटन के समूह को संदर्भित करने के लिए मेमोरी पूल शब्द का उपयोग करती हैं, जिन्हें पश्चात् में एक ही बार में हटाया जा सकता है। इसे एक क्षेत्र के नाम से भी जाना जाता है; क्षेत्र-आधारित मेमोरी प्रबंधन देखें।
सरल मेमोरी पूल कार्यान्वयन
साधारण मेमोरी पूल मॉड्यूल, उदाहरण के लिए, मॉड्यूल को स्थापित करने वाले एप्लिकेशन के लिए अनुकूलित ब्लॉक आकृति के साथ संकलन समय पर तीन पूल आवंटित कर सकता है। एप्लिकेशन निम्नलिखित इंटरफ़ेस के माध्यम से मेमोरी आवंटित, अभिग्म और मुक्त कर सकता है:
- पूल से मेमोरी आवंटित करें। फलन उस पूल का निर्धारण करेगा जहां आवश्यक ब्लॉक उपयुक्त स्थित होता है। यदि उस पूल के सभी ब्लॉक पहले से ही आरक्षित होते हैं, तो फलन अगले बड़े पूल में से को अन्वेषण का प्रयास करता है। आवंटित मेमोरी ब्लॉक को हैंडल के साथ प्रदर्शित किया जाता है।
- आवंटित मेमोरी तक अभिग्म सूचक प्राप्त करें।
- पूर्व में आवंटित मेमोरी ब्लॉक को मुक्त करें।
- उदाहरण के लिए हैंडल को के साथ कार्यान्वित किया जा सकता है। मॉड्यूल हैंडल को पूल इंडेक्स, मेमोरी ब्लॉक इंडेक्स और संस्करण में विभाजित करके आंतरिक रूप से व्याख्या कर सकता है। पूल और मेमोरी ब्लॉक इंडेक्स हैंडल के साथ संबंधित ब्लॉक तक शीघ्रता से अभिग्म की अनुमति देता है, जबकि संस्करण, जो प्रत्येक नए आवंटन पर बढ़ाया जाता है, उन हैंडल का पता लगाने की अनुमति देता है जिनका मेमोरी ब्लॉक पहले ही मुक्त हो चुकी होती है (बहुत लंबे समय तक रखे गए हैंडल के कारण)।
मेमोरी पूल विरुद्ध मॉलोक
लाभ
- मेमोरी पूल निरंतर निष्पादन समय के साथ मेमोरी आवंटन की अनुमति देता है। यदि प्रत्येक वस्तु के लिए मेमोरी आवंटित करने के लिए मॉलोक का उपयोग किया जाता है, तो पूल में हजारों वस्तुओं के लिए मेमोरी रिलीज़ केवल एक ऑपरेशन होता है, नाकि एक- एक करके होता है।
- मेमोरी पूल को पदानुक्रमित ट्री संरचनाओं में समूहीकृत किया जा सकता है, जो नियंत्रण प्रवाह लूप्स और रिकर्सन जैसी विशेष प्रोग्रामिंग संरचनाओं के लिए उपयुक्त होता है।
- निश्चित आकृति के ब्लॉक मेमोरी पूल को आवंटित ब्लॉक के आकृति जैसी विशेषताओं का वर्णन करते हुए, प्रत्येक आवंटन के लिए आवंटन मेटाडेटा संग्रहीत करने की आवश्यकता नहीं होती है। विशेष रूप से छोटे आवंटन के लिए, यह पर्याप्त स्थान बचत प्रदान करता है।
- आउट ऑफ मेमोरी त्रुटियों से बचने के लिए वास्तविक समय प्रणालियों पर नियतात्मक व्यवहार की अनुमति देता है।
हानियाँ
- मेमोरी पूल को उस एप्लिकेशन के लिए ट्यून करने की आवश्यकता हो सकती है जो उन्हें स्थापित करता है।
यह भी देखें
- नि:शुल्क सूची
- ऑब्जेक्ट पूल
- स्लैब आवंटन