流程图页面置换算法课程设计.doc
- 文档编号:1644709
- 上传时间:2022-10-23
- 格式:DOC
- 页数:17
- 大小:159KB
流程图页面置换算法课程设计.doc
《流程图页面置换算法课程设计.doc》由会员分享,可在线阅读,更多相关《流程图页面置换算法课程设计.doc(17页珍藏版)》请在冰豆网上搜索。
操作系统课程设计报告
题目:
页面置换算法模拟程序
学院名称:
专业班级:
学生姓名:
指导教师:
成绩:
目录
一、设计目的………………………………………………………3
二、设计题目…………………………………………………………3
2.1设计内容………………………………………………………………………3
2.2设计要求………………………………………………………………………3
三、设计过程…………………………………………………………4
3.1FIFO(先进先出)……………………………………………………………4
3.2LRU(最近最久未使用)………………………………………………………5
3.3OPT(最佳置换算法)…………………………………………………………6
3.4随机数发生器……………………………………………………………………7
四、完整代码……………………………………………………………7
五、运行结果演示………………………………………………………13
六、设计心得……………………………………………………………16
七、参考文献……………………………………………………………16
一、设计目的
操作系统是计算机教学中最重要的环节之一,也是计算机专业学生的一门重要的专业课程。
操作系统质量的好坏,直接影响整个计算机系统的性能和用户对计算机的使用。
一个精心设计的操作系统能极大地扩充计算机系统的功能,充分发挥系统中各种设备的使用效率,提高系统工作的可靠性。
由于操作系统涉及计算机系统中各种软硬件资源的管理,内容比较繁琐,具有很强的实践性。
要学好这门课程,必须把理论与实践紧密结合,才能取得较好的学习效果。
本课程设计是学生学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。
熟悉页面置换算法及其实现,引入计算机系统性能评价方法的概念。
二、设计题目:
页面置换算法模拟程序
2.1设计内容
编制页面置换算法的模拟程序。
2.2设计要求
1).用随机数方法产生页面走向,页面走向长度为L(15<=L<=20),L由控制台输入。
2).根据页面走向,分别采用Optinal、FIFO、LRU算法进行页面置换,统计缺页率。
3).假定可用内存块为m(3<=m<=5),m由控制台输入,初始时,作业页面都不在内存。
4).要求写出一份详细的设计报告。
课程设计报告内容包括:
设计目的、设计内容、设计原理、算法实现、流程图、源程序、运行示例及结果分析、心得体会、参考资料等。
三.设计过程
3.1FIFO(先进先出)
设计原理:
需要进行页面置换,即把内存中装入最早的那个页面淘汰,换入当前的页面。
算法流程图:
Y
i++
把p[i]的内容直接装入最上面一个空内存块,i++
把page[]中最先装入的页面置换出去.i++
Page[]是否有空
当前p[]中第i个元素是否已在内存中
页面走向存入数组p[]中,内存块用page[]表示初始化为0
开始
N
Y
N
输出当前内存块状态
结束
3.2LRU(最近最久未使用)
设计原理:
开始
当需要淘汰某一页时,选择离当前时间最近的一段时间内最久没有使用过的页先淘汰。
该算法的主要出发点是,如果某页被访问了,则它可能马上还要被访问。
或者反过来说,如果某页很长时间未被访问,则它在最近一段时间也不会被访问。
算法流程图:
页面走向存入数组p[]中,内存块用page[]表示初始化为0
Y
当前p[]中第i个元素是否已在内存
i++
N
N
Page[]是否有空
Y
结束
把p[i]的内容直接装入最上面一个空内存块,i++
输出当前内存块状态
把page[]中最近最久未使用的页面置换出去.i++
3.3OPT(最佳置换算法)
设计原理:
需要进行页面置换,把内存中以后一段时间都不使用或是使用时间离现在最远的页面换出。
流程图
开始
Y
i++
结束
输出当前内存块状态
把page[]中以后一段时间都不使用或是使用时间离现在最远的换出.i++
把p[i]的内容直接装入最上面一个空内存块,i++
Page[]是否有空
当前p[]中第i个元素是否已在内存
页面走向存入数组p[]中,内存块用page[]表示初始化为0
N
N
Y
3.4随机数发生器
#include
#include
t=time(NULL);//取时钟时间并存入t调用库函数
srand(t);//用时间t初始化随机数发生器调用库函数
x=rand()%10+1;//返回一个1~10之间的随机数
四.完整代码
#include
#include
#include
#include
#defineL20//页面走向长度最大为20
intM;//内存块
structPro//定义一个结构体
{
intnum,time;
};
Input(intm,Prop[L])//打印页面走向状态
{
cout<<"请输入实际页面走向长度L(15<=L<=20):
";
do
{
cin>>m;
if(m>20||m<15)cout<<"实际页面长度须在15~20之间;请重新输入L:
";
elsebreak;
}while
(1);
inti,j;
j=time(NULL);//取时钟时间
srand(j);//以时钟时间x为种子,初始化随机数发生器
cout<<"输出随机数:
";
for(i=0;i { p[i].num=rand()%10+1;//产生1到10之间的随即数放到数组p中 p[i].time=0; cout< } cout< returnm; } voidprint(Pro*page1)//打印当前的页面 { Pro*page=newPro[M]; page=page1; for(inti=0;i cout< cout< } intSearch(inte,Pro*page1)//寻找内存块中与e相同的块号 { Pro*page=newPro[M]; page=page1; for(inti=0;i return-1; } intMax(Pro*page1)//寻找最近最长未使用的页面 { Pro*page=newPro[M]; page=page1; inte=page[0].time,i=0; while(i { if(e i++; } for(i=0;i return-1; } intCount(Pro*page1,inti,intt,Prop[L])//记录当前内存块中页面离下次使用间隔长度 { Pro*page=newPro[M]; page=page1; intcount=0; for(intj=i;j { if(page[t].num==p[j].num)break;//当前页面再次被访问时循环结束 elsecount++;//否则count+1 } returncount;//返回count的值 } intmain() { intc; intm=0,t=0; floatn=0; Prop[L]; m=Input(m,p);//调用input函数,返回m值 cout<<"请输入可用内存页面数m(3~5): "; do { cin>>M; if(M>5||M<3) cout<<"内存块m须在3~5之间,请重新输入m: "; elsebreak; }while (1); Pro*page=newPro[M]; do{ for(inti=0;i { page[i].num=0; page[i].time=m-1-i; } i=0; cout<<"1: FIFO页面置换"< cout<<"2: LRU页面置换"< cout<<"3: OPT页面置换"< cout<<"按其它键结束程序;"< cin>>c; if(c==1)//FIFO页面置换 { n=0; cout<<"******************************************"< cout< cout<<"FIFO算法页面置换情况如下: "< cout< cout<<"******************************************"< while(i { if(Search(p[i].num,page)>=0)//当前页面在内存中 { cout<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 流程图 页面 置换 算法 课程设计