2

我知道如果页面不在主内存中,CPU 将从交换文件中获取它。因此,如果虚拟地址没有对应的物理地址,CPU 将从磁盘中获取它。所以映射到虚拟地址可以在两个地方之一:它要么在物理内存中,要么在磁盘中。我的问题是虚拟地址本身驻留在哪里?因为 CPU 需要这个虚拟地址才能执行映射。CPU从哪里得到这个地址?当我们使用 gdb 查看虚拟地址空间时,gdb 将所有这些虚拟地址带到哪里?

例如:

虚拟地址 0x420000
页表 20
RAM 0x800000

这里 20(页表条目)驻留在 RAM 中。0x800000(物理地址)位于 RAM 中。0x420000 信息在哪里?CPU 从某个地方需要这些信息,否则它将如何执行地址转换?

现在我想我知道虚拟地址信息来自何处。它来自应用程序本身,来自 pc 计数器,此时它将它传递给 CPU,然后 CPU 进行翻译。

4

1 回答 1

1

有关虚拟页面的信息(它们的状态、物理位置等)存储在页表中。页表本身的实现方式和存储位置在很大程度上取决于操作系统的细节和底层硬件支持。尽管一开始听起来很棘手,但页表本身甚至可以存储在虚拟内存中。

于 2013-10-30T16:03:09.787 回答