Memory Management in OS in Hindi – OS में मेमोरी मैनेजमेंट क्या हैं?

Memory Management in OS in Hindi – ओएस में मेमोरी मैनेजमेंट हिंदी में

OS में मेमोरी मैनेजमेंट क्या हैं? OS Me Memory Management Kya Hai?

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

जब एप्लिकेशन या ऑपरेटिंग सिस्टम को कंप्यूटर पर उपलब्ध मेमोरी से अधिक मेमोरी की आवश्यकता होती है, तो सिस्टम को मेमोरी स्पेस के वर्तमान कंटेंट को अनुरोधित मेमोरी स्पेस के कंटेंट के साथ स्वैप करना होगा। उसी तरह, अलग-अलग स्थितियों में अलग-अलग मेमोरी मैनेजमेंट तकनीकों की आवश्यकता होती है।

कुछ मामलों में पेजिंग के उपयोग की आवश्यकता होती है, जबकि अन्य में ऑन-डिस्क कैश के उपयोग की आवश्यकता हो सकती है। अंततः, यह तय करना कि किस मेमोरी मैनेजमेंट तकनीक का उपयोग करना है, उपलब्ध हार्डवेयर और सॉफ़्टवेयर के लिए यूजर इंटरफ़ेस को ऑप्टिमाइज़ करने का मामला है। इस लेख में, हम इन विभिन्न मेमोरी मैनेजमेंट तकनीकों को सीखेंगे।

Memory Management in OS in Hindi – ओएस में मेमोरी मैनेजमेंट हिंदी में

Memory Management OS in Hindi

मेमोरी मैनेजमेंट से आप क्या समझते हैं?

मेमोरी कंप्यूटर का महत्वपूर्ण भाग है जिसका उपयोग डेटा को स्टोर करने के लिए किया जाता है। इसका मैनेजमेंट कंप्यूटर सिस्टम के लिए महत्वपूर्ण है क्योंकि कंप्यूटर सिस्टम में उपलब्ध मुख्य मेमोरी की मात्रा बहुत सीमित है। किसी भी समय, कई प्रोसेसेज इसके लिए प्रतिस्पर्धा कर रही होती हैं। इसके अलावा, परफॉरमेंस बढ़ाने के लिए, कई प्रोसेसेज को एक साथ एक्सीक्‍यूट किया जाता है। इसके लिए हमें कई प्रोसेसेज को मुख्य मेमोरी में रखना होगा, इसलिए उन्हें प्रभावी ढंग से मैनेज मैनेज करना और भी महत्वपूर्ण है।

मुख्य मेमोरी क्या है?

मुख्य मेमोरी, जिसे आमतौर पर RAM (Random Access Memory) कहा जाता है, सक्रिय रूप से प्रोसेस डेटा के लिए कंप्यूटर का प्राथमिक अस्थायी स्टोरेज है। हार्ड ड्राइव जैसे स्थायी स्टोरेज के विपरीत, रैम अस्थिर (volatile) है, कंप्यूटर बंद होने पर अपने कंटेंट खो देता है। यह एड्रेसेबल सेल्‍स में ऑर्गनाइज है, प्रत्येक में डेटा बाइट्स में मापा जाता है। कुशल मेमोरी मैनेजमेंट, जिसमें आवंटन और डीलोकेशन शामिल है, इष्टतम परफॉरमेंस के लिए आवश्यक है। रैम की मात्रा सीधे मल्टीटास्किंग और प्रोग्राम हैंडलिंग क्षमताओं को प्रभावित करती है, जिससे यह समग्र सिस्टम परफॉरमेंस में एक महत्वपूर्ण फैक्‍टर बन जाती है।

ऑपरेटिंग सिस्टम में मेमोरी मैनेजमेंट क्या है?

ओएस में मेमोरी मैनेजमेंट रैंडम एक्सेस मेमोरी (प्राइमरी मेमोरी) की कार्यक्षमता को कंट्रोल और मैनेज करने की एक तकनीक है। इसका उपयोग बेहतर समरूपता, सिस्टम परफॉरमेंस और मेमोरी उपयोग प्राप्त करने के लिए किया जाता है।

