代码之家  ›  专栏  ›  技术社区  ›  Sijith

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

  •  0
  • Sijith  · 技术社区  · 16 年前

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

    5 回复  |  直到 16 年前
        1
  •  0
  •   mdma    16 年前

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

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

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

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

        2
  •  1
  •   TkTech    16 年前

    Singularity 而且还有性能优势,主要是因为它不再需要进行上下文更改,文件/符号加载器也不再需要对全局缓存和内核函数进行地址转换。

    你需要对你要找的东西更具体一点。您将文章标记为OSX和Linux,这两个版本都需要虚拟内存。当在没有MMU(因此没有虚拟内存)的系统上运行时,它会模拟MMU,我敢肯定这是无法避免的。我绝对不是专家。

        3
  •  1
  •   Clifford    16 年前

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

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

        4
  •  0
  •   Paul R    16 年前

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

        5
  •  0
  •   Community Mohan Dere    9 年前

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

    Difference between flat memory model and protected memory model?