[源码和文档分享]基于C++的请求分页虚拟页面替换算法
一、需求分析
实现OPT、FIFO、LRU、Clock等页面替换算法。接收用户输入参数,包括程序长度(页面数)、页框个数及页面大小,输出结果采用不同颜色区分命中、替换及直接加入空闲块。
-
OPT(最佳置换算法):其所选择的被淘汰页面将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面,但是由于无法预知一个进程在内存中的若干个页面中,哪一个页面是未来最长时间内不被访问的,因而该算法无法实现
-
FIFO(先进先出页面是换算法):该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰
-
LRU(最近最久未使用置换算法):只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰
-
Clock:使用的较多的一种LRU近似算法
二、概要设计
-
FIFO算法:在该模拟系统中,使用队列来存储页面并且按照其到达队列的先后顺序进行排序,因此,每次需要进行页面替换时,便选择队首或者标识符指示其驻留时间最长的页面进行替换
-
LRU算法:同样使用数组队列来模拟,数组下标指示位置,而数组值则作为标识符来计算该页面自最后一次被访问到现在为止经历了多长时间,当选择被置换的页面时,则扫描该数组队列,找到标识符最大的页面进行替换
-
Clock算法:同样使用数组队列来模拟,数组下标指示内存位置,而数组值则作为标识符在替换过程中发挥作用。当选择被替换的页面时,则扫描该数组队列,检查数组值,若值为0,则进行替换;若数组值为1,则将数组值置为1,继续扫描下一个数组值。若扫描完毕没有合适的页面进行替换时,则对数组进行第二次扫描
参考文档和完整的文档和源码下载地址: