执行了合适的和处理器相关的动作并找到了包括错误(发生)的虚拟地址的有效的虚拟内存, < page fault 的处理过程又成为通用的,并可用于 Linux 能运行的所有处理器。通用的 page fault 处理代码查找错误虚拟地址的页表条目。如果它找到的页表条目是交换出去的页, < Linux 必须把此页交换回物理内存。交换出去的页的页表条目的格式和处理器相关,但是所有的处理器都将这些页标为无效并在页表条目中放进了在交换文件中定位页的必要信息。 < Linux 使用这种信息把此页调回到物理内存中。
参见 mm/memory.c do_no_page()
这时, Linux 知道了错误(发生)的虚拟地址和关于此页交换到哪里去的页表条目。 < Vm_area_struct 数据结构可能包括一个例程的指针,用于把这块虚拟内存中的页交换回到物理内存中。这是 < swapin 操作。如果这块内存中有 < swapin 操作, < Linux 会使用它。其实,交换出去的系统 < V 的共享内存之所以需要特殊的处理因为交换的系统 V 的共享内存页的格式和普通交换页的不同。如果没有 swapin 操作, Linux 假定这是一个普通页,不需要特殊的处理。它分配一块空闲的物理页并将交换出去的页从交换文件中读进来。关于从交换文件哪里(和哪一个交换文件)的信息取自无效的页表条目。