内存管理单元MMU的一个重要功能是使系统可以运行多个任务,让这些独立的程序可以运行在各自的私有虚拟内存空间。它们不需要知道系统的物理内存映射,即地址由硬件进行访问,或其他程序可能在同时执行。
你可以对每个程序使用相同的虚拟内存地址。即使物理内存粹片化,你仍可以工作在一个连续的虚拟内存映射。系统中虚拟地址映射与实际上的物理内存映射是分开的。你可以在虚拟内存空间进行写,编译,和编译应用。
在下图中显示了一个例子,系统中描述了虚拟和物理内存的视角。在单个系统中不同的处理器和设备可能有不同虚拟和物理地址映射。OS对MMU编程来在这两种内存视角中进行转换。
为实现它,虚拟内存系统中的硬件必须提供地址转换,该转换由处理器发起的虚拟地址转化为主存中的物理地址。
当在内存中放置代码时,你(编译器和链接器)使用的是虚拟地址。实际的物理系统使用的是物理地址。
MMU使用虚拟地址的最高位来在转换表中索引页表项,并建立访问哪个块。MMU将代码的虚拟地址转化为实际系统中的物理内存。转换自动在硬件中进行并对应用透明。除了地址转换,MMU控制内存访问权限,内存顺序和内存每个区域的cache策略。
MMU使任务或应用能够不用知道系统的物理内存映射,或其他程序可以在同时执行。这让你可以对多个程序使用相同的虚拟内存地址空间。
即使物理内存不连续,它让你可以工作在连续的虚拟物理内存映射。虚拟地址和实际的物理内存映射使分开的。应用被写,编译和链接都运行在虚拟内存空间。