वर्चुअल मेमोरी, मेमोरी प्रबंधन की एक तकनीक है। यह तकनीक एक प्रोग्राम को कई छोटे-छोटे भागों में विभाजित करने संबंधी अवधारणा पर कार्य करती है और साथ ही स्वेपींग ऑपरेशन्स को भी पूरा करती है।
वर्चुअल मेमोरी की अवधारणा का प्रयोग कर हम उस एप्लिकेशन प्रोग्राम को कार्यान्वित कर सकते हैं, जिसकी सम्पूर्ण साइज, फिजिकल मेमोरी से अधिक हो। इस सम्पूर्ण साइज में डाटा स्टोरेज और स्टेक शामिल होते जिनकी आवश्यकता प्रोग्राम को कार्यान्वित करने में होती है। प्रोग्राम के शेष भागों को डिस्क पर रखा जाता है।
हम जानते हैं कि मेमोरी प्रबंधन से जुड़ी विभिन्न नीतियों का प्राथमिक उद्देश्य कई प्रोसेसेस को मेमोरी में संग्रहीत करना है। इन सभी नीतियों की यह आवश्यकता होती है कि कार्यान्वित होने के पहले सम्पूर्ण प्रोसेस मेमोरी में संग्रहीत हो जाए। वर्चुअल मेमोरी मेमोरी प्रबंधन की एक ऐसी स्कीम है जो विभिन्न प्रोसेसेस के कार्यान्वयन की अनुमति देती है। यहाँ इन प्रोसेसेस का पूर्ण रूप से मुख्य मेमोरी में होना अनिवार्य नहीं होता है। इसके परिणामस्वरूप, यूजर प्रोग्राम की साइज, फिजिकल मेमोरी से अधिक हो सकती है।
वर्चुअल मेमोरी, फिजीकल मेमोरी से यूजर लॉजीकल मेमोरी को पृथक करती है। जब केवल कम फिजीकल मेमोरी ही उपलब्ध होती है तब यह यूजर द्वारा प्रोग्राम को कायान्वित करने की अनुमति देती है। वर्चुअल मेमोरी, प्रोग्रामिंग के कार्य को अधिक सरल बनाती है, इसीलिये प्रोग्रामर को न तो फिजीकल मेमोरी की मात्रा को लेकर, और न ही कौन से कोड को ओवरलेज में स्थापित करना है, इसको लेकर चिंतित होना पड़ता है, परन्तु हमें आने वाली समस्याओं पर ध्यान देना चाहिए। वर्चुअल मेमोरी को सपोर्ट करने वाले सिस्टम के ओव्हरलेज वस्तुतः लुप्त या गायब हो चुके हैं।
वर्चुअल मेमोरी के लाभ:
वर्चुअल मेमोरी स्कीम में, प्रोग्रामर्स को फिजिकल मेमोरी की तुलना में अत्यधिक मेमोरी होने का आभास होता है। इस कारण, उन्हें अपने प्रोग्राम्स को कम फिजिकल मेमोरी में रखने की चिंता नहीं होती है। परंतु, अधिकांश परिस्थितियों में यह देखा गया है कि सम्पूर्ण प्रोग्राम की आवश्यकता नहीं होती है। कई परिस्थितियों में सम्पूर्ण प्रोग्राम की आवश्यकता की संभावना रहती है, परंतु ऐसा हो ही, यह भी आवश्यकता नहीं होती है।
मेमोरी में आशिक रूप से प्रोग्राम लोड़ करने के निम्नलिखित लाभ होते हैं:
1. यूजर उपलब्ध फिजिकल मेमोरी से अधिक मेमोरी वाला प्रोग्राम लिख सकता है।
2. यूजर फिजिकल मेमोरी का कम उपयोग करता है, इसलिये CPU का उपयोग और धुपुट बढ़ता है। इसके परिणामस्वरूप, अधिक संख्या में यूजर अपने प्रोग्राम मेमोरी में रख सकते हैं।.
3. आर्बिट्रेरी साइज की स्पेस में प्रोसेस लोड की जा सकती है। यह प्रोसेस एक्जिक्यूशन के निर्धारित क्रम को परिवर्तित करे बिना ही बाह्य फ्रेग्मेटेशन को कम कर सकती the है। इसके अलावा, दी गई प्रोसेस द्वारा उपयोग की जा रही स्पेस की मात्रा उसके मेमोरी रेसीडेंस के दौरान बदल सकती है। परिणामस्वरूप, ऑपरेटिंग सिस्टम अधिक फिजिकल मेमोरी एलोकेट कर महत्वपूर्ण प्रोसेस के एक्जिक्यूशन की गति को बढ़ा सकता है ।
वर्चुअल मेमोरी को पेज के एक्सटेशन या सेगमेन्टेड मेमोरी स्कीम के समान लागू किया जा सकता है। इन्हें क्रमशः डिमाण्ड पेजिंग अथवा डिमांड सेगमेटेशन कहा जाता है।
डिमाण्ड पेजिंग:
डिमाण्ड पेजिंग सिस्टम, स्वेपिंग वाले पेजिंग सिस्टम के समान हैं । प्रोसेस सेकेण्डरी मेमोरी (डिस्क) मे होती है। जब हम प्रोसेस को एक्जिक्यूट करना चाहते हैं, तब हम इसे मेमोरी में स्वेप कर देते हैं। पूरी प्रोसेस को मेमोरी में स्थेप करनी की अपेक्षा, हम एक लेजी स्वेपर उपयोग करते हैं। लेजी स्वेपर तब तक पेज को मेमोरी में स्वेप नहीं करता है, जब तक कि उस पेज की आवश्यकता नहीं पड़ती है। स्वेपर सम्पूर्ण प्रोसेस को मेनिप्यूलेट करता है, वहीं पर पेजर का संबध, प्रोसेस के अलग-अलग पेजों से होता है।
जब प्रोसेस को स्वेप करने की आवश्यकता होती है, तब पेजर यह अनुमान लगाता है, कि कौन से पेजेस, प्रोसेस को स्वेप आउट करने के पूर्व उपयोग किये जाए । सम्पूर्ण प्रोसेस में स्वेपींग करने की अपेक्षा पेजर आवश्यक पेजों को मेमोरी में भेजता है। इस प्रकार, यह मेमोरी में अन्यत्र कहीं उपयोग होने वाले ही पेज की रिडिंग की आवश्यकता को समाप्त करता है। इससे स्वेप में लगने वाला समय तथा आवश्यक फिजिकल मेमोरी की मात्रा में कमी होती है।
डिमाण्ड पेजिंग को हार्डवेयर का सपोर्ट हार्डवेयर द्वारा डिमाण्ड पेजिंग को सपोर्ट करना स्व और पेजिंग सपोर्ट के समान ही होता है।
पेज टेबल: इस टेबल में एक वेलिड-इनवेलिड बिट् अथवा प्रोटेक्शन बिट्स की विशिष्ट वेल्यू के माध्यम से इनवेलिए (अमान्य) इन्ट्री को इंगित करने की क्षमता होती है।
सेकण्डरी मेमोरी: इस मेमोरी में वे पेज स्टोर होते हैं जो मुख्य मेमोरी में नहीं रहते हैं। सामान्यतः सेकेण्डरी मेमोरे एक हाई स्पीड डिस्क होती है। इसे स्वेप डिवाइस के रूप में जाना जाता है। इस उद्देश्य के लिये प्रयुक्त डिस्क के जिस भाग का प्रयोग किया जाता है, उसे स्वेप स्पेस अथवा बेकिंग स्पेस के नाम से जाना जाता है।
इस स्कीम में, हमें मेमोरी और डिस्क में स्थित पेज के मध्य अंतर करने के लिए हार्डवेयर के सपोर्ट की आवश्यकता होती है। पिछले भाग में बताई गई वेलीड इनवेलिड स्कीम का उपयोग इस उद्देश्य के लिये किया जा सकता है। तथापि, इस समय जब बिट को ‘वेलिड’ पर सेट किया जाता है, तब यह वेल्यू इस ओर संकेत करती है कि संबंधित पेज मान्य है और मेमोरी में स्थित है और यदि बिट ‘इनवेलिड’ होती है। ‘तो वेल्यू इस ओर संकेत करती है कि या तो पेज वेलिड नहीं है या फिर वेलिड हैं तो, वर्तमान में डिस्क पर है। मेमोरी में लायी जाने वाली पेज टेबल इंट्री को सामान्य तरीके से व्यवस्थित किया जाता है। परंतु मेमोरी में अनुपलब्ध पेज तथा डिस्क पर स्थित पेज के पेज-टेबल इंट्री को मान्य नहीं किया जाता है।