gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 17:40:06 24 4
gpt4 key购买 nike

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

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

我怀疑这不是通过软件完成的,因为为磁盘提供某种页表来映射所有地址空间的成本太高,因为它会自动使 I/O 操作数量加倍,并且使用大量内存,但是还有其他方法吗?

谢谢!

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

最佳答案

MMU 除了将虚拟地址转换为物理地址之外不负责任何其他事情。它不执行磁盘访问或任何操作。

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

  1. 在页表中将要交换到磁盘的区域标记为无效,这样会导致访问时出现页面错误
  2. 当程序访问该区域时,MMU 会引发页面错误,并将控制权交还给操作系统
  3. 推断哪个页面已被访问并将适当的数据从磁盘加载到内存
  4. 将页表中的相应条目标记为有效,并将其指向包含先前加载的数据的内存
  5. 将控制权返回到加载指令之前的程序,以便重试内存访问
  6. 程序现在会从当前有效的页面中读取数据

关于memory - 分页/页面错误处理程序 - 如何使用虚拟地址查找磁盘上的特定内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27308003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com