分页允许机器在虚拟内存地址空间和真实内存地址空间之间提供一个间接层。在给出地址后,MMU遍历页面表并确定对应的帧是否在内存中。如果是,那么它已经找到了真正的地址和相关的指令可以执行。
但是,如果它不在RAM中呢?当MMU访问页面表并看到需要从磁盘中获取相应的帧时会发生什么?如何知道在磁盘中的位置?如何使用虚拟地址来映射磁盘中的特定内容?
我怀疑这不是通过软件完成的,因为为映射所有地址空间的磁盘设置某种页面表太昂贵了,因为它会自动将I/O操作的数量增加一倍,并使用大量的内存,但还有其他方法吗?
谢谢!
编辑: MMU不处理磁盘,只是告诉操作系统获取给定的页面。操作系统中的页面错误处理程序是从磁盘获取内容的工具,但是如何从磁盘中获取内容呢?
发布于 2014-12-06 06:31:27
除了将虚拟地址转换为物理地址之外,MMU不负责其他任何事情。它不进行磁盘访问或其他任何操作。
许多操作系统将内存交换到磁盘或将磁盘上的文件映射到虚拟内存地址空间的技巧通常是通过
发布于 2014-12-06 00:23:08
操作系统需要知道数据在哪里。当发生页面错误时,内存可能位于多个位置。从我的头顶上:
MMU不处理这件事。它所做的就是触发一个页面错误。操作系统故障处理程序必须识别正在访问的地址,定位所需的页(从上面的一个源),(必要时释放物理内存),分配物理内存页,将数据从页面加载到物理内存(如果它退出),退出异常处理程序重新启动导致页面错误的指令。
https://stackoverflow.com/questions/27308003
复制相似问题