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


70

मैं समझता हूं कि वर्चुअल मेमोरी वास्तव में उपलब्ध की तुलना में अधिक मेमोरी प्रदर्शित करके प्रोग्राम को बेवकूफ बनाती है।

लेकिन अंततः इसे वास्तव में भौतिक पते के लिए तार्किक पते को मैप करना होगा। अब यह मेमोरी कैसे बढ़ा रहा है?


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

2
"अब यह मेमोरी कैसे बढ़ा रहा है?"। यह नहीं है एप्लिकेशन को सिस्टम की भौतिक मेमोरी के बारे में पता नहीं है, यह केवल वर्चुअल मेमोरी के बारे में जानता है, यही कारण है कि जब कोई एप्लिकेशन पर्याप्त मेमोरी नहीं होने के बारे में शिकायत करता है, तो यह वर्चुअल मेमोरी और भौतिक मेमोरी के बारे में बात नहीं कर रहा है
रामहाउंड

2
ध्यान रखें कि वर्चुअल मेमोरी सिस्टम बहुत स्मार्ट हैं। यदि n प्रक्रियाओं में केवल-पढ़ने वाला पृष्ठ है, तो सभी n प्रक्रियाएँ भौतिक स्मृति के एक ही पृष्ठ का उपयोग कर सकती हैं।
एरिक लिपर्ट

65
कुछ भी बेवकूफ बनाने के रूप में आभासी स्मृति के बारे में मत सोचो । मेमोरी डेटा को संग्रहीत करने और पुनः प्राप्त करने की अमूर्त क्षमता है । आभासी स्मृति उस अमूर्तता के लिए एक कार्यान्वयन प्रदान करती है। उस अमूर्त का कुछ हिस्सा रैम द्वारा समर्थित है और कुछ डिस्क द्वारा समर्थित है जो अमूर्त का कार्यान्वयन विवरण है।
एरिक लिपर्ट

4
@HagenvonEitzen यह सुनिश्चित नहीं करता कि मेमोरी डिस्क पर "हमेशा" कैसे होती है ... मूल रूप से डिस्क से पढ़े गए पृष्ठों से अलग, जब तक कि किसी पृष्ठ की अदला-बदली न की जाए तो उसकी सामग्री कभी भी डिस्क पर नहीं हो सकती , और यह विशेष रूप से उन पृष्ठों के लिए सही है, जिन्हें मेमोरी में पिन किया गया है जैसे कर्नेल कार्यक्षमता के लिए महत्वपूर्ण होने के कारण।
माइकल

जवाबों:


116

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

वर्चुअल मेमोरी का उपयोग प्रक्रियाओं को एक-दूसरे से अलग करने और अलग करने के लिए किया जाता है और मेमोरी एक्सेस को वैकल्पिक स्थानों पर डायवर्ट करने की भी अनुमति देता है।

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

किसी एप्लिकेशन की वर्चुअल मेमोरी स्पेस आवश्यकतानुसार निर्मित होती है। एक अनुप्रयोग दिखता है (खुद को) स्मृति के एक एकल सन्निहित ब्लॉक में होना चाहिए, लेकिन वास्तव में पूरी तरह से भौतिक स्मृति में बिखरा हुआ हो सकता है।

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

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

इन तकनीकों का उपयोग करके हम सिस्टम की स्थिरता में सुधार करते हैं और अधिक प्रक्रियाओं को एक दूसरे को प्रभावित किए बिना सीमित स्थान में चलाने की अनुमति देते हैं। यह "मेमोरी को बढ़ाता नहीं" है, लेकिन इसके बजाय हमें जो हमारे पास है उसका अधिक प्रभावी ढंग से उपयोग करने की अनुमति देता है।

स्वैप फ़ाइल आभासी स्मृति प्रणाली से सक्षम है, लेकिन अतीत में के रूप में उलझन में था जा रहा है आभासी स्मृति।


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
Sathyajith भट्ट

21

आम आदमी की व्याख्या

सिस्टम को प्रत्येक वर्चुअल पते को भौतिक पते पर मैप करना होगा जब उस मेमोरी का उपयोग किया जाता है, लेकिन एक ही समय में सभी मेमोरी का उपयोग नहीं किया जाता है । उदाहरण के लिए, मान लें कि आपके ब्राउज़र में 20 टैब हैं, प्रत्येक में 1GB मेमोरी है। वर्चुअल मेमोरी सपोर्ट के बिना OS में, आपको काम करने के लिए 20GB RAM की आवश्यकता होगी। चाल है, आप एक ही समय में सभी 20 टैब ब्राउज़ नहीं करते हैं, इसलिए वर्चुअल मेमोरी वाला ओएस आपको अपने ब्राउज़र का उपयोग करने में सक्षम करेगा, जैसे कि बस एक जीबी रैम, डिस्क में निष्क्रिय टैब स्वैप करना।

