【问题标题】:Does page-fault occur when Operating System reads a file for the first time?操作系统第一次读取文件时会发生页面错误吗?
【发布时间】:2019-07-28 20:35:57
【问题描述】:

来自 Stackoverflow 的操作系统专家您好。

我一直在努力找出当操作系统在 Intel 架构 x86 中首次读取文件时是否发生页面错误。

我很好奇操作系统在用户空间应用程序在 open syscall 之后调用 read syscall 之后将如何处理。

据我所知...

  1. 读取系统调用后,内核访问页表中当前未被内存管理单元映射的无效页并引发页错误。

  2. 页面错误将调用请求分页。内核查找所需页面的磁盘地址并调度磁盘操作(I/O调度)。

但是,我收到了顾问的提示,即第一次打开和读取文件时不会发生页面错误。

这是真的吗?我一直在寻找一个明确的答案,但没有任何成功。是否有可能解释页面错误是否发生在第一个文件读取时?

【问题讨论】:

    标签: operating-system


    【解决方案1】:

    这取决于文件的读取方式。如果文件作为内存映射文件被读取,则几乎可以肯定会发生页面错误。

    如果通过缓冲区读取,系统可能会要求将缓冲区锁定在内存中。但是,将数据传输到用户缓冲区时可能存在页面文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-28
      • 2015-09-27
      • 2015-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多