版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学 号: 课 程 设 计题 目请求页式管理缺页中断模拟设计-LRU、OPT学 院计算机科学与技术学院专 业计算机科学与技术专业班 级计算机0901班姓 名指导教师王红霞2012年1月11日课程设计任务书学生姓名: 专业班级: 计算机0901班 指导教师: 王红霞 工作单位: 计算机科学与技术学院 题 目: 请求页式管理缺页中断模拟设计- LRU、OPT初始条件:1预备内容:阅读操作系统的内存管理章节内容,了解有关虚拟存储器、页式存储管理等概念,并体会和了解缺页和页面置换的具体实施方法。2实践准备:掌握一种计算机高级语言的使用。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰
2、写等具体要求)1实现指定淘汰算法。能够处理以下的情形: 能够输入给作业分配的内存块数; 能够输入给定的页面,并计算发生缺页的次数以及缺页率; 缺页时,如果发生页面置换,输出淘汰的页号。2设计报告内容应说明: 课程设计目的与功能; 需求分析,数据结构或模块说明(功能与框图); 源程序的主要部分; 测试用例,运行结果与运行情况分析; 自我评价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);iv)完成本题是否有其他的其他方法(如果有,简要说明该方法);v)对实验题的评价和改进意见,
3、请你推荐设计题目。时间安排:设计安排一周:周1、周2:完成程序分析及设计。周2、周3:完成程序调试及测试。周4、周5:验收,撰写课程设计报告。(注意事项:严禁抄袭,一旦发现,抄与被抄的一律按0分记)指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日请求页式管理缺页中断模拟设计 -LRU、OPT1 设计目的与功能1.1 设计目的巩固并加深对虚拟存储器、请求页式存储管理等概念的理解,掌握请求页式管理中的置换算法的基本思想。并针对LRU(最近最久未使用页面置换算法),以及OPT(理想型淘汰算法)两种算法,利用高级语言,设计出相应的模拟程序。结合设计的程序,在理论联系实际的基础上,分析各
4、个页面置换算法的优缺点。以及在对课程的整体把握上,提升对操作系统这门课程的全面认识。1.2 设计功能本次课程设计需要实现LRU和OPT两种置换算法。能够实现以下功能:1) 能够输入给作业分配的内存块数;2) 能够输入给定的页面,并计算发生缺页的次数以及缺页率; 3) 缺页时,如果发生页面置换,输出淘汰的页号。在实现以上功能的前提下,程序也应该达到正确性、可读性、健壮性、效率与地存储量要求等算法的5个特性。2 设计需求分析2.1 需求分析 请求页式管理的实现请求页式管理是在静态页式管理的基础上发展起来的,它允许只装入部分页面的程序和数据,便启动运行。此后,再通过调页功能和页面置换功能,陆续把即将
5、要运行的页面调入内存,同时把暂时不运行的页面换出到外存上,置换时以页面为单位。为了能实现请求调页和置换功能,系统必须提供必要的硬件支持和相应的软件。其中硬件支持包括:1) 请求分页的页表机制,它是在纯分页的页表机制上增加若干项而形成的,作为请求分页的数据结构;2) 缺页中断机构,当要访问的页面尚未调入内存时,便产生一缺页中断,以请求OS将所缺的页调入内存;3) 地址变换机构,它同样是在纯分页地址变换机构的基础上形成的。2.1.2 置换算法分析请求页式管理中的置换算法在内存中没有空闲页时被调用,它的目的是选出一个被淘汰的页面。如果内存中有足够的空闲页面存放调入的页,则不必使用置换算法。本次设计使
6、用最近最久未使用页面置换算法(least recently used,LRU)和理想型淘汰算法(optional replacement algorithm,OPT)。.1 LRU置换算法最近最久未使用页面置换算法(least recently used,LRU),该算法的基本思想是:当需要淘汰某一页时,选择离当前时间最近的一段时间内最久没有使用过的页先淘汰。该算法的主要出发点是,如果某页被访问了,则它可能马上还要被访问,或者如果某页很长时间未被访问,则它在最近一段时间也不会被访问。.2 OPT置换算法理想型淘汰算法(optional replacement algorithm,OPT),该算
7、法淘汰在访问串中将来再也不出现的或者是在离当前最远的位置上出现的页,这样淘汰掉该页将不会造成因需要访问该页又立即把它调入的现象。这种算法难以实现,因为它要求必须预先知道每一个进程的访问串。请求页式管理的具体实现过程如图1所示。2.2 数据结构及功能框图 数据结构程序是以基本的变量和结构体实现,在两种算法中有大量的代码重用,故采用宏定义(#define LO(wname)等,使代码更加简化。/- - - - - - - - - - - 基本数据变量说明- - - - - - - - - - - - - int input; /输入的页面数int num; /内存块允许装入页面数int *in;
8、/准备调入的页面序列 int *memory; /用来记录进入内存的页面信息struct pageint Pnumber; /页面的页号int Mnumber; /在内存中对应的块号int stayin; /是否在内存中;page PtotalN; /对N个页面进行操作开始结束请求页面序列是否结束页面是否在内存中内存块是否已满选择要调入页面放入未被占用的内存块中,修改页表利用算法,选择应该替换的页面并修改YYYNNN图1 请求页式管理实现过程/- - - - - - - - - - - 基本操作的函数原型说明- - - - - - - - - - - - - void LRU(); /实现LR
9、U算法的函数void OPT(); /实现OPT算法的函数int getLRU(int page); /LRU中页面置换函数,对给定的页page,替换页框中的页int getOPT(int page); /OPT中页面置换函数,对给定的页page,替换页框中的页#define LO(wname); /对LRU和OPT中的前num个页的公操作处理#define get(smblx,smbly,smblz); /页面置换过程的公操作,用smblx等变量替换 程序功能框图程序中首先输入页面的数目存入input中,输入页框的数目存入num中,在按次序输入页面号码,存入in数组中。程序给出选择,当进行L
10、RU模块时,LRU模块对页面进行分配,当出现缺页调用getLRU()进行缺页处理,而OPT模块与之类似。程序功能框图如图2。Main()getOPT (int page)getLRU(int page)OPT()LRU()图2 程序功能框图3 源程序的主要部分3.1 源程序简介本次设计中LRU以及OPT算法中页面置换的思想,分别对照页框的内容,向前查找最久未被使用的页面号和向后查找最后被使用的页面号,将其替换之。在设计的思想上可以转化为以当前即将调入的页面为中心,LRU为向前查找离中心最远的页号,而OPT为向后查找离中心最远的页号。这样在方法上有了共同之处,以此可以通过对相同的代码进行宏定义。
11、3.2 源程序核心代码 main函数代码main函数实现对各输入数据及待数据结构的初始化,以及通过选择来调用LRU或OPT算法。伪代码如下:int main() /页号、块号、页面顺序的输入,以及初始化等工作。while(true) /部分全局变量的初始化工作,每次循环需重新开始 char chose;cout请您选择:1、LRU算法endl;cout 2、OPT算法endl;cout 3、退出endl; cout*chose;if(chose!=1&chose!=2)break;switch(chose)case 1:LRU();break;case 2:OPT();break; cout*
12、endl;3.2.2 LRU及OPT函数代码LRU和OPT的主要思想有许多共同之处,所以通过宏定义,来实现程序的共同功能。程序中都是通过LO宏来实现的,区别在于传递的参数不同,即LRU函数调用getLRU()子函数。而OPT函数调用getOPT()函数。void LRU() coutLRU替换算法过程如下:endl; LO(LRU); /通过LO宏,传递LRU给get#wname(int page),即getLRU(int page)void OPT() coutOPT替换算法过程如下:endl; LO(OPT); /通过LO宏,传递OPT给get#wname(int page),即getOP
13、T(int page)3.2.3 LO(wname)宏的代码LO宏是用来对LRU和OPT的置换进行公处理的,即在内存块未满,或者不需要发生置换时两者的代码是相同的,而唯一不同在于缺页中断处理函数,getLRU(int page)或者getOPT(int page)。所以,通过宏定义,把不同的代码作为参数传递,来实现不同函数的功能。伪代码如下:#define LO(wname)int i,missTime=0,replace=0,full=0,page=0; /i 为循环控制变量,missTime为缺页次数/replace代表置换的页框号full为控制变量,page为页面数do /实现块未满时的
14、页面分配,LRU和OPT相同while(full!=num);for( i=page;iinput;i+)if(Ptotalini.stayin =1) coutini号页已在页框中,endl;elsemissTime+;replace=get#wname(i); /根据传递的参数不同,调度不同的函数,返回页框号 /进行页面替换coutendl经统计:缺页次数:missTime次缺页率double(missTime)/input*100%=0,=0,等 return getNum; /返回页框号 int getOPT(int page) get(+,); /get宏,传递的参数为+,等 ret
15、urn getNum; /返回页框号3.2.5 get(smblx,smbly,smblz)宏的代码getLRU和getOPT的搜索算法在思想上相似,即前者向前搜索页第一次出现的申请序号,而后者是向后搜索接下来第一次出现的申请序号,所以用get宏来对相同代码进行公操作,伪代码如下:#define get(smblx,smbly,smblz) for(i=0;inum;i+)for(int j=0;j10;j+)if(Ptotalj.Mnumber=i)for(int t=page#smblx 1;t#smbly;t#smblx#smblx) /宏填充部分,填充内容如上 /向前或后找出该页第一次
16、申请的序号for(i=0;inum;i+)if(geti#smblz getgetNum) /返回将要被置换的页号,存入到getNUM中getNum=i; 4 测试4.1测试用例设计请求分页管理系统中,有一用户作业,它一次要访问的页的序列是:2 3 2 1 5 2 4 5 3 2 5 2 共12页,若分配给作业可以使用的主存空间供3个物理块,则LRU和OPT的置换算法的页面分配如表1和表2。表1 LRU页面置换算法LRU2 32152453252页1222222223333页233355555555页3111444222判断共产生7次缺页中断,淘汰页号分别为:3, 1 ,2, 4 缺页率:58
17、.33%表2 OPT页面置换算法OPT2 32152453252页1222222444222页233333333333页3155555555判断共产生6次缺页中断,淘汰页号分别为: 1 ,2 ,4 缺页率:50%4.2 运行结果及情况分析根据测试用例,对结果进行测试分析,以下为程序的分析过程。1) 程序首先需要输入页面数、页框数,然后给出页面请求序列,最后可以对页面置换算法进行选择(LRU和OPT的选择),在每执行完一次后,程序会继续给出选择界面,方面两种算法过程和结果的对照。程序的输入界面如图3所示;图3 输入界面 2) 在输入界面中输入1,则程序调用LRU页面替换算法,则程序的页面分配过程
18、,缺页率,缺页次数会被一一列出,从过程可以看出,页面替换的顺序为3,1,2,4,这与用例的正确结果吻合,达到了算法的目的,具体情况如图4所示:图4 LRU替换算法过程和结果3)当输入2时,程序调用OPT算法,程序的页面分配情况,缺页次数及缺页率如图5所示,从图中可以看出,程序中被替换掉的页面分别为1,2,4,这也和用例吻合,得出了正确的结果,OPT算法的缺页次数为6,缺页率为50%。图5 OPT替换算法过程和结果小结:从程序的运行结果和输出情况可以看出,程序有良好的交互界面,有正确的结果,并且有一定的健壮性,如对于用例中的2 3 2,程序在没有在未用完页框的情况下直接给第三次请求的2号页分配一
19、个新页框,这说明程序有严谨的逻辑步骤。5 评价和总结5.1 自我评价本次课程设计用时用高级语言模拟系统中的页面置换算法,从整体上达到了设计的目的和要求。我的设计思路是首先,要对问题有一个整体而全面的认识,抓住问题的核心所在;其次,要针对问题,主要是核心症结,给出设计思想,这时可以查阅书籍或搜寻网上资料,辅助自己对的问题理解,以确保设计思想的正确性;再次,解决核心问题,在此基础之上,为设计丰满羽翼,达到算法所要求的5个特性:正确性、可读性、健壮性、效率与地存储量要求;最后,对程序反复调试,尽己所能把算法精简改进。就设计优点来谈,首先程序的思想与计算机操作系统页面置换算法(LRU,OPT)的思想吻
20、合,这样确保了程序的正确性和可读性,并且从本质上体会到页面置换算法思想的精髓所在;其次,程序中的大部分的数据结构仅仅为简单的变量和结构体数组,没有冗杂的指针和链表,使程序用尽量简单的方法实现了尽量多的功能;最后,针对LRU和OPT算法中思想的相似处,我采用了宏定义,不仅大大优化了代码使最后的代码大量的减少,而且使两种算法的区别明显的体现出来,易于对两种置换算法的仔细斟酌、比较。本次课程设计的缺点为实验的平台仍是控制台程序(DOS环境),所以在以后的设计中,将尝试VC界面程序。5.2 收获和改进本次课设的收获分为两点:在对课程内容上,从模拟缺页中断页面置换算法中进一步理解了操作系统原理,对这门课
21、程有了更深的认识,并且激起了想进一步了解如windows操作系统(windows核心编程)的兴趣;在对编程技巧方面,从了解MFC后,对MFC中的宏定义有了一定的了解和认识,发现宏定义也是一种巧妙的封装方法。本程序中两次使用了宏定义,程序在编译的过程会将代码插入到宏调用处,但在程序的读者看来,程序会更加的精简、明了,易于对比。程序从设计技巧来说还有许多其他的方法,如对于LRU算法可以用队列来记录页面置换的顺序,而与之对应的OPT算法则可以栈来记录接下来要调入页面的次序。在记录LRU(最近最久未使用)时,也可以用NUM*NUM的二阶数组来记录等。5.3 评价和意见本次课程设计是对操作系统这门课程理
22、论知识的映射,不同的题目是对不同知识模块进行模拟,在实践的基础上加深了对操作系统理论的认识,在某种程度上得到了提高。对本次课程设计的意见如下:因为操作系统这门课程中并没有直接涉及到某个操作系统(Windows、Linux等)的设计过程的讲解,课程内容过于理论化,而在课程设计的过程中题目过于细节化,从而对操作系统失去总体观念。希望课程设计中题目应当为两个不同的知识点,在一定程度上加深难度,也扩充了理解的知识面。6 参考文献1 张尧学,计算机操作系统教程,清华大学出版社,2005年6月2 闵联营,c+程序设计教程武汉理工大学出版社,2005年7月3 王艳平,Windows 程序设计(第二版),人民
23、邮电出版社,2010年2月附:源代码#include#includeusing namespace std;int input,num,*in,*memory; struct pageint Pnumber;int Mnumber;int stayin;page Ptotal10; void LRU();void OPT();int getLRU(int page);int getOPT(int page);int main()cout*endl; cout请输入准备调入页面的数目:input; cout请输入物理块数目num;in= new intinput; memory=new intn
24、um; cout请依次输入input个页面号(0-9)endl; int i,temp; for( i=0;itemp;ini=temp; cout*endl;while(true) for(int n=0;n10;n+) Ptotaln.Pnumber=n;Ptotaln.Mnumber=-1;Ptotaln.stayin =0;for(i=0;inum;i+) memoryi=-1; char chose;coutendl;cout请您选择:1、LRU算法endl;cout 2、OPT算法endl;cout 3、退出endl; cout*chose;if(chose!=1&chose!=2
25、)break;switch(chose)case 1:LRU();break;case 2:OPT();break; cout*endl;delete in;delete memory;return 0;#define LO(wname)int i,missTime=0,replace=0,full=0,page=0;do if(Ptotalinpage.stayin =1)coutinpage号页已在页框中,endl;page+;if(page=input)break;else continue;elsemissTime+;coutinpage号页不在页框中,将其调入full号页框中,endl;memoryfull=inpage;for(int j=0;j10;j+)if( Ptotalj.Mnumber= full) Ptotalj.Mnumber=-1; Ptotalj.stayin=0;break;Ptotalinpage.stayin=1;Ptotalinpage.Mnumber=full; full+;page+;if(page=input) break;while(full!=num);for( i=page;iinput;i+)if(Ptotalini.stayin =1)coutini号页已在页框中,endl;elsemissTime+;replace=ge
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年团场绩效管理与考核制度试题含答案
- 北京警察学院《大学英语三》2024-2025学年期末试卷(A卷)
- 奖励激励文案话术
- 2026年口腔医疗管理公司院感防控专员岗位职责管理制度
- 车间现场管理制度三
- 2026年剧本杀运营公司知识产权保护管理制度
- 2026年剧本杀运营公司员工加班审批管理制度
- 机床轴承介绍
- 2026年生物技术在农业领域的突破行业创新报告
- 高端装备制造业检测认证中心建设可行性报告:2025年环境检测技术革新
- 骑车误伤协议书
- 孔源性视网膜脱离护理查房
- 《中级财务会计》课件-11收入、费用和利润
- 新生儿肺炎的治疗与护理
- 电缆局部放电试验报告模板
- 东莞初三上册期末数学试卷
- 人员技能矩阵管理制度
- T/CECS 10220-2022便携式丁烷气灶及气瓶
- 空调售后外包协议书
- 光伏防火培训课件
- 电视节目编导与制作(全套课件147P)
评论
0/150
提交评论