所有任务的单个公共地址空间

时间:2010-05-09 18:22:57

标签: linux macos embedded vxworks rtos

如何为所有任务提供单个公共地址空间。如果它发生这样,我们可以避免虚拟到物理内存映射。

我所有的任务共享公共地址空间然后我们如何避免虚拟到物理内存映射。

5 个答案:

答案 0 :(得分:1)

有一些现代(研究)操作系统可以做到这一点,比如Singularity,并且有性能优势,主要是因为它不再需要进行上下文更改,文件/符号加载器不再需要做地址翻译全局缓存和内核函数。

你需要更具体地了解你正在寻找的东西。您将帖子标记为OSX和Linux,这两者都需要虚拟内存。当在没有MMU(因此没有虚拟内存)的系统上运行时,它会模拟它,我相当肯定你无法规避它。我无论如何都不是专家。

答案 1 :(得分:1)

uClinux是Linux的一个实现,它运行在缺少MMU(例如ARM7)的处理器上,因此根据定义,所有任务都必须有一个地址空间。

所以对“如何”的回答是“使用uClinux”。

你标记了这个VxWorks,还有另一个答案; VxWorks支持平面内存。事实上,当我上次使用它时,MMU保护是一个(昂贵的)添加。许多其他为微控制器设计的RTOS同样不支持MMU,如eCOS和FreeRTOS。

RTOS的支持MMU,QNX可能是最强大和最成熟的,同时仍保持高性能。

答案 2 :(得分:0)

我不确定你为什么要禁用虚拟内存映射 - 它是cpu的内置函数,在运行操作系统以正确隔离进程时非常重要。

大多数操作系统允许您禁用虚拟内存,因此您的内存容量受物理内存的限制。但是,进程地址空间仍然是虚拟的,虚拟到物理映射仍在发生。

获得所需内容的方法是运行在实模式下执行的操作系统,例如DOS或Windows 3.0,或编写自己的操作系统。

虚拟内存的优势远远超过了缺点。为什么要避免虚拟内存。

答案 3 :(得分:0)

这是一些较旧的操作系统,甚至是一些缺乏VM的现代操作系统如何工作。它在桌面和服务器应用程序等方面有许多缺点,但它在嵌入式和/或实时环境中很有用,或者你的硬件很少。

答案 4 :(得分:0)

VxWorks AE(高级版支持)偏离了所有任务的公共地址空间的概念。因此它可以有效地用于MMU和没有MMU的系统。所有任务的公共地址空间称为平面内存模型并且通过重叠存储器模型或分段存储器模型调用不同任务的单独地址空间。您不应该将存储器模型与存储器布局混淆,如在将数据划分为代码段,数据段,BSS等的目标文件中所见。两者完全不同:)。

堆栈溢出中的这个链接将有助于更好地

Difference between flat memory model and protected memory model?