Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 所有任务的单个公共地址空间_Linux_Macos_Embedded_Vxworks_Rtos - Fatal编程技术网

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

Linux 所有任务的单个公共地址空间,linux,macos,embedded,vxworks,rtos,Linux,Macos,Embedded,Vxworks,Rtos,如何为所有任务提供单个公共地址空间。如果发生这种情况,我们可以避免虚拟到物理内存映射 如果所有任务都共享公共地址空间,那么我们如何避免虚拟到物理内存映射。我不知道为什么要禁用虚拟内存映射-它是cpu的内置功能,在运行操作系统时非常重要,可以正确地将进程彼此隔离 大多数操作系统允许您禁用虚拟内存,因此您的内存容量受到物理内存的限制。然而,进程地址空间仍然是虚拟的,并且虚拟到物理的映射仍然在发生 获得所需内容的一种方法是运行以实模式执行的操作系统,如DOS或Windows 3.0,或者编写自己的操作

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


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

我不知道为什么要禁用虚拟内存映射-它是cpu的内置功能,在运行操作系统时非常重要,可以正确地将进程彼此隔离

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

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


虚拟内存的优点远远大于缺点。为什么要避免使用虚拟内存。

这就是一些较旧的操作系统,甚至是一些缺乏虚拟机的现代操作系统仍然可以工作的原因。它在桌面和服务器应用程序等方面有许多缺点,但在嵌入式和/或实时环境中,或者在硬件最少的情况下,它可能会很有用。

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

不过,你确实需要更具体地说明你在寻找什么。您将您的帖子标记为OSX和Linux,这两者都需要虚拟内存。当在没有MMU(因此没有虚拟内存)的系统上运行时,它会模拟MMU,我很确定这是无法避免的。无论如何,我都不是专家。

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

因此,“如何”的一个答案是“使用uClinux”

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

在支持MMU的RTO中,QNX可能是最健壮和成熟的RTO之一,同时仍保持高性能。

VxWorks AE(高级版支持)偏离了所有任务的公共地址空间概念。因此,它可以有效地用于有MMU和无MMU的两个系统。所有任务的公共地址空间称为平面内存模型,不同任务的单独地址空间称为重叠内存模型或分段内存模型。您不应混淆内存模型,内存布局如对象文件所示,将数据分为代码段、数据段、BSS等。这两个部分完全不同:)

堆栈溢出中的此链接将有更好的帮助