读取大文件时出现页面错误

时间:2014-07-25 05:58:35

标签: c page-fault

我正在使用4GB ram的系统。我创建了一个4GB的大文件,并用零初始化它。

我开始用整数读取大文件整数。

我发现无论文件有多大,页面错误(主要)的数量都为零。

我使用FILE指针和文件描述符读取文件。在这两种情况下,我都没有发现任何页面错误(主要)。

为什么会这样?只有在进行内部交换时才会发生程序中的页面错误吗?

如果是,您可以建议一个会导致页面错误的C程序。

我正在研究Ubuntu 12.04,我的电脑规格:4GB内存,500 GB Hardisk

提前致谢

1 个答案:

答案 0 :(得分:2)

当您尝试访问虚拟内存中的数据 时会发生页面错误,并且它在RAM中不可用。使用read()fscanf()之类的I / O函数从文件中读取不会这样做;您直接从磁盘请求文件的内容,而不是通过虚拟内存访问

如果使用mmap()将文件映射到虚拟内存然后尝试访问该内存,则会在文件内容自动加载时看到页面错误。