1. 缺页异常的处理流程
缺页中断的处理过程:
-
CPU读内存单元,在TLB中根据其虚拟地址匹配物理地址,未命中,读页表;
-
由于页表项的存在位为0,CPU产生缺页异常;
-
OS 查找到保存在外存中对应的应用的页面内容;
-
如有空闲物理页帧,把外存中的页面内容换入到某空闲物理页帧中;
-
如无空闲物理页帧,通过置换算法释放/换出某物理页帧到外存,再把外存中的页面内容换入到某空闲物理页帧中;
所谓清空需要注意,如果里面的数据被修改过,把这数据还写回硬盘中,如果没有被修改,直接给它释放了,因为和硬盘中对应的那个数据是一样的,没必要再写回,它已经是最新的,这时候把这个页从被使用状态变成空闲状态,再完成从硬盘把相应数据读进来,然后设置页表项,然后再重新执行这一过程。
-
修改页表项,建立虚拟页到物理页帧的映射,存在位置1;
-
OS返回到应用程序,让处理器重新执行产生缺页异常的读内存单元指令。