मेमोरी मैनेजमेंट क्या है?
मेमोरी प्रबंधन कंप्यूटर मेमोरी को नियंत्रित करने और समन्वय करने की प्रक्रिया है, जो सिस्टम के समग्र प्रदर्शन को अनुकूलित करने के लिए विभिन्न चल रहे कार्यक्रमों को ब्लॉक के रूप में जाना जाता है।
यह एक ऑपरेटिंग सिस्टम का सबसे महत्वपूर्ण कार्य है जो प्राथमिक मेमोरी का प्रबंधन करता है। यह मुख्य मेमोरी और निष्पादन डिस्क के बीच प्रक्रियाओं को आगे और पीछे ले जाने में मदद करता है। यह ओएस को हर मेमोरी लोकेशन पर नज़र रखने में मदद करता है, चाहे वह किसी भी प्रक्रिया के लिए आवंटित किया गया हो या यह मुफ़्त है।
इस में, ऑपरेटिंग सिस्टम ट्यूटोरियल आप सीखेंगे:
- मेमोरी मैनेजमेंट क्या है?
- मेमोरी प्रबंधन का उपयोग क्यों करें?
- मेमोरी प्रबंधन तकनीक
- स्वैपिंग क्या है?
- मेमोरी आवंटन क्या है?
- पेजिंग क्या है?
- विखंडन विधि क्या है?
- विभाजन क्या है?
- डायनामिक लोडिंग क्या है?
- डायनामिक लिंकिंग क्या है?
- स्थैतिक और गतिशील लोड के बीच अंतर
- स्थैतिक और गतिशील लिंकिंग के बीच अंतर
मेमोरी प्रबंधन का उपयोग क्यों करें?
यहाँ, स्मृति प्रबंधन का उपयोग करने के कारण हैं:
- यह आपको यह जांचने की अनुमति देता है कि प्रक्रियाओं को कितनी मेमोरी आवंटित करने की आवश्यकता है जो यह तय करती है कि किस प्रोसेसर को किस समय मेमोरी प्राप्त करनी चाहिए।
- जब भी इन्वेंट्री मुक्त या असंबद्ध हो जाता है, तो ट्रैक करता है। इसके अनुसार स्टेटस अपडेट होगा।
- यह एप्लिकेशन रूटीन के लिए स्थान आवंटित करता है।
- यह भी सुनिश्चित करें कि ये अनुप्रयोग एक-दूसरे के साथ हस्तक्षेप नहीं करते हैं।
- विभिन्न प्रक्रियाओं को एक दूसरे से बचाने में मदद करता है
- यह कार्यक्रमों को स्मृति में रखता है ताकि स्मृति अपने पूर्ण सीमा तक उपयोग हो।
मेमोरी प्रबंधन तकनीक
यहाँ कुछ सबसे महत्वपूर्ण स्मृति प्रबंधन तकनीक हैं:
एकल संचित आवंटन
यह सबसे आसान मेमोरी मैनेजमेंट तकनीक है। इस पद्धति में, एक छोटे से हिस्से को छोड़कर सभी प्रकार की कंप्यूटर की मेमोरी जो ओएस के लिए आरक्षित है, एक अनुप्रयोग के लिए उपलब्ध है। उदाहरण के लिए, MS-DOS ऑपरेटिंग सिस्टम इस तरह से मेमोरी आवंटित करता है। एक एम्बेडेड सिस्टम एकल अनुप्रयोग पर भी चलता है।
आवंटन आवंटित किया गया
यह प्राथमिक मेमोरी को विभिन्न मेमोरी पार्टिशन में विभाजित करता है, जो कि ज्यादातर मेमोरी के सन्निहित क्षेत्र हैं। प्रत्येक विभाजन एक विशिष्ट कार्य या नौकरी के लिए सभी जानकारी संग्रहीत करता है। इस पद्धति में एक नौकरी को विभाजन आवंटित करना शामिल है जब यह शुरू होता है और जब यह समाप्त हो जाता है तो इसे रद्द कर देता है।
पेजेड मेमोरी मैनेजमेंट
यह विधि कंप्यूटर की मुख्य मेमोरी को निश्चित आकार की इकाइयों में विभाजित करती है जिसे पृष्ठ फ़्रेम के रूप में जाना जाता है। यह हार्डवेयर मेमोरी मैनेजमेंट यूनिट उन पेजों को फ्रेम में मैप करती है, जिन्हें पेज के आधार पर आवंटित किया जाना चाहिए।
खंडित स्मृति प्रबंधन
खंडित मेमोरी एकमात्र मेमोरी प्रबंधन विधि है जो उपयोगकर्ता के प्रोग्राम को रैखिक और सन्निहित पते स्थान के साथ प्रदान नहीं करती है।
खंड खंड तालिका के रूप में हार्डवेयर समर्थन की आवश्यकता है। इसमें मेमोरी, आकार और एक्सेस प्रोटेक्शन बिट्स और स्टेटस जैसे अन्य डेटा में सेक्शन का भौतिक पता होता है।
स्वैपिंग क्या है?
स्वैपिंग एक ऐसी विधि है जिसमें प्रक्रिया को मुख्य मेमोरी से बैकिंग स्टोर में अस्थायी रूप से स्वैप किया जाना चाहिए। इसे बाद में जारी रखने के लिए मेमोरी में वापस लाया जाएगा।
बैकिंग स्टोर एक हार्ड डिस्क या कुछ अन्य सेकेंडरी स्टोरेज डिवाइस है जो सभी उपयोगकर्ताओं के लिए सभी मेमोरी छवियों की प्रतियों को समायोजित करने के लिए पर्याप्त पर्याप्त इनवर्टर होना चाहिए। यह इन मेमोरी इमेज तक सीधी पहुंच प्रदान करने में भी सक्षम है।
स्वैपिंग के लाभ
यहाँ, स्वैपिंग के प्रमुख लाभ / नियम हैं:
- यह मल्टीप्रोग्रामिंग की उच्च डिग्री प्रदान करता है।
- गतिशील स्थानांतरण की अनुमति देता है। उदाहरण के लिए, यदि निष्पादन समय पर पता बाध्यकारी का उपयोग किया जा रहा है, तो विभिन्न स्थानों में प्रक्रियाओं को स्वैप किया जा सकता है। संकलन और लोड टाइम बाइंडिंग के मामले में, प्रक्रियाओं को उसी स्थान पर ले जाया जाना चाहिए।
- यह स्मृति का बेहतर उपयोग करने में मदद करता है।
- पूरा होने पर सीपीयू समय का न्यूनतम अपव्यय होता है इसलिए इसे आसानी से अपने प्रदर्शन को बेहतर बनाने के लिए प्राथमिकता-आधारित समय-निर्धारण विधि पर लागू किया जा सकता है।
मेमोरी आवंटन क्या है?
मेमोरी आवंटन एक ऐसी प्रक्रिया है जिसके द्वारा कंप्यूटर प्रोग्राम को मेमोरी या स्पेस असाइन किया जाता है।
यहां, मुख्य मेमोरी को दो प्रकार के विभाजन में विभाजित किया गया है
- कम मेमोरी - इस प्रकार की मेमोरी में ऑपरेटिंग सिस्टम रहता है।
- उच्च मेमोरी - उच्च मेमोरी में उपयोगकर्ता प्रक्रियाएँ आयोजित की जाती हैं।
विभाजन आवंटन
मेमोरी को विभिन्न ब्लॉकों या विभाजन में विभाजित किया गया है। प्रत्येक प्रक्रिया को आवश्यकता के अनुसार आवंटित किया जाता है। आंतरिक विखंडन से बचने के लिए विभाजन आवंटन एक आदर्श विधि है।
नीचे विभिन्न विभाजन आवंटन योजनाएं दी गई हैं:
- पहली फिट : इस प्रकार के फिट में, विभाजन आवंटित किया जाता है, जो मुख्य मेमोरी की शुरुआत से पहला पर्याप्त ब्लॉक है।
- बेस्ट फिट: यह उस विभाजन को प्रक्रिया आवंटित करता है जो मुक्त विभाजन के बीच पहला सबसे छोटा विभाजन है।
- सबसे खराब फ़िट: यह विभाजन को प्रक्रिया आवंटित करता है , जो मुख्य मेमोरी में स्वतंत्र रूप से उपलब्ध सबसे बड़ा पर्याप्त विभाजन है।
- अगला फ़िट: यह ज्यादातर पहली फ़िट के समान है, लेकिन यह फ़िट अंतिम आवंटन बिंदु से पहले पर्याप्त विभाजन की खोज करता है।
पेजिंग क्या है?
पेजिंग एक भंडारण तंत्र है जो ओएस को द्वितीयक भंडारण से मुख्य मेमोरी में पृष्ठों के रूप में प्रक्रियाओं को प्राप्त करने की अनुमति देता है। पेजिंग विधि में, मुख्य मेमोरी को भौतिक मेमोरी के छोटे निश्चित आकार के ब्लॉक में विभाजित किया जाता है, जिसे फ्रेम कहा जाता है। एक फ्रेम का आकार मुख्य स्मृति का अधिकतम उपयोग करने और बाहरी विखंडन से बचने के लिए एक पृष्ठ के समान होना चाहिए। पेजिंग का उपयोग डेटा तक तेजी से पहुंचने के लिए किया जाता है, और यह एक तार्किक अवधारणा है।
विखंडन क्या है?
प्रक्रियाओं को मेमोरी से संग्रहीत और हटा दिया जाता है, जो मुक्त मेमोरी स्पेस बनाता है, जो अन्य प्रक्रियाओं द्वारा उपयोग करने के लिए बहुत छोटा है।
कभी-कभी, यह प्रक्रिया मेमोरी ब्लॉकों को आवंटित करने में सक्षम नहीं होती है क्योंकि इसके छोटे आकार और मेमोरी ब्लॉक हमेशा अप्रयुक्त रहते हैं जिन्हें विखंडन कहा जाता है। इस तरह की समस्या डायनेमिक मेमोरी एलोकेशन सिस्टम के दौरान होती है जब फ्री ब्लॉक काफी छोटे होते हैं, इसलिए यह किसी भी अनुरोध को पूरा करने में सक्षम नहीं होता है।
विखंडन के दो प्रकार हैं:
- बाहरी विखंडन
- आंतरिक विखंडन
- एक ही ब्लॉक में सभी मुफ्त मेमोरी को एक साथ रखने के लिए मेमोरी सामग्री को पुन: व्यवस्थित करके बाहरी विखंडन को कम किया जा सकता है।
- सबसे छोटे विभाजन को असाइन करके आंतरिक विखंडन को कम किया जा सकता है, जो अभी भी पूरी प्रक्रिया को पूरा करने के लिए पर्याप्त है।
विभाजन क्या है?
सेगमेंटेशन विधि लगभग पेजिंग के समान काम करती है। दोनों के बीच एकमात्र अंतर यह है कि खंड चर-लंबाई के हैं, जबकि पृष्ठन विधि में, पृष्ठ हमेशा निश्चित आकार के होते हैं।
एक कार्यक्रम खंड में कार्यक्रम का मुख्य कार्य, डेटा संरचनाएं, उपयोगिता कार्य आदि शामिल हैं। ओएस सभी प्रक्रियाओं के लिए एक खंड मानचित्र तालिका रखता है। इसमें मुफ्त मेमोरी ब्लॉकों की सूची के साथ-साथ इसके आकार, खंड संख्या और मुख्य मेमोरी या वर्चुअल मेमोरी में इसके मेमोरी स्थान भी शामिल हैं।
डायनामिक लोडिंग क्या है?
डायनेमिक लोडिंग एक प्रोग्राम की एक रूटीन है, जिसे तब तक लोड नहीं किया जाता है जब तक कि प्रोग्राम इसे कॉल न कर दे। सभी रूटीन को एक लोड करने योग्य लोड प्रारूप में डिस्क पर समाहित किया जाना चाहिए। मुख्य कार्यक्रम को मेमोरी में लोड किया जाएगा और निष्पादित किया जाएगा। डायनामिक लोडिंग बेहतर मेमोरी स्पेस उपयोग भी प्रदान करता है।
डायनामिक लिंकिंग क्या है?
लिंकिंग एक विधि है जो ओएस को कोड और डेटा के विभिन्न मॉड्यूल को एक ही निष्पादन योग्य फ़ाइल में इकट्ठा करने और विलय करने में मदद करती है। फ़ाइल को मेमोरी में लोड किया जा सकता है और निष्पादित किया जा सकता है। ओएस सिस्टम-स्तरीय पुस्तकालयों को एक प्रोग्राम में लिंक कर सकता है जो लोड समय पर पुस्तकालयों को जोड़ता है। डायनामिक लिंकिंग विधि में, पुस्तकालयों को निष्पादन के समय से जोड़ा जाता है, इसलिए प्रोग्राम कोड का आकार छोटा रह सकता है।
स्थैतिक और गतिशील लोड के बीच अंतर
स्थैतिक लोड हो रहा है | गतिशील लोड हो रहा है |
स्टेटिक लोडिंग का उपयोग तब किया जाता है जब आप अपने प्रोग्राम को स्टैटिकली लोड करना चाहते हैं। फिर संकलन के समय, पूरे कार्यक्रम को किसी भी बाहरी मॉड्यूल या प्रोग्राम निर्भरता की आवश्यकता के बिना जोड़ा और संकलित किया जाएगा। | डायनामिक रूप से लोड किए गए कार्यक्रम में, संदर्भ प्रदान किए जाएंगे और लोडिंग निष्पादन के समय किया जाएगा। |
लोडिंग समय पर, पूरे कार्यक्रम को मेमोरी में लोड किया जाता है और इसका निष्पादन शुरू होता है। | पुस्तकालय के दिनचर्या को कार्यक्रम में आवश्यक होने पर ही मेमोरी में लोड किया जाता है। |
स्थैतिक और गतिशील लिंकिंग के बीच अंतर
यहाँ, स्टेटिक बनाम डायनामिक लिंकिंग के बीच मुख्य अंतर हैं:
स्टेटिक लिंकिंग | गतिशील लिंकिंग |
स्टेटिक लिंकिंग का उपयोग अन्य सभी मॉड्यूलों को संयोजित करने के लिए किया जाता है, जिन्हें प्रोग्राम द्वारा एकल निष्पादन योग्य कोड की आवश्यकता होती है। यह OS को किसी भी रनटाइम निर्भरता को रोकने में मदद करता है। | जब डायनेमिक लिंकिंग का उपयोग किया जाता है, तो उसे प्रोग्राम के साथ वास्तविक मॉड्यूल या लाइब्रेरी को लिंक करने की आवश्यकता नहीं होती है। इसके बजाय संकलन और लिंकिंग के समय दिए गए डायनामिक मॉड्यूल के संदर्भ का उपयोग करें। |
सारांश:
- मेमोरी प्रबंधन कंप्यूटर मेमोरी को नियंत्रित करने और समन्वय करने की प्रक्रिया है, सिस्टम के समग्र प्रदर्शन का अनुकूलन करने के लिए विभिन्न चल रहे कार्यक्रमों को ब्लॉक कहा जाता है।
- यह आपको यह जांचने की अनुमति देता है कि प्रक्रियाओं को कितनी मेमोरी आवंटित करने की आवश्यकता है जो यह तय करती है कि किस प्रोसेसर को किस समय मेमोरी प्राप्त करनी चाहिए।
- एकल संचित आवंटन में, एक छोटे से हिस्से को छोड़कर सभी प्रकार की कंप्यूटर की मेमोरी जो कि ओएस के लिए आरक्षित है, एक अनुप्रयोग के लिए उपलब्ध है
- विभाजन की गई आवंटन विधि प्राथमिक मेमोरी को विभिन्न मेमोरी पार्टिशन में विभाजित करती है, जो कि ज्यादातर मेमोरी का सन्निहित क्षेत्र है
- पृष्ठांकित मेमोरी प्रबंधन विधि कंप्यूटर की मुख्य मेमोरी को निश्चित आकार की इकाइयों में विभाजित करती है जिसे पृष्ठ फ़्रेम के रूप में जाना जाता है
- खंडित मेमोरी एकमात्र मेमोरी प्रबंधन विधि है जो उपयोगकर्ता के प्रोग्राम को रैखिक और सन्निहित पते स्थान के साथ प्रदान नहीं करती है।
- स्वैपिंग एक ऐसी विधि है जिसमें प्रक्रिया को मुख्य मेमोरी से बैकिंग स्टोर में अस्थायी रूप से स्वैप किया जाना चाहिए। इसे बाद में जारी रखने के लिए मेमोरी में वापस लाया जाएगा।
- मेमोरी आवंटन एक ऐसी प्रक्रिया है जिसके द्वारा कंप्यूटर प्रोग्राम को मेमोरी या स्पेस असाइन किया जाता है।
- पेजिंग एक भंडारण तंत्र है जो ओएस को द्वितीयक भंडारण से मुख्य मेमोरी में पृष्ठों के रूप में प्रक्रियाओं को प्राप्त करने की अनुमति देता है।
- विखंडन एक डिस्क की स्थिति को संदर्भित करता है जिसमें फाइलें डिस्क के चारों ओर बिखरे हुए टुकड़ों में विभाजित होती हैं।
- सेगमेंटेशन विधि लगभग पेजिंग के समान काम करती है। दोनों के बीच एकमात्र अंतर यह है कि खंड चर-लंबाई के हैं, जबकि पृष्ठन विधि में, पृष्ठ हमेशा निश्चित आकार के होते हैं।
- डायनेमिक लोडिंग एक प्रोग्राम की एक रूटीन है, जिसे तब तक लोड नहीं किया जाता है जब तक कि प्रोग्राम इसे कॉल न कर दे।
- लिंकिंग एक विधि है जो ओएस को कोड और डेटा के विभिन्न मॉड्यूल को एक ही निष्पादन योग्य फ़ाइल में इकट्ठा करने और विलय करने में मदद करती है।