6.5.1  页故障的产生

  页故障的产生有三种原因:

   1) 一是程序出现错误,例如向随机物理内存中写入数据,或页错误发生在TASK_SIZE3G)的范围外,这些情况下,虚拟地址无效, Linux 向进程发送 SIGSEGV 信号并终止进程的运行;

   2) 另一种情况是,虚拟地址有效,但其所对应的页当前不在物理内存中,即缺页错误,这时,操作系统必须从磁盘映象或交换文件(此页被换出)中将其装入物理内存。这是本节要讨论的主要内容。

  3) 最后一种情况是,要访问的虚地址被写保护,即保护错误,这时,操作系统必须判断:如是用户进程正在写当前进程的地址空间,则发 SIGSEGV 信号并终止进程的运行。但是,如果错误发生在一旧的共享页上时,则处理方法有所不同,也就是要对这一共享页进行复制,这就是我们后面要讲的写时复制(Copy On Write 简称COW)技术

有关页错误的发生次数的信息可在目录proc/stat下找到。