操作系统首次读取文件时是否发生页面错误?

时间:2019-03-07 03:34:25

标签: operating-system

Stackoverflow的Hello OS专家。

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

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

据我所知...

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

  2. 页面错误将要求按需分页。内核查找所需页面的磁盘地址并计划磁盘操作(I / O计划)。

但是,我从顾问那里收到一条提示,即在第一次打开并读取文件时不会发生页面错误。

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

1 个答案:

答案 0 :(得分:0)

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

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