64位和32位操作系统中的逻辑地址空间

Try*_*ing 1 operating-system

目前我正在阅读 Galvin的操作系统原则.我很高兴阅读它,但同时我有一个问题.

我可以说,如果我使用64位操作系统,那么逻辑地址空间(CPU生成的)可以是64位吗?即它将能够在物理存储器中映射大量帧.如果我使用32位操作系统,则CPU最多可以生成2 ^ 32个逻辑地址空间.

那是对的吗?

ugh*_*fhw 5

但是,有许多技术细节使这些名称变得不那么有用.

首先,操作系统有两种不同的大小:地址大小和数据大小.地址大小决定了地址空间的可用范围,数据大小决定了单字操作可以使用多少数据.根据我的经验,操作系统通常由数据大小来标识,这意味着地址大小可能是其他内容.

下面是一些示例架构及其地址和数据大小.如表所示,目前最常见的32位和64位架构具有相同的数据和地址大小,这就是您的声明部分正确的原因.请注意,16位模式下的x86处理器的地址大小大于数据大小.这是由于在寻址中使用了额外的段寄存器,这使得架构的限制性降低.

                 Address size      Data size
x86 16-bit        20 bits           16 bits
x86 32-bit        32 bits           32 bits
x86 64-bit        64 bits           64 bits
ARM 32-bit        32 bits           32 bits
ARM 64-bit        64 bits           64 bits

但是,地址大小不一定表示可以使用多大的逻辑地址空间.可能存在将空间限制为较小区域的限制.例如,当前的x86-64处理器不支持64位地址空间.相反,它们要求任何地址的高16位是第47位的符号扩展,允许2 48地址空间,256 TiB而不是16 EiB.这减少了需要在处理器中使用的地址线的数量,同时允许远远超过目前使用的任何人.

最后,到目前为止,所有内容都参考了逻辑或虚拟地址空间.物理地址空间可以具有不同的大小.较新的32位x86系统具有物理地址扩展,可实现36位物理地址,而x86-64系统仅限于不超过52位的物理地址空间,但这可能会受到内存控制器/主板的进一步限制.当逻辑地址空间大于物理地址空间时,它允许整个物理地址空间一次映射到多个位置.当逻辑地址空间较小时,它允许多个完整的地址空间同时存储在物理存储器中.