我知道如果页面不在主内存中,CPU会从交换文件中提取它。所以如果一个虚拟地址没有物理地址对应的地方,CPU就会把它从磁盘中拿出来。因此映射到虚拟地址可以位于以下两个位置之一:无论是在物理内存中还是在磁盘中。我的问题是虚拟地址本身在哪里?因为CPU需要这个虚拟地址才能执行映射。 CPU获得这个地址在哪里?当我们使用gdb来查看虚拟地址空间时,gdb在哪里获取所有这些虚拟地址?虚拟内存地址在哪里?
对于前:
虚拟地址0x420000
页表20
RAM的0x800000
这里20(页表条目)驻留在内存中。 0x800000(物理地址)驻留在RAM中。 0x420000信息驻留在哪里? CPU需要从某个地方获取这些信息,否则它将如何执行地址转换?
现在我想我知道hwere虚拟地址信息来自。它来自pc计数器的应用程序本身,它将它传递给CPU,然后CPU进行转换。
它不驻留在任何地方,它是虚拟的。唯一的物理表现形式是由操作系统和交换文件维护的页面映射表。 –
不存在的邮政地址在哪里?他们不。地址没有物理存在。这是您可以用来查找*确实存在的信息的信息。虚拟地址就是用来定位映射到进程地址空间的数据的信息。地址本身不“驻留”在任何地方。 – jalf
但是你确实从某个地方得到了邮政地址。否则,你会如何找到存在? –