X86_64 长模式(64 位)不需要段选择器。为什么分段在 32 位中是必要的,而在 64 位中却没有用?谢谢,
2 回答
X86_64 长模式下的 CPU 使用 PAE(物理地址扩展)技术来控制内存。
所以段选择器不是必需的。
我建议您阅读此 pdf 手册AMD64 Architecture Programmer’s Manual Volume 2: System Programming
。
谷歌amd64 volume 2
,第一个结果是pdf手册。
看第 5.3 章Long-Mode Page Translation
,你就会明白了。
当内存实际按段加载和卸载时,段选择器很有用,这是 x86 最初开发时的一个选项。然而,现代操作系统都使用分页,它后来被引入 x86,并且(尽管有一些折衷)它的简单性最终导致它取代了分段。
32 位 x86 保持分段可用,而 16 位操作系统过渡到新的处理器架构,但在 64 位 x86 的设计过程中,一些遗留功能(包括分段)被删除。另一个在操作系统教科书中经常描述但在实践中从未使用过的特性是不同权限“环”的概念。传统上,有 4 个环(编号 0-3),但实际上除了 0(内核)和 3(用户空间)之外没有人使用任何东西,因此 x86-64 删除了环 1 和 2。但是,为了添加对新虚拟机管理程序的支持- 相关指令,x86-64 在 0 以下引入了一个新的环,称为 -1。
分段使检测内存的缓存别名变得更加困难,因此支持它也会使 x86-64 芯片的设计更加复杂。