मेमोरी मैनेजमेंट प्रोसेसेज को प्राथमिक मेमोरी से सेकंडरी मेमोरी में ले जाता है और इसके विपरीत। यह उपलब्ध मेमोरी, मेमोरी आवंटन और अनआवंटित का भी ट्रैक रखता है।

OS में मेमोरी मैनेजमेंट का उपयोग क्यों करें?

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

OS में मेमोरी मैनेजमेंट की भूमिका

Role of Memory management in OS in Hindi

कंप्यूटर सिस्टम में मेमोरी मैनेजमेंट की महत्वपूर्ण भूमिकाएँ निम्नलिखित हैं:

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

👉 यह भी पढ़े: ऑपरेटिंग सिस्टम में Deadlock क्या हैं?

मेमोरी मैनेजमेंट तकनीकें

Techniques of Memory Management in OS in Hindi

Memory Management OS in Hindi

मेमोरी मैनेजमेंट तकनीकों को निम्नलिखित मुख्य श्रेणियों में वर्गीकृत किया जा सकता है:

  • कन्टिग्यूअस मेमोरी मैनेजमेंट स्कीम्स (Contiguous Memory Management Schemes)
  • नॉन-कन्टिग्यूअस मेमोरी मैनेजमेंट स्कीम्स (Non-Contiguous Memory Management Schemes)

1. कन्टिग्यूअस मेमोरी मैनेजमेंट स्कीम्स (Contiguous Memory Management Schemes)

एक कन्टिग्यूअस मेमोरी मैनेजमेंट स्कीम में, प्रत्येक प्रोग्राम स्टोरेज लोकेशंस के एक सिंगल कन्टिग्यूअस ब्लॉक पर कब्जा कर लेता है, यानी, लगातार एड्रेसेस के साथ मेमोरी लोकेशंस का एक सेट।

सिंगल कन्टिग्यूअस मेमोरी मैनेजमेंट स्कीम्स (Single Contiguous Memory Management Schemes):

सिंगल कन्टिग्यूअस मेमोरी मैनेजमेंट स्कीम कंप्यूटर सिस्टम की प्रारंभिक पीढ़ी में उपयोग की जाने वाली सबसे सरल मेमोरी मैनेजमेंट स्कीम है। इस स्कीम में, मुख्य मेमोरी को दो कन्टिग्यूअस क्षेत्रों या विभाजनों में विभाजित किया गया है। ऑपरेटिंग सिस्टम स्थायी रूप से एक विभाजन में रहते हैं, आम तौर पर कम मेमोरी पर, और यूजर प्रोसेस दूसरे विभाजन में लोड होती है।

सिंगल कन्टिग्यूअस मेमोरी मैनेजमेंट स्कीम्‍स स्कीम्‍स के लाभ:

  • कार्यान्वयन में सरल.
  • मैनेजमेंट और डिज़ाइन करना आसान है।
  • सिंगल कन्टिग्यूअस मेमोरी मैनेजमेंट स्कीम में, एक बार प्रोसेस लोड होने के बाद, इसे प्रोसेसर का पूरा समय दिया जाता है, और कोई अन्य प्रोसेसर इसे बाधित नहीं करेगा।

सिंगल कन्टिग्यूअस मेमोरी मैनेजमेंट स्कीम्स के नुकसान:

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

2. मल्टीपल पार्टिशनिंग (Multiple Partitioning)

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

मल्टीपल पार्टिशनिंग स्कीम्स दो प्रकार की हो सकती हैं:

  • फिक्स्ड पार्टिशनिंग
  • डायनामिक पार्टिशनिंग

a. फिक्स्ड पार्टिशनिंग (Fixed Partitioning)

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

फिक्स्ड पार्टिशनिंग मेमोरी मैनेजमेंट स्कीम्स के लाभ:

  • कार्यान्वयन में सरल.
  • मैनेजमेंट और डिज़ाइन करना आसान है।

फिक्स्ड पार्टिशनिंग मेमोरी मैनेजमेंट स्कीम्स के नुकसान:

  • यह स्कीम आंतरिक फ्रेगमेंटेशन से ग्रस्त है।
  • पार्टिशियन की संख्या सिस्टम निर्माण के समय निर्दिष्ट की जाती है।

