我的问题是“页表存储在哪里:在物理内存(RAM)中还是作为用户空间中的某些数据结构”。
PS:到目前为止,我的理解是:进程内存布局有几个段(代码/数据/堆/堆栈等)。由于现在不使用分段,因此使用分页,并且每个段将有许多固定大小的页面。每个段还将具有相应的虚拟地址空间(VAD)..这些将指向主页表,主页表将指向次页表,最后是指向磁盘中页框的 pte(??我希望这是正确的)。那么,如果 VAD 位于用户空间中,那么页表是否也驻留在用户空间中,还是存储在 RAM 中?
答案1
页表由内核通过内核内部数据结构处理。但体系结构决定了这些表的大部分格式。用户空间无法访问它们。
答案2
引自维基百科 -页表
有人提到,创建包含虚拟地址空间中每个虚拟页面映射的页表结构最终可能会造成浪费。但是,我们可以通过将页表放入虚拟内存并让虚拟内存系统管理页表的内存来解决过多的空间问题。
然而,该线性页表结构的一部分必须始终驻留在物理内存中为了防止循环页面错误,查找页表中不存在的关键部分,该部分在页表中不存在,等等。