2016-10-27 10 views
5

का अनुवाद करें निम्न पृष्ठ तालिका 16-बिट आभासी और भौतिक पते वाले सिस्टम के लिए है और 4,096-बाइट पृष्ठों के साथ है। जब संदर्भ पृष्ठ का संदर्भ दिया गया है तो संदर्भ बिट 1 पर सेट किया गया है। समय-समय पर, थ्रेड संदर्भ बिट के सभी मानों को शून्य करता है। सभी संख्या दशमलव में प्रदान की जाती हैं। enter image description hereआभासी पता का भौतिक पता

मैं निम्नलिखित वर्चुअल पतों (हेक्साडेसिमल में) समकक्ष भौतिक पते में कनवर्ट करना चाहता हूं। इसके अलावा मैं पृष्ठ तालिका में उचित प्रविष्टि के लिए संदर्भ बिट सेट करना चाहता हूं।

0xE12C

0x3A9D

0xA9D9

0x7001

0xACA1

मैं जानता हूँ कि उत्तर दिए गए हैं, लेकिन मुझे पता है कि कैसे मैं इन उत्तरों को प्राप्त कर सकते हैं :

0xE12C → 0x312C 
0x3A9D → 0xAA9D 
0xA9D9 → 0x59D9 
0x7001 → 0xF001 
0xACA1 → 0x5CA1 

मैंने पाया और This कोशिश की लेकिन इससे मुझे बहुत मदद नहीं मिली।

उत्तर

4

यह वर्चुअल ऐड्रेस 16 बिट लंबा है कि दी गई है।
इसलिए, वर्चुअल एड्रेस स्पेस में 2^16 पते हैं।
पृष्ठ का आकार 4 केबी के लिए दिया जाता है (पृष्ठ में 4K (4 * (2^10)) पते होते हैं), इसलिए पृष्ठों की संख्या (2^16)/(2^12) = 2^4.
प्रत्येक पृष्ठ को संबोधित करने के लिए 4 बिट्स आवश्यक हैं।
वर्चुअल एड्रेस में सबसे महत्वपूर्ण 4 बिट्स पृष्ठ संख्या को संदर्भित करेंगे और शेष 12 बिट पेज ऑफ़सेट होंगे।

याद रखने की एक बात पृष्ठ आकार (वर्चुअल एड्रेस स्पेस में) मुख्य स्मृति में फ्रेम आकार के समान ही है। इसलिए अंतिम 12 बिट भौतिक पते में वर्चुअल एड्रेस के समान ही रहेंगे।

मुख्य मेमोरी में फ्रेम पता प्राप्त करने के लिए बस पहले 4 बिट्स का उपयोग करें।
उदाहरण: वर्चुअल ऐड्रेस 0xACA1
यहाँ एक में एक सीए 1 को दर्शाता है पृष्ठ संख्या (10) और इसी फ्रेम नहीं है 5 (0101) इसलिए जिसके परिणामस्वरूप भौतिक पता → 0x5CA1 हो जाएगा पर विचार करें।

7

