बाह्य विखंडन तब होता है जब मुक्त मेमोरी बिखरे हुए ब्लॉकों में विभाजित हो जाती है, जिससे नई प्रक्रियाओं के लिए सन्निहित स्थान आवंटित करना कठिन हो जाता है।
बाह्य विखंडन से क्या अभिप्राय है?
बाह्य विखंडन मेमोरी प्रबंधन में एक ऐसी घटना है जहाँ मुक्त मेमोरी उपलब्ध है लेकिन कई गैर-सन्निहित ब्लॉकों में वितरित की जाती है, जिससे किसी प्रक्रिया को मेमोरी का एक बड़ा ब्लॉक आवंटित करना चुनौतीपूर्ण हो जाता है। ऐसा इसलिए होता है क्योंकि समय के साथ, जैसे-जैसे प्रक्रियाएँ लोड होती हैं और मेमोरी से हटाई जाती हैं, आवंटित क्षेत्रों के बीच अनुपयोगी मेमोरी के छोटे अंतराल जमा होते जाते हैं।
ये अंतराल नई प्रक्रियाओं की आवश्यकताओं को पूरा करने के लिए पर्याप्त नहीं हो सकते हैं, भले ही कुल मुक्त मेमोरी आकार में पर्याप्त हो। बाहरी विखंडन विशेष रूप से उन प्रणालियों में समस्याग्रस्त है जो पर निर्भर करते हैं गतिशील स्मृति आवंटन, क्योंकि इससे मेमोरी संसाधनों का अकुशल उपयोग हो सकता है और इसके प्रभावों को कम करने के लिए कॉम्पैक्शन या पेजिंग जैसी रणनीतियों की आवश्यकता हो सकती है।
बाह्य विखंडन उदाहरण
100 एमबी फ्री मेमोरी वाले सिस्टम पर विचार करें। शुरू में, मेमोरी इस प्रकार आवंटित की जाती है:
- प्रक्रिया A: 10 MB
- प्रक्रिया बी: 20 एमबी
- प्रक्रिया C: 30 MB
कुछ समय बाद, प्रक्रिया A और C समाप्त हो जाती हैं, जिससे उनकी मेमोरी खाली हो जाती है। मेमोरी लेआउट अब इस तरह दिखता है:
- निःशुल्क ब्लॉक: 10 एमबी
- अधिभोग ब्लॉक: 20 एमबी (प्रक्रिया बी)
- निःशुल्क ब्लॉक: 30 एमबी
अब, एक नई प्रक्रिया, प्रक्रिया डी, को 35 एमबी मेमोरी की आवश्यकता है। हालाँकि कुल मुक्त मेमोरी (10 एमबी + 30 एमबी = 40 एमबी) आवश्यकता से अधिक है, प्रक्रिया डी को आवंटित नहीं किया जा सकता है क्योंकि 35 एमबी का कोई एकल सन्निहित ब्लॉक नहीं है।
यह स्थिति बाह्य विखंडन को दर्शाती है, जहां मुक्त मेमोरी उपलब्ध है, लेकिन असंबद्ध स्थानों में बिखरी हुई है, जिससे कुशल आवंटन में बाधा उत्पन्न होती है।
बाह्य विखंडन का क्या कारण है?
बाह्य विखंडन मुख्य रूप से अलग-अलग आकार के मेमोरी ब्लॉकों के गतिशील आवंटन और आवंटन के कारण होता है। समय के साथ, जब प्रक्रियाएँ मेमोरी का अनुरोध करती हैं और फिर उसे रिलीज़ करती हैं, तो मेमोरी में अंतराल या छेद रह जाते हैं जो अक्सर इतने छोटे होते हैं कि उन्हें कुशलतापूर्वक पुनः उपयोग नहीं किया जा सकता। बाह्य विखंडन के मुख्य कारणों में शामिल हैं:
- गैर-सन्निहित स्मृति आबंटन. मेमोरी ब्लॉकों का आवंटन उपलब्धता के आधार पर किया जाता है, न कि निरंतरता के आधार पर, जिसके कारण रिक्त स्थान बिखर जाते हैं।
- परिवर्तनीय आकार के मेमोरी अनुरोध. अलग-अलग प्रक्रियाओं के लिए अलग-अलग मात्रा में मेमोरी की आवश्यकता होती है। जब बड़ी प्रक्रियाओं द्वारा छोड़े गए स्थान पर छोटी प्रक्रियाओं को आवंटित किया जाता है, तो असमान अंतराल पैदा होते हैं।
- प्रक्रिया समाप्ति या पुन:आवंटन। जब प्रक्रियाएं समाप्त हो जाती हैं या मेमोरी रिलीज हो जाती है, तो मुक्त हुए स्थान भविष्य के अनुरोधों के साथ संरेखित नहीं हो पाते, जिससे अनुपयोगी मेमोरी खंड पीछे रह जाते हैं।
- प्रथम-फिट या सर्वोत्तम-फिट आवंटन रणनीतियाँ। प्रथम-फिट (पहला उपलब्ध ब्लॉक आवंटित करना) और सर्वोत्तम-फिट (सबसे छोटा उपयुक्त ब्लॉक आवंटित करना) जैसी मेमोरी आवंटन विधियां, आवंटित ब्लॉकों के बीच छोटे, अनुपयोगी अंतराल छोड़कर विखंडन में योगदान कर सकती हैं।
- लम्बे समय तक चलने वाली प्रणालियाँ. समय के साथ, जो प्रणालियां बड़ी संख्या में आवंटन और आवंटन-विमुक्ति चक्रों को संभालती हैं, उनमें बार-बार होने वाले परिचालनों के परिणामस्वरूप खंडित मेमोरी एकत्रित हो जाती है।
बाह्य विखंडन के प्रभाव क्या हैं?
बाह्य विखंडन से सिस्टम प्रदर्शन और मेमोरी उपयोग पर कई महत्वपूर्ण प्रभाव पड़ सकते हैं, जिनमें शामिल हैं:
- अकुशल मेमोरी उपयोग. यद्यपि पर्याप्त कुल मेमोरी उपलब्ध हो सकती है, लेकिन यह उन प्रक्रियाओं के लिए अनुपयोगी हो सकती है जिनके लिए बड़े सन्निहित ब्लॉकों की आवश्यकता होती है, जिसके परिणामस्वरूप संसाधनों का कम उपयोग हो सकता है।
- सिस्टम का प्रदर्शन कम हो गया. विखंडन के कारण आबंटन के दौरान उपयुक्त मेमोरी ब्लॉकों की खोज में लगने वाला समय बढ़ जाता है, जिससे सिस्टम संचालन संभवतः धीमा हो जाता है।
- आबंटन विफलताएँ. जिन प्रक्रियाओं के लिए बड़े सन्निहित मेमोरी ब्लॉकों की आवश्यकता होती है, वे आवंटन करने में विफल हो सकती हैं, भले ही संयुक्त मुक्त मेमोरी पर्याप्त हो।
- बार-बार आउट-ऑफ-मेमोरी त्रुटियाँ होना। जैसे-जैसे विखंडन बढ़ता है, सिस्टम अपर्याप्त सन्निहित स्थान के कारण गलत तरीके से मेमोरी की कमी की रिपोर्ट कर सकता है, भले ही मुक्त मेमोरी उपलब्ध हो।
- बार-बार स्मृति संघनन की आवश्यकता. पुनः प्राप्त करने के लिए खंडित स्मृतिसिस्टम को कॉम्पैक्शन की आवश्यकता हो सकती है, जो रिक्त स्थानों को समेकित करने के लिए मेमोरी को पुनः व्यवस्थित करने की एक प्रक्रिया है, जो चल रही प्रक्रियाओं को बाधित कर सकती है और प्रसंस्करण समय को नष्ट कर सकती है।
- बर्बाद हुए संसाधन. छोटे, बिखरे हुए मुक्त ब्लॉक अक्सर अप्रयुक्त रह जाते हैं, जिसके कारण ऐसी स्थिति उत्पन्न हो जाती है भौतिक स्मृति उपलब्ध है लेकिन प्रक्रिया आवश्यकताओं को पूरा करने के लिए प्रभावी ढंग से आवंटित नहीं किया जा सकता है।
बाह्य विखंडन को कैसे रोकें?
बाह्य विखंडन को रोकने के लिए मेमोरी प्रबंधन तकनीकों को लागू करना शामिल है जो मेमोरी के निरंतर आवंटन की आवश्यकता को कम या खत्म कर देती हैं। आम रणनीतियों में शामिल हैं:
- पृष्ठनमेमोरी को निश्चित आकार के ब्लॉक में विभाजित किया जाता है, जिन्हें पेज कहा जाता है, और प्रक्रियाओं को सन्निहित मेमोरी के बजाय पेज आवंटित किए जाते हैं। यह सन्निहित आवंटन की आवश्यकता को समाप्त करता है, प्रभावी रूप से बाहरी विखंडन से बचता है।
- पेजिंग के साथ विभाजनविभाजन और पेजिंग का संयोजन तार्किक मेमोरी खंडों को निश्चित आकार के पृष्ठों में मैप करता है, जिससे विखंडन कम होता है और साथ ही साथ flexस्मृति उपयोग में क्षमता.
- बडी स्मृति आबंटन. यह सिस्टम मेमोरी को दो की घात वाले आकार के ब्लॉक में आवंटित करता है, आवश्यकतानुसार ब्लॉक को विभाजित और मर्ज करता है। यह सुनिश्चित करके विखंडन को कम करता है कि मेमोरी को पूर्वानुमानित आकारों में आवंटित किया गया है।
- स्मृति संघनन. आवंटित ब्लॉकों को एक साथ ले जाकर और खाली जगहों को समेकित करके समय-समय पर मेमोरी को पुनर्गठित करने से विखंडन को कम किया जा सकता है। हालाँकि, यह दृष्टिकोण संसाधन-गहन है और सिस्टम प्रदर्शन को बाधित कर सकता है।
- सर्वोत्तम-फिट या सबसे खराब-फिट आवंटन का बुद्धिमानी से उपयोग करना। विखंडन को कम करने के लिए आवंटन रणनीतियों को अनुकूलित किया जा सकता है। उदाहरण के लिए, सर्वोत्तम-फिट छोटे अंतराल छोड़ सकता है, जबकि सबसे खराब-फिट बड़े अंतराल सुनिश्चित कर सकता है जो अन्य प्रक्रियाओं के लिए पुन: प्रयोज्य हैं।
- गतिशील स्मृति प्रबंधन सुधार. उन्नत एल्गोरिदम समय के साथ विखंडन को कम करने के लिए आवंटन पैटर्न की भविष्यवाणी कर सकते हैं और मेमोरी उपयोग को अनुकूलित कर सकते हैं।
- वर्चुअल मेमोरी का उपयोग करना. आभासी स्मृति तार्किक मेमोरी को भौतिक मेमोरी से अलग करता है, जिससे प्रक्रियाओं को मेमोरी के भौतिक लेआउट की चिंता किए बिना उस तक पहुंचने की अनुमति मिलती है, जिससे विखंडन से बचा जा सकता है।
बाह्य विखंडन को कैसे ठीक करें?
बाह्य विखंडन को ठीक करने में आम तौर पर मेमोरी को आवंटित करने और प्रबंधित करने के तरीके को पुनर्गठित करना या पुनर्विचार करना शामिल होता है। आम तरीकों में शामिल हैं:
- स्मृति संघनन. बिखरे हुए मुक्त ब्लॉकों को एक एकल सन्निहित ब्लॉक में समेकित करने के लिए मेमोरी को पुनर्व्यवस्थित करें। प्रभावी होने के बावजूद, यह प्रक्रिया कम्प्यूटेशनल रूप से महंगी है और चल रही प्रक्रियाओं को बाधित कर सकती है, इसलिए इसका अक्सर संयम से उपयोग किया जाता है।
- गतिशील स्मृति डीफ़्रेग्मेंटेशन. ऐसे एल्गोरिदम का उपयोग करें जो सिस्टम संचालन को रोके बिना विखंडन को न्यूनतम करने के लिए पृष्ठभूमि में मेमोरी आवंटन को सक्रिय रूप से शफल करते हैं।
- पेजिंग पर स्विच करें. सन्निहित मेमोरी आवंटन को पेजिंग से बदलें। इस दृष्टिकोण में, मेमोरी को निश्चित आकार के ब्लॉक (पेज) में विभाजित किया जाता है, और प्रक्रियाएँ गैर-सन्निहित पेजों का उपयोग कर सकती हैं, जिससे बाहरी विखंडन पूरी तरह से समाप्त हो जाता है।
- पेजिंग के साथ विभाजन. भौतिक पृष्ठों पर मैपिंग करते समय प्रक्रियाओं के लिए तार्किक पृथक्करण प्रदान करने के लिए विभाजन और पेजिंग को संयोजित करें, जिससे सन्निहित मेमोरी ब्लॉकों की आवश्यकता से बचा जा सके।
- स्मृति आवंटन रणनीतियाँ. आवंटन विधियों जैसे कि प्रथम-फिट, सर्वोत्तम-फिट, या सबसे खराब-फिट का पुनर्मूल्यांकन करें। कुछ विधियाँ विखंडन को बढ़ा सकती हैं, जबकि अन्य मेमोरी के बड़े पुन: प्रयोज्य ब्लॉक छोड़ सकती हैं।
- स्मृति पुनः प्राप्ति. समाप्त प्रक्रियाओं या अप्रयुक्त वस्तुओं द्वारा रखी गई मेमोरी को मुक्त करने के लिए कचरा संग्रहण प्रणालियों को लागू करें, जिससे यह सुनिश्चित हो सके कि खंडित स्थानों को भविष्य में उपयोग के लिए पुनः प्राप्त किया जा सके।
- वर्चुअल मेमोरी का उपयोग करना. वर्चुअल मेमोरी की सुविधा देता है ऑपरेटिंग सिस्टम आभासी पतों को भौतिक पतों पर मैप करके बड़े सन्निहित स्मृति स्थानों का अनुकरण करना, जिससे भौतिक विखंडन को प्रभावी रूप से दरकिनार किया जा सके।
बाह्य विखंडन के लाभ और हानियाँ
बाह्य विखंडन के मुख्य लाभ और नुकसान यहां दिए गए हैं।
बाह्य विखंडन के क्या लाभ हैं?
जबकि बाह्य विखंडन को आम तौर पर मेमोरी प्रबंधन में एक कमी माना जाता है, सिस्टम की ज़रूरतों और मेमोरी आवंटन रणनीतियों के आधार पर कभी-कभी इसके फ़ायदे भी हो सकते हैं। ये फ़ायदे तब मिलते हैं जब flexमेमोरी उपयोग और आवंटन में दक्षता को सख्त दक्षता से अधिक प्राथमिकता दी जाती है।
1. Flexगतिशील मेमोरी आवंटन में क्षमता
बाह्य विखंडन गतिशील के उपयोग से परिणामित होता है स्मृति आवंटन, जो प्रक्रियाओं को उनकी विशिष्ट आवश्यकताओं के आधार पर मेमोरी का अनुरोध करने की अनुमति देता है। flexयह सुनिश्चित करता है कि मेमोरी केवल तभी आवंटित की जाए जब इसकी आवश्यकता हो और यह बिल्कुल उसी आकार में हो जिसकी आवश्यकता हो, जिससे अनावश्यक अति-आवंटन कम हो। जबकि इससे बिखरे हुए खाली स्थान मिल सकते हैं, इसका यह भी अर्थ है कि मेमोरी संसाधनों का अधिक सटीक उपयोग किया जाता है, जिससे विविध कार्यभार समायोजित होते हैं।
2. बड़ी और विविध प्रक्रियाओं के लिए बेहतर उपयुक्तता
ऐसी प्रणालियों में जहाँ प्रक्रियाओं की मेमोरी आवश्यकताएँ व्यापक रूप से भिन्न होती हैं, बाहरी विखंडन इन विविध प्रक्रियाओं को आवंटन आकारों में सख्त एकरूपता लागू किए बिना समायोजित करने की अनुमति देता है। यह अनुकूलनशीलता सुनिश्चित करती है कि बड़ी या अनूठी प्रक्रियाएँ अभी भी पर्याप्त मेमोरी पा सकती हैं, भले ही लेआउट अनियमित हो, जब तक कि आवश्यक आकार का एक सन्निहित ब्लॉक उपलब्ध हो।
3. संघनन की तुलना में ओवरहेड में कमी
कॉम्पैक्शन या पेजिंग सिस्टम के विपरीत, जिसके लिए अतिरिक्त प्रसंस्करण या हार्डवेयर मेमोरी को प्रबंधित करने के लिए समर्थन, बाह्य विखंडन सरल आवंटन रणनीतियों के उपोत्पाद के रूप में स्वाभाविक रूप से होता है। यह जटिलता और संसाधन खपत के मामले में सिस्टम ओवरहेड को कम करता है, जिससे यह एक ऐसा समझौता बन जाता है जो उन प्रणालियों को लाभ पहुंचा सकता है जहां प्रदर्शन संबंधी बाधाएं अत्यधिक कुशल मेमोरी उपयोग की आवश्यकता से अधिक होती हैं।
बाह्य विखंडन के नुकसान क्या हैं?
बाह्य विखंडन मेमोरी प्रबंधन के लिए महत्वपूर्ण चुनौतियां पेश करता है, जिससे गतिशील मेमोरी आवंटन पर निर्भर प्रणालियों में अक्षमताएं और संभावित प्रदर्शन बाधाएं पैदा होती हैं। नीचे बाह्य विखंडन के मुख्य नुकसान दिए गए हैं।
1. अकुशल मेमोरी उपयोग
बाह्य विखंडन मेमोरी को छोटे, बिखरे हुए, मुक्त ब्लॉकों में विभाजित कर देता है जो अक्सर प्रभावी रूप से उपयोग करने के लिए बहुत छोटे होते हैं। यहां तक कि जब पर्याप्त कुल मेमोरी उपलब्ध होती है, तो सन्निहित स्थान की कमी इसे उन प्रक्रियाओं को आवंटित करने से रोकती है जिनके लिए बड़े ब्लॉक की आवश्यकता होती है। मेमोरी का यह अकुशल उपयोग संसाधनों को बर्बाद कर सकता है, जिससे सिस्टम की समग्र परिचालन क्षमता कम हो जाती है।
2. उपलब्ध मेमोरी के बावजूद आवंटन विफलता
बाह्य विखंडन का एक महत्वपूर्ण दोष यह है कि यह आवंटन विफलताओं को जन्म दे सकता है, तब भी जब कुल मुक्त मेमोरी किसी प्रक्रिया की आवश्यकताओं से अधिक हो। उदाहरण के लिए, यदि कोई प्रक्रिया 50 एमबी मेमोरी का अनुरोध करती है, लेकिन उपलब्ध सबसे बड़ा सन्निहित ब्लॉक केवल 40 एमबी है, तो आवंटन विफल हो जाता है, जिसके परिणामस्वरूप अक्षमताएं और संचालन में संभावित रुकावटें आती हैं।
3. सिस्टम ओवरहेड में वृद्धि
खंडित मेमोरी की उपस्थिति मेमोरी आवंटन के लिए कम्प्यूटेशनल ओवरहेड को बढ़ाती है। प्रक्रिया आवश्यकताओं को पूरा करने वाले उपयुक्त ब्लॉकों की खोज में खंडित मेमोरी लेआउट में अधिक समय लगता है। यह अतिरिक्त प्रसंस्करण समय प्रदर्शन को कम करता है अनुप्रयोगों और सिस्टम संचालन को धीमा कर देता है.
4. बार-बार मेमोरी कॉम्पैक्शन की आवश्यकता
बाह्य विखंडन को संबोधित करने के लिए अक्सर मेमोरी कॉम्पैक्शन की आवश्यकता होती है, जहां खाली स्थानों को निरंतर ब्लॉकों में समेकित किया जाता है। प्रभावी होने के बावजूद, यह प्रक्रिया समय लेने वाली और कम्प्यूटेशनल रूप से महंगी है, और यह अस्थायी रूप से चल रही प्रक्रियाओं को बाधित कर सकती है। बार-बार कॉम्पैक्शन सिस्टम ओवरहेड को बढ़ाता है और उपयोगकर्ता अनुभव को प्रभावित करता है, खासकर वास्तविक समय के अनुप्रयोगों में।
5. लंबे समय तक चलने वाली प्रणालियों में स्केलेबिलिटी की सीमाएं
समय के साथ, गतिशील आवंटन वाले सिस्टम में बाहरी विखंडन जमा हो जाता है, जिससे वे नई प्रक्रियाओं को कुशलता से संभालने में कम सक्षम हो जाते हैं। यह समस्या लंबे समय तक चलने वाले सिस्टम या उच्च मंथन दर वाले सिस्टम में अधिक स्पष्ट हो जाती है, जहां आवंटन और डी-एलोकेशन चक्र अक्सर होते हैं। परिणामी विखंडन प्रतिबंधित करता है मापनीयता इससे सिस्टम की बड़ी कार्यभार को सहन करने की क्षमता सीमित हो जाती है।