0

在以下链接中; https://www.openhub.net/p/f9-kernel F9 微内核在 Cortex M 上运行,但 Cortex M 系列没有 MMU。我对 MMU 和虚拟内存的了解有限,因此有以下问题。

  1. 对于没有 MMU 的每个进程,如何防止整个物理内存的可见性?
  2. 是否可以在没有 MMU 的情况下通过一些静态内存设置来实现隔离。(然后有足够的片上 RAM 来运行我的应用程序和内核,对于我的有限进程来说只是不同的硬编码内存区域)。但是我仍然不会阻止访问吗?
4

2 回答 2

1

ARM Cortex-M 处理器缺少 MMU,并且在一些实现中可选内存保护单元 (MPU),例如 STMicroelectronics 的 STM32F 系列。

与其他 L4 内核不同,F9 微内核专为仅 MPU 环境而设计,针对支持 ARMv7 受保护内存系统架构 (PMSAv7) 模型的 Cortex M3/M4 进行了优化。PMSAv7 兼容系统的系统地址空间受 MPU 保护。此外,可用的 RAM 通常很小(大约 256 KB),但可以借助位带使用更大的物理地址空间(最多 32 位) 。

受 MPU 保护的内存被划分为一组区域,支持的区域数量由 IMPLEMENTATION DEFINED 支持。例如,STM32F429提供了 8 个独立的内存区域。在 PMSAv7 中,最小保护区域大小为 32 字节,最大为 4 GB。MPU 提供对以下各项的完全访问权限:

  • 保护区
  • 重叠保护区
  • 访问权限
  • 将内存属性导出到系统

MPU 不匹配和权限违规调用可编程优先级 MemManage 故障处理程序。

F9 微内核中的内存管理,可以分为三个概念:

  1. 内存池,它表示具有特定属性的 PAS 区域(在 mem 映射表中硬编码)。
  2. 地址空间 - 绑定到特定线程的 fpage 的排序列表。
  3. 灵活页面 - 与 L4 中的传统页面不同,fpage 代表 MPU 区域。
于 2017-02-05T11:20:30.803 回答
0

对,但是 ....

完全不需要 MMU,只是变得不那么方便和灵活了。实际上,任何提供某种形式的隔离(例如 MPU)的东西都可能足以让系统工作——假设您确实需要隔离。如果您出于某种原因不需要它并且只想让内核进行调度,那么内核也可以在没有 MMU 或 MPU 的情况下执行此操作。

于 2018-11-28T16:22:02.463 回答