एमएमएपी और एमएलएलएल के बीच अंतर

Anonim

एमएमएपी बनाम मॉलोक में मौजूद कार्यों के एक सेट के माध्यम से है

सी मानक लाइब्रेरी में उपस्थित कार्यों के एक सेट के माध्यम से सी प्रोग्रामिंग भाषा में स्मृति के आवंटन के लिए सी में यह गतिशील स्मृति है। इनमें से एक malloc है, जो स्मृति आवंटन को संदर्भित करता है। यूनिक्स सिस्टम में एमएमएपी है, जो मेमोरी मैप सिस्टम को संदर्भित करता है जो कि अपनी अनूठी I / O के साथ आता है। ये दो (एमएमएपी और मॉलोक) अंकित मूल्य पर एक ही कार्य करते हैं लेकिन आगे की जांच में कुछ अंतर दिखाई देते हैं। ये मतभेद, जो कार्यशीलता से उत्पन्न होते हैं, नीचे दिए गए हैं।

मतभेद

सबसे पहले, यह स्थापित करना महत्वपूर्ण है कि क्या कोई भी सबूत है जो उपलब्ध स्मृति की दमघों में महत्वपूर्ण है। यह स्मृति प्रबंधन के खिलाफ कार्यक्रम के प्रदर्शन के माप के माध्यम से किया जाता है।

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

दूसरी तरफ 'एमएमएपी' एक सिस्टम कॉल है जो प्रभार लेता है और एक आवेदन के पते में एक अप्रयुक्त और आसन्न क्षेत्र को खोजने के लिए कर्नेल को अनुरोध करता है जो कि कई पृष्ठों के मैपिंग की अनुमति देने के लिए पर्याप्त है स्मृति का वर्चुअल मेमोरी प्रबंधन संरचनाओं का निर्माण भी होता है जो प्रभावी रूप से किसी सेगफ़ॉल्ट में न हो सकते हैं।

मॉलोक आमतौर पर स्मृति प्रबंधन प्रक्रिया के अधिकांश में कार्य करता है इस घटना में कार्यक्रम को अतिरिक्त स्मृति की आवश्यकता है, यह ओएस से उधार लिया गया है। दूसरी ओर एमएमएपी एक संदर्भ स्विच का उपयोग करता है जो कर्नेल भूमि में परिवर्तित हो जाता है।

-3 ->

एमएलएपी के उपयोग के विरोध में सिस्टम पर चलने वाले किसी भी एप्लिकेशन में स्मृति आवंटन के लिए मॉलोक सबसे उपयुक्त है। विशेष मामलों की तुलना में, जब इसकी अनुमति हो सकती है, डिफ़ॉल्ट रूप से ऐसा करने की आवश्यकता होती है।

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

संसाधनों के प्रदर्शन और उपयोग को मापने के बाद, सिस्टम पर चलने वाले सभी अनुप्रयोगों द्वारा डेटा उपयोग का संपूर्ण मूल्यांकन किया जाना चाहिए।यदि चलने वाले एप्लिकेशन के जीवन काल दिखाए जा सकते हैं तो यह बेहतर हो सकता है

मेमोरी आवंटित करने के लिए एमएएमएपी का उपयोग नुकसान के साथ आता है कि विखंडनों में डेटा के आवंटन और deallocation महंगा है। इसका कारण यह है कि डेटा कई क्षेत्रों में विभाजित है, और यह भी एमएमएपी को सिस्टम कॉल करने से इनकार करता है।

एमएमएपी malloc पर फायदेमंद है क्योंकि mmap द्वारा उपयोग की जाने वाली मेमोरी को तुरंत ओएस में वापस कर दिया गया है। मॉलोक द्वारा उपयोग की जाने वाली मेमोरी कभी नहीं बदली जाती जब तक डेटा सेगमेंट ब्रेक न हो। इस स्मृति को विशेष रूप से पुन: उपयोग करने के लिए रखा जाता है।

सारांश

'मैलोक' मुख्य स्मृति आवंटन बिंदु

एक एमएमएपी सिस्टम कॉल के लिए खड़ा है और आवेदन पतों में अप्रयुक्त क्षेत्रों को खोजने के लिए एक कर्नेल का अनुरोध करता है जो कई स्मृति पृष्ठों के मानचित्रण को समायोजित कर सकते हैं

एमएमएपी के लिए सिफारिश नहीं की जाती है स्मृति आवंटन के रूप में यह उपलब्ध स्मृति विभाजन और सिस्टम कॉल नहीं बना सकता

malloc पर mmap का एक फायदा स्मृति की उपलब्धता है, के रूप में malloc स्मृति के विपरीत, जो फिर से उपयोग किया जाता है