b. डायनामिक पार्टिशनिंग (Dynamic Partitioning)

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

डायनामिक पार्टिशनिंग मेमोरी मैनेजमेंट स्कीम्स के लाभ:

  • कार्यान्वयन में सरल.
  • मैनेजमेंट और डिज़ाइन करना आसान है।

डायनामिक पार्टिशनिंग मेमोरी मैनेजमेंट स्कीम्स के नुकसान:

  • यह स्कीम आंतरिक फ्रेगमेंटेशन से भी ग्रस्त है।
  • पार्टिशनिंग की संख्या सिस्टम सेगमेंटेशन के समय निर्दिष्ट की जाती है।

2. नॉन-कन्टिग्यूअस मेमोरी मैनेजमेंट स्कीम्स (Non-Contiguous Memory Management Schemes):

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

👉 यह भी पढ़े: रियल टाइम ऑपरेटिंग सिस्टम क्या हैं?

लॉजिकल एड्रेस स्पेस और फिजिकल एड्रेस स्पेस

मेमोरी मैनेजमेंट के क्षेत्र में, लॉजिकल एड्रेस स्‍पेस और फिजिकल एड्रेस स्पेस के बीच अंतर करना सर्वोपरि है।

1. Logical Address Space:

लॉजिकल एड्रेस स्पेस उन एड्रेस की श्रृंखला को शामिल करता है जिन्हें एक सीपीयू उत्पन्न कर सकता है। यह वह परिप्रेक्ष्य है जिससे कोई प्रोग्राम अपनी मेमोरी को “देखता” है। उदाहरण के लिए, यदि किसी कंप्यूटर में 4 GB रैम है, तो लॉजिकल एड्रेस स्पेस 0 से 4 बिलियन तक हो सकता है। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि यह स्‍पेस पूरी तरह से फिजिकल मेमोरी द्वारा व्याप्त नहीं है। इसके बजाय, यह एक सुविधाजनक और अमूर्त प्रतिनिधित्व के रूप में कार्य करता है।

2. Physical Address Space:

दूसरी ओर, फिजिकल एड्रेस स्पेस, मेमोरी हार्डवेयर में वास्तविक फिजिकल स्पेस है जहां डेटा संग्रहीत होता है। यह रैम में स्टोरेज सेल का मूर्त एड्रेस बनाता है। हमारे पिछले उदाहरण में, यदि रैम मॉड्यूल में 4 बिलियन सेल हैं, तो फिजिकल एड्रेस स्थान इनमें से प्रत्येक व्यक्तिगत सेल के अनुरूप होगा।

मेमोरी मैनेजमेंट यूनिट (MMU) इस इंटरप्ले में महत्वपूर्ण भूमिका निभाती है। यह एक मध्यस्थ के रूप में कार्य करता है, लॉजिकल एड्रेस को फिजिकल एड्रेस में ट्रांसलेट करता है। यह उपलब्ध फिजिकल मेमोरी का कुशलतापूर्वक उपयोग करते हुए, प्रोग्राम को एक बड़े लॉजिकल एड्रेस स्‍पेस में संचालित करने में सक्षम बनाता है।

उदाहरण: ऐसे परिदृश्य पर विचार करें जहां एक प्रोग्राम अपने लॉजिकल एड्रेस स्थान में मेमोरी एड्रेस ‘x’ तक पहुंचने का प्रयास करता है। MMU इसे संबंधित फिजिकल एड्रेस ‘y’ में ट्रांसलेट करता है और वास्तविक रैम स्थान से डेटा पुनर्प्राप्त करता है। यह अमूर्तता कुशल मल्टीटास्किंग और मेमोरी आवंटन की अनुमति देती है

स्टेटिक और डायनामिक लोडिंग

1. Static Loading

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

2. Dynamic Loading

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

स्टेटिक और डायनेमिक लोडिंग के बीच अंतर

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

👉 यह भी पढ़े: नेटवर्क ऑपरेटिंग सिस्टम क्या है? महत्व, प्रकार

स्टेटिक और डायनामिक लिंकिंग

1. स्टेटिक लिंकिंग (Static Linking):

