mmu 是什么?为什么需要 mmu ?

1. 什么是 mmu

​ mmu (Memory Management Unit) 即内存管理单元,是 cpu 可选的硬件模块。

2. mmu 能做什么

​ 用于在 CPU 和内存之间实现虚拟内存管理,主要功能是将虚拟地址转换为物理地址。什么是虚拟内存?为什么需要虚拟内存到物理内存的转换?为什么需要 mmu 这个硬件?

2.1 什么是虚拟内存

​ 在编程人员使用角度,虚拟内存与物理内存都是一串数字(地址),只不过在访问虚拟内存时,cpu 发出的地址访问命令总先被 mmu 来劫持,而不是直接通过总线发送到内存控制器上。

2.2 为什么需要虚拟内存

​ 通过虚拟内存这一层封装,使得系统上的所有应用程序都能访问同样的地址,也就是对于单独一个应用程序而言,像是独享了系统的内存,而实际上会通过 mmu 这个硬件将这些地址映射到不同的物理内存地址上。

2.3 为什么需要 mmu 这个硬件

​ mmu 可以实现虚拟内存到物理内存的转换,应用程序访问的虚拟内存具体落实到那个物理内存上面,由 mmu 与该应用程序的虚拟地址到物理地址的转换表决定。虚拟地址到物理地址的转换表存放在物理内存上面,是由操作系统根据 mmu 这个硬件来为应用程序建立的一张转换表。因此,每个应用程序都有一张内容不同的转换表,这样应用程序就能够访问同一个地址,但物理地址不同,同时也不会访问到其他应用程序的物理内存。

3. mmu 存在的意义

​ 通过 mmu,可以为每个应用程序建立虚拟内存到物理内存的转换关系、内存访问权限,这样子能够有机会去限制应用程序只能访问该访问的地方,使得应用程序对内存的访问变的可控,而不是通过一条指针修改任意内存。让系统从内存上隔离用户程序与内核程序,增强了系统的安全性与可控性。

4. 思考

​ 能用软件实现一套 mmu 的机制吗?应该是不行,cpu 取程序指令的动作没办法进行 hook,如果 cpu 内部执行单元产生的内存地址信号能够有机会通过软件 hook 就有可能。相反,如果 mmu 存在且启用,cpu 执行单元产生的地址信号在发送到内存芯片之前将被 mmu hook 住,这个地址信号称为虚拟地址(virtual address),简称 VA,mmu 通过内存转换表(内存转换表的地址要告诉 mmu)把 VA 翻译成另一个地址(实际物理地址)。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值