为什么内核将内核主页表添加到进程的页表中?

时间:2014-12-22 13:54:25

标签: linux linux-kernel

为什么内核将内核主页表添加到进程的页表?它可以与所有进程共享,如果主页表在任何时候发生变化那么内核还需要更新所有进程的页表吗?

1 个答案:

答案 0 :(得分:2)

每个进程都需要页表的内核部分才能访问内核内存(例如,处理中断或系统调用)。

内核是否实际需要单独更新所有进程的页面映射取决于页面映射的完成方式。

对于处于保护模式的基于x86的系统,页面映射使用包含对一组页表的引用的页目录来完成,而这些页表又用于管理特定内存块中的每个页面。
因此,必须将特定页面的更改取出到特定页面表中。但是因为使用特定于进程的页面目录引用了页表,所以不需要为每个进程复制内核页表,即。所有特定于进程的页面目录都可以引用同一组内核页表 因此,对内核页表的更改不需要复制到每个进程,因为它已经(由于通过页面目录引用)并且因此只有处理器'必须更改内存地址查找表,以便从内存加载新映射 由于此部件高度依赖于使用中的实际硬件,因此这可能不适用,即。理论上可能存在一个处理器,内核需要将内核页面更改复制到每个进程。