此算法又称为第二次机会算法;大致有两种思路:
思路1:
王道讲解的:
思路2:
清华大学陈渝讲解的:
刚开始接触时,觉得有一个是错误的,但不知道是哪个错误,其次清华大学这个也不太理解。尤其是讲到例子:当页面e进入时,为什么a(11)变成了a(00),b(11)变为了b(00).经过多次听讲终于明白了(参考自操作系统(RISC-V) - 清华大学 - 学堂在线;爆肝上传!清华大佬终于把困扰我大学四年的【计算机操作系统】讲的如此通俗易懂_哔哩哔哩_bilibili):
它是从指针开始的位置开始扫描,
只要遇到(0,0) 则直接进行置换,并伴随的指针的后移;
只要遇到(0,1)变为(0,0),指针后移;
只要遇到(1,0)变为(0,0),指针后移;
只要遇到(1,1)变为(0,1),,指针后移;
指针一直循环扫描。
所以当e页面进入时,第一轮为:a(01) b(01) c(00) d(00) 第二轮 a(00) b(00),页面c为00,所以调出页面c,调入页面e(10),且指针下移,指向页面d。
使用此种思路和王道思路发现最后殊途同归,结果一致,但本人认为还是清华的思路更为简洁,清楚。