क्या कोई भी मुझे स्पष्ट कर सकता है कि वर्चुअल मेमोरी और स्वैप स्पेस में क्या अंतर है ?
और हम यह क्यों कहते हैं कि एक 32-बिट मशीन के लिए अधिकतम आभासी मेमोरी सुलभ 4 जीबी है?
क्या कोई भी मुझे स्पष्ट कर सकता है कि वर्चुअल मेमोरी और स्वैप स्पेस में क्या अंतर है ?
और हम यह क्यों कहते हैं कि एक 32-बिट मशीन के लिए अधिकतम आभासी मेमोरी सुलभ 4 जीबी है?
जवाबों:
वहाँ पर अधिक आभासी स्मृति का एक बहुत अच्छा explantation है सुपर उपयोगकर्ता ।
सीधे शब्दों में कहें, वर्चुअल मेमोरी रैम और डिस्क स्पेस का एक संयोजन है जिसे चलाने की प्रक्रियाएं उपयोग कर सकती हैं।
स्वैप स्पेस वर्चुअल मेमोरी का वह भाग है जो हार्ड डिस्क पर होता है, जिसका उपयोग रैम के फुल होने पर किया जाता है।
क्यों 32 बिट सीपीयू 4 जीबी आभासी मेमोरी तक सीमित है, इसे यहां अच्छी तरह से संबोधित किया गया है :
परिभाषा के अनुसार, एक 32-बिट प्रोसेसर मेमोरी के प्रत्येक बाइट के स्थान को संदर्भित करने के लिए 32 बिट्स का उपयोग करता है। 2 ^ 32 = 4.2 बिलियन, जिसका अर्थ है कि 32 बिट लंबा मेमोरी एड्रेस केवल 4.2 बिलियन अनूठे स्थानों (अर्थात 4 जीबी) को संदर्भित कर सकता है।
वर्चुअल मेमोरी शब्द के बारे में कुछ भ्रम है, और यह वास्तव में निम्नलिखित दो बहुत अलग अवधारणाओं को संदर्भित करता है
स्वैप स्पेस, OTOH, डिस्क के उस हिस्से का नाम है जिसका उपयोग अतिरिक्त रैम पेज को स्टोर करने के लिए किया जाता है।
बनाने के लिए एक महत्वपूर्ण एहसास यह है कि पूर्व उत्तरार्द्ध के हार्डवेयर और ओएस समर्थन के कारण पारदर्शी रूप से संभव है।
इस सब को बेहतर तरीके से समझने के लिए, आपको यह विचार करना चाहिए कि "वर्चुअल मेमोरी" (जैसा कि परिभाषा 2 में) सीपीयू और ओएस द्वारा समर्थित है।
मान लें कि आपके पास 32 बिट पॉइंटर है (64 बिट पॉइंट समान हैं, लेकिन थोड़ा अलग तंत्र का उपयोग करें)। एक बार "वर्चुअल मेमोरी" सक्षम हो जाने के बाद, प्रोसेसर इस पॉइंटर को तीन भागों के रूप में बनाता है।
अब, जब सीपीयू एक पॉइंटर की सामग्री तक पहुंचने की कोशिश करता है, तो यह पृष्ठ निर्देशिका तालिका को पहले सुरक्षित करता है - एक तालिका जिसमें 1024 प्रविष्टियां होती हैं (X86 आर्किटेक्चर में जिसका स्थान CR3 रजिस्टर द्वारा इंगित किया गया है)। इस तालिका में 10 बिट्स पेज डायरेक्टरी एंट्री एक सूचकांक है, जो पेज टेबल के भौतिक स्थान की ओर इशारा करता है । यह, बदले में, 1024 प्रविष्टियों में से एक और तालिका है, जिसमें से प्रत्येक भौतिक मेमोरी में एक सूचक है, और कई महत्वपूर्ण नियंत्रण बिट्स हैं। (हम बाद में इन पर वापस जाएँगे)। एक बार एक पृष्ठ मिल जाने के बाद, अंतिम 12 बिट्स का उपयोग उस पृष्ठ के भीतर एक पता खोजने के लिए किया जाता है।
रहे हैं कई और अधिक विवरण (Tlbs, बड़े पेज, पीएई, चयनकर्ता, पेज संरक्षण) लेकिन कैप्चर ऊपर संक्षिप्त विवरण बातों का सार।
इस अनुवाद तंत्र का उपयोग करते हुए, एक OS प्रत्येक प्रक्रिया के लिए भौतिक पेजों के एक अलग सेट का उपयोग कर सकता है, इस प्रकार प्रत्येक प्रक्रिया को अपने लिए सभी मेमोरी होने का भ्रम देता है (जैसा कि प्रत्येक प्रक्रिया का अपना पेज डायरेक्टरी होता है)
इस वर्चुअल मेमोरी के शीर्ष पर ओएस पेजिंग की अवधारणा को भी जोड़ सकता है । पहले चर्चा किए गए नियंत्रण बिट्स में से एक यह निर्दिष्ट करने की अनुमति देता है कि क्या एक प्रविष्टि "वर्तमान" है। यदि यह मौजूद नहीं है, तो उस प्रविष्टि को एक्सेस करने का प्रयास पृष्ठ दोष अपवाद के रूप में होगा। ओएस इस अपवाद को पकड़ सकता है और तदनुसार कार्य कर सकता है। इस प्रकार स्वैपिंग / पेजिंग का समर्थन करने वाले OS इस प्रकार स्वैप स्पेस से एक पेज को लोड करने, अनुवाद तालिकाओं को ठीक करने और फिर मेमोरी के दृष्टिकोण को फिर से जारी करने का निर्णय ले सकते हैं ।
यह वह जगह है जहां दो शब्द गठबंधन करते हैं, वर्चुअल मेमोरी और पेजिंग का समर्थन करने वाला एक ओएस स्वैप क्षेत्र में पेजिंग (स्वैपिंग) पेजों की तुलना में वास्तव में मौजूद मेमोरी की तुलना में अधिक मेमोरी होने का भ्रम दे सकता है।
जैसा कि आपके अंतिम प्रश्न (क्यों कहा गया है कि 32 बिट सीपीयू 4 जीबी वर्चुअल मेमोरी तक सीमित है)। यह परिभाषा 2 की "वर्चुअल मेमोरी" को संदर्भित करता है, और पॉइंटर आकार का एक तात्कालिक परिणाम है। यदि CPU केवल 32 बिट पॉइंटर्स का उपयोग कर सकता है, तो आपके पास अलग-अलग पतों को व्यक्त करने के लिए केवल 32 बिट है, इससे आपको 2 ^ 32 = 4GB पता योग्य मेमोरी मिलती है।
आशा है कि यह चीजों को थोड़ा स्पष्ट करता है।
IMHO यह वर्चुअल मेमोरी के बराबर स्वैप स्पेस की अवधारणा का उपयोग करने के लिए बहुत भ्रामक है। वीएम स्वैप स्पेस की तुलना में बहुत अधिक सामान्य अवधारणा है। अन्य बातों के अलावा, वीएम निष्पादन के दौरान आभासी पतों को संदर्भित करने की प्रक्रियाओं को अनुमति देता है, जिन्हें हार्डवेयर और पेज टेबल के समर्थन से भौतिक पतों में अनुवादित किया जाता है। इस प्रकार प्रक्रियाओं को इस बात की चिंता नहीं है कि सिस्टम में कितनी भौतिक मेमोरी है, या जहां निर्देश या डेटा वास्तव में भौतिक मेमोरी पदानुक्रम में निवासी है। VM इस मैपिंग की अनुमति देता है। संदर्भित आइटम (निर्देश या डेटा) एल 1, या एल 2, या रैम या अंत में डिस्क पर निवासी हो सकता है, जिस स्थिति में इसे मुख्य मेमोरी में लोड किया जाता है।
स्पैप स्पेस यह सिर्फ सेकेंडरी मेमोरी पर एक जगह होती है जहां पेज निष्क्रिय होने पर जमा हो जाते हैं। यदि कोई पर्याप्त रैम नहीं है, तो ओएस एक प्रक्रिया के पृष्ठों को स्वैप करने का निर्णय ले सकता है, अन्य प्रक्रिया पृष्ठों के लिए जगह बनाने के लिए। प्रोसेसर कभी भी निर्देश को निष्पादित नहीं करता है या स्वैप स्पेस से डेटा को सीधे पढ़ / लिखता है।
ध्यान दें कि बिना वीएम वाले सिस्टम में स्वैप स्पेस होना संभव होगा। यही है, ऐसी प्रक्रियाएँ जो सीधे भौतिक पतों तक पहुँचती हैं, फिर भी डिस्क पर इसके अंश हो सकते हैं।
हालांकि धागा काफी पुराना है और पहले ही उत्तर दिया जा चुका है। फिर भी इस लिंक को साझा करना चाहूंगा क्योंकि यह अब तक की सबसे सरल व्याख्या है। बेहतर दृश्य के लिए नीचे दिए गए लिंक में आरेख हैं।
मुख्य अंतर: वर्चुअल मेमोरी मुख्य मेमोरी का एक अमूर्त हिस्सा है। यह डिस्क पर सामग्री रैम के निष्क्रिय भागों को संग्रहीत करके कंप्यूटर की उपलब्ध मेमोरी का विस्तार करता है। जब भी सामग्री की आवश्यकता होती है, यह इसे वापस रैम में लाता है। स्वैप मेमोरी या स्वैप स्पेस हार्ड डिस्क ड्राइव का एक हिस्सा है जो वर्चुअल मेमोरी के लिए उपयोग किया जाता है। इस प्रकार, दोनों का परस्पर उपयोग भी किया जाता है।
वर्चुअल मेमोरी भौतिक मेमोरी से अलग है। प्रोग्रामर को भौतिक मेमोरी के बजाय वर्चुअल मेमोरी तक सीधी पहुंच मिलती है। वर्चुअल मेमोरी मुख्य मेमोरी का एक अमूर्त हिस्सा है। इसका उपयोग सिस्टम की वास्तविक भौतिक स्मृति की जानकारी को छिपाने के लिए किया जाता है। यह डिस्क पर रैम की सामग्री के निष्क्रिय भागों को संग्रहीत करके कंप्यूटर की उपलब्ध मेमोरी का विस्तार करता है। जब सामग्री की आवश्यकता होती है, तो वह इसे रैम में वापस लाती है। वर्चुअल मेमोरी शून्य के साथ शुरू होने वाले पते के साथ पूरे पते की जगह का भ्रम पैदा करती है। यह मुख्य रूप से इसके अनुकूलन सुविधा के लिए पसंद किया जाता है जिसके द्वारा यह अंतरिक्ष आवश्यकताओं को कम करता है। यह उपलब्ध रैम और डिस्क स्थान से बना है।
स्वैप मेमोरी को आम तौर पर स्वैप स्पेस कहा जाता है। स्वैप स्पेस वर्चुअल मेमोरी के उस हिस्से को संदर्भित करता है जो अस्थायी स्टोरेज लोकेशन के रूप में आरक्षित है। जब सिस्टम की मेमोरी की आवश्यकता को पूरा करने में सक्षम रैम उपलब्ध न हो तो स्वैप स्पेस का उपयोग किया जाता है। उदाहरण के लिए, लिनक्स मेमोरी सिस्टम में, कर्नेल प्रत्येक पेज को भौतिक मेमोरी या स्वैप स्पेस में ढूँढता है। कर्नेल एक तालिका भी रखता है जिसमें भौतिक स्मृति में पृष्ठों और पृष्ठों की अदला-बदली के बारे में जानकारी रखी जाती है। वे पृष्ठ जिन्हें लंबे समय से एक्सेस नहीं किया गया है, उन्हें स्वैप स्पेस क्षेत्र में भेजा जाता है। इस प्रक्रिया को स्वैपिंग कहा जाता है। यदि एक ही पृष्ठ की आवश्यकता होती है, तो एक अलग पृष्ठ को स्वैप करके भौतिक मेमोरी में स्वैप किया जाता है। इस प्रकार,
"वर्चुअल मेमोरी" एक सामान्य शब्द है। विंडोज में, इसे पेजिंग या पेजिंग कहा जाता है। लिनक्स में, इसे स्वैप कहा जाता है।