स्टेटिक लिंकिंग में कंपाइल समय पर अंतिम एक्सीक्यूटेबल में सभी आवश्यक लाइब्रेरीज और मॉड्यूल को शामिल करना शामिल है। इसका मतलब यह है कि लाइब्रेरीज से कोड को अंतिम एक्सीक्यूटेबल फ़ाइल में कॉपी किया जाता है। परिणाम एक स्व-निहित एक्सीक्यूटेबल है जो रनटाइम के दौरान बाहरी रिसोर्सेज पर निर्भर नहीं होता है। हालांकि यह पोर्टेबिलिटी सुनिश्चित करता है और गारंटी देता है कि प्रोग्राम किसी भी सिस्टम पर चलेगा, लेकिन यदि कई प्रोग्राम एक ही लाइब्रेरी का उपयोग करते हैं तो यह बड़े फ़ाइल आकार और संभावित अतिरेक का कारण बन सकता है।

लाभ

  • यह आमतौर पर प्रोग्राम स्टार्टअप समय को तेज करता है क्योंकि लाइब्रेरी का कोड एक्सीक्यूटेबल फ़ाइल में कॉपी किया जाता है।
  • इससे प्रोग्रामों को डीबग करना आसान हो जाता है क्योंकि कंपाइल टाइम पर सभी सिम्‍बल्‍स का समाधान हो जाता है।

नुकसान

  • इससे प्रोग्राम को अपडेट करना कठिन हो सकता है क्योंकि किसी दी गई लाइब्रेरी के सभी कोड प्रत्येक प्रोग्राम में कॉपी किए जाते हैं।
  • एक्सीक्यूटेबल फ़ाइल का आकार बड़ा होने के कारण गणना लागत अधिक होगी।
  • इससे डिस्क उपयोग और मेमोरी उपयोग में वृद्धि हो सकती है।
  • इससे सिम्‍बल टकराव हो सकता है, जहां दो अलग-अलग लाइब्रेरी एक ही सिम्‍बल को परिभाषित करती हैं।

2. डायनामिक लिंकिंग (Dynamic Linking):

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

लाभ

  • मेमोरी स्पेस बचाता है
  • कम मेंटेनेंस लागत
  • शेयर्ड फ़ाइलें उपयोग की जाती हैं

नुकसान

  • पेज दोष तब हो सकता है जब शेयर्ड कोड नहीं मिलता है, तब प्रोग्राम मेमोरी में मॉड्यूल लोड करता है।

उदाहरण: ऐसे परिदृश्य पर विचार करें जहां कई प्रोग्राम एक सामान्य गणित लाइब्रेरी का उपयोग करते हैं। स्टैटिक लिंकिंग के साथ, प्रत्येक प्रोग्राम में लाइब्रेरी की अपनी प्रति होगी, जिससे संभावित रूप से बड़े फ़ाइल आकार प्राप्त होंगे। डायनेमिक लिंकिंग के साथ, सभी प्रोग्राम लाइब्रेरी के समान साझा उदाहरण का उपयोग कर सकते हैं, जिससे डिस्क स्थान की बचत होती है

स्टेटिक और डायनेमिक लिंकिंग के बीच अंतर

यहाँ, स्टेटिक बनाम डायनेमिक लिंकिंग के बीच अंतर हैं:

स्टेटिक लिंकिंगडायनामिक लिंकिंग
स्टेटिक लिंकिंग का उपयोग अन्य सभी मॉड्यूल को संयोजित करने के लिए किया जाता है, जो एक प्रोग्राम के लिए एक एकल एक्सीक्यूटेबल कोड में आवश्यक होते हैं। यह OS को किसी भी रनटाइम निर्भरता को रोकने में मदद करता है।जब डायनेमिक लिंकिंग का उपयोग किया जाता है, तो उसे वास्तविक मॉड्यूल या लाइब्रेरी को प्रोग्राम के साथ लिंक करने की आवश्यकता नहीं होती है। इसके बजाय कंपाइलेशन और लिंकिंग के समय दिए गए डायनामिक मॉड्यूल के संदर्भ का उपयोग करें।

स्वैपिंग (Swapping)

Swapping-Memory Management OS in Hindi

