第二次机会页面置换算法(Second Chance)SCR
SCR本身是FIFO的改进,本质是寻找一个在最近的时钟间隔内没有被访问的页面 。
工作方式的核心是:按照FIFO选择置换页面时,检查它的访问位。
工作过程如下:
访问位=0时,淘汰本页。
访问位=1时,给本页第二次机会,并选择下一个FIFO页面。
当一个页面得到第二次机会时,访问位清为0,它的到达时间置为当前时间,该页如果在此期间被访问过,则访问位置为1。这样,被给了第二次机会的页面将不会被淘汰。
整个过程简化一下,视作一个环形队列,用一个指针指示哪页是下面要淘汰的。
举个例子
页面请求序列为7,0,1,2,0,3,0,4,2,3,0,3,2,1,3,2 假设内存可以容纳4个页面,整个过程如下
1.初始状态为空,编号为7,0,1,2四个页面依次调入内存,访问位置为1
2.继续访问0号页面,页面已经存在,无需修改。
3.访问3号页面,页面不在内存中,按照FIFO原则依次选择置换页面同是检查访问位,7,0,1,2号页面访问位均为1,修改为0,修改完成后指针回到1号帧(7号页面),则将7号页面换出,3号页面换入1号帧,并将访问位修改为1,指针移动到2号帧,表示下一个要淘汰的页面时2号帧的0号页面。
4.继续访问0号页面,页面已经存在,访问位修改为1,指针移动至下一个访问位为0的页面,即指向下一个要淘汰的页面。
5.访问4号页面,页面不在内存中,此时指针指向1号页面,将1号页面换出,4号换入,并将访问位修改为1,指针移动到下一个要被淘汰的页面。
6.访问2号页面,页面存在,修改访问位为1,指针移动。
7.接下来继续按顺序访问3,0,3,2号页面,页面都已存在,无需调换,访问位置1。
8.访问1号页面,按照FIFO原则依次检查3,0,2,4号页面访问位,依次置为0,指针回到3号页面,则3号页面换出,1号换入,访问位置为1,此时指针移动到0号页面,表示下一次要淘汰的页面。
9.访问3号页面,不在内存中,将指针指向的0号页面调出,3号调入,置访问位为1,指针移动到4号页面,表示下一次要淘汰的页面。
10.访问2号页面,在内存中,访问位置为1。
总结:
缺页率=8/16
按照FIFO原则整个过程如下:
缺页率=9/16