内容和数据结构定义
1.示例实验程序中模拟两种置换算法:LRU 算法和 FIFO 算法。
2.给定任意序列不同的页面引用序列和任意分配页面数目,显示两种
算法的页置换过程。
3.能统计和报告不同置换算法情况下依次淘汰的页号、缺页次数(页
错误数)和缺页率。
Page类
public class Page {
public int id;
public Page next;
public Page pre;
public Page(int id) {
this.id = id;
}
}
FIFO
遍历页面引用序列, 根据页号判断当前页面是否在队列 memery 中存在, 如果存在, 则打印相应
过程, 并结束本次循环. 如果不存在且内存中页面数目>=n, 则淘汰一页, 放入 eliminate 队列, 并将
当前访问的页调入队列 memery; 如果不存在且内存中页面数目<n, 则直接调入页面, 放入 memery
队尾.
淘汰的同时维护一个整形遍历哪个 shortTime, 记录缺页次数, 打印缺页等统计信息.
//类变量
public static Queue<Integer> memery = new LinkedList<>(); //内存中存在的页面队列
public static Queue<Integer> eliminate = new LinkedList<>(); //页面的淘汰队列
/**
*
* @param pageGo 页面引用序列
* @param n 内存中最大页面数目
*/
public void FIFO(int[] pageGo, int n) throws Exception {
if (n <= 0) {
throw new Exception("illegal param n = " + n );
}
int shortTime = 0;
for (int i = 0; i < pageGo.length; i++) {
if (memery.contains(pageGo[i])) {
System.out.println("调用页" + pageGo[i] + ",页存在");
}