Linux ARM MMU在各种操作模式下的操作

Linux ARM MMU在各种操作模式下的操作,linux,arm,mmu,Linux,Arm,Mmu,在我提问之前,我会把我对这个话题的理解放在前面 Linux内核模式对应于ARM监控模式 Linux用户模式对应于ARM用户模式 在内核模式下(启用MMU),Linux使用相对地址而不是物理地址。物理地址=相对地址-页偏移量+物理偏移量 在用户模式下(启用MMU),Linux使用虚拟地址而不是物理地址。即,物理地址=使用pte、pmd、pgd的MMU转换(虚拟地址) 问题: MMU是否在管理器模式下启用(对于内核地址) 如果启用,则这是否意味着相同的MMU在转换主管模式和用户模式下以不同的方式工作

在我提问之前,我会把我对这个话题的理解放在前面

  • Linux内核模式对应于ARM监控模式
  • Linux用户模式对应于ARM用户模式
  • 内核模式下(启用MMU),Linux使用相对地址而不是物理地址。物理地址=相对地址-页偏移量+物理偏移量
  • 用户模式下(启用MMU),Linux使用虚拟地址而不是物理地址。即,物理地址=使用pte、pmd、pgd的MMU转换(虚拟地址)
  • 问题:

  • MMU是否在管理器模式下启用(对于内核地址)

  • 如果启用,则这是否意味着相同的MMU在转换主管模式和用户模式下以不同的方式工作

  • 如果MMU在不同的模式下以不同的方式工作,请给我一些关于MMU如何在不同模式下工作的提示


  • 提前谢谢。

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

    2:是的,因为它可以对特权(内核)和用户模式拥有不同的访问权限。ARM1176技术参考手册中提供了一个有点过时但在概念上很有用的表格来说明这一点

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