我已阅读过来自http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory
的Duartes文章在描述PTE内容的部分中,位[0:11]与ARMv5架构参考手册中的描述不同
详情是:
PTE的位[0:11]包含:
(参见:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0198e/I16780.html)。我认为ARMv5架构参考手册中的第二级描述符与Duartes文章中的PTE相对应。
所以,问题是PTE描述符取决于平台(x86,ARM,...)?。
对我来说,我认为PTE描述符不应该依赖于平台。
由于
答案 0 :(得分:2)
ARM Linux 代码根据 ARM 的类型和其他条件而有所不同。 pgtable.h,page.h以及大多数pgtable-2level.h都提供了一些细节。有PTE
个值的两个版本;一个用于Linux,一个用于硬件。
答案 1 :(得分:2)
由于每个体系结构以不同方式实现其MMU(内存管理单元),因此PTE描述符依赖于体系结构。
如果我们看一下Linux,它有一个三级页表结构(继承自x86架构),它在大多数ARM平台上被包装以适应两级页表结构(较新的ARM支持3级)。 Linux还使用x86架构中可用的“脏”和“访问”位作为内核的内存管理逻辑。这些位在ARM体系结构中不可用,ARM Linux通过在软件中模拟它来解决这些问题。这是通过具有两个版本的PTE页表来完成的。一个用于包含这些缺失“位”的OS,另一个用于实际使用的HW。
最后,针对不同架构的Linux操作系统表现相同。所有这些都是关于操作系统如何使用特定架构提供的硬件机制,因为每个都有利弊。