我知道linux在内存管理中使用三级页表。
I got confused on the content of the page table.Does page table contains next level page tables base address or it contains page frame number?
If it contains page frame number then how base address for that particular page table is got?Where is it stored?
如果有人向我澄清这一点,那就太好了。
最佳答案
如果你在谈论 x86(/64),那么每个页表条目(终端除外)都包含下一个页表的物理地址,而终端 PTE 包含实际代码/数据的物理地址页面。
由于页表本身是按页面组织的,因此它们的物理地址自然是页面大小的倍数。
在 PTE 中存储完整的物理地址毫无意义,12 个最低有效位始终为零(如果页面大小为 4KB),因此它们不存储在 PTE 中(并且回收的空间在PTE 用于控制标志,例如内核/用户、只读/可写、可执行、存在、脏、已访问等)。像这样被截断的地址通常称为页框编号,因为它们只不过是页码(如果您从 0 开始计算地址 0 处的页面的所有页面,地址 4096 处的页面从 1 开始的所有页面,依此类推)。
您的问题的最终答案以及所有血淋淋的细节都在相关的 CPU 手册中。
关于linux - linux中的三级页表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12242868/