页表存储在哪里

Roo*_*nix 9 memory linux operating-systems memory-management

我的问题是“页表存储在哪里:在物理内存(RAM)中或作为用户空间中的某些数据结构”。

PS:到目前为止我所了解的:进程内存布局有几个段(代码/数据/堆/堆栈等)。由于现在不使用分段,因此使用分页并且每个分段将有许多固定大小的页面。每个段也将有相应的虚拟地址空间 (VAD)。这些将指向主页表,主页表将指向辅助页表,最后 pte 将指向磁盘中的页框(??我希望这是正确的)。那么,如果 VAD 在用户空间中,那么页表是否也驻留在用户空间中,或者它们存储在 RAM 中?

小智 6

引用自 wiki -页表

有人提到,创建包含虚拟地址空间中每个虚拟页的映射的页表结构最终可能会造成浪费。但是,我们可以通过将页表放入虚拟内存中,并让虚拟内存系统管理页表的内存来解决过多的空间问题。

然而,这种线性页表结构的一部分必须始终驻留在物理内存中,以防止循环页错误,循环页错误会查找页表中不存在的页表关键部分,而页表中不存在该部分。页表等


von*_*and 5

页表由内核通过内核内部数据结构处理。但是架构决定了这些表的大部分格式。Userland 无法访问它们。

  • 对不起,是的。它们被放置在 RAM 中。它们不能发送到磁盘(分页),因为需要它们来确定 RAM 中是否存在页面。操作系统代表用户进程管理虚拟内存,并负责确保页面表的任何部分都不包含在进程的虚拟内存空间中。 (2认同)