深入理解MMU的工作过程

发布时间 2023-09-18 14:01:34作者: 球球小世界

MMU: Memory Manage Unit - 存储器管理单元

1. 虚拟存储器的实现 (Virtual Memory)

虚拟存储器的基本思想是程序, 数据, 堆栈的总的大小可以超过物理存储器的大小, 操作系统把当前使用的部分保存在内存中, 而把其他未被使用的部分保存在磁盘上。 

2 MMU的实现

任何时候, 计算机上都存在一个程序能够产生的地址集合, 我们称之为地址范围。 这个范围的大小由CPU的位数决定。 例如一个32位的CPU, 它的地址范围是0~0xFFFFFFFF(4G), 而对于一个64位的CPU, 它的地址范围为0~0xFFFFFFFFFFFFFFFF (64T). 这个范围就是我们的程序能够产生的地址范围, 我们把这个地址范围称为虚拟地址空间, 该空间中的某一个地址我们称之为虚拟地址。

在没有使用虚拟存储器的机器上, 虚拟地址被直接送到内存总线上, 使具有相同地址的物理存储器被读写。 而在使用了虚拟存储器的情况下, 虚拟地址不是被直接送到内存地址总线上, 而是送到内存管理单元 - MMU. 它由一个或一组芯片组成, 一般存在于处理器中, 其功能是把虚拟地址映射为物理地址。 

mmu开启以后会有以下特点

  1. 多个程序独立运行
  2. 虚拟地址是连续的(物理内存可以有碎片)
  3. 允许操作系统管理内存

 而MMU使用虚拟地址中最重要的位来索引转换表中的条目, 并确定正在访问哪个块。 除了地址转换之外, MMU还可以控制每个内存区域的内存访问权限, 内存顺序和缓存策略。