3

我从以下网址阅读了 Duartes 的文章:http: //duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory

在描述 PTE 内容的部分,bit [0:11] 与 ARMv5 Architecture Reference Manual 中的描述不同

详情是:

PTE 的位 [0:11] 包含:

  • 在 Duartes 文章中:位 0:P(当前),位 1:R/W,位 2:U/S(用户/主管),...
  • 在 ARMv5 Architecture Reference Manual 中:Bits[1:0]标识描述符的类型(0b11 标记一个精细的页表描述符),Bits[4:2]:这些位的含义是 IMPLEMENTATION DEFINED,...

(参见: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0198e/ I16780.html)。我认为 ARMv5 Architecture Reference Manual 中的 Second-level descriptor 与 Duartes 文章中的 PTE 是对应的。

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

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

谢谢

4

2 回答 2

3

由于每个架构以不同的方式实现其 MMU(内存管理单元),因此 PTE 描述符取决于架构。

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

最后,不同架构的 Linux 操作系统表现相同。这一切都与操作系统如何使用特定架构提供的硬件机制有关,因为每种机制各有利弊。

于 2013-08-30T09:11:10.043 回答
2

ARM Linux代码根据 ARM 的类型和其他条件而有所不同。pgtable.hpage.h和大部分pgtable-2level.h给出了一些细节。有两个版本的PTE值;一种用于 Linux,另一种用于硬件。

于 2013-06-04T13:54:00.907 回答