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

时间:2013-07-10 21:30:20

标签: operating-system

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

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

这是对的吗?

1 个答案:

答案 0 :(得分: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位的物理地址空间,但这可能会受到内存控制器/主板的进一步限制。当逻辑地址空间大于物理地址空间时,它允许整个物理地址空间一次映射到多个位置。当逻辑地址空间较小时,它允许多个完整的地址空间同时存储在物理存储器中。