4

在我提出问题之前,我将提出与该主题相关的理解,

  1. Linux 内核模式对应于ARM 管理员模式
  2. Linux 用户模式对应于ARM 用户模式
  3. 内核模式(启用 MMU)中,Linux 使用相对地址而不是物理地址。即,物理地址 = 相对地址 - PAGE_OFFSET + PHYS_OFFSET
  4. 用户模式(启用 MMU)中,Linux 使用虚拟地址而不是物理地址。即,物理地址 = 使用 pte 、 pmd 、 pgd 的 MMU 转换(虚拟地址)

问题:

  1. 是否在主管模式下启用了 MMU(用于内核地址)。

  2. 如果启用,那么这是否意味着相同的 MMU 在翻译主管模式和用户模式时以不同的方式运行。

  3. 如果 MMU 在不同的模式下以不同的方式发挥作用,请给我指点一下 mmu 的功能是如何在各种模式下发挥作用的。

提前致谢。

4

1 回答 1

1

1:是的。启用 MMU 可以在所有模式下启用它(尽管需要针对安全/非安全状态单独完成,但这超出了 Linux 的范围)。

2:是的,因为它可以对特权(内核)和用户模式具有不同的访问权限。可以在 ARM1176 技术参考手册中找到一个有点过时但概念上有用的表格来证明这一点。http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0333h/Caceaije.html

3:MMU 在所有模式下的功能都相同。好的,为了完整性:有一个叫做“域”的概念,内核可以使用它来完全绕过访问权限检查。不过,这在最新的处理器中已被弃用,并且不再用于 ARM11 和 Cortex-A 处理器。

于 2012-04-07T14:33:01.470 回答