好的,我们来详细解析一下嵌入式系统中内存管理单元(MMU) 的功能与作用。
这是一个非常核心的概念,对于理解现代嵌入式操作系统(如 Linux、Android)至关重要。
一、核心概述:MMU 是什么?
MMU(Memory Management Unit,内存管理单元) 是计算机硬件中的一个专用部件,通常集成在处理器(CPU)内部。它的核心工作是处理CPU发出的内存访问请求,负责将虚拟地址转换为物理地址。
你可以把它想象成一个非常高效且聪明的“翻译官”和“交通警察”,负责管理CPU和物理内存之间的所有访问。
二、MMU 的核心功能
MMU的功能可以归纳为以下三个主要方面:
1. 地址翻译 (Address Translation)
这是MMU最根本的功能。
虚拟地址(Virtual Address): CPU程序(进程)运行时所看到的地址空间。每个进程都认为自己独享整个地址范围(例如从0到4GB)。
物理地址(Physical Address): 实际内存硬件(DRAM芯片)上的真实地址。
MMU的作用就是通过查询页表(Page Table),实时地将程序使用的虚拟地址映射到物理内存上的物理地址。 这个过程对应用程序是完全透明的,应用程序无需关心自己的数据实际存放在物理内存的哪个位置。
2. 内存保护 (Memory Protection)
这是提升系统稳定性和安全性的关键功能。 MMU可以为特定的内存区域(通常是4KB大小的“页”)设置访问权限属性,例如:
可读(Read)
可写(Write)
可执行(Execute)
作用:
防止程序间互相干扰:一个用户进程不能随意写入或读取操作系统内核或其他进程的内存数据。
防止代码注入攻击:可以将数据内存(如栈、堆)标记为不可执行(NX位),即使恶意代码被注入到这些区域,也无法运行。
避免程序自身错误:如果程序意外地试图向只读内存(如代码段)写入数据,MMU会