操作系统课程设计.docx
- 文档编号:27576267
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:13
- 大小:220.10KB
操作系统课程设计.docx
《操作系统课程设计.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计.docx(13页珍藏版)》请在冰豆网上搜索。
操作系统课程设计
《操作系统》
课程设计报告
课程设计题目:
页面置换算法模拟程序
系部名称:
中印计算机软件学院
学生姓名:
隋枚蓉
班级:
2012级应用技术一班
学号:
201201070034
成绩:
指导教师:
开课时间:
2014-2015学年第一学期
目录
一、设计目的2
二、设计题目 :
页面置换算法模拟程序2
2.1 LRU(最近最久未使用)3
2.2OPT(最佳置换算法)4
2.3随机数发生器 4
三、完整代码 5
四、运行结果演示9
五、设计的基本原理10
六、设计心得10
七.参考文献 12
摘要
最佳置换算法所选择的被淘汰掉的页面,将是以后永久不再使用的,或许是在最长(未来)时间内不再被访问的页面。
采用最佳置算法,通常可保证获得最低的缺页率。
本模拟算法中,最佳页面置换算法实现所采用的思想是:
循环读入每个页表项,若该页表在内存中,则读取下一个页表项。
若页表不存在内存中:
一种情况是内存不满,则将页表放入内存中;若内存块已满,刚分别计算内存中各个页表再次被使用的时间,并将最久不被访问的调出,放入当前读入页表项
操作系统课程设计的主要任务是研究计算机操作系统的基本原理和算法,掌握操作系统的进程管理、存储管理、文件管理和设备管理的基本原理与主要算法。
目的是使学生掌握常用操作系统(如DOS、Windows或Linux)的一般管理方法,了解它是如何组织和运作的,对操作系统的核心概念和算法有一个透彻的理解,并对系统运行的机制有一个全面的掌握,从而充分理解系统调用与程序设计之间的关系。
通过对页式存储管理方案中内存空间的管理和分配的模拟,了解和认识操作系统对资源的离散分配方法,它不要求作业或进程的和程序段和数据在内存中连续存放,从而有效地解决了碎片问题。
这既提高了内存的利用率,又有利于组织多道程序执行。
在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。
当发生缺页中断时操作系统必须在内存选择一个页面将其移出内 存,以便为即将调入的页面让出空间。
而用来选择淘汰哪一页的规则叫做页面置换算法
一、设计目的
操作系统是计算机教学中最重要的环节之一,也是计算机专业学生的一门重要的专业课程。
操作系统质量的好坏,直接影响整个计算机系统的性能和用户对计算机的使用。
一个精心设计的操作系统能极大地扩充计算机系统的功能,充分发挥系统中各种设备的使用效率,提高系统工作的可靠性。
由于操作系统涉及计算机系统中各种软硬件资源的管理,内容比较繁琐,具有很强的实践性。
要学好这门课程,必须把理论与实践紧密结合,才能取得较好的学习效果。
本课程设计是学生学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。
熟悉页面置换算法及其实现,引入计算机系统性能评价方法的概念。
二、设计题目 :
页面置换算法模拟程序
1).用随机数方法产生页面走向,页面走向长度为L(15<=L<=20),L由控制台输入。
2).根据页面走向,分别采用Optinal、FIFO、LRU算法进行页面置换,统计缺页率。
3).假定可用内存块为m(3<=m<=5),m由控制台输入,初始时,作业页面都不在内存。
4).要求写出一份详细的设计报告。
课程设计报告内容包括:
设计目的、设计内容、设计原理、算法实现、流程图、源程序、运行示例及结果分析、心得体会、
2.1 LRU(最近最久未使用)
设计原理:
当需要淘汰某一页时,选择离当前时间最近的一段时间内最久没有使用过的页先淘汰。
该算法的主要出发点是,如果某页被访问了,则它可能马上还要被访问。
或者反过来说,如果某页很长时间未被访问,则它在最近一段时间也不会被访问。
算法流程图:
2.2OPT(最佳置换算法)
设计原理:
需要进行页面置换,把内存中以后一段时间都不使用或是使用时间离现在最远的页面换出。
2.3随机数发生器
#include
#include
srand(t);//用时间t初始化随机数发生器调用 库函数 x=rand( )%10+1;//返回一个1~10之间的随机数
三、完整代码
void print(Pro *page1)//打印当前的页面 {
Pro *page=new Pro[M]; page=page1;
for(int i=0;i int Search(int e,Pro *page1 )//寻找内存块中与e相同的块号 { Pro *page=new Pro[M]; page=page1; for(int i=0;i int Max(Pro *page1)//寻找最近最长未使用的页面 { Pro *page=new Pro[M]; page=page1; int e=page[0].time,i=0; while(i if(e for( i=0;i return -1; } int Count(Pro *page1,int i,int t,Pro p[L])//记录当前内存块中页面离下次使用间隔长度 { Pro *page=new Pro[M]; page=page1; int count=0; for(int j=i;j if(page[t].num==p[j].num )break;//当前页面再次被访问时循环结束 else count++;//否则count+1 } return count;//返回count的值 } int main() { int c; int m=0,t=0; float n=0; Pro p[L]; m=Input(m,p);//调用input函数,返回m值 cout<<"请输入可用内存页面数m(3~5): "; do { cin>>M; if(M>5||M<3) cout<<"内存块m须在3~5之间,请重新输入m: "; else break; }while (1); Pro *page=new Pro[M]; do{ for(int i=0;i page[i].num=0; page[i].time=m-1-i; } i=0; cout<<"1: FIFO页面置换"< LRU页面置换"< OPT页面置换"< cout<<"按其它键结束程序;"< if(c==1)//FIFO页面置换 { n=0; cout<<" ****************************************** "< cout< cout<<" FIFO算法页面置换情况如下: "< cout< cout<<" ****************************************** "< while(i if(Search(p[i].num,page)>=0)//当前页面在内存中 { cout< else //当前页不在内存中 { if(t==M)t=0; else { n++;//缺页次数加1 page[t].num=p[i].num;//把当前页面放入内存中 cout< print(page);//打印当前页面 t++;//下一个内存块 i++;//指向下一个页面 } } } cout<<"缺页次数: "< "< if(c==2)//LRU页面置换 { n=0; cout<<" ****************************************** "< cout< cout<<" LRU算法页面置换情况如下: "< cout< cout<<" ****************************************** "< while(i { int a; t=Search(p[i].num,page); if(t>=0)//如果已在内存块中 { page[t].time=0;//把与它相同的内存块的时间置0 for(a=0;a if(a! =t)page[a].time++;//其它的时间加1 cout< else//如果不在内存块中 { n++; //缺页次数加1 t=Max(page);//返回最近最久未使用的块号赋值给t page[t].num=p[i].num;//进行替换 page[t].time=0;//替换后时间置为0 cout< for(a=0;a if(a! =t)page[a].time++;//其它的时间加1 } i++; } cout<<"缺页次数: "< "< if(c==3)//OPT页面置换 { n=0; cout<<" ****************************************** "< cout< cout<<" OPT算法置换情况如下: "< cout<<" ****************************************** "< while(i if(Search(p[i].num,page)>=0)//如果已在内存块中 { cout< else//如果不在内存块中 { int a=0; for(t=0;t if(page[t].num==0)a++;//记录空的内存块数 if(a! =0)//有空内存块 { int q=M; for(t=0;t if(page[t].num==0&&q>t)q=t;//把空内存块中块号最小的找出来 page[q].num=p[i].num; n++; cout< { int temp=0,s; for(t=0;t if(temp temp=Count(page,i,t,p); s=t; }//把找到的块号赋给s page[s].num=p[i].num; n++; cout< print(page); i++; } } } cout<<"缺页次数: "< "< }while(c==1||c==2||c==3); return 0; } 4、运行结果演示 5、设计的基本原理 (1).请求页式存储管理的实现原理 请求页式管理的基本原理是将逻辑地址空间分成大小相同的页,将存储地址空间分块,页和块的大小相等,通过页表进行管理。 页式系统的逻辑地址分为页号和页内位移量。 页表包括页号和块号数据项,它们一一对应。 根据逻辑空间的页号,查找页表对应项找到对应的块号,块号乘以块长,加上位移量就行成存储空间的物理地址。 每个作业的逻辑地址空间是连续的,重定位到内存空间后就不一定连续了。 2).各种页面置换算法的实现思想 FIFO算法总是淘汰最先调入主存的页面,即淘汰在主存中驻留时间最长的页面,认为驻留时间最长的页不再使用的可能性较大。 LRU算法淘汰的页面是最近一段时间内最久未被访问的那一页,它是基于程序局部性原理来考虑的,认为那些刚被使用过的页面可能还要立即被使用,而那些在较长时间内未被使用的页面可能不会立即使用。 LFU即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。 但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。 .命中率 = 1 - 页面失效次数∕页地址流长度 在本实验中,页地址流长度为 320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。 2. 随机数产生办法 关于随机数产生办法,Windwos系统提供函数srand( ) 和 rand( ),进行初始化和产生随机数。 例如: #include srand( (unsigned)time( NULL ) ); 语句可初始化一个随机数 a[o]=10 * rand( ) / 32767 * 319 + 1; a[1]= 10 * rand( ) / 32767 * a[o]; ┇ 语句可用来产生 a[0] 与 a[1] 中的随机数。 六、设计心得 通过这次课程设计,不仅让我了解了三种页面置换算法,即FIFO(先进先出)、LRU(最近最久未使用)、OPT(最佳置换)算法。 开始我对源代码一味的进行调试,但发现总是有点错误,于是调试了若干次还是没有编译成功。 又重新分析了几次设计要求,发现自己事先没有完全弄清楚 这三种算法的做法,接着便是暂时停下程序的编译,将学习资料仔细地将这三种不同的算法研究了一下,待到基本弄懂它们具体怎么实现的时候,我才再一次去研究当初总是有问题的代码,结合课本知识与详细的流程图分析,经过不断的调试,多次尝试后,编译成功了,运行后发现此功能正是本次课程设计所需要的。 本次课程设计不仅让我对操作系统这门课程有了更深入的研 究、对很多重要的概念有了巩固和掌握。 通过努力,三个页面置换算法程序都已经完成。 虽然自己所做的很少也不够完善,但毕竟也是努力的结果。 主要有以下几点收获: 1.通过对上网和看书查阅相关资料,使自己对VC ++语言的基本框架有新的了解,加深了对可视化程序的认识。 2.在使用VC++语言来实现功能时,不像以往用的其他语言,它比较简练,更容易理解,实用性很强。 3.先进先出页面置换和LRU以及OPT算法各有特点,但是实践起来却很大,使自己对页面置换算法有了新的认识。 七.参考文献 《计算机操作系统教程》 徐甲同等编著 《操作系统》 罗宇等编著 《操作系统实验教程 》 张丽芬, 刘利雄, 王全玉编著 《计算机操作系统》 梁红兵、哲风屏、汤子瀛 编著 《C程序设计》谭浩强著 清华大学出版社 致谢 两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。 在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。 在此感谢我们的老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次课程设计的每个实验细节和每个数据,都离不开老师您的细心指导。 而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了这次课程设计。 同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。 由于本人的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教,我十分乐意接受你们的批评与指正,本人将万分感谢。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计