अधिक जटिल पहलू

वर्चुअल मेमोरी का उपयोग विशेष रूप से स्वैपिंग के लिए नहीं किया जाता है। यह मुख्य उद्देश्य वास्तव में रैम विखंडन से बचने के लिए है, जो वर्चुअल मेमोरी मैनेजमेंट के बिना सिस्टम पर एक बड़ी समस्या है: आपके पास 1 जीबी रैम मुफ्त हो सकती है, लेकिन अगर यह 10 एमबी की मात्रा में आता है, तो 100 एमबी का अनुरोध करने वाला एप्लिकेशन काम नहीं कर पाएगा ।

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


9
यह दुख की बात है कि हम एक ऐसी दुनिया में रहते हैं जहाँ प्रत्येक ब्राउज़र टैब में 1GB मेमोरी की आवश्यकता होती है
tbodt

9
@tbodt मैं प्राचीन मिस्रियों को दोष देता हूं। यदि केवल वे जानते थे कि वे उन pesky बिल्लियों को पालतू बनाकर क्या कर रहे थे!
दिमित्री ग्रिगोरीव

@tbodt यह थोड़ा अतिशयोक्ति भी है। 8 टैब के साथ मेरा ब्राउज़र केवल 500MB मेमोरी लेता है।
रैंडम 32३२

2
@ Random832 यकीन है कि यह एक अतिशयोक्ति है, हालांकि मैं अतिशयोक्ति और भविष्य के सबूत के बीच की रेखा के बारे में निश्चित नहीं हूं। मेरे पहले पीसी में 32 एमबी रैम थी और मैं ओपेरा में 8 टैब आसानी से देख सकता था। अब इसमें 500MB लगता है, इसलिए अन्य 20 वर्षों में यह 8GB तक पहुंच सकता है।
दिमित्री ग्रिगोरीव

5

वर्चुअल मेमोरी मेमोरी को नहीं बढ़ाती है, वास्तव में अधिक मुख्य-मेमोरी हार्डवेयर को जोड़ने के लिए। लेकिन यह प्रयोग करने योग्य पतों की सीमा बढ़ा सकता है । तो एक कोड सेगमेंट और एक डेटा (स्टैक और हीप) सेगमेंट से संबंधित एक रनिंग प्रोग्राम हो सकता है, और ये दोनों भौतिक पते की सीमा से बड़े वर्चुअल पतों पर कब्जा कर सकते हैं जो कि भौतिक-वास्तविक संग्रहण स्थान द्वारा प्रदान किए गए भौतिक पतों की श्रेणी से बड़े हैं। मशीन। चाल यह है कि उन आभासी पतों का केवल एक छोटा सा अंश किसी भी समय भौतिक मुख्य-मेमोरी द्वारा समर्थित है [लेकिन सब कुछ अंततः डिस्क भंडारण द्वारा समर्थित है] । यह संदर्भ की स्थानीयता की घटना के कारण काम करता है: किसी भी समय, प्रोग्राम सेगमेंट के एक या एक से अधिक छोटे सन्निहित अनुभागों में केवल निर्देशों को निष्पादित किया जा रहा है, और डेटा सेगमेंट के एक या एक से अधिक छोटे सन्निहित अनुभागों में डेटा का संचालन किया जा रहा है [बेशक व्यवहार वास्तव में अधिक जटिल है , लेकिन यह समय के एक बड़े हिस्से के लिए इस पैटर्न का पालन करता है]


4

मैं समझता हूं कि वर्चुअल मेमोरी वास्तव में उपलब्ध की तुलना में अधिक मेमोरी प्रदर्शित करके प्रोग्राम को बेवकूफ बनाती है।

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

लेकिन अंततः इसे वास्तव में भौतिक पते के लिए तार्किक पते को मैप करना होगा। अब यह मेमोरी कैसे बढ़ा रहा है?

