वर्चुअल मैमोरी / पेजिंग सुविधा कर्नेल को यूजरस्पेस प्रोसेस में "वर्चुअलाइज" मेमोरी की सुविधा देती है। कर्नेल भौतिक मेमोरी से पृष्ठ ले सकता है, और पेजिंग के माध्यम से उन्हें व्यवस्थित कर सकता है, ताकि वे उपयोगकर्ता की प्रक्रिया के प्रति सन्निहित दिखें।
उपयोगकर्ता की प्रक्रिया की मेमोरी पर एक सीमा निर्धारित की जा सकती है और अगर यह प्रक्रिया "पृष्ठ दोष" से परे हो जाती है, जो सीपीयू अपवाद का कारण बनता है जो कर्नेल को वापस बाउंस करता है। यह कर्नेल की अनुमति के बिना, उपयोगकर्ता को कर्नेल या अन्य कार्यक्रमों को आवंटित मेमोरी के साथ खिलवाड़ करने से रोकता है।
आमतौर पर यूजरस्पेस प्रोग्राम कर्नेल को इस सीमा को अच्छी तरह से परिभाषित इंटरफेस ( उदाहरण के लिए सी फ़ंक्शन malloc()
और free()
उदाहरण के लिए) के माध्यम से विस्तारित करने के लिए कहते हैं । कर्नेल इस बात का ध्यान रखने के लिए ज़िम्मेदार है कि किसी प्रोग्राम को कितनी मेमोरी आवंटित की जाती है।
यह "पृष्ठ दोष" तंत्र कर्नेल को उस पृष्ठ को स्वैप करने की भी अनुमति दे सकता है जिस प्रक्रिया को डिस्क से एक के साथ एक्सेस करने का प्रयास किया जा रहा था, यदि कर्नेल मेमोरी को ओवरप्रूव करने में सक्षम है (और विंडोज और लिनक्स दोनों इसे सपोर्ट करते हैं) इसलिए इसे स्वैपिंग कहा जाता है। यदि मेमोरी एक्सेस वास्तव में अमान्य थी (यानी यह प्रक्रिया उस मेमोरी को एक्सेस करने की कोशिश कर रही है जिसे उसने पहले नहीं पूछा था) तो आमतौर पर इस प्रक्रिया को एक SIGSEGV के साथ मार दिया जाएगा।
तो "स्वैपिंग" एक अतिरिक्त विशेषता है (लिनक्स में आप वास्तव में इसे पूरी तरह से अक्षम कर सकते हैं यदि आप चाहते हैं) जो कि वर्चुअल मेमोरी / पेजिंग पर निर्भर करता है, लेकिन केवल इसलिए आवश्यक नहीं है क्योंकि सीपीयू में वर्चुअल मेमोरी / पेजिंग है। अवधारणाएं समान नहीं हैं, लेकिन स्वैपिंग मौजूद होने के लिए पेजिंग / वर्चुअल मेमोरी पर निर्भर करती है।
इसके अलावा, आपके प्रश्न को और अधिक बारीकी से पढ़ने के बाद, "पेजिंग" को कभी-कभी "स्वैपिंग" के लिए एक पर्याय के रूप में उपयोग किया जाता है - लेकिन मैंने "स्वैपिंग" के बारे में कभी नहीं सुना है जिसका अर्थ है कि पूरी प्रक्रिया की मेमोरी को बनाम "पेजिंग" के रूप में स्वैप किया गया है जिसका अर्थ है इसकी अदला-बदली की जाती है।
लेकिन फिर लिनक्स को एक स्वैप विभाजन की आवश्यकता क्यों है? यदि भौतिक मेमोरी भरी हुई है, तो कुछ प्रक्रियाओं को हार्ड ड्राइव में आउटसोर्स किया जाएगा और एक नई प्रक्रिया को वर्चुअल मेमोरी से भौतिक मेमोरी में मैप किया जाएगा।
"आभासी स्मृति" है भौतिक स्मृति, बस "पुनः मानचित्रित।" MMU हार्डवेयर सीधे किसी भी स्टोरेज डिवाइस पर मैप नहीं कर सकता है। एमएमयू एक गलती को फेंक सकता है जो कर्नेल को एक ऐसी प्रक्रिया बताती है जिसे स्मृति तक पहुँचने की कोशिश नहीं करनी चाहिए - और कर्नेल इस तंत्र का उपयोग यह देखने के लिए कर सकता है कि एक प्रक्रिया डिस्क से कुछ वापस चाहती है जो उसने सोचा था कि यह मेमोरी में है और फिर " स्वैप "। यह वह बिंदु है जो ऑपरेटिंग सिस्टम है जो पृष्ठों को डिस्क में सहेजने का निर्णय करता है इसलिए यह उन पेजों को अन्य प्रक्रियाओं के लिए उपयोग कर सकता है, हार्डवेयर पर नहीं।