एमएमएपी आणि मॉलोकमध्ये फरक

Anonim

एमएमएलएल मध्ये उपलब्ध असलेल्या फंक्शन्सच्या माध्यमाने सी प्रोग्रामिंग भाषेत मेमरीचे वाटप करण्याच्या दृष्टीने हे गुण आहे.

C मध्ये गृहीत स्मृती आणि सी मानक लायब्ररीत उपलब्ध असलेल्या फंक्शन्सच्या माध्यमाने सी प्रोग्रामिंग भाषेमध्ये मेमरीचे वाटप करण्यासाठी आहे. यापैकी एक malloc आहे, जे स्मृती वाटप होय. युनिक्स प्रणालीमध्ये एमएमएपी आहे, जे मेमरी मॅप प्रणालीला संदर्भ देते जे आपल्या स्वतःच्या अनन्य I / O सह उपलब्ध आहे. हे दोन (एमएमएपी आणि मॉलोक) चे मूल्य समान समस्येने कार्य करतील परंतु पुढील छाननीमध्ये काही फरक आढळतात. हे फरक, जे कार्यक्षमतेतून निर्माण होते, ते खाली रेखाटलेले आहेत

फरक

प्रथम बंद, उपलब्ध असलेल्या मेमरीचे दमटपणा आहे हे दर्शविणारा कोणताही पुरावा आहे का ते सेट करणे महत्वाचे आहे. हे मेमरी व्यवस्थापन विरूद्ध कार्यक्रमाच्या कामगिरीच्या मोजमापाने केले जाते.

मुख्य मेमरी अलॉकेशन इंटरफेस malloc आहे. सी लायब्ररीमध्ये हे सर्वात मोठे आहे. त्यात असलेल्या व्यवस्थापन कोडचा एक भाग म्हणजे एमएमएपी. जेव्हा malloc कार्यरत आहे, तेव्हा ते सर्व उपलब्ध सिस्टम सुविधा एकत्र करतात कर्नलमध्ये अतिरिक्त सिस्टम सुविधा कार्यान्वित केली जाऊ शकते, जे मेमरी व्यवस्थापन नीतींपैकी एक आहे जी प्रणाली वापरत आहे कारण हे सुनिश्चित करण्यासाठी की समाधानकारक स्मृती वाटप आहे. ही प्रक्रिया सोपी नाही, आणि लोकांना सोप्या प्रोग्राम्स तयार करण्यापासून रोखण्याच्या एकमेव कारणास्तव गुंतागुंतीचे केले जात नाही जे मेमरी आवंटन व्यवस्थित करू शकतील आणि त्यामुळे खराब कामगिरी निर्माण होईल.

दुसरीकडे 'एमएमएपी' म्हणजे एक सिस्टम कॉल जो चार्ज करतो आणि ऍप्लिकेशनच्या पत्त्यामध्ये न वापरलेले आणि संलग्न क्षेत्र शोधण्यासाठी कर्नलला विनंती करतो जे अनेक पेजांच्या मॅपिंगला अनुमती देण्याइतकेच मोठे आहे स्मृतीची वर्च्युअल मेमरी व्यवस्थापन स्ट्रक्चर्सची निर्मिती देखील आहे जी प्रभावीपणे segfault मध्ये होऊ शकत नाहीत.

Malloc बहुतेक मेमरी मॅनेजमेंट प्रक्रिया मध्ये कार्य करते. कार्यक्रमात अतिरिक्त मेमरी आवश्यक आहे, हे OS वरून कर्जाऊ आहे. दुसरीकडे एमएमएपी कॉन्ट्रॅक्ट स्विचचा वापर करते जो कर्नलच्या भूमीत रूपांतरीत करतो.

एमएमएपीच्या वापरास विरोध करताना प्रणालीवर चालू असलेल्या कोणत्याही अनुप्रयोगामध्ये मेळॉकला वाटप करण्यासाठी मॉलोक सर्वोत्तम अनुकूल आहे. विशिष्ट परिस्थितींपेक्षा अन्यथा जेव्हा हे परवानगी देता येते, त्याऐवजी हे आवश्यक आहे.

अनुप्रयोगाद्वारे दिलेला प्रतिसाद गतिमान करण्यासाठी Mmap वापरला जाऊ शकतो. मात्र असे करणे योग्य नाही कारण हे पृष्ठावर काही बाइट्सची त्याग करीत असते जेणेकरून अनुप्रयोग सहजतेने चालवू शकेल. जरी डेटा सामग्री सुरुवातीला लहान वाटू शकते, परंतु हे अत्याधुनिक अॅप्लिकोलिंग जेव्हा अनेक अनुप्रयोग चालवू इच्छितात ते परिणाम प्रणालीस आणखी खाली धीमा करू शकतात.

संसाधनांचे कार्यप्रदर्शन आणि वापर मोजल्यानंतर, सिस्टमवरील सर्व अनुप्रयोगांद्वारे डेटा वापराचे संपूर्ण मूल्यमापन केले पाहिजे.चालु ठेवलेल्या ऍप्लिकेशन्सचे जीवनमान दाखवल्यास ते अधिक चांगले होऊ शकतात.

मेमरी वाटप करण्यासाठी एमएएमएपीचा वापर गैरसोय करून येतो ज्यामध्ये वाट्यामधील डेटा वाटप व वितरण करणे महाग असते. याचे कारण म्हणजे डेटा बर्याच भागात विभागला जातो आणि एमएमएपी प्रणाली कॉल करण्यापासूनही नाकारतो.

एमएमएपी मॉलोकपेक्षा खूप फायदेशीर आहे कारण एमएमएपी वापरल्या जाणार्या स्मृती ओएसमध्ये परत केल्या जातात. डेटा खंड खंड नसल्यास, malloc द्वारे वापरलेली मेमरी कधीही परत केली जाणार नाही ही मेमरी खास पुन्हा वापरण्यासाठी ठेवली जाते.

सारांश

'malloc' म्हणजे मुख्य मेमरी आवंटन बिंदू < एमएमएपी सिस्टीम कॉल्स आणि अपॉन्स्टेड क्षेत्रास ऍप्लीकेशन पत्ते शोधण्यासाठी विनंती करते जे अनेक मेमरी पेजेसच्या मॅपिंगची सोय करू शकतात

Mmap साठी शिफारस केलेली नाही मेमरीचे वाटप करताना ते उपलब्ध मेमरीचे विभाजन करते आणि सिस्टम कॉल करू शकत नाही

मॉलॉकवर एमएमएपीचा फायदा म्हणजे मेमोरिअलची उपलब्धता, मॉलोक मेमरिच्या विरूद्ध, ज्याचा पुन: वापर केला जातो. <