MMU(内存管理单元)的作用
MMU是Memory Management Unit的缩写,中文名是内存管理单元,有时称作分页内存管理单元。它是一种负责处理中央处理器(CPU)的内存访问请求的计算机硬件。以下是MMU的主要作用:
1、地址映射
首先需要先理解以下两个概念:
- 虚拟地址
这是对整个内存(不要与机器上插那条对上号)的抽像描述。它是相对于物理内存来讲的,可以直接理解成“不直实的”,“假的”内存,例如,一个0x08000000内存地址,它并不对就物理地址上那个大数组中0x08000000 - 1那个地址元素;
之所以是这样,是因为现代操作系统都提供了一种内存管理的抽像,即虚拟内存(virtual memory)。进程使用虚拟内存中的地址,由操作系统协助相关硬件,把它“转换”成真正的物理地址。这个“转换”,是所有问题讨论的关键。
有了这样的抽像,一个程序,就可以使用比真实物理地址大得多的地址空间。甚至多个进程可以使用相同的地址。不奇怪,因为转换后的物理地址并非相同的。
可以把连接后的程序反编译看一下,发现连接器已经为程序分配了一个地址,例如,要调用某个函数A,代码不是call A,而是call 0x0811111111 ,也就是说,函数A的地址已经被定下来了。没有这样的“转换”,没有虚拟地址的概念,这样做是根本行不通的。 - 物理地址
物理地址(Physical Address)是CPU地址总线上传来的地址,是内存单元(一个字节)的真正的地址。在实地址模式下,物理地址是CPU进行内存访问时使用的真实地址。在虚拟地址模式下,物理地址是虚拟地址经过转换后的实际地址。
在物理地址中,每个字节都有一个唯一的地址与其对应。由于物理地址空间是有限的,操作系统需要采用一定的内存管理技术(如分页、分段等)来有效地利用物理内存,并实现进程的内存隔离。
当CPU要读写数据时,它先发出一个地址到内存的总线上,这个地址是CPU提供的地址,再由内存管理单元(MMU)把地址从虚拟内存地址转换成物理地址。这时,这片地址对应的物理内存上的数据就被读入到CPU内部进行处理了。

2、内存保护
MMU通过权限检查来防止进程访问非法的内存区域。每个虚拟内存页或段都可以被赋予不同的访问权限(如读、写、执行),当进程尝试访问一个被禁止的区域时,MMU会引发一个异常(如页错误或段错误),操作系统可以捕获这个异常并采取相应的处理措施。
3、分页和分段
MMU支持分页和分段两种内存管理机制。分页是将物理内存和虚拟内存划分为固定大小的块(页),并为每个页分配一个唯一的标识符。分段则是将内存划分为可变大小的区域(段),并为每个段分配一个唯一的标识符。这两种机制都允许操作系统更加灵活地管理内存资源
分页机制的核心是:
1)将实际的物理页分割成若干个4KB大小的存储空间
2)虚拟地址被分割为由若干虚拟页号(VPN)和实际页空间内偏移地址(VPO)两个部分
3)实际的页空间偏移地址在虚拟地址向物理地址转化过程中不变,我们只需根据虚拟地址的页号(VPN)找到最终实际页号(PPN)就可以实现地址转化


4、支持虚拟内存
虚拟内存是操作系统中一种重要的内存管理技术,它允许进程使用的内存超过物理内存的大小。当物理内存不足时,操作系统可以将部分内存页交换到磁盘上的交换空间(swap space)中,并在需要时再将它们加载回物理内存。MMU负责处理这种交换过程,确保进程在访问内存时不会受到物理内存大小的限制。
5、加速地址转换
为了提高性能,MMU通常使用了缓存机制(如TLB,Translation Lookaside Buffer)来加速地址转换过程。当进程访问内存时,MMU首先会检查TLB中是否已经有相应的地址转换条目,如果有则直接使用,否则才会去查询地址映射表。

浙公网安备 33010602011771号