低端嵌入式系统有进程隔离吗?

Do low-end embedded system have process isolation?

正在研究内存管理。特别是,我正在研究 MMU 以及进程逻辑 space 页和 RAM 帧之间的映射。 我的问题是:低端嵌入式系统呢?如果我是正确的,MMU 不能在这个系统中使用,因为它们的内存较小。那么可用内存较少的计算机如何避免进程间共享内存的问题呢?

对于嵌入式系统,您所说的那种 MMU 仅存在于 high-end 微控制器中,例如 PowerPC 或 Cortex A。

Low-end 到 mid-range 微控制器通常有一些更简单的 MMU 形式。不像用于创建虚拟内存部分那样先进,而是一种更简单的类型,它允许重新映射 RAM、闪存、寄存器等。同样,它们通常有各种机制来保护内存的某些部分免受意外写入。他们可能足够聪明,也可能不够聪明,无法“MMU-like”意识到代码是从数据存储器执行的,或者当数据访问发生在代码存储器中时。哈佛与冯诺依曼架构在这里也很重要。

至于一个RTOS中的多进程,是无法与台式电脑中的多进程相提并论的。 RTOS 中的每个进程通常都有自己的堆栈,但仅此而已——MMU 不参与其中,但它由 RTOS 处理。嵌入式系统中的代码通常直接从闪存执行,因此像在 PC 中那样为可执行代码分配 RAM 内存块没有意义。多个进程将简单地执行来自闪存的代码,进程之间可能是相同的代码或不同的代码,这取决于它们是否共享公共代码。

同样,在嵌入式系统中使用堆分配是没有意义的(参见 Why should I not use dynamic memory allocation in embedded systems?),因此我们也不需要为此目的创建 RAM 映像。每个进程唯一保留的是堆栈,以及 .data/.bss.

的单独部分