"वर्चुअल मेमोरी" और "स्वैप स्पेस" में क्या अंतर है?


85

क्या कोई भी मुझे स्पष्ट कर सकता है कि वर्चुअल मेमोरी और स्वैप स्पेस में क्या अंतर है ?

और हम यह क्यों कहते हैं कि एक 32-बिट मशीन के लिए अधिकतम आभासी मेमोरी सुलभ 4 जीबी है?



@startblue आपके द्वारा दिया गया लिंक मेरे सवाल का जवाब कैसे है ..
algo-geeks

@ algo-geeks - वास्तव में यह एक उत्तर नहीं है, लेकिन मुझे लगता है कि यह एक उत्तर के लिए लिंक है जो इस विषय के लिए काफी उपयोगी हो सकता है। और टिप्पणी में लिखा है, बिल्कुल जहां यह होना चाहिए, इम्हो। :)
मुहम्मद हुसैनबाईस

जवाबों:


113

वहाँ पर अधिक आभासी स्मृति का एक बहुत अच्छा explantation है सुपर उपयोगकर्ता

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

स्वैप स्पेस वर्चुअल मेमोरी का वह भाग है जो हार्ड डिस्क पर होता है, जिसका उपयोग रैम के फुल होने पर किया जाता है।

क्यों 32 बिट सीपीयू 4 जीबी आभासी मेमोरी तक सीमित है, इसे यहां अच्छी तरह से संबोधित किया गया है :

परिभाषा के अनुसार, एक 32-बिट प्रोसेसर मेमोरी के प्रत्येक बाइट के स्थान को संदर्भित करने के लिए 32 बिट्स का उपयोग करता है। 2 ^ 32 = 4.2 बिलियन, जिसका अर्थ है कि 32 बिट लंबा मेमोरी एड्रेस केवल 4.2 बिलियन अनूठे स्थानों (अर्थात 4 जीबी) को संदर्भित कर सकता है।


1
तो क्या वास्तविक RAM = वर्चुअल - स्वैप है?
user48956

4
यह जवाब पूरी तरह से गलत है। कोई व्यक्ति 1GB फ़ाइल को 100 बार मेमोरी कर सकता है और सिर्फ 1GB रैम के साथ मशीन पर 100GB वर्चुअल मेमोरी का उपयोग कर सकता है। 100 जीबी वर्चुअल मेमोरी प्राप्त करने के लिए रैम और डिस्क स्थान को जोड़ने का कोई तरीका नहीं है जो उपयोग में होगा।
डेविड श्वार्ट्ज

@DavidSchwartz वास्तव में नहीं। किसी फ़ाइल को मेमोरी मैप करना उसे मेमोरी में लोड नहीं करता है। जैसे, 1 मिमी फ़ाइल को केवल 1 जीबी-एमएमपी 100 बार किसी भी चीज़ के 100 जीबी का उपयोग नहीं करेगा।
फेलिक्स

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

तो फिर यह सिर्फ एक रिपोर्टिंग सवाल है? क्या कभी यह भी समझ में आता है कि कितनी मेमोरी को मैप किया गया है? जैसा कि आप वास्तव में कभी भी उतना उपयोग नहीं करेंगे, चाहे वह रैम या स्वैप में हो।
फेलिक्स

60

वर्चुअल मेमोरी शब्द के बारे में कुछ भ्रम है, और यह वास्तव में निम्नलिखित दो बहुत अलग अवधारणाओं को संदर्भित करता है

  1. एक कंप्यूटर में भौतिक मेमोरी की वैचारिक मात्रा को बढ़ाने के लिए डिस्क पृष्ठों का उपयोग करना - इसके लिए सही शब्द वास्तव में पेजिंग है
  2. एक अलग अमूर्त पता स्थान में चल रही प्रत्येक प्रक्रिया का भ्रम पैदा करने के लिए विभिन्न ओएस / सीपीयू द्वारा उपयोग किया गया एक अमूर्त।

स्वैप स्पेस, OTOH, डिस्क के उस हिस्से का नाम है जिसका उपयोग अतिरिक्त रैम पेज को स्टोर करने के लिए किया जाता है।

बनाने के लिए एक महत्वपूर्ण एहसास यह है कि पूर्व उत्तरार्द्ध के हार्डवेयर और ओएस समर्थन के कारण पारदर्शी रूप से संभव है।

इस सब को बेहतर तरीके से समझने के लिए, आपको यह विचार करना चाहिए कि "वर्चुअल मेमोरी" (जैसा कि परिभाषा 2 में) सीपीयू और ओएस द्वारा समर्थित है।

मान लें कि आपके पास 32 बिट पॉइंटर है (64 बिट पॉइंट समान हैं, लेकिन थोड़ा अलग तंत्र का उपयोग करें)। एक बार "वर्चुअल मेमोरी" सक्षम हो जाने के बाद, प्रोसेसर इस पॉइंटर को तीन भागों के रूप में बनाता है।

  • उच्चतम 10 बिट्स एक पृष्ठ निर्देशिका प्रविष्टि है
  • निम्नलिखित 10 बिट्स एक पेज टेबल एंट्री हैं
  • पिछले 12 बिट्स पेज ऑफ़सेट बनाते हैं

