《操作系统课程设计全局页面替换算法.doc》由会员分享,可在线阅读,更多相关《操作系统课程设计全局页面替换算法.doc(11页珍藏版)》请在三一文库上搜索。
1、长治学院课程设计报告课程名称: 操作系统课程设计 设计题目: 全局页面置换策略(FIFO算法) 系 别: 计算机系 专 业: 计算机科学与技术 组 别: 第六组 学生姓名: 李俊瑞 学 号: 08407112 起止日期: 2011年6月28日 2011年7月3日 指导教师: 王崇霞 9 / 11文档可自由编辑打印目 录1 、需求分析11.1.课程设计题目11.2课程设计任务及要求11.3课程设计思想11.4软、硬件运行环境及开发工具12 、总体设计22.1.系统总体结构流程图22.2程序设计及模块介绍23 、详细设计33.1.数据结构设计33.2程序流程图33.3具体代码设计34 、调试75
2、、总结与体会86、 参考文献91、 需求分析1.1课程设计题目全局页面置换策略(先进先出算法)1.2课程设计任务及要求1、设计主界面以灵活选择某算法,实现先进先出算法(FIFO)2、给出实现方案(包括数据结构和模块说明等)3、画出程序的基本结构框图和流程图4、分析说明每一部分程序的的设计思路5、实现源代码6、按期提交完整的程序代码和可执行程序7、根据要求完成课程设计报告8、总结1.3课程设计思想首先输入页面号,根据页面号的次序采用FIFO算法来查看缺页状况和缺页率。先进先出算法(FIFO)总是先淘汰最先调入主存的页面。设计目的:通过请求页式存储管理中页面置换算法模拟程序,了解虚拟存储技术的特点
3、,掌握请求页式存储管理的页面置换算法。1.4软、硬件运行环境及开发环境 运行环境:a.CPU: Intel 575 2.00GHzb.20G以上硬盘空间c.操作系统:Microsoft Windows XP开发工具: Microsoft visual c+ 6.02总体设计2.1.系统总体结构流程图:图2-1 系统总体结构流程图 2.2程序设计及模块介绍:核心程序如下: for (j=1;j<=3;j+) k=q->front+j;
4、0; if (ai=q->quek) cout<<ai<<"进入时已经命中!"<<endl; hit+; f+; 模块介绍:先进先出页面置换算法(FIFO)是基于程序局部性原理来考虑的,认为驻留时间最长的也不再使用得到可能性较大。FIF
5、O算法的一种实现方法是系统设置一张具有n个元素的页面表,在程序中采用数组建立动态顺序表来进行代码的编写及模块的设计。3、详细设计3.1数据结构设计#include <iostream.h>#define MAX 100#define flag typedef structint front,rear;int queMAX;queue;int max(int a,int b)return (a>b?a:b);3.2程序流程图先进先出页面置换算法(FIFO)的程序流程图如下: 图3-1程序流程图3.3.具体代码设计/先来先服务Avoid FIFO(queue *q,in
6、t a,int n)int k,f=0,i,j,m;double hit=0;for (i=0;i<n;i+) f=0; if (q->rear-q->front)<3) for (j=1;j<=q->rear-q->front;j+)/未满时的命中判断 k=q->front+j; if (ai=q->
7、;quek) cout<<ai<<"进入时已经命中!"<<endl; hit+; f+; if(f=0)
8、 q->rear+; q->queq->rear=ai; else for (j=1;j<=3;j+)/已满时的命中判断 k=q->front+j;
9、60; if (ai=q->quek) cout<<ai<<"进入时已经命中!"<<endl; hit+; f+; if (f=0) &
10、#160; q->front+; q->rear+; q->queq->rear=ai; for (m=q->front+1;m<=q->rear;m+)
11、160; cout<<q->quem<<'t' cout<<endl;cout<<"FIFO算法的命中率为"<<(hit/n)*100<<"%"<<endl;/主函数void main()char ch='y'while (ch='y') queue *q=new queue; q-&
12、gt;front=q->rear=-1; queue *p=new queue; p->front=p->rear=-1; queue *m=new queue; m->front=m->rear=-1; int data100; int i=0; int x; char y; cout<<"请输入页面号(
13、以结束):"<<endl; while (1) A: cin>>y; if(y<48|y>57)&&(y!='') cout<<"请输入数字!"<<endl;
14、160; goto A; if(y='') break; x=y-48; datai=x; i+; while (1) cout<<&
15、quot; *欢迎进行测试*"<<endl; cout<<" *
16、 *"<<endl; cout<<" * 1.先进先出算法(FIFO)
17、60; *"<<endl; cout<<" * 2.最近最久未使用算法(LRU)
18、0; *"<<endl; cout<<" * 3.最佳置换算法(OPT) *"<&l
19、t;endl; cout<<" * 4.算法之间的对比分析 *"<<endl;
20、; cout<<" * 5.结束本次算法 *"<<endl;
21、160; cout<<" *
22、; *"<<endl; cout<<" *"<<endl; char z;Y: cout<<"请输入你需要的操作序号(1-5):"<<endl
23、; cin>>z; switch (z) case '1': cout<<"FIFO算法:"<<endl; FIFO(q,data,i); &
24、#160; break; case '2': cout<<"LRU算法:"<<endl; LRU(p,data,i); brea
25、k; case '3': cout<<"OPT算法:"<<endl; OPT(m,data,i); break;
26、160; case '4':cout<<"1.先进先出置换算法(FIFO):选择最先进入内存的页面予以淘汰。 "<<endl;cout<<"2.最近最久未使用算法(LRU):选择在最近一段时间内最久没有使用过的页,把它淘汰。 "<<endl;cout<<"3.最佳置换算法(OPT) :选择以后永不使用或在最长时间内不再被访问的内存页面予以淘汰。"<<endl;
27、0; break; case '5':goto l; default:cout<<"输入有误!"<<endl; goto Y;
28、60; l:cout<<"是否重新输入页面号(y/n):"<<endl; cin>>ch;4、调试程序经编译链接后生成可执行文件,运行该程序进行调试,具体过程如下:4.1输入页面号,如下图所示:图4-1 输入页面号4.2进入主界面,如下图所示:图4-2 主界面4.3输入序号1,选择FIFO置换算法,结果如下图
29、所示:图4-3 FIFO置换算法4.4输入序号0,退出程序,如下图所示:图4-4 退出程序5、总结与体会FIFO的基本思想是用队列存储内存中的页面,队列的特点是先进先出,与该算法是一致的,所以每当发生缺页时,就从对头删除一页,而从队尾加入缺页。或者借助辅助数组timemSIZE记录物理中对应页面的进入时间,每次需要置换时换出最小的页面。通过这次课程设计,我对全局页面置换策略有了更深刻的认识,对于FIFO置换算法来讲,其淘汰的页面是最先调入主存的页面,它是基于程序局部性原理来考虑的。在课程设计的过程中也遇到不少困难,不过在同学和老师的帮助下勉强完成了自己的任务,不过自己在这方面的知识和认识有了更
30、进一步的了解。 最后,感谢王崇霞老师还有帮助过我的同学。在课程设计之初老师帮助我分析题目,以及实现方法,讲解整个软件的思路、过程,为以后的学习及考研打好了很好的基础。6、参考文献1 孙忠秀.操作系统教程 (第四版):高等教育出版社,2009.2 马石安,魏文平.Visual C+程序设计与应用教程.北京:清华大学出版社,2007.3 郑莉,张瑞丰.C+语言程序设计(第3版).北京:清华大学出版社,2004.4.严蔚敏,吴伟民.数据结构.北京:清华大学出版社,2005.指导教师评语: 指导教师签名: 年 月 日成绩评定项 目权重成绩1、设计过程中出勤、学习态度等方面0.12、设计技术水平0.43、编程风格0.24、设计报告书写及图纸规范程度0.3总 成 绩