我知道如果页面不在主内存中,CPU将从交换文件中获取它。因此,如果虚拟地址没有适当的物理地址,CPU将从磁盘中获取它。因此,映射到虚拟地址可以位于以下两个位置之一:它位于物理内存或磁盘中。我的问题是虚拟地址本身在哪里?因为CPU需要此虚拟地址才能执行映射。 CPU在哪里获得此地址?当我们使用gdb查看虚拟地址空间时,gdb在哪里获取所有这些虚拟地址?
例如:
虚拟地址0x420000
页表20
RAM 0x800000
这里20(页表条目)驻留在RAM中。 0x800000(物理地址)驻留在RAM中。 0x420000信息驻留在哪里? CPU需要来自某个地方的这些信息,否则它将如何执行地址转换?
现在我想我知道虚拟地址信息来自。它来自pc计数器的应用程序本身,此时它将它传递给CPU,然后CPU进行转换。
答案 0 :(得分:1)
有关虚拟页面的信息(其状态,物理位置等)存储在page table中。页表本身的实现方式及其存储位置在很大程度上取决于操作系统和底层硬件支持的具体情况。尽管一开始可能听起来很棘手,但页表本身甚至可以存储在虚拟内存中。