版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 实验三 页面置换算法1 实验目的 在虚拟页式存储管理中,当每次发生缺页时,尽管可以随机选择一个页面置换,但是选择不常使用的页面会使系统性能好得多,如果一个经常使用的页面被置换出去,很有可能他很快又要被调入内存,带来不必要的额外开销。通过本实验加深对几种页面置换算法的理解,了解各种置换算法的执行方法。2 实验内容 分别模拟理想页面置换算法(OPT),先进先出页面置换算法(FIFO),最近最少使用页面置换算法(LRU),输出如P202页的表格。3 实验环境VC6.0,C,Windows4 数据结构/内存页面结构体struct PAGEint cp;/内存页面所存的当前页面 struct PAGE
2、 *next;/指向后续页面的指针;程序中采用链结构五实验结果截屏六实验源代码# include # include # define MAX1 15/输入的页面最多为15页# define MAX2 10/所分配的内存页面数做多为5页int cpageMAX1;/存放输入的页面int ctotal;/用户输入的页面总数int stotal;/内存分配的页面数int recordMAX1MAX2;/记录每页的历史存放情况int length;/链表当前长度char chMAX2;/记录缺页情况/内存页面结构体struct PAGEint cp;/内存页面所存的当前页面 struct PAGE
3、*next;/指向后续页面的指针;typedef struct PAGE PG;PG *s;/链表头指针PG *e;/链表尾指针/遍历链表,判断该页是否在内存int isInlink(int page)PG *q = s-next; while(q != NULL)if(q-cp = page)return 0;/在,返回0elseq = q-next;return 1;/不在,返回1/在LRU算法中,若当前页在内存,则调整链表,将当前页放到表头void transt(int page) PG *q = s-next,*r; while(q-cp != page) r = q;q = q-ne
4、xt;if(q = e)e = r;r-next = q-next;q-next = s-next;s-next = q;/将新页插到表头void insertHead(PG *p)if(s-next = NULL)e = p;p-next = s-next;s-next = p;/删表尾void deletetail()PG *q,*r;q = s-next;while(q-next != e)q = q-next;q-next = NULL;r = e;e = q;delete r;/判断在后stotal - 1页中是否出现int isInnext(int page1,int page2
5、) for(int i = 1;i stotal;i+)if(page1 next;if(page = ctotal-1) deletetail(); return; for(q;q != NULL;q = q-next) if(isInnext(page,q-cp) = 0)/如果该页在后几页中未出现r-next = q-next;if(q = e)e = r;delete q;return;else r = q;/先进先出置换算法void FIFO() int i; for(i = 0;i cp = cpagei; p-next = NULL; if(length next; for(c
6、= 0;c cp; q = q-next; /最近最少使用置换算法void LRU() int i; for(i = 0;i cp = cpagei; p-next = NULL; if(length next; for(c = 0;c cp; q = q-next; /OPT置换算法void OPT() int i; for(i = 0;i cp = cpagei; p-next = NULL; if(length next; for(c = 0;c cp; q = q-next; void main()while(1)int choice;printf(选项:n);printf( 1.FI
7、FO算法n);printf( 2.LRU算法n);printf( 3.OPT算法n);printf( 4.退出 );printf( 请选择:);scanf(%d,&choice);if(choice = 4) exit(-1);s = (PG*)malloc(sizeof(PG);s-next = NULL;e = s;length = 0;printf(nn请输入所要运行的页面总数,应小于%d:,MAX1);scanf(%d,&ctotal);while(ctotal MAX1) printf(输入的页面数大于%d,请重新输入:,MAX1); scanf(%d,&ctotal);int i,
8、j; printf(请输入页面走向:);for(i = 0;i MAX2) printf(输入的页面数大于%d,请重新输入:,MAX2); scanf(%d,&stotal); /初始化记录组for(i = 0;i ctotal;i+)for(j = 0;j stotal;j+) recordij = -1; for(j = 0;j ctotal;j+) chj = v;/默认不缺页 printf(n );for(i = 0;i ctotal;i+)printf( %d,cpagei); if(choice = 1)FIFO(); else if(choice =2)LRU();else OPT(); for(i = 0;i stotal;i+)printf(n页%d: ,i+1);for(j = 0;j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 月考学习总结(3篇)
- 让小学生热爱英语的策略分享
- 设计小学数学作业的四大误区
- 语文大专解读卷
- 语文课件婴宁的学习
- 豪华别墅装修协议示范
- 质量保证投标
- 购买牛只协议书
- 购销合同中的价格管理与调整
- 购销合同协议书编写要点
- 中华人民共和国突发事件应对法知识培训
- 幼儿园故事绘本《卖火柴的小女孩儿》课件
- 10以内口算题每页50道
- 计算机毕业设计java微信小程序的英语学习激励系统ssm前端vue论文
- 精干高效企业人力资源管理方法探析
- 著名外企安全培训资料之:LOF危害因素识别
- 最新挡圈标准
- 在新社会阶层人士联谊会成立大会讲话
- 安德森症状评估量表
- 石化行业安全事故案例分析
- 诺瓦科技LED联网播放器TB2-4G规格书
评论
0/150
提交评论