विखंडन (कंप्यूटिंग): Difference between revisions
No edit summary |
No edit summary |
||
Line 10: | Line 10: | ||
जब कोई संगणक प्रोग्राम संगणक प्रणाली से मेमोरी के ब्लॉक का अनुरोध करता है, तो ब्लॉक को चंक्स में आवंटित किया जाता है। जब संगणक प्रोग्राम एक चंक के साथ समाप्त हो जाता है, तो यह इसे प्रणाली में वापस मुक्त कर सकता है, इसे बाद में फिर से दूसरे या उसी प्रोग्राम को आवंटित करने के लिए उपलब्ध करा सकता है। एक कार्यक्रम द्वारा आयोजित एक हिस्सा का आकार और समय अलग-अलग होता है। अपने जीवनकाल के दौरान, एक संगणक प्रोग्राम मेमोरी के कई हिस्सों का अनुरोध कर सकता है और मुक्त कर सकता है। | जब कोई संगणक प्रोग्राम संगणक प्रणाली से मेमोरी के ब्लॉक का अनुरोध करता है, तो ब्लॉक को चंक्स में आवंटित किया जाता है। जब संगणक प्रोग्राम एक चंक के साथ समाप्त हो जाता है, तो यह इसे प्रणाली में वापस मुक्त कर सकता है, इसे बाद में फिर से दूसरे या उसी प्रोग्राम को आवंटित करने के लिए उपलब्ध करा सकता है। एक कार्यक्रम द्वारा आयोजित एक हिस्सा का आकार और समय अलग-अलग होता है। अपने जीवनकाल के दौरान, एक संगणक प्रोग्राम मेमोरी के कई हिस्सों का अनुरोध कर सकता है और मुक्त कर सकता है। | ||
जब कोई प्रोग्राम शुरू किया जाता है, मुक्त मेमोरी क्षेत्र लंबे और | जब कोई प्रोग्राम शुरू किया जाता है, मुक्त मेमोरी क्षेत्र लंबे और निकटवर्ती होते हैं। समय के साथ और उपयोग के साथ, लंबे निकटवर्ती क्षेत्र छोटे और छोटे निकटवर्ती क्षेत्रों में खंडित हो जाते हैं। आखिरकार, कार्यक्रम के लिए मेमोरी के बड़े निकटवर्ती भाग प्राप्त करना असंभव हो सकता है। | ||
== प्रकार == | == प्रकार == | ||
Line 65: | Line 65: | ||
डेटा विखंडन तब होता है जब मेमोरी में डेटा का एक संग्रह कई टुकड़ों में टूट जाता है जो एक साथ बंद नहीं होते हैं। यह सामान्यतः एक बड़ी वस्तु को भंडारण में डालने का प्रयास करने का परिणाम है जो पहले से ही बाहरी विखंडन का सामना कर चुका है। | डेटा विखंडन तब होता है जब मेमोरी में डेटा का एक संग्रह कई टुकड़ों में टूट जाता है जो एक साथ बंद नहीं होते हैं। यह सामान्यतः एक बड़ी वस्तु को भंडारण में डालने का प्रयास करने का परिणाम है जो पहले से ही बाहरी विखंडन का सामना कर चुका है। | ||
<!-- File system fragmentation has its own article --> | <!-- File system fragmentation has its own article --> | ||
उदाहरण के लिए, [[फ़ाइल सिस्टम विखंडन|फ़ाइल प्रणाली विखंडन]] फाइलों को सामान्यतः ब्लॉक (डेटा स्टोरेज) या [[डेटा क्लस्टर]] नामक इकाइयों में प्रबंधित किया जाता है। जब एक फ़ाइल प्रणाली बनाया जाता है, तो फ़ाइल ब्लॉक को एक साथ स्टोर करने के लिए रिक्त स्थान होता है, जो संग्रहणीय डेटा होता है। यह तेजी से अनुक्रमिक फ़ाइल पढ़ने और लिखने की अनुमति देता है। चूँकि, जैसे-जैसे फाइलें जोड़ी जाती हैं, हटाई जाती हैं और आकार में बदलाव किया जाता है, मुक्त स्थान बाहरी रूप से खंडित हो जाता है, जिसमें केवल छोटे छेद रह जाते हैं जिनमें नया डेटा रखा जाता है। जब एक नई फ़ाइल लिखी जाती है, या जब एक उपस्थित फ़ाइल को विस्तारित किया जाता है, तो ऑपरेटिंग प्रणाली नए डेटा को नए गैर- | उदाहरण के लिए, [[फ़ाइल सिस्टम विखंडन|फ़ाइल प्रणाली विखंडन]] फाइलों को सामान्यतः ब्लॉक (डेटा स्टोरेज) या [[डेटा क्लस्टर]] नामक इकाइयों में प्रबंधित किया जाता है। जब एक फ़ाइल प्रणाली बनाया जाता है, तो फ़ाइल ब्लॉक को एक साथ स्टोर करने के लिए रिक्त स्थान होता है, जो संग्रहणीय डेटा होता है। यह तेजी से अनुक्रमिक फ़ाइल पढ़ने और लिखने की अनुमति देता है। चूँकि, जैसे-जैसे फाइलें जोड़ी जाती हैं, हटाई जाती हैं और आकार में बदलाव किया जाता है, मुक्त स्थान बाहरी रूप से खंडित हो जाता है, जिसमें केवल छोटे छेद रह जाते हैं जिनमें नया डेटा रखा जाता है। जब एक नई फ़ाइल लिखी जाती है, या जब एक उपस्थित फ़ाइल को विस्तारित किया जाता है, तो ऑपरेटिंग प्रणाली नए डेटा को नए गैर-निकटवर्ती डेटा ब्लॉकों में उपलब्ध छेदों में फ़िट करने के लिए रखता है। नए डेटा ब्लॉक अनिवार्य रूप से बिखरे हुए हैं, पढ़ने/लिखने के [[समय की तलाश]] और [[घूर्णी विलंबता]] के कारण धीमी पहुंच, और अतिरिक्त स्थानों को प्रबंधित करने के लिए अतिरिक्त ओवरहेड लगाना। इसे [[फाइल सिस्टम|फाइल प्रणाली]] विखंडन कहा जाता है। | ||
ज्ञात आकार की एक नई फ़ाइल लिखते समय, यदि कोई खाली छेद है जो उस फ़ाइल से बड़ा है, तो ऑपरेटिंग प्रणाली फ़ाइल को उन छेदों में से किसी एक में डालकर डेटा विखंडन से बच सकता है। फ़ाइल डालने के लिए उन संभावित छेदों में से किसका चयन करने के लिए कई प्रकार के एल्गोरिदम हैं; उनमें से प्रत्येक [[बिन पैकिंग समस्या]] का एक अनुमानी#संगणक विज्ञान अनुमानित समाधान है। सबसे अच्छा फिट एल्गोरिदम सबसे छोटा छेद चुनता है जो काफी बड़ा है। सबसे खराब फिट एल्गोरिदम सबसे बड़ा छेद चुनता है। बिन पैकिंग प्रॉब्लम#फर्स्ट-फिट एल्गोरिद्म|फर्स्ट-फिट एल्गोरिद्म पहले छेद को चुनता है जो काफी बड़ा होता है। अगला फ़िट एल्गोरिथम ट्रैक करता है कि प्रत्येक फ़ाइल कहाँ लिखी गई थी। | ज्ञात आकार की एक नई फ़ाइल लिखते समय, यदि कोई खाली छेद है जो उस फ़ाइल से बड़ा है, तो ऑपरेटिंग प्रणाली फ़ाइल को उन छेदों में से किसी एक में डालकर डेटा विखंडन से बच सकता है। फ़ाइल डालने के लिए उन संभावित छेदों में से किसका चयन करने के लिए कई प्रकार के एल्गोरिदम हैं; उनमें से प्रत्येक [[बिन पैकिंग समस्या]] का एक अनुमानी#संगणक विज्ञान अनुमानित समाधान है। सबसे अच्छा फिट एल्गोरिदम सबसे छोटा छेद चुनता है जो काफी बड़ा है। सबसे खराब फिट एल्गोरिदम सबसे बड़ा छेद चुनता है। बिन पैकिंग प्रॉब्लम#फर्स्ट-फिट एल्गोरिद्म|फर्स्ट-फिट एल्गोरिद्म पहले छेद को चुनता है जो काफी बड़ा होता है। अगला फ़िट एल्गोरिथम ट्रैक करता है कि प्रत्येक फ़ाइल कहाँ लिखी गई थी। | ||
Line 74: | Line 74: | ||
p. 76 | p. 76 | ||
</ref> | </ref> | ||
जिस तरह संघनन बाहरी विखंडन को समाप्त कर सकता है, उसी तरह डेटा भंडारण को पुनर्व्यवस्थित करके डेटा विखंडन को समाप्त किया जा सकता है ताकि संबंधित टुकड़े एक साथ पास हों। उदाहरण के लिए, एक [[defragmentation]] टूल का प्राथमिक काम डिस्क पर ब्लॉक को पुनर्व्यवस्थित करना है ताकि प्रत्येक फ़ाइल के ब्लॉक | जिस तरह संघनन बाहरी विखंडन को समाप्त कर सकता है, उसी तरह डेटा भंडारण को पुनर्व्यवस्थित करके डेटा विखंडन को समाप्त किया जा सकता है ताकि संबंधित टुकड़े एक साथ पास हों। उदाहरण के लिए, एक [[defragmentation]] टूल का प्राथमिक काम डिस्क पर ब्लॉक को पुनर्व्यवस्थित करना है ताकि प्रत्येक फ़ाइल के ब्लॉक निकटवर्ती हों। अधिकांश डीफ़्रेग्मेंटिंग उपयोगिताएँ मुक्त स्थान विखंडन को कम करने या समाप्त करने का भी प्रयास करती हैं। कुछ मूविंग गारबेज कलेक्शन (संगणक साइंस), उपयोगिताएँ जो स्वचालित मेमोरी प्रबंधन करती हैं, कैश प्रदर्शन को बेहतर बनाने के लिए संबंधित वस्तुओं को एक साथ पास ले जाएँगी (इसे कॉम्पैक्टिंग कहा जाता है)। | ||
चार प्रकार की प्रणालियाँ हैं जो कभी भी डेटा विखंडन का अनुभव नहीं करती हैं - वे हमेशा प्रत्येक फ़ाइल को | चार प्रकार की प्रणालियाँ हैं जो कभी भी डेटा विखंडन का अनुभव नहीं करती हैं - वे हमेशा प्रत्येक फ़ाइल को निकटवर्ती रूप से संग्रहीत करती हैं। कम से कम कुछ अस्थायी डेटा विखंडन की अनुमति देने वाले प्रणाली की तुलना में सभी चार प्रकारों में महत्वपूर्ण नुकसान हैं: | ||
# बस प्रत्येक फाइल की सीमा (फाइल प्रणाली) लिखें। यदि फ़ाइल को रखने के लिए पहले से ही पर्याप्त | # बस प्रत्येक फाइल की सीमा (फाइल प्रणाली) लिखें। यदि फ़ाइल को रखने के लिए पहले से ही पर्याप्त निकटवर्ती खाली स्थान नहीं है, तो प्रणाली तुरंत फ़ाइल को संग्रहीत करने में विफल रहता है - तब भी जब हटाए गए फ़ाइलों से बहुत कम खाली स्थान होता है जो फ़ाइल को संग्रहीत करने के लिए पर्याप्त से अधिक जोड़ता है। | ||
# यदि फ़ाइल को रखने के लिए पहले से ही पर्याप्त | # यदि फ़ाइल को रखने के लिए पहले से ही पर्याप्त निकटवर्ती खाली स्थान नहीं है, तो [[कचरा संग्रह (कंप्यूटर विज्ञान)|कचरा संग्रह (संगणक विज्ञान)]] का उपयोग करें फ़ाइल को रखने के लिए पर्याप्त बड़े एक निकटवर्ती मुक्त क्षेत्र में मुक्त स्थान। फ़ाइल को टुकड़ों में तोड़ने और उन टुकड़ों को उपलब्ध मुक्त स्थान में रखने की तुलना में बहुत अधिक समय लगता है। | ||
# फाइल को किसी भी फ्री ब्लॉक में, [[निश्चित आकार ब्लॉक आवंटन]] के जरिए लिखें। फिक्स्ड-साइज ब्लॉक्स स्टोरेज। यदि कोई प्रोग्रामर एक निश्चित ब्लॉक आकार को बहुत छोटा चुनता है, तो प्रणाली तुरंत कुछ फाइलों को स्टोर करने में विफल रहता है - ब्लॉक आकार से बड़ी फाइलें - तब भी जब कई मुफ्त ब्लॉक होते हैं जो फ़ाइल को स्टोर करने के लिए पर्याप्त से अधिक जोड़ते हैं। यदि कोई प्रोग्रामर ब्लॉक आकार को बहुत बड़ा चुनता है, तो आंतरिक विखंडन पर बहुत सी जगह बर्बाद हो जाती है। | # फाइल को किसी भी फ्री ब्लॉक में, [[निश्चित आकार ब्लॉक आवंटन]] के जरिए लिखें। फिक्स्ड-साइज ब्लॉक्स स्टोरेज। यदि कोई प्रोग्रामर एक निश्चित ब्लॉक आकार को बहुत छोटा चुनता है, तो प्रणाली तुरंत कुछ फाइलों को स्टोर करने में विफल रहता है - ब्लॉक आकार से बड़ी फाइलें - तब भी जब कई मुफ्त ब्लॉक होते हैं जो फ़ाइल को स्टोर करने के लिए पर्याप्त से अधिक जोड़ते हैं। यदि कोई प्रोग्रामर ब्लॉक आकार को बहुत बड़ा चुनता है, तो आंतरिक विखंडन पर बहुत सी जगह बर्बाद हो जाती है। | ||
# कुछ प्रणालियाँ पूरी तरह से गतिशील आवंटन से बचती हैं, सभी संभावित फ़ाइलों के लिए प्री-स्टोरिंग (समीपस्थ) स्थान - उदाहरण के लिए, [[मल्टीफ़ाइंडर]] प्रत्येक एप्लिकेशन को RAM का एक हिस्सा पूर्व-आवंटित करता है क्योंकि यह उस एप्लिकेशन के प्रोग्रामर द्वारा दावा की गई RAM के अनुसार शुरू किया गया था इसकी आवश्यकता होगी। | # कुछ प्रणालियाँ पूरी तरह से गतिशील आवंटन से बचती हैं, सभी संभावित फ़ाइलों के लिए प्री-स्टोरिंग (समीपस्थ) स्थान - उदाहरण के लिए, [[मल्टीफ़ाइंडर]] प्रत्येक एप्लिकेशन को RAM का एक हिस्सा पूर्व-आवंटित करता है क्योंकि यह उस एप्लिकेशन के प्रोग्रामर द्वारा दावा की गई RAM के अनुसार शुरू किया गया था इसकी आवश्यकता होगी। | ||
Line 89: | Line 89: | ||
0% के विखंडन का अर्थ है कि सभी मुक्त मेमोरी एक बड़े ब्लॉक में है; विखंडन 90% है (उदाहरण के लिए) जब 100 एमबी फ्री मेमोरी उपस्थित है लेकिन स्टोरेज के लिए मेमोरी का सबसे बड़ा फ्री ब्लॉक सिर्फ 10 एमबी है। | 0% के विखंडन का अर्थ है कि सभी मुक्त मेमोरी एक बड़े ब्लॉक में है; विखंडन 90% है (उदाहरण के लिए) जब 100 एमबी फ्री मेमोरी उपस्थित है लेकिन स्टोरेज के लिए मेमोरी का सबसे बड़ा फ्री ब्लॉक सिर्फ 10 एमबी है। | ||
बाहरी विखंडन प्राथमिक मेमोरी (रैम) स्टोरेज प्रणाली की तुलना में फाइल प्रणाली में एक समस्या से कम होता है, क्योंकि प्रोग्राम को सामान्यतः उनके रैम स्टोरेज अनुरोधों को | बाहरी विखंडन प्राथमिक मेमोरी (रैम) स्टोरेज प्रणाली की तुलना में फाइल प्रणाली में एक समस्या से कम होता है, क्योंकि प्रोग्राम को सामान्यतः उनके रैम स्टोरेज अनुरोधों को निकटवर्ती ब्लॉकों के साथ पूरा करने की आवश्यकता होती है, लेकिन फाइल प्रणाली सामान्यतः किसी भी संग्रह का उपयोग करने में सक्षम होने के लिए डिज़ाइन किए जाते हैं। एक फ़ाइल को इकट्ठा करने के लिए उपलब्ध ब्लॉक (टुकड़े) जो तार्किक रूप से निकटवर्ती प्रतीत होता है। इसलिए, यदि एक अत्यधिक खंडित फ़ाइल या कई छोटी फ़ाइलों को एक पूर्ण वॉल्यूम से हटा दिया जाता है और फिर नई मुक्त स्थान के बराबर आकार वाली एक नई फ़ाइल बनाई जाती है, तो नई फ़ाइल केवल उन्हीं टुकड़ों का पुन: उपयोग करेगी जो विलोपन द्वारा मुक्त किए गए थे। यदि हटाई गई एक फ़ाइल थी, तो नई फ़ाइल उतनी ही खंडित होगी जितनी पुरानी फ़ाइल थी, लेकिन किसी भी स्थिति में नई फ़ाइल बनाने के लिए सभी (अत्यधिक खंडित) मुक्त स्थान का उपयोग करने में कोई बाधा नहीं होगी। रैम में, दूसरी ओर, अधिकांश उपयोग की जाने वाली स्टोरेज प्रणाली छोटे गैर-निकटवर्ती मुक्त ब्लॉकों से एक अनुरोध को पूरा करने के लिए एक बड़े ब्लॉक को इकट्ठा नहीं कर सकता है, और इसलिए अनुरोध को पूरा नहीं किया जा सकता है और प्रोग्राम को वह सब कुछ करने के लिए आगे नहीं बढ़ सकता है जिसके लिए उस मेमोरी की आवश्यकता होती है (जब तक कि यह कई छोटे अलग अनुरोधों के रूप में अनुरोध को फिर से जारी कर सकता है)। | ||
== समस्याएं == | == समस्याएं == | ||
=== भंडारण विफलता === | === भंडारण विफलता === | ||
विखंडन के कारण होने वाली सबसे गंभीर समस्या एक प्रक्रिया या प्रणाली के विफल होने का कारण है, समय से पहले संसाधन समाप्त होने के कारण: यदि एक | विखंडन के कारण होने वाली सबसे गंभीर समस्या एक प्रक्रिया या प्रणाली के विफल होने का कारण है, समय से पहले संसाधन समाप्त होने के कारण: यदि एक निकटवर्ती ब्लॉक को संग्रहीत किया जाना चाहिए और संग्रहीत नहीं किया जा सकता है, तो विफलता होती है। विखंडन के कारण ऐसा होता है, भले ही पर्याप्त संसाधन हो, लेकिन निकटवर्ती राशि नहीं। उदाहरण के लिए, यदि किसी संगणक में 4 GiB मेमोरी है और 2 GiB फ्री हैं, लेकिन मेमोरी 1 MiB के वैकल्पिक अनुक्रम में खंडित है, 1 MiB फ्री है, तो मेमोरी के 1 निकटवर्ती GiB के अनुरोध को संतुष्ट नहीं किया जा सकता है, भले ही 2 GiB कुल निःशुल्क हैं। | ||
इससे बचने के लिए, आवंटक, विफल होने के बजाय, एक डीफ़्रैग्मेन्टेशन (या मेमोरी संघनन चक्र) या अन्य संसाधन सुधार, जैसे कि एक प्रमुख कचरा संग्रह चक्र, को इस उम्मीद में ट्रिगर कर सकता है कि यह तब अनुरोध को पूरा करने में सक्षम होगा। यह प्रक्रिया को आगे बढ़ने देता है, लेकिन प्रदर्शन को गंभीर रूप से प्रभावित कर सकता है। | इससे बचने के लिए, आवंटक, विफल होने के बजाय, एक डीफ़्रैग्मेन्टेशन (या मेमोरी संघनन चक्र) या अन्य संसाधन सुधार, जैसे कि एक प्रमुख कचरा संग्रह चक्र, को इस उम्मीद में ट्रिगर कर सकता है कि यह तब अनुरोध को पूरा करने में सक्षम होगा। यह प्रक्रिया को आगे बढ़ने देता है, लेकिन प्रदर्शन को गंभीर रूप से प्रभावित कर सकता है। |
Revision as of 08:35, 22 December 2022
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
(Learn how and when to remove this template message)
|
संगणक भंडारण में, विखंडन एक घटना है जिसमें भंडारण स्थान, मुख्य भंडारण या द्वितीयक भंडारण भंडारण, क्षमता या प्रदर्शन को कम करने और अधिकांश दोनों को अक्षम रूप से उपयोग किया जाता है। विखंडन के यथार्थ परिणाम उपयोग में भंडारण आवंटन की विशिष्ट प्रणाली और विखंडन के विशेष रूप पर निर्भर करते हैं। कई स्थितियों में, विखंडन से भंडारण स्थान बर्बाद हो जाता है, और उस स्थिति में यह शब्द व्यर्थ स्थान को भी संदर्भित करता है।
मूल सिद्धांत
जब कोई संगणक प्रोग्राम संगणक प्रणाली से मेमोरी के ब्लॉक का अनुरोध करता है, तो ब्लॉक को चंक्स में आवंटित किया जाता है। जब संगणक प्रोग्राम एक चंक के साथ समाप्त हो जाता है, तो यह इसे प्रणाली में वापस मुक्त कर सकता है, इसे बाद में फिर से दूसरे या उसी प्रोग्राम को आवंटित करने के लिए उपलब्ध करा सकता है। एक कार्यक्रम द्वारा आयोजित एक हिस्सा का आकार और समय अलग-अलग होता है। अपने जीवनकाल के दौरान, एक संगणक प्रोग्राम मेमोरी के कई हिस्सों का अनुरोध कर सकता है और मुक्त कर सकता है।
जब कोई प्रोग्राम शुरू किया जाता है, मुक्त मेमोरी क्षेत्र लंबे और निकटवर्ती होते हैं। समय के साथ और उपयोग के साथ, लंबे निकटवर्ती क्षेत्र छोटे और छोटे निकटवर्ती क्षेत्रों में खंडित हो जाते हैं। आखिरकार, कार्यक्रम के लिए मेमोरी के बड़े निकटवर्ती भाग प्राप्त करना असंभव हो सकता है।
प्रकार
विखंडन के तीन अलग-अलग लेकिन संबंधित रूप हैं: बाहरी विखंडन, आंतरिक विखंडन और डेटा विखंडन, जो अलगाव या संयोजन में उपस्थित हो सकते हैं। गति या सरलता में सुधार के बदले में विखंडन को अधिकांश स्वीकार किया जाता है। प्रोसेसर जैसे अन्य संसाधनों के लिए अनुरूप घटनाएं होती हैं; नीचे देखें।
आंतरिक विखंडन
मेमोरी पेजिंग आंतरिक विखंडन पैदा करती है क्योंकि एक संपूर्ण पृष्ठ (संगणक मेमोरी) को आवंटित किया जाएगा चाहे उतनी स्टोरेज की आवश्यकता हो या नहीं।[1] मेमोरी आवंटन को नियंत्रित करने वाले नियमों के कारण, अधिक संगणक मेमोरी कभी-कभी आवश्यकता से अधिक मेमोरी आवंटन होती है। उदाहरण के लिए, मेमोरी केवल कार्यक्रमों को चंक्स (सामान्यतः 4 बाइट्स के गुणक) में प्रदान की जा सकती है, और इसके परिणामस्वरूप यदि कोई प्रोग्राम शायद 29 का अनुरोध करता है बाइट्स, यह वास्तव में 32 बाइट्स का एक हिस्सा प्राप्त करेगा। जब ऐसा होता है, तो अतिरिक्त मेमोरी बेकार हो जाती है। इस परिदृश्य में, अनुपयोगी मेमोरी आवंटित क्षेत्र में समाहित है। यह व्यवस्था, जिसे निश्चित विभाजन कहा जाता है, अकुशल मेमोरी उपयोग से ग्रस्त है - कोई भी प्रक्रिया, चाहे कितनी भी छोटी क्यों न हो, पूरे विभाजन पर कब्जा कर लेती है। इस कचरे को आंतरिक विखंडन कहा जाता है।[2][3] अन्य प्रकार के विखंडन के विपरीत, आंतरिक विखंडन को पुनः प्राप्त करना कठिन है; सामान्यतः इसे हटाने का सबसे अच्छा तरीका डिजाइन में बदलाव करना है। उदाहरण के लिए, गतिशील मेमोरी आवंटन में, मेमोरी पूल बड़ी संख्या में ऑब्जेक्ट्स पर स्पेस ओवरहेड फैलाकर आंतरिक विखंडन को काफी हद तक कम कर देता है।
बाहरी विखंडन
बाहरी विखंडन तब उत्पन्न होता है जब मुक्त मेमोरी को छोटे ब्लॉकों में अलग किया जाता है और आवंटित मेमोरी द्वारा इंटरसेप्ट किया जाता है। यह कुछ स्टोरेज एलोकेशन एल्गोरिदम की कमजोरी है, जब वे प्रोग्राम द्वारा उपयोग की जाने वाली मेमोरी को कुशलता से ऑर्डर करने में विफल होते हैं। परिणाम यह है कि, चूँकि नि: शुल्क भंडारण उपलब्ध है, यह प्रभावी रूप से अनुपयोगी है क्योंकि यह उन टुकड़ों में विभाजित है जो आवेदन की मांगों को पूरा करने के लिए व्यक्तिगत रूप से बहुत छोटे हैं। बाहरी शब्द इस तथ्य को संदर्भित करता है कि अनुपयोगी भंडारण आवंटित क्षेत्रों के बाहर है।
उदाहरण के लिए, एक ऐसी स्थिति पर विचार करें जिसमें एक प्रोग्राम मेमोरी के तीन निरंतर ब्लॉक आवंटित करता है और फिर मध्य ब्लॉक को मुक्त करता है। मेमोरी एलोकेटर भविष्य के आवंटन के लिए मेमोरी के इस फ्री ब्लॉक का उपयोग कर सकता है। चूँकि, यह इस ब्लॉक का उपयोग नहीं कर सकता है यदि आवंटित की जाने वाली मेमोरी इस मुक्त ब्लॉक से आकार में बड़ी है।
फाइलप्रणाली में बाहरी विखंडन भी होता है क्योंकि विभिन्न आकारों की कई फाइलें बनाई जाती हैं, आकार बदलती हैं और हटा दी जाती हैं। प्रभाव और भी बुरा होता है यदि एक फ़ाइल जो कई छोटे टुकड़ों में विभाजित है, हटा दी जाती है, क्योंकि यह समान रूप से मुक्त स्थानों के छोटे क्षेत्रों को छोड़ देती है।
0x0000 | 0x1000 | 0x2000 | 0x3000 | 0x4000 | 0x5000 | Comments |
---|---|---|---|---|---|---|
Start with all memory available for storage. | ||||||
A | B | C | Allocated three blocks A, B, and C, of size 0x1000. | |||
A | C | Freed block B. Notice that the memory that B used cannot be included for a block larger than B's size. | ||||
A | C | Block C moved into block B's empty slot, allowing the remaining space to be used for a larger block of size 0x4000. |
डेटा विखंडन
डेटा विखंडन तब होता है जब मेमोरी में डेटा का एक संग्रह कई टुकड़ों में टूट जाता है जो एक साथ बंद नहीं होते हैं। यह सामान्यतः एक बड़ी वस्तु को भंडारण में डालने का प्रयास करने का परिणाम है जो पहले से ही बाहरी विखंडन का सामना कर चुका है। उदाहरण के लिए, फ़ाइल प्रणाली विखंडन फाइलों को सामान्यतः ब्लॉक (डेटा स्टोरेज) या डेटा क्लस्टर नामक इकाइयों में प्रबंधित किया जाता है। जब एक फ़ाइल प्रणाली बनाया जाता है, तो फ़ाइल ब्लॉक को एक साथ स्टोर करने के लिए रिक्त स्थान होता है, जो संग्रहणीय डेटा होता है। यह तेजी से अनुक्रमिक फ़ाइल पढ़ने और लिखने की अनुमति देता है। चूँकि, जैसे-जैसे फाइलें जोड़ी जाती हैं, हटाई जाती हैं और आकार में बदलाव किया जाता है, मुक्त स्थान बाहरी रूप से खंडित हो जाता है, जिसमें केवल छोटे छेद रह जाते हैं जिनमें नया डेटा रखा जाता है। जब एक नई फ़ाइल लिखी जाती है, या जब एक उपस्थित फ़ाइल को विस्तारित किया जाता है, तो ऑपरेटिंग प्रणाली नए डेटा को नए गैर-निकटवर्ती डेटा ब्लॉकों में उपलब्ध छेदों में फ़िट करने के लिए रखता है। नए डेटा ब्लॉक अनिवार्य रूप से बिखरे हुए हैं, पढ़ने/लिखने के समय की तलाश और घूर्णी विलंबता के कारण धीमी पहुंच, और अतिरिक्त स्थानों को प्रबंधित करने के लिए अतिरिक्त ओवरहेड लगाना। इसे फाइल प्रणाली विखंडन कहा जाता है।
ज्ञात आकार की एक नई फ़ाइल लिखते समय, यदि कोई खाली छेद है जो उस फ़ाइल से बड़ा है, तो ऑपरेटिंग प्रणाली फ़ाइल को उन छेदों में से किसी एक में डालकर डेटा विखंडन से बच सकता है। फ़ाइल डालने के लिए उन संभावित छेदों में से किसका चयन करने के लिए कई प्रकार के एल्गोरिदम हैं; उनमें से प्रत्येक बिन पैकिंग समस्या का एक अनुमानी#संगणक विज्ञान अनुमानित समाधान है। सबसे अच्छा फिट एल्गोरिदम सबसे छोटा छेद चुनता है जो काफी बड़ा है। सबसे खराब फिट एल्गोरिदम सबसे बड़ा छेद चुनता है। बिन पैकिंग प्रॉब्लम#फर्स्ट-फिट एल्गोरिद्म|फर्स्ट-फिट एल्गोरिद्म पहले छेद को चुनता है जो काफी बड़ा होता है। अगला फ़िट एल्गोरिथम ट्रैक करता है कि प्रत्येक फ़ाइल कहाँ लिखी गई थी। अगला फ़िट एल्गोरिथम पहले फ़िट की तुलना में तेज़ है, जो बदले में सर्वश्रेष्ठ फ़िट की तुलना में तेज़ है, जो कि सबसे खराब फ़िट के समान गति है।[4] जिस तरह संघनन बाहरी विखंडन को समाप्त कर सकता है, उसी तरह डेटा भंडारण को पुनर्व्यवस्थित करके डेटा विखंडन को समाप्त किया जा सकता है ताकि संबंधित टुकड़े एक साथ पास हों। उदाहरण के लिए, एक defragmentation टूल का प्राथमिक काम डिस्क पर ब्लॉक को पुनर्व्यवस्थित करना है ताकि प्रत्येक फ़ाइल के ब्लॉक निकटवर्ती हों। अधिकांश डीफ़्रेग्मेंटिंग उपयोगिताएँ मुक्त स्थान विखंडन को कम करने या समाप्त करने का भी प्रयास करती हैं। कुछ मूविंग गारबेज कलेक्शन (संगणक साइंस), उपयोगिताएँ जो स्वचालित मेमोरी प्रबंधन करती हैं, कैश प्रदर्शन को बेहतर बनाने के लिए संबंधित वस्तुओं को एक साथ पास ले जाएँगी (इसे कॉम्पैक्टिंग कहा जाता है)।
चार प्रकार की प्रणालियाँ हैं जो कभी भी डेटा विखंडन का अनुभव नहीं करती हैं - वे हमेशा प्रत्येक फ़ाइल को निकटवर्ती रूप से संग्रहीत करती हैं। कम से कम कुछ अस्थायी डेटा विखंडन की अनुमति देने वाले प्रणाली की तुलना में सभी चार प्रकारों में महत्वपूर्ण नुकसान हैं:
- बस प्रत्येक फाइल की सीमा (फाइल प्रणाली) लिखें। यदि फ़ाइल को रखने के लिए पहले से ही पर्याप्त निकटवर्ती खाली स्थान नहीं है, तो प्रणाली तुरंत फ़ाइल को संग्रहीत करने में विफल रहता है - तब भी जब हटाए गए फ़ाइलों से बहुत कम खाली स्थान होता है जो फ़ाइल को संग्रहीत करने के लिए पर्याप्त से अधिक जोड़ता है।
- यदि फ़ाइल को रखने के लिए पहले से ही पर्याप्त निकटवर्ती खाली स्थान नहीं है, तो कचरा संग्रह (संगणक विज्ञान) का उपयोग करें फ़ाइल को रखने के लिए पर्याप्त बड़े एक निकटवर्ती मुक्त क्षेत्र में मुक्त स्थान। फ़ाइल को टुकड़ों में तोड़ने और उन टुकड़ों को उपलब्ध मुक्त स्थान में रखने की तुलना में बहुत अधिक समय लगता है।
- फाइल को किसी भी फ्री ब्लॉक में, निश्चित आकार ब्लॉक आवंटन के जरिए लिखें। फिक्स्ड-साइज ब्लॉक्स स्टोरेज। यदि कोई प्रोग्रामर एक निश्चित ब्लॉक आकार को बहुत छोटा चुनता है, तो प्रणाली तुरंत कुछ फाइलों को स्टोर करने में विफल रहता है - ब्लॉक आकार से बड़ी फाइलें - तब भी जब कई मुफ्त ब्लॉक होते हैं जो फ़ाइल को स्टोर करने के लिए पर्याप्त से अधिक जोड़ते हैं। यदि कोई प्रोग्रामर ब्लॉक आकार को बहुत बड़ा चुनता है, तो आंतरिक विखंडन पर बहुत सी जगह बर्बाद हो जाती है।
- कुछ प्रणालियाँ पूरी तरह से गतिशील आवंटन से बचती हैं, सभी संभावित फ़ाइलों के लिए प्री-स्टोरिंग (समीपस्थ) स्थान - उदाहरण के लिए, मल्टीफ़ाइंडर प्रत्येक एप्लिकेशन को RAM का एक हिस्सा पूर्व-आवंटित करता है क्योंकि यह उस एप्लिकेशन के प्रोग्रामर द्वारा दावा की गई RAM के अनुसार शुरू किया गया था इसकी आवश्यकता होगी।
तुलना
बाहरी विखंडन की तुलना में, ओवरहेड और आंतरिक विखंडन व्यर्थ मेमोरी और कम प्रदर्शन के स्थितियों में बहुत कम नुकसान के लिए खाते हैं। इसे इस प्रकार परिभाषित किया गया है:
- <बड़ा></बड़ा>
0% के विखंडन का अर्थ है कि सभी मुक्त मेमोरी एक बड़े ब्लॉक में है; विखंडन 90% है (उदाहरण के लिए) जब 100 एमबी फ्री मेमोरी उपस्थित है लेकिन स्टोरेज के लिए मेमोरी का सबसे बड़ा फ्री ब्लॉक सिर्फ 10 एमबी है।
बाहरी विखंडन प्राथमिक मेमोरी (रैम) स्टोरेज प्रणाली की तुलना में फाइल प्रणाली में एक समस्या से कम होता है, क्योंकि प्रोग्राम को सामान्यतः उनके रैम स्टोरेज अनुरोधों को निकटवर्ती ब्लॉकों के साथ पूरा करने की आवश्यकता होती है, लेकिन फाइल प्रणाली सामान्यतः किसी भी संग्रह का उपयोग करने में सक्षम होने के लिए डिज़ाइन किए जाते हैं। एक फ़ाइल को इकट्ठा करने के लिए उपलब्ध ब्लॉक (टुकड़े) जो तार्किक रूप से निकटवर्ती प्रतीत होता है। इसलिए, यदि एक अत्यधिक खंडित फ़ाइल या कई छोटी फ़ाइलों को एक पूर्ण वॉल्यूम से हटा दिया जाता है और फिर नई मुक्त स्थान के बराबर आकार वाली एक नई फ़ाइल बनाई जाती है, तो नई फ़ाइल केवल उन्हीं टुकड़ों का पुन: उपयोग करेगी जो विलोपन द्वारा मुक्त किए गए थे। यदि हटाई गई एक फ़ाइल थी, तो नई फ़ाइल उतनी ही खंडित होगी जितनी पुरानी फ़ाइल थी, लेकिन किसी भी स्थिति में नई फ़ाइल बनाने के लिए सभी (अत्यधिक खंडित) मुक्त स्थान का उपयोग करने में कोई बाधा नहीं होगी। रैम में, दूसरी ओर, अधिकांश उपयोग की जाने वाली स्टोरेज प्रणाली छोटे गैर-निकटवर्ती मुक्त ब्लॉकों से एक अनुरोध को पूरा करने के लिए एक बड़े ब्लॉक को इकट्ठा नहीं कर सकता है, और इसलिए अनुरोध को पूरा नहीं किया जा सकता है और प्रोग्राम को वह सब कुछ करने के लिए आगे नहीं बढ़ सकता है जिसके लिए उस मेमोरी की आवश्यकता होती है (जब तक कि यह कई छोटे अलग अनुरोधों के रूप में अनुरोध को फिर से जारी कर सकता है)।
समस्याएं
भंडारण विफलता
विखंडन के कारण होने वाली सबसे गंभीर समस्या एक प्रक्रिया या प्रणाली के विफल होने का कारण है, समय से पहले संसाधन समाप्त होने के कारण: यदि एक निकटवर्ती ब्लॉक को संग्रहीत किया जाना चाहिए और संग्रहीत नहीं किया जा सकता है, तो विफलता होती है। विखंडन के कारण ऐसा होता है, भले ही पर्याप्त संसाधन हो, लेकिन निकटवर्ती राशि नहीं। उदाहरण के लिए, यदि किसी संगणक में 4 GiB मेमोरी है और 2 GiB फ्री हैं, लेकिन मेमोरी 1 MiB के वैकल्पिक अनुक्रम में खंडित है, 1 MiB फ्री है, तो मेमोरी के 1 निकटवर्ती GiB के अनुरोध को संतुष्ट नहीं किया जा सकता है, भले ही 2 GiB कुल निःशुल्क हैं।
इससे बचने के लिए, आवंटक, विफल होने के बजाय, एक डीफ़्रैग्मेन्टेशन (या मेमोरी संघनन चक्र) या अन्य संसाधन सुधार, जैसे कि एक प्रमुख कचरा संग्रह चक्र, को इस उम्मीद में ट्रिगर कर सकता है कि यह तब अनुरोध को पूरा करने में सक्षम होगा। यह प्रक्रिया को आगे बढ़ने देता है, लेकिन प्रदर्शन को गंभीर रूप से प्रभावित कर सकता है।
प्रदर्शन में गिरावट
विखंडन कई कारणों से प्रदर्शन में गिरावट का कारण बनता है। सबसे मूल रूप से, विखंडन संसाधन आवंटित करने और उस तक पहुंचने के लिए आवश्यक कार्य को बढ़ाता है। उदाहरण के लिए, एक हार्ड ड्राइव या टेप ड्राइव पर, अनुक्रमिक डेटा पढ़ना बहुत तेज़ होता है, लेकिन एक अलग पते की तलाश धीमी होती है, इसलिए एक खंडित फ़ाइल को पढ़ने या लिखने के लिए कई खोज की आवश्यकता होती है और इस प्रकार यह बहुत धीमी होती है, इसके अतिरिक्त अधिक पहनने के कारण उपकरण। इसके अतिरिक्त, यदि कोई संसाधन विखंडित नहीं है, तो मुक्त क्षेत्र की प्रारंभ से केवल एक ब्लॉक लौटाकर आवंटन अनुरोध को संतुष्ट किया जा सकता है। चूँकि यह खंडित है, अनुरोध के लिए या तो एक बड़े पर्याप्त मुक्त ब्लॉक की खोज की आवश्यकता होती है, जिसमें लंबा समय लग सकता है, या कई छोटे ब्लॉकों द्वारा अनुरोध को पूरा करना (यदि यह संभव है), जिसके परिणामस्वरूप यह आवंटन खंडित हो जाता है, और अतिरिक्त आवश्यकता होती है ओवरहेड कई टुकड़ों का प्रबंधन करने के लिए।
एक सूक्ष्म समस्या यह है कि विखंडन समय से पहले एक कैश को समाप्त कर सकता है, जिससे थ्रैशिंग (संगणक विज्ञान) हो सकता है, कैश होल्डिंग ब्लॉक के कारण, व्यक्तिगत डेटा नहीं। उदाहरण के लिए, मान लें कि किसी प्रोग्राम में 256 KiB का कार्य का संग्रह है, और 256 KiB कैश (L2 इंस्ट्रक्शन + डेटा कैश) के साथ एक संगणक पर चल रहा है, इसलिए पूरा वर्किंग सेट कैश में फिट हो जाता है और इस तरह कम से कम समय में जल्दी से निष्पादित हो जाता है। कैश हिट की शर्तें। आगे मान लीजिए कि इसमें 64 अनुवाद लुकसाइड बफर (टीएलबी) प्रविष्टियां हैं, प्रत्येक 4 कीबी पेज (संगणक मेमोरी) के लिए: प्रत्येक मेमोरी एक्सेस के लिए वर्चुअल-टू-फिजिकल ट्रांसलेशन की आवश्यकता होती है, जो तेज है यदि पेज कैश में है (यहां टीएलबी) . यदि वर्किंग सेट अखंडित है, तो यह बिल्कुल 64 पेजों पर फिट होगा (पेज वर्किंग सेट 64 पेज का होगा), और सभी मेमोरी लुकअप को कैश से सर्व किया जा सकता है। चूँकि, यदि कार्य सेट खंडित है, तो यह 64 पृष्ठों में फिट नहीं होगा, और थ्रैशिंग के कारण निष्पादन धीमा हो जाएगा: पृष्ठों को बार-बार जोड़ा जाएगा और ऑपरेशन के दौरान TLB से हटा दिया जाएगा। इस प्रकार व्यवस्था डिज़ाइन में कैश आकार में विखंडन के लिए खाते में मार्जिन सम्मिलित होना चाहिए।
मेमोरी विखंडन प्रणाली प्रबंधकों द्वारा सामना की जाने वाली सबसे गंभीर समस्याओं में से एक है।[citation needed] समय के साथ, यह प्रणाली के प्रदर्शन में गिरावट की ओर जाता है। आखिरकार, मेमोरी विखंडन से (एप्लिकेशन-प्रयोग करने योग्य) मुक्त मेमोरी का पूर्ण नुकसान हो सकता है।
मेमोरी विखंडन एक कर्नेल (ऑपरेटिंग प्रणाली) संगणक प्रोग्रामिंग स्तर की समस्या है। अनुप्रयोगों के रीयल-टाइम कंप्यूटिंग के दौरान, विखंडन का स्तर 99% तक पहुंच सकता है, और इससे प्रणाली क्रैश या अन्य अस्थिरता हो सकती है।[citation needed] इस प्रकार केप्रणाली क्रैश से बचना मुश्किल हो सकता है, क्योंकि मेमोरी विखंडन के स्तरों में महत्वपूर्ण वृद्धि का अनुमान लगाना असंभव है। चूँकि, अत्यधिक मेमोरी फ़्रेग्मेंटेशन के स्थितियों में प्रणाली के लिए सभी प्रोग्राम चलाना जारी रखना संभव नहीं हो सकता है, एक अच्छी तरह से डिज़ाइन किया गया प्रणाली प्रणाली द्वारा उपयोग किए जाने वाले कुछ मेमोरी ब्लॉक में जाकर महत्वपूर्ण विखंडन की स्थिति से उबरने में सक्षम होना चाहिए। मुक्त मेमोरी को कम, बड़े ब्लॉकों में समेकन करने के लिए, या, सबसे खराब स्थिति में, कुछ कार्यक्रमों को उनकी मेमोरी को मुक्त करने के लिए समाप्त करके और फिर मुक्त मेमोरी के परिणामी योग को डीफ़्रेग्मेंट करके समेकन करने के लिए। यह कम से कम प्रणाली की विफलता के अर्थ में एक वास्तविक दुर्घटना से बच जाएगा और प्रणाली को कुछ प्रोग्राम चलाना जारी रखने, प्रोग्राम डेटा को बचाने आदि की अनुमति देगा। यह भी ध्यान रखना महत्वपूर्ण है कि विखंडन प्रणाली सॉफ़्टवेयर डिज़ाइन की एक घटना है; अलग-अलग सॉफ्टवेयर अलग-अलग डिग्री के विखंडन के लिए अतिसंवेदनशील होंगे, और एक ऐसी प्रणाली को डिजाइन करना संभव है जो मेमोरी विखंडन के परिणामस्वरूप प्रक्रियाओं को बंद करने या समाप्त करने के लिए कभी मजबूर नहीं होगी।
अनुरूप घटनाएं
जबकि विखंडन को मेमोरी आवंटन में एक समस्या के रूप में जाना जाता है, अन्य प्रणाली संसाधनों, विशेष रूप से प्रोसेसर के लिए समान घटनाएँ होती हैं।[5] उदाहरण के लिए, एक प्रणाली में जो प्रीमेप्टिव मल्टीटास्किंग के लिए समय बताना का उपयोग करता है, लेकिन यह जांच नहीं करता है कि कोई प्रक्रिया अवरुद्ध है या नहीं, एक प्रक्रिया जो अपने समय का टुकड़ा के हिस्से के लिए निष्पादित होती है लेकिन फिर ब्लॉक हो जाती है और शेष समय के लिए आगे नहीं बढ़ सकती है। टाइम स्लाइस के परिणामी आंतरिक विखंडन के कारण। अधिक मौलिक रूप से, समय-साझाकरण स्वयं प्रक्रियाओं के बाहरी विखंडन का कारण बनता है, क्योंकि उन्हें खंडित समय स्लाइस में चलाने के बजाय एक ही अखंड रन में चलाने के कारण होता है। प्रक्रिया स्विचिंग की परिणामी लागत और एक ही कैश का उपयोग करने वाली कई प्रक्रियाओं से कैश दबाव में वृद्धि के परिणामस्वरूप खराब प्रदर्शन हो सकता है।
समवर्ती प्रणालियों में, विशेष रूप से वितरित प्रणालियों में, जब प्रक्रियाओं के एक समूह को प्रगति के लिए बातचीत करनी चाहिए, यदि प्रक्रियाएँ अलग-अलग समय पर या अलग-अलग मशीनों (समय या मशीनों में खंडित) पर निर्धारित होती हैं, तो एक-दूसरे की प्रतीक्षा में या संचार करने में लगने वाला समय एक दूसरे के साथ प्रदर्शन को गंभीर रूप से नीचा दिखा सकते हैं। इसके बजाय, प्रदर्शनकारी प्रणालियों को समूह के सहनिर्धारण की आवश्यकता होती है।[5]
कुछ फ्लैश फाइल प्रणाली में डेड स्पेस और डार्क स्पेस से जुड़े कई अलग-अलग प्रकार के आंतरिक विखंडन होते हैं। .[6]
यह भी देखें
- डीफ़्रेग्मेंटेशन
- फाइल प्रणाली विखंडन
- मेमोरी प्रबंधन
- मेमोरी प्रबंधन (ऑपरेटिंग प्रणाली)
- ब्लॉक (डेटा संग्रहण)
- डेटा क्लस्टर
संदर्भ
- ↑ Null, Linda; Lobur, Julia (2006). कंप्यूटर संगठन और वास्तुकला की अनिवार्यता. Jones and Bartlett Publishers. p. 315. ISBN 9780763737696. Retrieved Jul 15, 2021.
- ↑ "विभाजन, विभाजन आकार और ड्राइव लेटरिंग". The PC Guide. April 17, 2001. Retrieved 2012-01-20.
- ↑ "स्विच: सेक्टर कॉपी". Symantec. 2001-01-14. Retrieved 2012-01-20.
- ↑ D. Samanta. "Classic Data Structures" 2004. p. 76
- ↑ 5.0 5.1 Ousterhout, J. K. (1982). "समवर्ती प्रणालियों के लिए निर्धारण तकनीक" (PDF). Proceedings of Third International Conference on Distributed Computing Systems. pp. 22–30.
- ↑ . Adrian Hunter. "A Brief Introduction to the Design of UBIFS". 2008.etc p. 8.
स्रोत
- http://www.edn.com/design/systems-design/4333346/Handling-memory-fragmentation
- http://www.sqlservercentral.com/articles/performance+tuning/performancemonitoringbyinternalfragmentationmeasur/2014/
- C++ पदचिह्न और प्रदर्शन अनुकूलन, आर. अलेक्जेंडर; जी. बेन्सले, सैम्स प्रकाशक, प्रथम संस्करण, पृष्ठ संख्या: 128, आईएसबीएन संख्या: 9780672319044
- वही, पृष्ठ संख्या:129
श्रेणी:फ़ाइलप्रणाली प्रबंधन श्रेणी:मेमोरी प्रबंधन