एक शारीरिक पते पर एक आभासी पता अनुवाद करने के लिए, हम बातें जानने की जरूरत:

  • शारीरिक स्मृति आकार (इस उदाहरण के लिए यह महत्वपूर्ण नहीं है .. देखो [1]
  • पृष्ठ का आकार
  • आभासी पते के लिए बिट्स की संख्या

इस उदाहरण में: 16-बिट प्रणाली, 4KB पृष्ठ आकार और भौतिक स्मृति आकार64KB है।

सबसे पहले हमें पृष्ठ के ऑफसेट के रूप में कार्य करने के लिए आवश्यक बिट्स की संख्या निर्धारित करने की आवश्यकता है।
log2(Page-Size) = log2(4096) = के लिए बिट्स ऑफसेट

आभासी पते के लिए 16 बिट से 12 ऑफसेट के लिए कर रहे हैं, इसका मतलब है कि प्रत्येक प्रक्रिया 2^4 = 16 आभासी पृष्ठ नहीं है। पृष्ठ तालिका में प्रत्येक प्रविष्टि पृष्ठ को समायोजित करने वाले संबंधित फ्रेम को संग्रहीत करती है। उदाहरण के लिए:

enter image description here

अब अनुवाद कर देता है!

काम की आसानी के लिए सबसे पहले 0xE12C से binary को परिवर्तित करने देता है।

0xE12C = (1110 0001 0010 1100) in base 2 
1110 = 14 in decimal 
Entry 14 in P.T => Page frame 3. 

चलें 12 ऑफसेट बिट्स

Answer: (0011 0001 0010 1100) = 0x312C 

यह जोड़ एक और उदाहरण: 0x3A9D

0x3A9D = 0011 1010 1001 1101 
0011 = 3 
PageTable[3] = 10 
10 in decimal = 1010 in binary 
1010 1010 1001 1101 in binary = 0xAA9D 

[1] पेज तालिका प्रविष्टियों में अधिक जानकारी निहित होते, तो हमें आवश्यकता होती है पता करने के प्रत्येक फ्रेम को संदर्भित करने के लिए आवश्यक बिट्स की संख्या। हमारे मामले में यह log2(64KB/4KB) = log2(16) = 4 बिट्स है। यानी, यदि पृष्ठ तालिका प्रविष्टि में 6 बिट्स हैं, तो हम जानते हैं कि उनमें से केवल 4 फ्रेम संख्या के लिए हैं और बाकी झंडे के लिए हैं।

उदाहरण के लिए:

| page | page frame | 
|-------------------| 
| 5 | 100101 | 

Page 5 is mapped to frame number 1001 = frame number 9. 
1

आप इस प्रश्न को हल करने में मदद करने के लिए, हम अपने विवरण सही प्राप्त करने की आवश्यकता:

  1. 16 वर्चुअल ऐड्रेस स्पेस की बिट = 2^16 = 65,536 पता स्थान
  2. 16 भौतिक पता स्थान की बिट = 2^16 = 65,536 पता स्थान
  3. 4096 बाइट पृष्ठ का आकार ऑफसेट निर्धारित करता है, जो लॉग (4096)/लॉग (2) = 12 बिट है।

जैसे, इसका मतलब यह है 2^12 पृष्ठ आकार

  • @Akash महापात्र के अनुसार के लिए, आभासी पते से ऑफसेट सीधे करने के लिए भौतिक पता पर ऑफसेट मैप किया गया है, अब हम हैं:

      वर्चुअल एड्रेस के लिए
    • 2^16 (16 बिट), ऑफसेट => के लिए 2^12 (12 बिट) जो हमें पृष्ठों के लिए 4-बिट्स के साथ छोड़ देता है, या इसके बजाय उपलब्ध पृष्ठों की कुल संख्या।
    • मैं भौतिक के लिए गणना दोहरा नहीं दूंगा क्योंकि यह वही संख्या है।
    • 2^4 (4 बिट) पृष्ठों = 16 के लिए, जो ऊपर तालिका प्रविष्टियों की संख्या से संबंधित है!

    हम वहां जा रहे हैं ... धैर्य रखें! :)

    हेक्स नोटेशन में मेमोरी एड्रेस 0xE12C को 16-बिट एड्रेस भी माना जाता है। (चूंकि यह सवाल में कहा गया है।)

    चलो अब पता कसाई करते हैं ...

    हम पहले की जानकारी से '0x' को हटा दें।

    हम ई 12 सी को @ टोनी टैनस जैसे बाइनरी नोटेशन में परिवर्तित कर सकते हैं, लेकिन मैं थोड़ा शॉर्ट-कट लागू करने जा रहा हूं।

    Mapping of the Address and Offset

    मैं बस एक अनुपात का उपयोग करें। खैर, पता ऊपर 4 वर्णों में नोट किया गया है, और 16/4 = 4 के बाद से, मैं पहले अक्षर को वर्चुअल एड्रेस के रूप में परिभाषित कर सकता हूं, जबकि अन्य 3 ऑफ़सेट पता हैं।

    जानकारी के साथ, हेक्साडेसिमल प्रारूप में 'ई', मुझे दशमलव = 14 में कनवर्ट करने की आवश्यकता है। फिर मैं आपकी तालिका प्रदान करता हूं, और मुझे पेज फ्रेम '3' मिला। पेज फ्रेम 3 को दशमलव प्रारूप में नोट किया गया है, जिसे फिर हेक्साडेसिमल प्रारूप में परिवर्तित करने की आवश्यकता है ... Duh! ... जो 3 है!

    तो, 0xE12C के आभासी स्मृति स्थान का भौतिक पता मानचित्रण भौतिक स्मृति पर 0x312C पर पाया जा सकता है।

    फिर आप तालिका के लिए वापस जाना होगा, और संदर्भ सा स्तंभ को संदर्भित करते हैं और एक '1' पंक्ति 14.

    डाला इन के लिए इसी अवधारणा लागू करें -

    0x3A9D → 0xAA9D 
    0xA9D9 → 0x59D9 
    0x7001 → 0xF001 
    0xACA1 → 0x5CA1 
    

    हैं आप देखते हैं, अंतिम 3 अंक समान हैं (जो ऑफसेट निर्धारित करता है)। और 4 अंक के 1 तालिका के अनुसार मैप की जाती हैं:

    table entry 3 -> page frame 10 -> hex notation A 
    table entry A (10) -> page frame 5 -> hex notation 5 
    table entry 7 -> page frame 15 -> hex notation F 
    table entry A (10) -> page frame 5 -> hex notation 5 
    

    आशा इस व्याख्या आप और अन्य लोगों की तरह मुझे मदद करता है! :)

  • संबंधित मुद्दे