Memory management 在使用页表的操作系统中,页表是否为空?

Memory management 在使用页表的操作系统中,页表是否为空?,memory-management,linux-kernel,operating-system,paging,page-tables,Memory Management,Linux Kernel,Operating System,Paging,Page Tables,在研究卷影分页机制时,我了解到一种情况,即卷影分页表一开始是空的,只有在来宾VM访问内存时才被填充。这让我想到了传统的页面表格。当操作系统运行时,页面表变为空(可能是页面表的进程终止时),我认为页面表将作为内存的空闲页面释放 在正常操作期间是否存在空页表甚至空页目录表?我能想到的三个例子是: 当操作系统启动时——但我的理解是,像Linux这样的现代操作系统以实模式启动,然后切换到分页模式,在此期间,我可以想象进程1会获得自己的带有内核映射的页表。这是正确的吗 如果页面表中的最后一个有效条目被取

在研究卷影分页机制时,我了解到一种情况,即卷影分页表一开始是空的,只有在来宾VM访问内存时才被填充。这让我想到了传统的页面表格。当操作系统运行时,页面表变为空(可能是页面表的进程终止时),我认为页面表将作为内存的空闲页面释放

在正常操作期间是否存在空页表甚至空页目录表?我能想到的三个例子是:

  • 当操作系统启动时——但我的理解是,像Linux这样的现代操作系统以实模式启动,然后切换到分页模式,在此期间,我可以想象进程1会获得自己的带有内核映射的页表。这是正确的吗

  • 如果页面表中的最后一个有效条目被取消映射或交换出去,但我也读到无效条目可用于存储交换地址,所以不能确切确定

  • 当产生一个新进程时(尽管我认为类似于1),一个新进程是通过内核映射和链接库映射启动的,因此它在启动时已经有了一个小的页面表


  • 更新:我了解到,即使在阴影页表中,它开始时是“空的”,但它仍然有一些到虚拟机监控程序内存的映射,因此即使这样,页表也不是真正空的。

    空页表没有任何意义,所以我要说

    如果您指的是一个特定的表,那么将其留空是对内存的浪费。如果您有一个空的页表,您可以释放它,在指向页表的地方,您告诉CPU没有页表。例如,如果一级页面表为空,您可以在二级页面表中输入一个条目,说明“此地址没有一级页面表”,而不是在二级页面表中指向该表

    如果您指的是整个页面表集,那么根本就没有页面了,那么CPU无法在没有页面表的情况下运行任何指令(除非页面已关闭),因此这仍然是一个否。CPU将出现三重故障(x86)并重新启动