0

大家好,我想知道操作系统用于可扩展 RAM 的称为寻址方案的东西。让我们考虑一个例子来阐明这一点。

“如果我们的计算机有 32 位架构,那么这意味着我们有一个 32 位长的计算机地址,相当于 2^32 个可寻址内存位置,大约 4GB 数据。”

但是,如果我们添加另外 4GB 的主存,现在实际上是 8GB 的​​ RAM,那么计算机如何寻址额外的主存位置,因为这个额外的数量超出了 32 位地址的范围,即 2^32。

任何人都可以对这个问题有所了解。

4

1 回答 1

0

基本上,你不能只用 32 位来处理 8GB。在使用 32 位的任何给定时间点,您只能从 4G 内存位置中进行选择。

一种流行的解决方法是在页表中使用大于 32 位的物理地址。这允许操作系统定义程序能够访问 8GB 的​​哪个子集。但是,这个子集永远不能大于 4GB。x86 PAE就是一个例子,但也有其他的例子。

使用这种解决方法,操作系统本身只能通过更改它自己的页表来访问整个 8GB。例如,要访问一个内存位置,它首先必须通过更改页表将该内存位置映射到自己的地址空间,然后才能开始访问该内存位置。当然,这非常麻烦(至少可以这么说)。如果在不考虑这种类型的内存扩展的情况下编写操作系统的某些部分,也会导致问题,设备驱动程序就是一个典型的例子。

这个问题并不新鲜。像 Commodores C64 这样的 8 位计算机使用银行切换来访问超过 64KB 的 16 位地址。早期的 PC 使用扩展内存来解决 640KB 的限制。正确的事情(TM)当然是在你不得不求助于丑陋的解决方案之前切换到更大的地址。

于 2012-09-13T00:49:27.250 回答