निम्न छवि दिखाती है कि 32-बिट प्रक्रिया वर्चुअल एड्रेस स्पेस कैसे विभाजित है:
लेकिन 64-बिट प्रोसेस वर्चुअल एड्रेस स्पेस कैसे विभाजित किया जाता है?
निम्न छवि दिखाती है कि 32-बिट प्रक्रिया वर्चुअल एड्रेस स्पेस कैसे विभाजित है:
लेकिन 64-बिट प्रोसेस वर्चुअल एड्रेस स्पेस कैसे विभाजित किया जाता है?
जवाबों:
64-बिट x86 वर्चुअल मेमोरी मैप एड्रेस स्पेस को दो में विभाजित करता है: निचला सेक्शन (शीर्ष बिट सेट के साथ 0) उपयोगकर्ता-स्पेस है, ऊपरी अनुभाग (शीर्ष बिट 1 के साथ सेट) कर्नेल-स्पेस है। (ध्यान दें कि x86-64 "कैनोनिकल" "निचले आधे" और "उच्च आधे" पते को परिभाषित करता है, जिसमें कई बिट्स प्रभावी रूप से 48 या 56 तक सीमित होते हैं । विवरण के लिए विकिपीडिया देखें।)
पूरा नक्शा कर्नेल में विस्तार से प्रलेखित है ; वर्तमान में यह दिखता है
========================================================================================
Start addr | Offset | End addr | Size | VM area description
========================================================================================
| | | |
0000000000000000 | 0 | 00007fffffffffff | 128 TB | user-space virtual memory
__________________|_________|__________________|_________|______________________________
| | | |
0000800000000000 | +128 TB | ffff7fffffffffff | ~16M TB | non-canonical
__________________|_________|__________________|_________|______________________________
| | | |
ffff800000000000 | -128 TB | ffffffffffffffff | 128 TB | kernel-space virtual memory
__________________|_________|__________________|_________|______________________________
48-बिट वर्चुअल पतों के साथ। (56-बिट संस्करण में एक ही संरचना है, जिसमें 16 पीबी छेद के दोनों ओर प्रयोग करने योग्य पता स्थान 64 पीबी है।)
32-बिट मामले के विपरीत, "64-बिट" मेमोरी मैप हार्डवेयर बाधाओं का प्रत्यक्ष प्रतिबिंब है।