小编iMi*_*ink的帖子

虚拟内存和MMU:什么时候使用,什么时候不使用?

我想知道当需要在地址空间中维护一些“固定”地址时,如何将虚拟内存系统与 MMU 一起管理。

例如,当机器启动时,CPU 开始从固定地址(映射到某种 ROM)读取第一条指令,然后为外围设备提供地址(如果使用内存映射 I/O 系统),然后然后操作系统被引导。我还知道中断例程和此类内容需要位于内存中的“固定”位置,并且这些内容由操作系统加载。

我可能认为MMU在这样的过程中被禁用,然后在操作系统加载后启用它。

我可能认为上面的进程使用系统地址空间,并且系统地址空间没有虚拟化,尽管用户地址空间实际上是虚拟化的。

这将导致物理地址池保持不变,以便访问 I/O 外设、中断例程等,以及由 MMU 管理的虚拟用户空间,进程可以在其中详细说明它们需要详细说明的所有数据,要求操作系统访问 I/O 外设。

但我不确定这些事情。那么我问你,MMU什么时候才真正启用呢?它处理所有地址,还是只处理用户空间的地址?即使系统正在运行,某些地址是否也可以绕过 MMU,以访问固定的内存位置?或者我错过了一些重要的线索?

memory cpu dma

4
推荐指数
1
解决办法
1946
查看次数

标签 统计

cpu ×1

dma ×1

memory ×1