内存 – 分页/页面错误处理程序 – 如何使用虚拟地址查找磁盘上的特定内容

分页允许机器在虚拟内存地址空间和真实内存空间之间提供一层间接.在给出地址之后,MMU遍历页表并确定相应的帧是否在存储器中.如果是,则它已经找到了真实地址并且可以执行相关指令.

但是,如果它不在RAM中呢?当MMU访问页表并看到需要从磁盘中获取相应的帧时会发生什么?它是如何知道它在磁盘中的位置?我们如何使用虚拟地址来映射磁盘中的特定内容?

我怀疑这不是通过软件完成的,因为对于映射所有地址空间的磁盘有一些页面表太昂贵,因为它会自动加倍I / O操作的数量并使用相当多的记忆量,但还有另一种方式吗?

谢谢!

编辑:除了告诉操作系统获取给定页面之外,MMU不处理磁盘.操作系统中的页面错误处理程序是从磁盘中提取内容的,但是如何?

最佳答案 除了将虚拟地址转换为物理地址之外,MMU不承担任何责任.它不进行磁盘访问或任何其他操作.

许多操作系统用来将内存交换到磁盘或将磁盘上的文件映射到虚拟内存地址空间的技巧通常可以使用

>将要交换到磁盘的区域标记为页表中的无效,以便在访问时导致页面错误
>当程序访问该区域时,MMU会引发页面错误,并将控制权返回给操作系统
> Deduce访问了哪个页面,并将适当的数据从磁盘加载到内存中
>将页表中的相应条目标记为有效,并将其指向包含先前加载的数据的内存
>在加载指令之前将控制权返回给程序,以便重试存储器访问
>该程序现在从现在有效的页面读取非智慧

点赞