可能根本不需要虚拟内存,而只需要物理内存即可运行(实际上,大多数嵌入式系统都以这种方式运行)。怎么样?

use*_*463 3 embedded operating-system computer-architecture

我正在学习计算机体系结构,并碰到一个说法:“完全没有虚拟内存就可以运行,而只有物理内存(实际上,大多数嵌入式系统都以这种方式运行)”。

是这样吗?如果是,那么我想知道如何?

谢谢。

Cli*_*ord 6

不使用虚拟内存的嵌入式系统通常作为单个进程或线程运行,或者支持多线程而不是多处理任务模型。也就是说,所有线程/任务共享一个公共地址空间,但具有单独的堆栈(尽管也位于单个地址空间中)。

在具有MMU并支持虚拟内存的处理器上,只需不配置MMU或至少具有一对一映射的静态MMU配置,以使物理地址和MMU地址相同,或者至少使它们相同,即可完成此操作只有一个虚拟地址空间。

嵌入式系统中使用的许多中低端架构,例如PIC,AVR,ARM7,ARM Cortex-M,Zilog Z8等,都缺少MMU,并且与典型的ARM9 / 11 / Cortex-A相比,其内存资源通常要小得多。或基于x86的系统。

为了在无MMU的系统中提供多线程支持,通常应使用实时操作系统(RTOS)。大多数RTOS(带有一些值得注意的例外)是带有IPC和同步原语的简单任务计划程序,它们不使用也不支持MMU。QNX和VxWorks等高端RTOS支持MMU,尽管在VxWorks中它是可选的。

uCLinux是针对处理器的GPOS,这些处理器具有足够的内存资源来运行Linux,但缺少诸如ARM7和Cortex-M之类的MMU。尽管可以说,没有MMU的Linux却错过了使用Linux的主要优势之一,同时缺乏硬实时性能,并且需要大内存;一个典型的RTOS内核需要少于10kBytes的代码。


Gea*_*phy 2

虚拟内存只是物理内存的一种呈现方式,以便每个进程都有独立的内存空间。这种间接寻址是通过称为MMU (内存管理单元)的特殊硬件单元实现的。

早期的计算机系统只是直接使用物理内存。这导致了安全问题,即一个用户可以访问同一系统上所有其他用户的进程内存。虚拟内存通过将每个进程的内存空间分开来解决这个问题。

  • 是的,μClinux 是 Linux 的一个变体,它的构建无需虚拟内存即可运行 http://en.wikipedia.org/wiki/%CE%9CClinux (4认同)