operating-system - 当页面错误发生时,操作系统从哪里获得所需的磁盘地址?

标签 operating-system page-fault

当页表条目(PTE)没有被标记为有效时,这意味着所需的数据不在内存中,而是在磁盘上。所以现在页面错误发生了,操作系统负责将这页数据从磁盘加载到内存。

我的问题是,操作系统如何知道确切的磁盘地址?

最佳答案

您以系统相关的方式询问。未标记为有效的 PTE 可能意味着该地址在进程地址中根本不存在。系统可能有另一个位来指示地址有效但逻辑到物理映射不存在。

操作系统需要维护一个表,记录数据的存放位置。

数据可以存在于多个地方。
1. 可能是未初始化的数据,在任何地方都没有映射。通过清除物理页面并将其映射到进程地址空间来响应页面错误。

  • 它可能在页面文件中。
  • 某些系统具有单独的交换文件。
  • 它可能在可执行文件或共享库文件中。
  • 关于operating-system - 当页面错误发生时,操作系统从哪里获得所需的磁盘地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27579864/

    相关文章:

    c++ - 大量页面错误与内存碎片有什么关系?

    linux - page fault exception 抛出时,OS 是如何定位磁盘上还没有加载到内存中的内容的?

    c++ - 识别主要页面错误原因

    c++ - 如何检查目录中是否有打开的文件?

    linux - PCB存放在内存中的什么位置

    python - 为什么我的 Streamlit 应用程序会打开多次?

    linux - 如何在linux bash或python中检查两个文件是否在同一物理硬盘中?

    c++ - 使用 g++ 避免 C++ 程序中的小页面错误

    c - 了解分页虚拟内存的第一步 : Creating Page Table Entry upon Initial Page Fault

    assembly - 为什么 32 位应用程序可以在 64 位 x86 CPU 上运行?