一、内存管理单元 MMU 介绍内存管理单元简称 MMU,它负责虚拟地址到物理地址的映射,并
提供硬件机制的内存访问权限检查。MMU 使得每个用户进程拥有自己独立的地址空间,并通过
内存访问权限的检查保护每个进程所用的内存不被其他进程破坏。
重点就在于地址映射:页表的结构与建立、映射的过程。
1、S3C2440 MMU 地址变换过程
1)地址的分类
一个程序在运行之前,没有必要全部装入内存,仅需要将那些要运行的部分先装入内存,其余部
分在用到时从磁盘载入,当内存不足时,再将暂时不用的部分调出到磁盘。
这使得大程序可以在较小的内存空间中运行,也使得内存中可以同时装入更多的程序并发执行,
这样的存储器一般称为虚拟存储器。
虚拟地址最终需要转换为物理地址才能读写实际的数据,通过将虚拟地址空间和物理空间划分为
同样大小的空间(段或页),然后两个空间建立映射关系。
由于虚拟地址空间远大于物理地址,可能多块虚拟地址空间映射到同一块物理地址空间,或者有
些虚拟地址空间没有映射到具体的物理地址空间上去(使用到时再映射)。
ARM cpu 地址转换涉及三种地址:虚拟地址(VA,Virtual Address)、变换后的虚拟地址
(MVA,Modified Virtual Address)、物理地址(PA,Physical Address)
没有启动 MMU 时,CPU 核心,cache,MMU,外设等所有部件使用的都是物理地址。
启动 MMU 后,CPU 核心对外发出虚拟地址 VA;VA 被转换为 MVA 供 cache,MMU 使用,在
这里 MVA 被转换成 PA;最后使用 PA 读取实际设备
①CPU 核心看到和用到的只是虚拟地址 VA,至于 VA 如果去对应物理地址 PA,CPU 核心不理
会
②caches 和 MMU 看不到 VA,他们利用 MVA 转换得到 PA
③实际设备看不到 VA、MVA,读写它们使用的是物理地址 PA
MVA 是除 CPU 核心外的其他部分看到的虚拟地址,VA 与 MVA 的变化关系
如果 VA<32M,需要使用进程标识号 PID(通过读 CP15 的 C13 获得)来转换为 MVA