【问题标题】:Page table entry (PTE) descriptor in Linux kernel for ARMARM 的 Linux 内核中的页表条目 (PTE) 描述符
【发布时间】:2013-05-30 08:00:23
【问题描述】:

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

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

详情是:

PTE 的位 [0:11] 包含:

  • 在 Duartes 文章中:bit 0:P(现在),bit 1:R/W,bit 2:U/S(用户/主管),...
  • 在 ARMv5 架构参考手册中: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 描述符不应该依赖于平台。

谢谢

【问题讨论】:

    标签: linux-kernel arm


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      ARM Linux 代码因 ARM 的类型和其他条件而异。 pgtable.hpage.h 和大多数 pgtable-2level.h 提供了一些细节。 PTE 值有两个版本;一种用于 Linux,另一种用于硬件。

      【讨论】:

      猜你喜欢
      • 2012-06-19
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 2013-05-19
      • 2019-01-29
      • 2015-06-18
      相关资源
      最近更新 更多