虚拟内存和内存管理单元

时间:2015-11-18 11:09:02

标签: memory-management paging virtual-memory virtual-address-space

为什么我们需要内存管理单元?

内存管理单元的唯一任务似乎是将虚拟地址转换为物理地址。这不能用软件完成吗?为什么我们需要另一个硬件设备?

2 个答案:

答案 0 :(得分:1)

MMU (Memory Management Unit)是大多数硬件平台上可用的硬件组件,可将虚拟地址转换为物理地址。这种翻译带来以下好处:

  • 交换:您的系统可以处理比实际可用内存更多的内存。例如,在32位体系结构上,无论可用的物理内存量如何,系统都“看到”4 GB的内存。如果您使用的内存大于实际可用内存,则将内存页面换出到交换磁盘上。
  • 内存保护:MMU通过阻止用户模式任务访问其他任务拥有的内存部分来强制执行内存保护。
  • 重定位:无论在运行时分配的实际地址如何,每个任务都可以使用某个偏移量的地址(例如,变量)。

可以部分实现软件转换机制。例如,对于重定位,您可以查看gcc's fpic的实现。但是,软件机制无法提供内存保护(这反过来会影响系统安全性和可靠性)。

答案 1 :(得分:0)

CPU的MMU组件的原因是使逻辑到物理地址转换对执行进程透明。在软件中执行此操作需要停止处理进程的每个内存访问。另外,如果内存翻译是由软件完成的,那么你就会遇到鸡蛋和鸡蛋的问题,那些软件会进行内存翻译。