【发布时间】:2014-07-25 05:58:35
【问题描述】:
我正在使用 4GB 内存的系统。我创建了一个 4GB 的大文件并用零初始化它。
我开始逐个整数地读取大文件。
我发现无论文件有多大,页面错误(主要)的数量都是零。
我使用 FILE 指针和文件描述符读取文件。在这两种情况下,我都没有发现任何页面错误(主要)。
为什么会这样?程序中的页面错误是否仅在发生内部交换时发生?
如果是,您能否推荐一个会导致页面错误的 C 程序。
我正在使用 Ubuntu 12.04,我的计算机规格:4GB 内存,500 GB 硬盘
提前致谢
【问题讨论】:
-
使用 mmap 读取文件
-
文件在这里无关紧要。要查看页面错误,您必须访问大量虚拟内存。这段记忆来自哪里并不重要。您可以使用 mmap 进行映射,也可以使用 malloc 进行分配。
标签: c page-fault