gpt4 book ai didi

memory-management - 为什么段从段落边界开始?

转载 作者:行者123 更新时间:2023-12-04 23:33:06 25 4
gpt4 key购买 nike

在实模式分段内存模型中,段总是从段落边界开始。一个段落的大小是 16 字节,所以段地址总是可以被 16 整除。在段落边界上有段的原因/好处是什么?

最佳答案

与其说是公理,不如说是好处——8086 的实模式分段模型是在硬件级别设计的,因此段寄存器指定了段落边界。

段寄存器指定了 8086 的 20 位地址空间的高 16 位的基地址,该基地址的低 4 位本质上被强制为零。

分段架构是让 8086 的 16 位寄存器架构能够寻址一整兆字节(!)地址空间(需要 20 位寻址)的一种方式。

对于更多的历史,英特尔在 x86 架构中采取的下一步是从直接定义基地址中抽象段寄存器。那是 286 保护模式,其中段寄存器保存一个“选择器”,而不是定义物理基地址的位,而是一组描述符表的索引,这些表保存有关物理地址的信息,访问物理地址的权限内存和其他东西。

现代 32 位或更大的 x86 处理器中的段寄存器仍然这样做。但是由于地址偏移量能够指定完整的 32 位寻址(或 x64 处理器上的 64 位)和能够在由选择器定义的段内提供虚拟内存语义的页表,编程模型基本上消除了必须在应用程序级别操作段寄存器。在大多数情况下,操作系统设置段寄存器一次,没有其他需要处理它们。所以程序员通常甚至不需要知道它们已经存在了。

关于memory-management - 为什么段从段落边界开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2348304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com