स्वैपिंग एक ऐसी तकनीक है जिसका उपयोग कंप्यूटर सिस्टम की मेमोरी के कुशल मैनेजमेंट के लिए ऑपरेटिंग सिस्टम में किया जाता है। स्वैपिंग में दो कार्य शामिल हैं, स्वैपिंग इन और स्वैपिंग आउट।

स्वैपिंग का अर्थ है डेटा के ब्लॉक या पेज को सेकेंडरी मेमोरी से प्राइमरी मेमोरी में रखना। स्वैपिंग आउट का अर्थ है मुख्य मेमोरी से डेटा के ब्लॉक/पेजों को रीड-ओनली मेमोरी (ROM) में स्‍वाइप करना। स्वैपिंग तब उपयोगी होती है जब किसी बड़े प्रोग्राम को एक्‍सूीक्‍यूट करना होता है या किसी बड़ी फ़ाइल पर कुछ ऑपरेशन करना होता है।

कन्टिग्यूअस मेमोरी आवंटन (Contiguous Memory Allocation)

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

मेमोरी आवंटन (Memory Allocation)

मेमोरी आवंटन किसी विशिष्ट एप्लिकेशन या प्रोग्राम के लिए कंप्यूटर की मेमोरी के एक हिस्से को आरक्षित करने की प्रक्रिया है। यह मेमोरी मैनेजमेंट का एक महत्वपूर्ण पहलू है, यह सुनिश्चित करना कि प्रत्येक चल रही प्रक्रिया में कुशलतापूर्वक एक्‍सीक्‍यूट करने के लिए पर्याप्त जगह हो। सिस्टम परफॉरमेंस को ऑप्टिमाइज करने के लिए प्रभावी मेमोरी आवंटन रणनीतियाँ आवश्यक हैं।

1. फर्स्ट फ़िट (First Fit)

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

2. बेस्ट फ़िट (Best Fit)

बेस्ट फ़िट एल्गोरिदम किसी प्रक्रिया को समायोजित करने वाले सबसे छोटे ब्लॉक को खोजने के लिए संपूर्ण मेमोरी स्पेस की खोज करता है। यह मेमोरी की बर्बादी को कम करने में मदद करता है, क्योंकि यह सबसे छोटे उपलब्ध ब्लॉक का चयन करता है जो फिट बैठता है। हालाँकि, यह अन्य आवंटन रणनीतियों की तुलना में अधिक फ्रेगमेंटेटेड मेमोरी स्पेस को जन्म दे सकता है।

3. Worst Fit

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

👉 यह भी पढ़े: टाइम शेयरिंग ऑपरेटिंग सिस्टम क्या है? 

फ्रेगमेंटेशन क्या है?

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

फ्रेगमेंटेशन निम्नलिखित दो प्रकार का होता है:

1. External Fragmentation (एक्‍सर्टनल फ्रेगमेंटेशन):

मुफ़्त उपलब्ध प्राथमिक की कुल मात्रा एक प्रक्रिया को बनाए रखने के लिए पर्याप्त है, लेकिन इसका उपयोग नहीं किया जा सकता क्योंकि यह नॉन-कन्टिग्यूअस है। सभी मुक्त मेमोरी ब्लॉकों को एक साथ ऑर्गनाइज करने के लिए मेमोरी में डेटा के कॉम्‍पेक्‍शन या फेरबदल द्वारा एक्‍सर्टनल फ्रेगमेंटेशन को कम किया जा सकता है और इस प्रकार एक बड़ा मुक्त मेमोरी ब्लॉक बनाया जा सकता है।

2. Internal Fragmentation (इंटरनल फ्रेगमेंटेशन):

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

पेजिंग क्या है?

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

प्रोसेस एड्रेस स्‍पेस लॉजिकल एड्रेस का एक सेट है जिसे प्रत्येक प्रोसेस अपने कोड में संदर्भित करती है। पेजिंग मेमोरी मैनेजमेंट की एक तकनीक है जिसमें प्रोसेस एड्रेस स्पेस को ब्लॉक में तोड़ दिया जाता है। सभी ब्लॉक एक ही आकार के हैं और उन्हें “पेज” कहा जाता है। एक पेज का आकार 2 की शक्ति है और इसकी वैल्‍यू 512 बाइट्स से 8192 बाइट्स की सीमा में है। किसी प्रोसेस का आकार पेजेज की संख्या के संदर्भ में मापा जाता है।

