缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问,在这个时候,被内存映射的文件实际上成了一个分页交换文件。
又名硬错误、硬中断、分页错误、寻页缺失、缺页中断、页故障 指的是当软件试图访问已映射在虚拟地址空间中,但是并未被加载在物理内存中的一个分页时,由中央处理器的内存管理单元所发出的中断。通常情况下,用于处理此中断的程序是操作系统的一部分。如果操作系统判断此次访问是有效的,那么操作系统会尝试将相关的分页从硬盘上的虚拟内存文件中调入内存。而如果访问是不被允许的,那么操作系统通常会结束相关的进程。虽然其名为“页缺失”错误,但实际上这并不一定是一种错误。而且这一机制对于利用虚拟内存来增加程序可用内存空间的操作系统中都是常见且有必要的。微软在较新版Windows的资源监视器中使用“硬错误”、“硬中断”这一术语来指代“页缺失”。
是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。
中断的次数 = 进程中的物理块 - 页面置换次数
页式虚拟存储器实现的一个难点是设计页面调度(置换)算法,即将新页面调入内存时,如果内存中所有的物理页都已经分配出去,就要按某种策略来废弃某个页面,将其所占据的物理页释放出来,好的算法,让缺页率降低。常见的有先进先出调度算法(FIFO,First In First Out),最近最少调度算法(LFU,根据时间判断),最近最不常用调度算法(LRU,Least Recently Used,根据使用频率判断),最佳置换算法(OPT ),时钟页面置换算法。
选择在内存中驻留时间最长的页面并淘汰它。
OS维护一个链表,记录了所有页面位于内存当中的逻辑页面,从链表的排列顺序来看,链首页面的驻留时间最长,页尾页面的驻留时间最短,当发生一个缺页中断时,把链首页面淘汰出去,并把新的页面添加到链表的末尾。
例如某请求分页式存储管理系统,接收一个共10页的作业。作业运行时的页面走向如下:1,5,2,1,3,2,4,7,2,4 假定系统为改作业分配了3块内存空间,内存页块初始均为空。
三个物理块先后加载的数据如下图所示:
进程运行时,先将1,5,2依次装入内存之中(初次加载也会激发缺页中断),进程访问页面1时,会发现最早进入队列中,有当前访问的页面,所以可以空出来(图中照抄上一队列),然后访问页面3,再把之前队列中【1,5,2】最早进入内存中的1换出,然后依次将当前访问的页面与之前队列中的页面进行置换。
FIFO算法还会产生当所分配的物理块数增大而页故障数不减反增的异常现象。
http://www.cnblogs.com/zhangbaochong/p/5827167.html
https://blog.csdn.net/FX677588/article/details/77915583 https://zhuanlan.zhihu.com/p/113699454