2010-05-09 46 views
0

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

如果所有任务共享公用地址空间,那么我们如何避免虚拟到物理内存映射。

回答

0

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

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

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

虚拟内存的优势远大于弊。为什么你想避免虚拟内存。

0

这就是一些较老的操作系统,甚至一些缺乏虚拟机的现代操作系统如何工作。它对桌面和服务器应用程序有很多缺点,但在嵌入式和/或实时环境中,或硬件最少的情况下,它可能很有用。

1

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

你确实需要更具体一点关于你在找什么。您将帖子标记为OSX和Linux,这两者都需要虚拟内存。当在没有MMU的系统上运行(并且因此没有虚拟内存)时,它会模拟它,我相当肯定你不能规避它。我不是任何方式的专家。

1

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

所以“如何”的一个答案是“使用uClinux”。

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

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

0

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

在堆栈溢出此链接将有助于更好地

Difference between flat memory model and protected memory model?