ARM内核中的页表条目(PTE)描述符

时间:2013-06-04 02:53:33

标签: linux-kernel arm

我已阅读过来自http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory

的Duartes文章

在描述PTE内容的部分中,位[0:11]与ARMv5架构参考手册中的描述不同

详情是:

PTE的位[0:11]包含:

  • 在Duartes文章中:位0 :P(现在),位1 :R / W,位2 :U / S(用户/主管),...
  • 在ARMv5架构参考手册中:位[1:0] 识别描述符的类型(0b11标记精细页表描述符),位[4:2] :这些位的含义是IMPLEMENTATION DEFINED,...

(参见:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0198e/I16780.html)。我认为ARMv5架构参考手册中的第二级描述符与Duartes文章中的PTE相对应。

所以,问题是PTE描述符取决于平台(x86,ARM,...)?。

对我来说,我认为PTE描述符不应该依赖于平台。

由于

2 个答案:

答案 0 :(得分:2)

ARM Linux 代码根据 ARM 的类型和其他条件而有所不同。 pgtable.hpage.h以及大多数pgtable-2level.h都提供了一些细节。有PTE个值的两个版本;一个用于Linux,一个用于硬件。

答案 1 :(得分:2)

由于每个体系结构以不同方式实现其MMU(内存管理单元),因此PTE描述符依赖于体系结构。

如果我们看一下Linux,它有一个三级页表结构(继承自x86架构),它在大多数ARM平台上被包装以适应两级页表结构(较新的ARM支持3级)。 Linux还使用x86架构中可用的“脏”和“访问”位作为内核的内存管理逻辑。这些位在ARM体系结构中不可用,ARM Linux通过在软件中模拟它来解决这些问题。这是通过具有两个版本的PTE页表来完成的。一个用于包含这些缺失“位”的OS,另一个用于实际使用的HW。

最后,针对不同架构的Linux操作系统表现相同。所有这些都是关于操作系统如何使用特定架构提供的硬件机制,因为每个都有利弊。