संक्षिप्त उत्तर: प्रक्रिया के निष्पादन के लिए आवश्यक प्रोग्राम कोड और डेटा को मुख्य स्मृति में निष्पादित किया जाना चाहिए, लेकिन मुख्य स्मृति पूरी प्रक्रिया की आवश्यकताओं को समायोजित करने के लिए पर्याप्त नहीं हो सकती है।
दो प्रस्तावों
(1) भंडारण आवंटन के लिए किसी भी आवश्यकता को कम करने के एक बहुत बड़े मुख्य स्मृति का उपयोग करना: यह बहुत उच्च लागत की वजह से संभव नहीं है।
(2) वर्चुअल मेमोरी: यह उन प्रक्रियाओं को अनुमति देता है जो अनुरोध पर स्वचालित संग्रहण आवंटन के माध्यम से निष्पादित करने के लिए स्मृति में पूरी तरह से नहीं हो सकते हैं। शब्द वर्चुअल मेमोरी को लॉजिकल मेमोरी को अलग करने के अबास्ट्रक्शन को संदर्भित किया जाता है - प्रक्रिया द्वारा देखी गई स्मृति - भौतिक स्मृति से - मेमोरी प्रोसेसर द्वारा देखी गई।इस अलगाव के कारण, प्रोग्रामर को केवल लॉजिकल मेमोरी स्पेस के बारे में पता होना चाहिए जबकि ऑपरेटिंग सिस्टम भौतिक मेमोरी स्पेस के दो या दो से अधिक स्तर बनाए रखता है।
अधिक:
प्रारंभिक कंप्यूटर प्रोग्रामरों विभाजित वर्गों में प्रोग्राम हैं जो प्रसंस्करण समय की अवधि के लिए मुख्य स्मृति में स्थानांतरित किया गया। चूंकि उच्च स्तर की भाषाएं लोकप्रिय हो गईं, जटिल कार्यक्रमों की दक्षता खराब ओवरले सिस्टम से ग्रस्त थी। भंडारण आवंटन की समस्या अधिक जटिल हो गई।
अक्षम स्मृति प्रबंधन की समस्या को हल करने के लिए दो सिद्धांत उभरे - स्थैतिक और गतिशील आवंटन। स्टेटिक आवंटन मानता है कि स्मृति संसाधनों की उपलब्धता और किसी प्रोग्राम की स्मृति संदर्भ स्ट्रिंग की भविष्यवाणी की जा सकती है। गतिशील आवंटन स्मृति उपयोग पर निर्भर करता है वास्तविक कार्यक्रम आवश्यकताओं के साथ बढ़ता और घटता है, स्मृति आवश्यकताओं की भविष्यवाणी पर नहीं।
'60 के दशक में कार्यक्रम उद्देश्यों और मशीन प्रगति ने स्थाई आवंटन के लिए आवश्यक भविष्यवाणियों को असंभव नहीं किया, यदि असंभव नहीं है। इसलिए, गतिशील आवंटन समाधान आम तौर पर स्वीकार किया गया था, लेकिन कार्यान्वयन के बारे में राय अभी भी विभाजित थीं।
एक समूह का मानना था कि प्रोग्रामर को भंडारण आवंटन के लिए जिम्मेदार होना जारी रखना चाहिए, जो स्मृति कॉल आवंटित या रद्द करने के लिए सिस्टम कॉल द्वारा पूरा किया जाएगा। स्टोरेज आवंटन की जटिलता और मल्टीप्रोग्रामिंग के उभरते महत्व की वजह से दूसरे समूह ने ऑपरेटिंग सिस्टम द्वारा किए गए स्वचालित संग्रहण आवंटन का समर्थन किया।
1 9 61 में, दो समूहों ने एक-स्तरीय मेमोरी स्टोर का प्रस्ताव दिया। एक प्रस्ताव भंडारण आवंटन की किसी भी आवश्यकता को कम करने के लिए एक बहुत बड़ी मुख्य स्मृति के लिए बुलाया गया। बहुत अधिक लागत के कारण यह समाधान संभव नहीं था। दूसरा प्रस्ताव आभासी स्मृति के रूप में जाना जाता है।
सीएनई/मॉड्यूल/VM/हरी/defn.html
एक बहुत मदद करता है। लेकिन विखंडन के बारे में क्या? तो कुछ चीजें (उदाहरण के लिए एक सरणी) को आवंटित करने की आवश्यकता है। यदि वर्चुअल मेमोरी में एक सरणी आवंटित की जाती है, तो क्या इसका मतलब यह भौतिक स्मृति में भी संगत है? या क्या विखंडन का स्तर – user2079802
@ user2079802 नहीं होता है- जरूरी नहीं है। यदि सरणी वर्चुअल मेमोरी के कई पृष्ठों को फैलाती है, तो ओएस उन पृष्ठों को भौतिक स्मृति के पूरी तरह से अलग क्षेत्रों में आवंटित कर सकता है। यह सुनिश्चित करने के लिए ओएस पर निर्भर है कि इससे प्रदर्शन के मुद्दों का कारण नहीं बनता है। – templatetypedef
एक और बात। जब आपको कुछ चर का पता मिलता है, उदाहरण के लिए सी में और सी में, यह उसका वर्चुअल पता है, है ना? – user2079802