Intel x86 内存模型具有分段和分页功能。系统可以寻址多达 64 TB 的虚拟内存,这意味着什么?我的理解是只有 4GB 的虚拟内存是可寻址的。这里的差距是什么?这都是在 32 位处理器的上下文中
这是数学:
2^13(段选择器)* 2(LDT 或 GDT)* 2^32 = 2^46 = 64 TB。这在文献中称为总虚拟内存。他们是否错误地将其称为虚拟内存?让我困惑的是,处理器本身只有 32 位地址线。
或者,他们是否试图说这是可以分配的总虚拟内存(跨所有进程?)
最佳答案
1) 段描述符是由段选择器从 2^13*2=2^14 中选择的,该选择器位于单独的寄存器中,因此它绕过了 32 个地址线的限制。
2)段描述符包含一个段的32位地址,是一个32位的值。向其添加 32 位偏移量是 简单算术加法 ,所以你最终得到一个 32 位地址。仅 2^32=4GB。
问题是,这些段可能会重叠。您的数学错误在于当前段描述符的索引(14 位)和偏移量(32 位)没有连接。它们被处理形成一个 32 位的线性地址。
退房 this page有关 x86 内存分段的更多信息。
关于memory - 使用分段 : how? 的 64 TB 虚拟内存,用于 32 位 x86,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5444984/