वर्चुअल मेमोरी प्रोग्राम के लिए अधिक पता स्थान प्रदान करने के लिए सिर्फ एक तकनीक से विकसित हुई है।
वर्चुअल मेमोरी आधुनिक ऑपरेटिंग सिस्टम में प्रत्येक प्रक्रिया को सुरक्षा प्रदान करने में एक महत्वपूर्ण घटक है, ताकि एक प्रक्रिया किसी अन्य प्रक्रिया में हस्तक्षेप न कर सके और न ही किसी अन्य प्रक्रिया से समझौता किया जा सके।
लेकिन वर्चुअल मेमोरी के साथ मल्टीप्रोसेसिंग (मल्टीप्रोसेस ऑर के साथ भ्रमित न करें ) अभी भी भौतिक मेमोरी के लिए अधिक स्पष्ट स्मृति प्रदान करता है।

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

गैर-संवेदी कोड (क्योंकि यह वर्तमान में निष्पादित नहीं किया गया है) और डेटा (क्योंकि यह संदर्भित / संसाधित नहीं किया जा रहा है) को हर समय मेमोरी निवासी होना आवश्यक नहीं है। कोड और / या डेटा पेज / सेगमेंट को बैकिंग स्टोर (जैसे कि एचडीडी या एसएसडी पर स्वैप स्पेस या पेज फ़ाइल) में "स्वैप आउट" किया जा सकता है, और बाद में "ऑन (बैक)" आवश्यकतानुसार (मांग) पर "स्वैप" किया जा सकता है। )।

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


3

वर्चुअल मेमोरी एक प्रोग्राम को संबोधित कर सकने वाले डेटा की मात्रा को बढ़ाता है। देखने के एक सॉफ्टवेयर बिंदु से, हम (आम तौर पर) परवाह नहीं करते हैं कि वे डेटा कहाँ संग्रहीत हैं। इसे भौतिक DRAM मेमोरी में स्टोर किया जा सकता है, इसे मशीन में प्लग की गई फ्लैश ड्राइव पर स्टोर किया जा सकता है, या इसे कताई प्लाटर पर भी स्टोर किया जा सकता है। सॉफ्टवेयर क्या परवाह करता है, जब वह उस डेटा को एक्सेस करने के लिए कहता है, तो वह सफल होता है।

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

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

सिद्धांत रूप में, यह डिस्क से सीधे डेटा को पढ़ सकता है। हालाँकि, इस कारण से ऐसा नहीं किया गया है। इन सभी जटिलताओं के बारे में कार्यक्रमों को जागरूक होना नहीं चाहिए। हम सॉफ्टवेयर लिख सकते हैं और जो बुद्धिमानी से डिस्क पर डेटा डालता है (इसे कैशिंग कहा जाता है)। हालाँकि, यह बहुत अधिक अतिरिक्त काम लेता है। हम इसे सबसे तेज़ कोड में कर सकते हैं:

if data is not in memory
    read data from disk into memory
operate on data

एक कसौटी पाठक यह नोटिस करेगा कि, भले ही डेटा मेमोरी में हो, हमें यह जाँचने के लिए एक सशर्त होना चाहिए कि क्या यह वहां है। यह सीधे मेमोरी में काम करने की तुलना में बहुत धीमा है!

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

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

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


2

यह मानचित्र प्रविष्टियों को अस्थायी बनाकर ऐसा करता है।

जब कोई प्रोग्राम किसी तार्किक पते पर पहुंचता है, तो सीपीयू उसी भौतिक पते के लिए मानचित्र में दिखता है। यदि यह पाया जाता है, तो मेमोरी एक्सेस उम्मीद के मुताबिक आगे बढ़ती है; यदि यह नहीं मिला है, तो एक भौतिक पता आवंटित किया जाना चाहिए और कुछ अन्य भंडारण से लोड की गई सामग्री - "स्वैप स्पेस"। यदि प्रत्येक भौतिक पते को पहले से ही किसी तार्किक पते पर आवंटित किया गया है, तो भौतिक पते उपलब्ध कराने के लिए कुछ तार्किक पते "स्वैप आउट" (उनकी सामग्री को स्वैप स्थान पर वापस सहेजना) होना चाहिए।

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

(यह एक संपूर्ण विवरण से बहुत दूर है, यह प्रासंगिक-लेकिन-अनावश्यक विवरण में आए बिना तत्काल प्रश्न का उत्तर देना है।)


1

