MMU与页表

MMU全称Memory Management Unit(内存管理单元),是CPU中负责虚拟内存与物理内存管理的核心硬件模块,为现代多任务/多用户操作系统提供基础 。

核心功能
  • 地址转换:把程序用的虚拟地址(VA)通过页表映射为内存真实的物理地址(PA),支持虚拟内存机制。
  • 内存保护:对内存页设置读/写/执行权限,隔离用户/内核空间,防止越界访问与恶意操作。
  • 多进程隔离:让每个进程拥有独立虚拟地址空间,互不干扰,是系统稳定运行的关键 。
  • 虚拟内存扩展:配合操作系统的交换空间(swap),用磁盘空间扩展可用内存,实现按需分页。
  • 加速转换:通过**TLB(快表)**缓存地址映射关系,大幅降低转换延迟,提升性能。
关键概念
  • 页表:OS维护的地址映射表,MMU通过它完成VA到PA的转换。
  • 缺页中断:访问不在物理内存的页时,MMU触发中断,OS负责将页从磁盘载入内存并更新页表。
  • SMMU:系统内存管理单元,用于I/O设备的地址转换与保护,常见于虚拟化场景 。
  • MMU vs MPU:MMU具备完整虚拟内存与保护能力;MPU仅提供内存保护,无地址转换与虚拟内存支持 。
应用场景
  • 电脑、手机等通用计算设备的多任务/多用户系统。
  • 服务器虚拟化与容器化环境,保障租户隔离与资源安全。
  • 嵌入式高性能处理器(如ARM Cortex‑A系列),支持复杂OS与多应用运行。

一句话总结:MMU是CPU的"内存翻译官+保安",没有它就没有现代操作系统的稳定与灵活。

MMU 不是 页表,二者是硬件核心模块与软件映射数据结构的从属关系,MMU 是依靠页表才能完成核心工作的。

  1. MMU 是硬件:是集成在CPU里的物理电路模块,负责执行地址转换、权限校验的实际操作。
  2. 页表是软件数据结构:是操作系统在内存中维护的一张映射表,存储着虚拟地址与物理地址的对应关系、内存权限等信息。
  3. 核心协作逻辑:程序给出虚拟地址后,MMU 会主动去内存中读取页表的映射数据,完成地址转换和权限检查,没有页表,MMU 就没有执行依据,无法完成工作。

补充两个关键区分点,帮你彻底分清:

  • 归属不同:MMU 属于硬件层面(CPU组件),页表属于软件层面(OS维护的内存数据)。
  • 作用不同:MMU 是"执行者",页表是"执行手册",二者缺一不可,共同实现虚拟内存管理。

MMU与页表:内存管理的硬件与软件核心差异

在现代操作系统的内存管理体系中,MMU(内存管理单元)和页表是两个核心组件,前者是硬件执行核心,后者是软件映射依据,二者的协作是虚拟内存机制实现的关键。以下从多个维度对比二者的核心差异:

对比维度 MMU(内存管理单元) 页表
核心定义 CPU集成的硬件电路模块,内存管理的核心执行部件 操作系统在内存中维护的软件映射数据结构,存储地址映射关系
核心归属 硬件层面(属于CPU核心组件) 软件层面(由操作系统创建、维护与更新)
核心作用 执行者:完成虚拟地址→物理地址转换、内存权限校验、触发缺页中断 执行手册:提供地址映射的核心数据,包含VA-PA对应关系、内存读写执行权限
存在形式 物理实体(电路芯片),无存储能力 逻辑数据(内存中的表格数据),仅用于存储映射信息
工作依赖关系 必须依赖页表提供的映射数据,无页表无法完成任何地址转换工作 依赖MMU读取并执行映射规则,无MMU则仅为无效数据,无法落地内存管理
核心操作方 硬件自动执行,无需程序手动干预 操作系统手动维护(创建、更新、销毁),缺页中断时会动态修改
性能优化关联 自带TLB(快表)缓存常用映射关系,提升地址转换速度 支持多级页表、大页机制,减少自身占用内存,适配不同内存场景
核心目标 高效完成地址转换与内存保护,保障硬件层面执行效率 精准存储映射信息,适配多进程独立虚拟地址空间的软件需求

核心协作逻辑

  1. 进程发起内存访问,向CPU传入虚拟地址;
  2. CPU调用MMU进行地址转换,MMU先查询TLB缓存,无结果则读取内存中的页表;
  3. MMU依据页表完成虚拟地址到物理地址的映射,并校验内存访问权限;
  4. 权限合法则访问物理内存,无映射则触发缺页中断,由操作系统更新页表后重试;
  5. 权限非法则触发内存访问异常,终止进程或进行系统告警。
相关推荐
刘某的Cloud37 分钟前
ceph osd 导入导出 rbd volume 卷
linux·运维·ceph·volume
酸菜。3 小时前
dw_axi_dmac总结
linux
神奇霸王龙3 小时前
Agent 准入门控屠夫:5 旗舰 4 维度评估
linux·运维·数据库·ai·ai作画·agent·ai编程
zlinear数据采集卡4 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
ACP广源盛139246256734 小时前
蚂蚁百灵 Ling‑3.0‑flash 开源 + 昇腾 0‑Day 原生适配@ACP#GSV9001E 在国产算力矩阵中的机会与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
小绫网络安全5 小时前
Kali Linux渗透测试入门教程:从零搭建到实战攻防
linux·运维·服务器
allforgood6 小时前
控制启动过程
linux·运维·服务器
西安景驰电子6 小时前
《PTP精确时间协议系列》第一篇:从原理到应用,全面解读IEEE 1588
linux·运维·服务器·开发语言·网络·windows·php
Rocktech_ruixun6 小时前
机器人端侧大模型部署对主板有哪些要求?瑞迅主控板分级方案对比
人工智能·嵌入式硬件·机器人
振南的单片机世界6 小时前
SysTick硬核拆解:既是HAL_Delay的“心跳”,也是RTOS的“节拍器”
arm开发·stm32·单片机·嵌入式硬件