मेमोरी पूल
This article includes a list of references, related reading or external links, but its sources remain unclear because it lacks inline citations. (June 2014) (Learn how and when to remove this template message) |
मेमोरी पूल, जिसे निश्चित आकार के ब्लॉक आवंटन भी कहा जाता है, मेमोरी प्रबंधन के लिए पूल (कंप्यूटर विज्ञान) का उपयोग है जो गतिशील स्मृति आवंटन की अनुमति देता है। गतिशील मेमोरी आवंटन मॉलोक और सी++ के नया (सी++) जैसी तकनीकों के उपयोग से हासिल किया जा सकता है और किया गया है; हालांकि स्थापित और विश्वसनीय कार्यान्वयन, ये परिवर्तनीय ब्लॉक आकारों के कारण विखंडन (कंप्यूटर) से ग्रस्त हैं, प्रदर्शन के कारण इन्हें वास्तविक समय कंप्यूटिंग में उपयोग करने की अनुशंसा नहीं की जाती है। एक अधिक कुशल समाधान समान आकार वाले कई मेमोरी ब्लॉकों को पूर्व-आबंटित करना है जिन्हें मेमोरी पूल कहा जाता है। एप्लिकेशन रन टाइम (प्रोग्राम जीवनचक्र चरण) पर हैंडल (कंप्यूटिंग) द्वारा दर्शाए गए ब्लॉकों को आवंटित, एक्सेस और मुक्त कर सकता है।
कई RTOS#मेमोरी एलोकेशन|रियल-टाइम ऑपरेटिंग सिस्टम मेमोरी पूल का उपयोग करते हैं, जैसे लेनदेन प्रसंस्करण सुविधा
कुछ प्रणालियाँ, जैसे वेब सर्वर Nginx, चर-आकार आवंटन के एक समूह को संदर्भित करने के लिए मेमोरी पूल शब्द का उपयोग करती हैं, जिन्हें बाद में एक ही बार में हटाया जा सकता है। इसे क्षेत्र के नाम से भी जाना जाता है; क्षेत्र-आधारित स्मृति प्रबंधन देखें.
सरल मेमोरी पूल कार्यान्वयन
एक साधारण मेमोरी पूल मॉड्यूल, उदाहरण के लिए, मॉड्यूल को तैनात करने वाले एप्लिकेशन के लिए अनुकूलित ब्लॉक आकार के साथ संकलन समय पर तीन पूल आवंटित कर सकता है। एप्लिकेशन निम्नलिखित इंटरफ़ेस के माध्यम से मेमोरी आवंटित, एक्सेस और मुक्त कर सकता है:
- पूल से स्मृति आवंटित करें। फ़ंक्शन उस पूल का निर्धारण करेगा जहां आवश्यक ब्लॉक फिट बैठता है। यदि उस पूल के सभी ब्लॉक पहले से ही आरक्षित हैं, तो फ़ंक्शन अगले बड़े पूल में से एक को खोजने का प्रयास करता है। एक आवंटित मेमोरी ब्लॉक को एक हैंडल (कंप्यूटिंग) के साथ दर्शाया जाता है।
- आवंटित मेमोरी तक पहुंच सूचक प्राप्त करें।
- पूर्व में आवंटित मेमोरी ब्लॉक को मुक्त करें।
- उदाहरण के लिए हैंडल को एक के साथ कार्यान्वित किया जा सकता है
unsigned int
. मॉड्यूल हैंडल को पूल इंडेक्स, मेमोरी ब्लॉक इंडेक्स और एक संस्करण में विभाजित करके आंतरिक रूप से व्याख्या कर सकता है। पूल और मेमोरी ब्लॉक इंडेक्स हैंडल के साथ संबंधित ब्लॉक तक तेजी से पहुंच की अनुमति देता है, जबकि संस्करण, जो प्रत्येक नए आवंटन पर बढ़ाया जाता है, उन हैंडल का पता लगाने की अनुमति देता है जिनका मेमोरी ब्लॉक पहले ही मुक्त हो चुका है (बहुत लंबे समय तक रखे गए हैंडल के कारण)।
मेमोरी पूल बनाम मॉलोक
फ़ायदे
- मेमोरी पूल निरंतर निष्पादन समय के साथ मेमोरी आवंटन की अनुमति देता है। यदि प्रत्येक ऑब्जेक्ट के लिए मेमोरी आवंटित करने के लिए मॉलोक का उपयोग किया जाता है, तो पूल में हजारों ऑब्जेक्ट के लिए मेमोरी रिलीज़ केवल एक ऑपरेशन है, एक-एक करके नहीं।
- मेमोरी पूल को पदानुक्रमित वृक्ष संरचनाओं में समूहीकृत किया जा सकता है, जो नियंत्रण प्रवाह#लूप्स और रिकर्सन (कंप्यूटर विज्ञान) जैसी विशेष प्रोग्रामिंग संरचनाओं के लिए उपयुक्त है।
- निश्चित आकार के ब्लॉक मेमोरी पूल को आवंटित ब्लॉक के आकार जैसी विशेषताओं का वर्णन करते हुए, प्रत्येक आवंटन के लिए आवंटन मेटाडेटा संग्रहीत करने की आवश्यकता नहीं होती है। विशेष रूप से छोटे आवंटन के लिए, यह पर्याप्त स्थान बचत प्रदान करता है।
- आउट ऑफ मेमोरी त्रुटियों से बचने के लिए वास्तविक समय प्रणालियों पर नियतात्मक व्यवहार की अनुमति देता है।
कमियां
- मेमोरी पूल को उस एप्लिकेशन के लिए ट्यून करने की आवश्यकता हो सकती है जो उन्हें तैनात करता है।
यह भी देखें
- नि:शुल्क सूची
- ऑब्जेक्ट पूल
- स्लैब आवंटन