मुख्य मेमोरी का एक समान विभाजन निश्चित आकार के ब्लॉकों में किया जाता है। इन ब्लॉकों को “फ़्रेम” के रूप में जाना जाता है और प्राइमरी मेमोरी के इष्टतम उपयोग को प्राप्त करने और बाहरी फ्रेगमेंटेशन से बचने के लिए फ़्रेम का आकार पेज के समान होता है।

पेजिंग के कुछ लाभ निम्नलिखित हैं:

  • पेजिंग से बाहरी फ्रेगमेंटेशन कम हो जाता है।
  • पेजिंग को लागू करना आसान है.
  • पेजिंग मेमोरी एफिशिएंसी के लिए जोडे जाते हैं।
  • चूँकि फ़्रेम का आकार पेजो के समान है, इसलिए स्वैपिंग काफी सरल हो जाती है।
  • डेटा तक तेजी से पहुंचने के लिए पेजिंग उपयोगी है।

सेगमेंटेशन (Segmentation) क्या है?

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

Memory Management in OS in Hindi का सारांश:

  • Memory Management कंप्यूटर मेमोरी को कंट्रोल और समन्वयित करने की प्रोसेस है, जिसमें सिस्टम के समग्र परफॉरमेंस को ऑप्टिमाइज करने के लिए विभिन्न चल रहे प्रोग्रामों को Blocks नामक भाग आवंटित किया जाता है।
  • यह आपको यह चेक करने की अनुमति देता है कि प्रोसेसेस को कितनी मेमोरी अलोकेट करने की आवश्यकता है जो यह तय करती है कि किस प्रोसेसर को किस समय मेमोरी मिलनी चाहिए।
  • Single Contiguous Allocation में, ओएस के लिए आरक्षित एक छोटे हिस्से को छोड़कर सभी प्रकार की कंप्यूटर मेमोरी एक एप्लिकेशन के लिए उपलब्ध है
  • Partitioned Allocation मेथड प्राइमरी मेमोरी को विभिन्न मेमोरी विभाजनों में विभाजित करती है, जो ज्यादातर मेमोरी के कन्टिग्यूअस क्षेत्र होते हैं
  • Paged Memory Management कंप्यूटर की मुख्य मेमोरी को निश्चित आकार के यूनिटस् में विभाजित करती है जिन्हें पेज फ्रेम के रूप में जाना जाता है
  • Segmented Memory एकमात्र मेमोरी मैनेजमेंट मेथड है जो यूजर के प्रोग्राम को एक रैखिक और कन्टिग्यूअस एड्रेस स्थान प्रदान नहीं करती है।
  • Swapping एक ऐसी मेथड है जिसमें प्रोसेस को मुख्य मेमोरी से बैकिंग स्टोर में अस्थायी रूप से स्वैप किया जाना चाहिए। इसे बाद में एक्सीक्यूशन जारी रखने के लिए मेमोरी में वापस लाया जाएगा।
  • Memory Allocation एक ऐसी प्रोसेस है जिसके द्वारा कंप्यूटर प्रोग्राम को मेमोरी या स्पेस आवंटित किया जाता है।
  • Paging एक स्‍टोरेज मैकेनिजम़ है जो ओएस को पेजेज के रूप में सेकंडरी स्‍टोरेज से मुख्य मेमोरी में प्रोसेसेस को पुनः प्राप्त करने की अनुमति देता है।
  • Fragmentation एक डिस्क की स्थिति को संदर्भित करता है जिसमें फ़ाइलें डिस्क के चारों ओर बिखरे हुए टुकड़ों में विभाजित हो जाती हैं।
  • Segmentation Method लगभग पेजिंग के समान ही कार्य करती है। दोनों के बीच एकमात्र अंतर यह है कि सेग्मेंट्स परिवर्तनीय-लंबाई के होते हैं, जबकि पेजिंग मेथड में, पेज हमेशा निश्चित आकार के होते हैं।
  • Dynamic Loading एक प्रोग्राम का रूटीन है जो तब तक लोड नहीं होता जब तक प्रोग्राम उसे कॉल न करे।
  • Linking एक ऐसी मेथड है जो ओएस को कोड और डेटा के विभिन्न मॉड्यूल को एक एक्सीक्यूटेबल फ़ाइल में एकत्र करने और मर्ज करने में मदद करती है।

