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