मूल अवधारणा इस तथ्य पर निर्भर करती है कि एक आधुनिक सीपीयू "क्या पता श्रेणियों का उपयोग करने के लिए एक निश्चित प्रक्रिया है, का ट्रैक रखते हुए अनुवाद तालिकाओं का प्रबंधन कर सकता है, और कौन से भौतिक पते (एक मेमोरी बस पर A00..Axx लाइनें), यदि कोई हो , वर्तमान में वास्तव में डेटा को स्टोर करने के लिए उपयोग किया जाता है। "अगर कोई भी" क्योंकि "कोई भी नहीं" एक संभव और स्वीकार्य स्थिति है: इस मामले में, एक त्रुटि स्थिति (एक तथाकथित "पेज फॉल्ट") को एक हार्डवेयर स्तर पर उठाया जाएगा। - - और यह त्रुटि एक OS- स्तर के हैंडलर को ट्रिगर करेगी जो उदाहरण के लिए मेमोरी सामग्री को लोड कर सकती है जिसे भौतिक मेमोरी में किसी भी खाली स्थान पर वापस भेज दिया गया है (पढ़ने के मामले में) या सामान डालने के लिए एक वास्तविक स्थान ढूंढें (में लिखने का मामला), उपरोक्त अनुवाद तालिका को अद्यतन करें,और केवल उस नियंत्रण पर वापस जाएं जो उस मेमोरी तक पहुंचने का प्रयास करता है .. और जो हुआ उसका कोई भी समझदार नहीं होगा।


1

अप्रत्यक्ष स्मृति:

1) एक बड़े वर्चुअल एड्रेस स्पेस को भौतिक मेमोरी की थोड़ी मात्रा में मैप करने की अनुमति देता है, डिस्क, या एसएसडी के लिए अतिरिक्त "स्वैप आउट" या भावी NVRAM और अन्य उपकरणों के लिए।

2) एक बड़े वर्चुअल एड्रेस स्पेस (जैसे 64-बिट्स) को एक छोटे भौतिक एड्रेस स्पेस (जैसे 32 या 64 बिट्स) पर मैप करने की अनुमति देता है

3) एक छोटे वर्चुअल एड्रेस स्पेस (जैसे 32 बिट्स) को बड़े भौतिक एड्रेस स्पेस (जैसे 40 बिट्स) पर मैप करने की अनुमति देता है, और इस तरह पुराने एप्लिकेशन अधिक शारीरिक DRAM का लाभ ले सकते हैं।

4) भौतिक स्मृति की अनुमति देता है जो हमें भौतिक पता स्थान में खंडित और गैर-सन्निहित है जिसे आभासी पता स्थान में सन्निहित प्रदान किया जाता है।

5) प्रक्रियाओं को अपने स्वयं के आभासी पता स्थान दिए जाने की अनुमति देता है, और इसलिए एक दूसरे से अलग किया जाता है।

6) अलग-अलग वर्चुअल पते की अनुमति देता है जो एक ही भौतिक पृष्ठ को आवंटित करने के लिए समान डेटा मूल्यों को साझा करने के लिए होता है।

यह एक एकल प्रक्रिया या OS के भीतर हो सकता है - अधिकांश BSD UNIX व्युत्पन्न OSes में शून्य का केवल एक ही पढ़ा-लिखा पृष्ठ है, जिसे किसी भी शून्य-भरे आभासी पृष्ठ में मैप किया जा सकता है, आमतौर पर गाय (कॉपी पर लिखें - केवल शून्य पढ़ें, फंस गया) और पृष्ठ को अनशेक किया गया और लेखनीय बनाया गया)।

यह प्रक्रियाओं के बीच हो सकता है - जैसे UNIX कांटा () बच्चे की प्रक्रिया बनाता है जो लगभग सभी आभासी स्मृति को एक गाय तरीके से साझा करता है।

यह OSes के बीच हो सकता है - उदाहरण के लिए एक वर्चुअल मशीन होस्ट पर Guest OSes पृष्ठों को घटाया, साझा किया गया गाय हो सकता है, आदि (कुछ हालिया सुरक्षा हमलों ने इसका फायदा उठाया है।)

7) वर्चुअल मेमोरी वर्चुअल एड्रेस स्पेस के कुछ हिस्सों को फाइलों में मैप करने के लिए, या अन्य प्रोसेसर पर मैप की गई मेमोरी के लिए अनुमति दे सकती है, चाहे वह एक ही मल्टीप्रोसेसर सिस्टम में, या इंटरनेट पर।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.