《实验五——内存管理缺页调度算法》由会员分享,可在线阅读,更多相关《实验五——内存管理缺页调度算法(6页珍藏版)》请在金锄头文库上搜索。
1、实验五 内存管理实验实验目的实验目的:能过本次实验加深对 FIFO、LRU、OPT 几种页面替换策略的了解与认识。 实验过程实验过程:采用 C 或 VC 编写一个程序,模拟实现 FIFO、LRU、OPT 三种页面替换算法。 本程序采用 VC+6.0 编写,预先定义内存的量不超过 30(为什么?请阅读程序) 。事先设 计好页面总数(用表格列出) ,以及页面调用的走向。根据设计好的页面走向分析在三种不 同的替换策略下,替换页面的情况,并计算出缺页率。FIFO 算法:出发点在于总把内存块中停留时间最久的页面作为替换时的对象。LRU 算法:着眼点在于考虑内存块中页面的使用频率,它认为在一段时间里使用得
2、最 多的页面,将来用到的可能性就大。因此,当要进行页面淘汰时,总是把当前使用得最少 的页面淘汰出去。 OPT 算法:把以后不再使用的或在最长时间内不会用到的页面做为淘汰对象,这样使 缺页次数最小。1、设计页面走向: 2、实验结果:3、实验总结:附件: #include /预处理命令 #define M 30 /定义 M 值为 30 int N; /定义变量 N struct Pro /创建结构体 pro int num,time; /定义变量 num 和 time ; int Input(int m,Pro pM) /输入函数 coutm; /利用 cin 输入 m 的值if(mM)coutp
3、i.num; /以数字输入各页面号pi.time=0; /给 pi.time 赋值为 0return m; /正常结束向操作系统返回一个 m 值 void print(Pro *page1) /在屏幕上显示当前的页面 Pro *page=new ProN; /使用指针进行赋值page=page1; /将 page1 赋值为 pagefor(int i=0;iN; /输入 N 的值Pro pM; Pro *page=new ProN; /利用指针进行赋值char c; /定义变量 cint m=0,t=0; /定义变量 m 和 n 并且赋值为 0float n=0; /定义双精度变量 n 并且赋
4、值为 0m=Input(m,p); /输入函数 dofor(int i=0;ic; /输入 c 的值if(c=F) /FIFO 页面置换n=0;cout=0)i+; /找到相同的页面else /否则 if(t=N)t=0; /if 循环语句判断 telse n+; /n 自加paget.num=pi.num; /赋值print(page); /在屏幕上显示 page 值t+;/t 自加cout=0) /if 循环语句判断 t 值paget.time=0; /给页面使用时间赋值else /否则 n+; /n 自加t=Max(page); /赋值 tpaget.num=pi.num; /赋值页面号
5、paget.time=0; /赋值页面时间if(t=0)paget+1.time+;paget+2.time+; /if 循环语句当 t 等于 0 时if(t=1)page2.time+;page0.time+; /if 循环语句当 t 等于 1 时if(t=2)page1.time+;page0.time+; /if 循环语句当 t 等于 2 时if(k=-1) print(page); /if 循环语句当 t 等于-1 时 i+; /i 自加cout=0)i+; /if 循环语句进行查找调入页面else /否则int temp=0,cn; /定义自变量 tempfor(t=0;tN;t+)
6、 /for 循环语句 tN 时候 t 自加if(tempCompfu(page,i,t,p) /使用 if 循环语句判断自变量 temptemp=Compfu(page,i,t,p);cn=t; /赋值pagecn=pi; /赋值n+; /n 自加print(page); /在屏幕显示页面号i+; /i 自加cout“number of page lack:“n“Rate of page lack:“n/mendl; /利用 count 在 屏幕/上输出并且换行while(c=F|c=L|c=O); /利用 while 循环语句返回输入return 0; /当程序正确运行结束,向操作系统返回一个 0 值