ARMv8-A编程指导之MMU(1)

        内存管理单元MMU的一个重要功能是使系统可以运行多个任务,让这些独立的程序可以运行在各自的私有虚拟内存空间。它们不需要知道系统的物理内存映射,即地址由硬件进行访问,或其他程序可能在同时执行。

ARMv8-A编程指导之MMU(1)_第1张图片

        你可以对每个程序使用相同的虚拟内存地址。即使物理内存粹片化,你仍可以工作在一个连续的虚拟内存映射。系统中虚拟地址映射与实际上的物理内存映射是分开的。你可以在虚拟内存空间进行写,编译,和编译应用。

        在下图中显示了一个例子,系统中描述了虚拟和物理内存的视角。在单个系统中不同的处理器和设备可能有不同虚拟和物理地址映射。OS对MMU编程来在这两种内存视角中进行转换。

ARMv8-A编程指导之MMU(1)_第2张图片

        为实现它,虚拟内存系统中的硬件必须提供地址转换,该转换由处理器发起的虚拟地址转化为主存中的物理地址。

        当在内存中放置代码时,你(编译器和链接器)使用的是虚拟地址。实际的物理系统使用的是物理地址。

        MMU使用虚拟地址的最高位来在转换表中索引页表项,并建立访问哪个块。MMU将代码的虚拟地址转化为实际系统中的物理内存。转换自动在硬件中进行并对应用透明。除了地址转换,MMU控制内存访问权限,内存顺序和内存每个区域的cache策略。

ARMv8-A编程指导之MMU(1)_第3张图片

        MMU使任务或应用能够不用知道系统的物理内存映射,或其他程序可以在同时执行。这让你可以对多个程序使用相同的虚拟内存地址空间。

        即使物理内存不连续,它让你可以工作在连续的虚拟物理内存映射。虚拟地址和实际的物理内存映射使分开的。应用被写,编译和链接都运行在虚拟内存空间。

 

你可能感兴趣的:(ARMv8-A编程指导手册,MMU)