含义
当软件试图访问已映射在虚拟地址空间中,但是并未被加载在物理内存中的一个分页时,由中央处理器的内存管理单元所发出的中断。
说白了就是当前进程需要访问的内存页面暂时无法访问到
CPU获取内存中数据的流程
缺页中断会交给PageFaultHandler
处理,其根据缺页中断的不同类型会进行不同的处理:
-
Major Page Fault
这时物理内存中没有对应的页帧,需要CPU打开磁盘设备读取到物理内存中,再让MMU建立虚拟地址和物理地址的映射。
- 常见场景
- 从swap 回到物理内存
- 常见场景
-
Minor Page Fault
这时物理内存中是存在对应页帧的,发出缺页异常的进程不知道而已,此时MMU只需要建立映射即可,无需从磁盘读取写入内存。
- 常见场景
- 当一个进程在调用 malloc 获取虚拟空间地址后,首次访问该地址会发生一次soft page fault
- 通常是多个进程访问同一个共享内存中的数据,可能某些进程还没有建立起映射关系
- 常见场景
-
Invalid Page Fault
进程需要访问的内存地址不在它的虚拟地址空间范围内,进程通常会直接挂掉
- 常见场景
- 进程访问的内存地址越界访问
- 对空指针解引用
- 常见场景
参考文章