【发布时间】:2023-03-15 18:49:01
【问题描述】:
为什么我们需要内存管理单元?
似乎内存管理单元的唯一任务是将虚拟地址转换为物理地址。这不能在软件中完成吗?为什么我们需要另一个硬件设备呢?
【问题讨论】:
标签: memory-management paging virtual-memory virtual-address-space
为什么我们需要内存管理单元?
似乎内存管理单元的唯一任务是将虚拟地址转换为物理地址。这不能在软件中完成吗?为什么我们需要另一个硬件设备呢?
【问题讨论】:
标签: memory-management paging virtual-memory virtual-address-space
MMU (Memory Management Unit) 是大多数硬件平台上可用的硬件组件,可将虚拟地址转换为物理地址。这种翻译带来以下好处:
可以部分实现软件翻译机制。例如,对于重定位,您可以查看gcc's fpic 的实现。但是,软件机制不能提供内存保护(这反过来又会影响系统的安全性和可靠性)。
【讨论】:
-fpic 与虚拟内存无关。在没有虚拟地址的环境中,它的工作方式完全相同。 (但它会在更多时候有用。虚拟寻址让可执行代码每次都加载到相同的虚拟地址,而不管还运行什么。)
-fpic 可以在没有 MMU 的 Linux 系统中进行某种重定位。
CPU 使用 MMU 组件的原因是为了使逻辑到物理地址的转换对执行进程透明。在软件中执行此操作需要停止以处理进程的每次内存访问。另外,如果记忆翻译是由软件完成的,那么您会遇到先有鸡还是先有蛋的问题,那么该软件的记忆翻译由谁来完成。
【讨论】: