0

我被困在这个问题上,我正在为明天的考试而学习。(我了解虚拟地址与物理地址、页框、地址总线等的概念。)

如果您使用 4K 页面、128K RAM 和 32 位地址总线,那么虚拟地址可以有多大?您可以拥有多少个常规页框?

编辑:我相信答案是 2^32 和 2^20。我只是不知道如何计算这个。

4

1 回答 1

6

你的答案完全正确。

使用 32 位地址总线,您可以访问 2^32 个唯一地址的虚拟空间。

每个 4K 页面使用 2^12 个(物理)地址,因此您可以将 (2^32) / (2^12) = 2^20 个页面放入空间中。

祝你考试顺利!


编辑以解决评论中的问题:

你怎么知道你不能访问超过 2^32 个地址?

32 位地址总线意味着有 32 根线连接到 RAM 上的地址引脚——每根线由一个位表示。根据相应位是 1 还是 0,每条线保持在高电压或低电压,并且由 32 位值(例如 0xFFFF0000)表示的 1 和 0 的每个特定组合选择相应的存储位置。使用 32 根线,地址引脚上有 2^32 种独特的电压组合,这意味着您可以访问 2^32 个位置。

那么 4K 页面大小呢?

如果系统的页面大小为 4K,则意味着每个页面中的 RAM 芯片有 12 个地址位(因为 2^12 = 4K)。如果您的假设系统有 128K 的 RAM,那么您需要 128K/4K = 32 页,或 RAM 芯片组。因此,您可以使用 12 位来选择每个芯片上的物理地址,方法是将相同的 12 根线路由到每个 RAM 芯片上的 12 个地址引脚。然后再用 5 根线来选择32 页中的哪一页包含您想要的地址。我们使用了 12 + 5 = 17 个地址位来访问 2^17 = 128K 的 RAM。

让我们进行最后一步,想象 128K 的 RAM 驻留在存储卡上。但是对于 32 位地址总线,您仍然有 32-17 = 15 个地址位!您可以使用这些位选择 2^15 = 32768 个内存卡中的一个,从而为您提供 2^32 = 4G RAM 的总虚拟地址空间。

这在 RAM 和存储卡之外有用吗?

通常的做法是将大量位(例如​​地址中的位)划分为更小的子组,以使它们更易于管理。有时它们会因为物理原因被分割,例如地址引脚和存储卡;其他时候是出于逻辑原因,例如 IP 地址和子网。美妙之处在于实现细节与最终用户无关。如果您访问地址为 0x48C7D3AB 的内存,那么您不必关心它位于哪个 RAM 芯片中,或者内存的排列方式,只要存在内存单元即可。当您浏览到 67.199.15.132 时,只要它接受您的支持,您就不会关心计算机是否在 C 类子网上。:-)

于 2008-12-12T04:09:50.167 回答