Linux内核:进程页表位于何处?

时间:2011-06-20 14:57:49

标签: linux-kernel virtual-memory

仅由内核使用,它们应该只位于PAGE_OFFSET之上的地址中。但我正在阅读this页面,并在最后(在IRC convo中)我读了以下几行,这让我很困惑:

 saxm> riel:  so where do page tables reside? Surely not below PAGE_OFFSET? Somewhere above PAGE_OFFSET+896mb then?

riel> they could reside anywhere

saxm> anywhere from 0->4gb (on x86 with no pae)?

riel> saxm: yeah

我的意思是,为什么他们会低于PAGE_OFFSET?如果是这种情况,用户空间进程是否能够访问它们?

1 个答案:

答案 0 :(得分:4)

我认为瑞尔试图说的是,他们可以(几乎)驻留在物理内存的任何地方 - 没有固定的映射。

页面表映射到内核虚拟地址空间(即在PAGE_OFFSET之上),并且对用户空间是不可见的(正如您指出的那样,这是有意义的,因为我们不希望用户破坏他们自己的页表)。 / p>

看一下这篇相关文章: Does Linux use self-map for page directory and page tables?