没有MMU的微内核可能吗



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

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

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

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

MPU保护的内存被划分为一组区域,并定义了支持的区域数量。例如,STM32F429提供了8个独立的存储器区域。在PMSAv7中,保护区域的最小大小为32字节,最大大小为4GB。MPU通过提供完全访问

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

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

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

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

是的,但是。。。。

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

相关内容

  • 没有找到相关文章

最新更新