👉 यह भी पढ़े: ऑपरेटिंग सिस्टम के प्रकार, उनके कार्य, फायदे और नुकसान

ओएस में मेमोरी मैनेजमेंट क्‍या है? पर अक्सर पूछे जाने वाले प्रश्न

FAQ on Memory Management in OS in Hindi

फ्रेगमेंटेशन क्या है और यह मेमोरी आवंटन को कैसे प्रभावित करता है?

फ्रेगमेंटेशन तब होता है जब मेमोरी को छोटे, नॉन-कन्टिग्यूअस ब्लॉकों में विभाजित किया जाता है। इससे मेमोरी उपयोग में अक्षमताएँ हो सकती हैं। लेख में संक्षेप में फ्रेगमेंटेशन का उल्लेख किया गया है, लेकिन इसे अधिक विस्तार से समझाना फायदेमंद हो सकता है।

क्या कोई प्रोग्राम अपने आवंटित स्थान के बाहर मेमोरी तक पहुंच सकता है?

यह स्पष्ट करना महत्वपूर्ण है कि मेमोरी सुरक्षा तंत्र प्रोग्रामों को उन मेमोरी स्थानों तक पहुंचने से कैसे रोकते हैं जो उन्हें आवंटित नहीं किए गए हैं। यह सुनिश्चित करता है कि प्रोग्राम एक-दूसरे के साथ हस्तक्षेप न करें।

वर्चुअल मेमोरी मेमोरी मैनेजमेंट को कैसे बढ़ाती है?

वर्चुअल मेमोरी एक महत्वपूर्ण अवधारणा है जो प्रोग्राम को फिजिकल रूप से उपलब्ध मेमोरी से अधिक मेमोरी का उपयोग करने की अनुमति देती है। आधुनिक मेमोरी मैनेजमेंट सिस्‍टम्‍स में यह एक महत्वपूर्ण फैक्‍टर हो सकता है।

मेमोरी मैनेजमेंट में Thrashing क्या है?

Thrashing तब होती है जब रैम और डिस्क के बीच डेटा की अत्यधिक swapping के कारण कंप्यूटर का परफॉरमेंस गंभीर रूप से खराब हो जाता है। यह निष्पादित कार्यों के लिए फिजिकल मेमोरी की अपर्याप्त मात्रा के कारण हो सकता है।

विंडोज़ सिस्टम में मेमोरी मैनेजमेंट के साथ आम समस्याएं कौन सी हैं?

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

मेमोरी मैनेजमेंट समस्याओं को कैसे हल करें?

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

Memory Management OS in Hindi पर निष्कर्ष:

ओएस में मेमोरी मैनेजमेंट प्राथमिक मेमोरी की कार्यक्षमता को मैनेज करने की एक तकनीक है, जिसका उपयोग बेहतर समवर्तीता, सिस्टम परफॉरमेंस और मेमोरी उपयोग प्राप्त करने के लिए किया जाता है।

मेमोरी मैनेजमेंट प्रत्येक मेमोरी स्‍पेस की स्थिति पर नज़र रखता है, चाहे वह आवंटित हो या मुक्त हो।

पेजिंग मेमोरी मैनेजमेंट की एक तकनीक है जिसमें प्रोसेस एड्रेस स्पेस को ब्लॉक में तोड़ दिया जाता है। सभी ब्लॉक एक ही आकार के हैं और उन्हें “पेज” कहा जाता है।

फ्रेगमेंटेशन दो प्रकार का होता है इंटरनल और एक्‍सर्टनल।

सिस्टम सॉफ्टवेयर क्या है? फीचर्स, प्रकार, उदाहरण

Distributed System क्या हैं? डिस्ट्रिब्यूटेड सिस्टम की दुनिया को समझे

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top