开始 输入内存数 调用各种置换算法,FIFO,LRU,OPT,并显示地址流、页面流、页面置换过程和命中率 命中率比较 结束
总模块图
入口 产生随机数、要调入的页面、离现在处理时间最长的页面、
初始化页面情况
Y
t1 直接存入内存 N 根据选择的算法进行 置换,缺页数加1 计算缺页率,并输出数据 结束 主程序图 5 6.程序设计 struct Pro //内存页的结构体 { int num; //记录页面号 int time; //页面从未被利用的时间 }; #define M 320 //定义指令条数 Pro P[M]; //产生的随机指令数组 void Input() //产生随机数 { int s; //随机数 int i; srand(time(0)); s = rand()%M; //cout<<\随机产生指令流------------\\n\ for (i=0; i p[i].num=s; //任选一指令访问点m p[i+1].num=p[i].num+1; //顺序执行一条指令 p[i+2].num=(int)((float)p[i].num*(rand()/(RAND_MAX+1.0))); //执行前地址指令m' p[i+3].num=p[i+2].num+1; //顺序执行一条指令 s=(int)((float)(319-p[i+2].num)*(rand()/(RAND_MAX+1.0))) + p[i+2].num; } for(i=0;i } int Search(int e,Pro*page1,int N) //查找内存中是否存在要调入的页面 { int t; Pro*page=new Pro[N]; page=page1; for(int i=0;i 6 } return -1; } int Max(Pro*page1,int N) //查找最久最久未被使用的页面 { Pro*page=new Pro[N]; page=page1; int e=page[0].time,i=0; while(i } int Compfu(Pro*page1,int i,int t,Pro p[M]) //找到最久不使用的页面 { Pro*page=new Pro[N]; page=page1; int count=0; for(int j=i;j 7.测试结果 选中算法,输入内存数点击计算 7 8

