यदि वर्चुअल एड्रेस स्पेस भौतिक एड्रेस स्पेस से बड़ा हो सकता है, तो एड्रेस मैपिंग मेमोरी में कैसे स्टोर किए जाते हैं?


15

मान लीजिए कि हम एक ऐसी प्रणाली के साथ काम कर रहे हैं जिसमें 40 भौतिक पते बिट्स हैं। कुल भौतिक पता स्थान (बाइट-पता योग्य मेमोरी मानकर) बाइट्स या 1 TiB है। और अगर आभासी पते लंबाई में 48 बिट्स हैं, तो इसका मतलब है कि भौतिक मेमोरी में स्थानों की तुलना में आभासी मेमोरी के लिए अधिक पते उपलब्ध हैं।240

यह मेरे लिए समझ में आता है, क्योंकि "अतिरिक्त" पते हार्ड डिस्क स्थानों को भी संदर्भित कर सकते हैं। हालाँकि, मुझे समझ में नहीं आता है कि आभासी और भौतिक पतों के बीच अनुवाद कैसे होता है। मुझे लगता है कि कहीं एक मैपिंग संग्रहीत है जो VAS स्थानों को भौतिक स्थानों से जोड़ता है। यदि भौतिक स्थानों की तुलना में अधिक वर्चुअल पता स्थान हैं, तो इन सभी मैपिंग को संभवतः मेमोरी में कैसे संग्रहीत किया जा सकता है? कम से कम आपको प्रत्येक वर्चुअल पते को संग्रहीत करने के लिए 48 बिट्स की आवश्यकता होगी, और उसके बाद उसके भौतिक स्थान को संग्रहीत करने के लिए एक और 40। तो जाहिर है आप अपने भौतिक समकक्ष को प्रत्येक आभासी पते की 1: 1 मैपिंग को स्टोर नहीं कर सकते, क्योंकि हर स्थान को मैप करने से भौतिक मेमोरी की तुलना में अधिक मेमोरी होती है।

मैं वास्तव में यहाँ क्या याद कर रहा हूँ?


आप स्मृति और पता स्थान की एक छोटी राशि के साथ भी ऐसा नहीं कर सकते। यदि आपके पास 16-बिट भौतिक पते और 16-बिट वर्चुअल पते हैं, तो भी आप सभी 1: 1 मैपिंग को स्टोर नहीं कर पाएंगे!
user253751 2

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

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

(यह भी ध्यान दें कि पते उर्फ ​​हो सकते हैं, जो कभी-कभी उपयोगी होते हैं, इसलिए वीए ए और पता बी एक ही पीए पी का उल्लेख करते हैं, भले ही ए! = बी)
मैकीज पाइचोटका

जवाबों:


26

इस काम को करने की ट्रिक है "पेजिंग।" हार्ड डिस्क से डेटा को भौतिक मेमोरी में लाते समय, आप बस कुछ बाइट नहीं लाते हैं। आप एक पूरा पृष्ठ लाएं। 4k बाइट्स एक बहुत ही सामान्य पृष्ठ आकार है।

यदि आपको केवल अलग-अलग बाइट नहीं, केवल पृष्ठों पर नज़र रखने की आवश्यकता है, तो मैपिंग बहुत सस्ती हो जाती है। यदि आपके पास 48 बिट एड्रेस स्पेस और 4096 बाइट पेज हैं, तो आपको केवल 2 ^ 36 पेज (लगभग 69 बिलियन पेज) में से कौन सा ट्रैक करना है। यह बहुत आसान है! जहाँ सभी पृष्ठ पाए जाते हैं, उसका रिकॉर्ड "पृष्ठ तालिका" के रूप में जाना जाता है।

अगर आपको वास्तव में 1-256 टीआईबी मेमोरी की आवश्यकता है, तो इस पेज टेबल को स्टोर करने के लिए कुछ गीगाबाइट देना एक बड़ी बात नहीं है। व्यवहार में, हम बहु-स्तरीय पृष्ठ तालिकाओं का उपयोग करने जैसी चीजें करेंगे , जो हमें केवल उस स्थान के पते के क्षेत्रों के लिए पृष्ठों को रखने में सक्षम बनाता है, जो हम वास्तव में उपयोग कर रहे हैं।


6
एक पेज फ़ाइल एक भौतिक डिस्क के लिए ऑन-डिस्क भौतिक फ़ाइल होती है जिसमें भौतिक पृष्ठ फ़्रेम की सामग्री होती है जिसे मेमोरी की कमी के लिए पुन: प्राप्त किया जाता था, जिसकी सामग्री को रखने की आवश्यकता होती है। अगर मैं गलत नहीं हूं, तो भौतिक पृष्ठ पते के लिए वर्चुअल पेज एड्रेस मैप करने वाले डेटा स्ट्रक्चर को पेज टेबल कहा जाना चाहिए ।
मोनिका को बहाल करना - 4--

@hexafraction मुझे लगता है कि आप सही हैं। मैंने बदलाव किया है।
Cort Ammon

2
जब वास्तविक मेमोरी बड़ी होती है, तो पेज टेबल के लिए आवश्यक मेमोरी को कम करने का एक और तरीका बड़े पेजों के लिए अनुमति देना होता है। x86 में 4 KiB पृष्ठों को 2/4 MiB पृष्ठों के साथ मिलाने का विकल्प है।
नैट एल्ड्रेडगे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.