




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权,请联系网站删除学 号: 课 程 设 计题 目请求页式管理缺页中断模拟设计-LRU、OPT学 院计算机科学与技术学院专 业班 级姓 名指导教师 课程设计任务书学生姓名: 指导教师: 工作单位: 计算机科学与技术学院 题 目: 请求页式管理缺页中断模拟设计- LRU、OPT初始条件:1预备内容:阅读操作系统的内存管理章节内容,了解有关虚拟存储器、页式存储管理等概念,并体会和了解缺页和页面置换的具体实施方法。2实践准备:掌握一种计算机高级语言的使用。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1实现指定淘汰算法。能够处理以下的情形: 能够输入给作业分配的内存块数; 能够输入给定的页面,并计算发生缺页的次数以及缺页率; 缺页时,如果发生页面置换,输出淘汰的页号。2设计报告内容应说明: 需求分析; 功能设计(数据结构及模块说明); 开发平台及源程序的主要部分; 测试用例,运行结果与运行情况分析; 自我评价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);iv)完成本题是否有其他方法(如果有,简要说明该方法);时间安排:设计安排一周:周1、周2:完成程序分析及设计。周2、周3:完成程序调试及测试。周4、周5:验收、撰写课程设计报告。(注意事项:严禁抄袭,一旦发现,一律按0分记)指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日请求页式管理缺页中断模拟设计 -LRU、OPT1 设计目的与功能1.1 设计目的巩固并加深对虚拟存储器、请求页式存储管理等概念的理解,掌握请求页式管理中的置换算法的基本思想。并针对LRU(最近最久未使用页面置换算法),以及OPT(理想型淘汰算法)两种算法,利用高级语言,设计出相应的模拟程序。结合设计的程序,在理论联系实际的基础上,分析各个页面置换算法的优缺点。以及在对课程的整体把握上,提升对操作系统这门课程的全面认识。1.2 设计功能本次课程设计需要实现LRU和OPT两种置换算法。能够实现以下功能:1) 能够输入给作业分配的内存块数;2) 能够输入给定的页面,并计算发生缺页的次数以及缺页率; 3) 缺页时,如果发生页面置换,输出淘汰的页号。2 设计需求分析2.1 需求分析2.1.1 请求页式管理的实现请求页式管理是在静态页式管理的基础上发展起来的,它允许只装入部分页面的程序和数据,便启动运行。此后,再通过调页功能和页面置换功能,陆续把即将要运行的页面调入内存,同时把暂时不运行的页面换出到外存上,置换时以页面为单位。为了能实现请求调页和置换功能,系统必须提供必要的硬件支持和相应的软件。其中硬件支持包括:1) 请求分页的页表机制,它是在纯分页的页表机制上增加若干项而形成的,作为请求分页的数据结构;2) 缺页中断机构,当要访问的页面尚未调入内存时,便产生一缺页中断,以请求OS将所缺的页调入内存;3) 地址变换机构,它同样是在纯分页地址变换机构的基础上形成的。2.1.2 置换算法分析请求页式管理中的置换算法在内存中没有空闲页时被调用,它的目的是选出一个被淘汰的页面。如果内存中有足够的空闲页面存放调入的页,则不必使用置换算法。本次设计使用最近最久未使用页面置换算法(least recently used,LRU)和理想型淘汰算法(optional replacement algorithm,OPT)。LRU置换算法:最近最久未使用页面置换算法(least recently used,LRU),该算法的基本思想是:当需要淘汰某一页时,选择离当前时间最近的一段时间内最久没有使用过的页先淘汰。该算法的主要出发点是,如果某页被访问了,则它可能马上还要被访问,或者如果某页很长时间未被访问,则它在最近一段时间也不会被访问。OPT置换算法:理想型淘汰算法(optional replacement algorithm,OPT),该算法淘汰在访问串中将来再也不出现的或者是在离当前最远的位置上出现的页,这样淘汰掉该页将不会造成因需要访问该页又立即把它调入的现象。这种算法难以实现,因为它要求必须预先知道每一个进程的访问串。2.2 数据结构及功能框图- - - - - - - - - - 基本数据变量说明- - - - - - - - - - - - - int input; /输入的页面数int num; /内存块允许装入页面数int *in; /准备调入的页面序列 int *memory; /用来记录进入内存的页面信息struct pageint Pnumber; /页面的页号int Mnumber; /在内存中对应的块号int stayin; /是否在内存中;page PtotalN; /对N个页面进行操作- - - - - - - - - - - 基本操作的函数原型说明- - - - - - - - - - - - - void LRU(); /实现LRU算法的函数void OPT(); /实现OPT算法的函数开始结束请求页面序列是否结束页面是否在内存中内存块是否已满选择要调入页面放入未被占用的内存块中,修改页表利用算法,选择应该替换的页面并修改YYYNNN请求页式管理实现过程3 源程序的主要部分3.1 源程序简介本次设计中LRU以及OPT算法中页面置换的思想,分别对照页框的内容,向前查找最久未被使用的页面号和向后查找最后被使用的页面号,将其替换之。在设计的思想上可以转化为以当前即将调入的页面为中心,LRU为向前查找离中心最远的页号,而OPT为向后查找离中心最远的页号。3.2 源程序核心代码3.2.1 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*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),即getOPT(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 /实现块未满时的页面分配,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宏,传递的参数为+,等 return 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) /宏填充部分,填充内容如上 /向前或后找出该页第一次申请的序号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 LRU页面置换算法LRU2 32152453252页1222222223333页233355555555页3111444222判断共产生7次缺页中断,淘汰页号分别为:3, 1 ,2, 4 缺页率:58.33%表2 OPT页面置换算法OPT2 32152453252页1222222444222页233333333333页3155555555判断共产生6次缺页中断,淘汰页号分别为: 1 ,2 ,4 缺页率:50%4.2 运行结果及情况分析根据测试用例,对结果进行测试分析,以下为程序的分析过程。1) 程序首先需要输入页面数、页框数,然后给出页面请求序列,最后可以对页面置换算法进行选择(LRU和OPT的选择),在每执行完一次后,程序会继续给出选择界面,方面两种算法过程和结果的对照。程序的输入界面如图3所示;2) 在输入界面中输入1,则程序调用LRU页面替换算法,则程序的页面分配过程,缺页率,缺页次数会被一一列出,从过程可以看出,页面替换的顺序为3,1,2,4,这与用例的正确结果吻合,达到了算法的目的,具体情况如图4所示:3)当输入2时,程序调用OPT算法,程序的页面分配情况,缺页次数及缺页率如图5所示,从图中可以看出,程序中被替换掉的页面分别为1,2,4,这也和用例吻合,得出了正确的结果,OPT算法的缺页次数为6,缺页率为50%。5 评价和总结本次课程设计大体上达到了设计的目的和要求。首先,我复习了有关计算机操作系统页面置换算法(LRU,OPT)的知识,并且从本质上体会到页面置换算法思想的精髓;针对LRU和OPT算法中思想的相似处,我采用了宏定义,不仅大大优化了代码使最后的代码大量的减少,而且使两种算法的区别明显的体现出来,易于对两种置换算法的仔细斟酌、比较。为时一个星期的课设,我有了很大的的收获。对模拟缺页中断页面置换算法的知识有了进一步理解,对这门课程有了更深的认识。本程序中两次使用了以前没用过的宏定义,我的编程水平也有所提高。在实践的基础上既加深了对操作系统理论的认识,编程设计能力也得到锻炼。源代码:精品文档#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 intnum; 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)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=get#wname(i);for(int j=0;j10;j+)if( Ptotalj.Mnumber=replace)coutini号页不在页框中,替换掉j号页,endl;Ptotalj.Mnumber=-1;Ptotalj.stayin=0;break;memoryreplace=i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电脑停在课件页面不动
- qms考试题及答案
- 电网基建业务知识培训课件
- 电缆知识基础培训课件
- 电线电缆标准培训课件
- 管线保护专项方案
- 【ABeam】2025中国个人信息保护和网络安全相关法律法规的趋势与应对报告
- 北京一模考试美术试题及答案
- 北京初二模拟考试试卷及答案
- 北电实验班分班考试题及答案
- 高中化学必修二1.2《物质结构-元素周期律》
- 湖南美术出版社二年级美术上册学期教学计划
- 2025年上海市中考语文试题含解析
- 化工厂产品品质管理制度
- 2024-2030年中国钢纤维混凝土行业市场全景分析及投资前景展望报告
- 2025年黑龙江、吉林、辽宁、内蒙古高考物理真题(解析版)
- 教堂12项管理制度
- 2025年普通高等学校招生全国统一考试数学1卷(答案版)
- 《汽车线控底盘装调与检修》课件全套劳动任务1-16线控加速系统踏板装调与检修-线控底盘参数调节与综合测试
- 踝关节骨折护理
- 华为视觉识别规范手册中文版
评论
0/150
提交评论