ที่อยู่เสมือนของกระบวนการ 64 บิตถูกแบ่งใน Linux อย่างไร


12

รูปต่อไปนี้แสดงวิธีแบ่งพื้นที่ที่อยู่เสมือนของกระบวนการ 32 บิต:

ป้อนคำอธิบายรูปภาพที่นี่

แต่พื้นที่ที่อยู่เสมือนของกระบวนการ 64 บิตนั้นถูกแบ่งออกอย่างไร

คำตอบ:


10

แม็พหน่วยความจำเสมือน 64 บิต x86 แบ่งพื้นที่ที่อยู่ออกเป็นสองส่วนล่าง (พร้อมบิตสูงสุดเป็น 0) คือพื้นที่ผู้ใช้ส่วนบน (ที่มีบิตสูงสุดตั้งเป็น 1) คือเคอร์เนลสเปซ (โปรดทราบว่า x86-64 กำหนดที่อยู่ "บัญญัติ" "ครึ่งล่าง" และ "ครึ่งสูงกว่า" โดยมีจำนวนบิต จำกัด ที่ 48 หรือ 56 ได้อย่างมีประสิทธิภาพดูวิกิพีเดียสำหรับรายละเอียด)

แผนที่ที่สมบูรณ์เป็นเอกสารในรายละเอียดใน kernel ; ขณะนี้ดูเหมือนว่า

========================================================================================
    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 บิตมีโครงสร้างเดียวกันกับ 64 PB ของที่อยู่ที่สามารถใช้งานได้ทั้งสองด้านของรู 16K PB)

แผนที่หน่วยความจำ“ 64- บิต” นั้นแตกต่างจากเคสแบบ 32 บิตซึ่งเป็นภาพสะท้อนโดยตรงของข้อ จำกัด ด้านฮาร์ดแวร์


ในการชี้แจง: ข้อ จำกัด นี้ถูกกำหนดโดยฮาร์ดแวร์ ขณะนี้ไม่มีการใช้งานตัวประมวลผล 64 บิตที่ไม่ได้ทิ้งที่อยู่ที่ไม่สามารถใช้งานได้ขนาดใหญ่ไว้กลางพื้นที่ที่อยู่เสมือน จำนวนหน่วยความจำฟิสิคัลที่ CPU สามารถระบุได้นั้นอยู่ต่ำกว่า 2 ถึงกำลัง 64
Johan Myréen

ขอบคุณ @Johan ฉันพยายามเน้นสิ่งนี้
Stephen Kitt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.