अब, जब सीपीयू एक पॉइंटर की सामग्री तक पहुंचने की कोशिश करता है, तो यह पृष्ठ निर्देशिका तालिका को पहले सुरक्षित करता है - एक तालिका जिसमें 1024 प्रविष्टियां होती हैं (X86 आर्किटेक्चर में जिसका स्थान CR3 रजिस्टर द्वारा इंगित किया गया है)। इस तालिका में 10 बिट्स पेज डायरेक्टरी एंट्री एक सूचकांक है, जो पेज टेबल के भौतिक स्थान की ओर इशारा करता है । यह, बदले में, 1024 प्रविष्टियों में से एक और तालिका है, जिसमें से प्रत्येक भौतिक मेमोरी में एक सूचक है, और कई महत्वपूर्ण नियंत्रण बिट्स हैं। (हम बाद में इन पर वापस जाएँगे)। एक बार एक पृष्ठ मिल जाने के बाद, अंतिम 12 बिट्स का उपयोग उस पृष्ठ के भीतर एक पता खोजने के लिए किया जाता है।

रहे हैं कई और अधिक विवरण (Tlbs, बड़े पेज, पीएई, चयनकर्ता, पेज संरक्षण) लेकिन कैप्चर ऊपर संक्षिप्त विवरण बातों का सार।

इस अनुवाद तंत्र का उपयोग करते हुए, एक OS प्रत्येक प्रक्रिया के लिए भौतिक पेजों के एक अलग सेट का उपयोग कर सकता है, इस प्रकार प्रत्येक प्रक्रिया को अपने लिए सभी मेमोरी होने का भ्रम देता है (जैसा कि प्रत्येक प्रक्रिया का अपना पेज डायरेक्टरी होता है)

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

यह वह जगह है जहां दो शब्द गठबंधन करते हैं, वर्चुअल मेमोरी और पेजिंग का समर्थन करने वाला एक ओएस स्वैप क्षेत्र में पेजिंग (स्वैपिंग) पेजों की तुलना में वास्तव में मौजूद मेमोरी की तुलना में अधिक मेमोरी होने का भ्रम दे सकता है।

जैसा कि आपके अंतिम प्रश्न (क्यों कहा गया है कि 32 बिट सीपीयू 4 जीबी वर्चुअल मेमोरी तक सीमित है)। यह परिभाषा 2 की "वर्चुअल मेमोरी" को संदर्भित करता है, और पॉइंटर आकार का एक तात्कालिक परिणाम है। यदि CPU केवल 32 बिट पॉइंटर्स का उपयोग कर सकता है, तो आपके पास अलग-अलग पतों को व्यक्त करने के लिए केवल 32 बिट है, इससे आपको 2 ^ 32 = 4GB पता योग्य मेमोरी मिलती है।

आशा है कि यह चीजों को थोड़ा स्पष्ट करता है।


12

IMHO यह वर्चुअल मेमोरी के बराबर स्वैप स्पेस की अवधारणा का उपयोग करने के लिए बहुत भ्रामक है। वीएम स्वैप स्पेस की तुलना में बहुत अधिक सामान्य अवधारणा है। अन्य बातों के अलावा, वीएम निष्पादन के दौरान आभासी पतों को संदर्भित करने की प्रक्रियाओं को अनुमति देता है, जिन्हें हार्डवेयर और पेज टेबल के समर्थन से भौतिक पतों में अनुवादित किया जाता है। इस प्रकार प्रक्रियाओं को इस बात की चिंता नहीं है कि सिस्टम में कितनी भौतिक मेमोरी है, या जहां निर्देश या डेटा वास्तव में भौतिक मेमोरी पदानुक्रम में निवासी है। VM इस मैपिंग की अनुमति देता है। संदर्भित आइटम (निर्देश या डेटा) एल 1, या एल 2, या रैम या अंत में डिस्क पर निवासी हो सकता है, जिस स्थिति में इसे मुख्य मेमोरी में लोड किया जाता है।

स्‍पैप स्‍पेस यह सिर्फ सेकेंडरी मेमोरी पर एक जगह होती है जहां पेज निष्क्रिय होने पर जमा हो जाते हैं। यदि कोई पर्याप्त रैम नहीं है, तो ओएस एक प्रक्रिया के पृष्ठों को स्वैप करने का निर्णय ले सकता है, अन्य प्रक्रिया पृष्ठों के लिए जगह बनाने के लिए। प्रोसेसर कभी भी निर्देश को निष्पादित नहीं करता है या स्वैप स्पेस से डेटा को सीधे पढ़ / लिखता है।

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


5

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

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

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

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

अंतर-बीच-आभासी स्मृति और स्वैप स्मृति


हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं। - समीक्षा से
कोटलेस

धन्यवाद, पोस्ट में सुधार हुआ।
ram619

0

"वर्चुअल मेमोरी" एक सामान्य शब्द है। विंडोज में, इसे पेजिंग या पेजिंग कहा जाता है। लिनक्स में, इसे स्वैप कहा जाता है।

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