




免费预览已结束,剩余16页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录1 需求分析31.1 目的和要求31.2 研究内容32 概要设计321 FIFO算法422 LRU算法423 OPT算法424 输入新的页面引用串43 详细设计531 FIFO(先进先出)页面置换算法:532 LRU(最近最久未使用)置换算法:533 OPT(最优页)置换算法54 测试65 运行结果66 课程设计总结107 参考文献118 附录:源程序清单111 需求分析 1.1 目的和要求在熟练掌握计算机虚拟存储技术的原理的基础上,利用一种程序设计语言模拟实现几种置换算法,一方面加深对原理的理解,另一方面提高学生通过编程根据已有原理解决实际问题的能力,为学生将来进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础 。1.2 研究内容模拟实现页式虚拟存储管理的三种页面置换算法(FIFO(先进先出)、LRU(最近最久未使用)和OPT(最长时间不使用),并通过比较性能得出结论。前提:(1)页面分配采用固定分配局部置换。(2)作业的页面走向和分得的物理块数预先指定。可以从键盘输入也可以从文件读入。(3)置换算法的置换过程输出可以在显示器上也可以存放在文件中,但必须清晰可读,便于检验。2 概要设计本程序主要划分为4个功能模块,分别是应用FIFO算法、应用LRU算法、应用OPT算法和页面引用串的插入。主界面FIFO算法LRU算法OPT算法新的页面引用串1.1各模块之间的结构图21 FIFO算法该模块的主要功能是对相应页面引用串进行处理,输出经过FIFO算法处理之后的结果。22 LRU算法该模块的主要功功能是对相应的页面引用串进行处理,输出经过LRU算法处理之后的结果。23 OPT算法该模块的主要功功能是对相应的页面引用串进行处理,输出经过OPT算法处理之后的结果。24 输入新的页面引用串该模块的主要功能是用户自己输入新的页面引用串,系统默认的字符串是0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,用户可以自定义全新的20个数字页面引用串。3 详细设计在进程运行过程中,若其所要访问的页面不在内存而需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区中。但应将哪个页面调出,须根据一定的算法来确定。 一个好的页面置换算法,应具有较低的页面更换频率。从理论上讲,应将那些以后不再会访问的页面换出,或将那些在较长时间内不会再访问的页面调出。 31 FIFO(先进先出)页面置换算法: 这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如,含有全局变量、常用函数、例程等的页面,FIFO算法并不能保证这些页面不被淘汰。32 LRU(最近最久未使用)置换算法: FIFO置换算法性能之所以较差,是因为它所依据的条件是各个页面调入内存的时间,而页面调入的先后并不能反映页面的使用情况。最近最久未使用(LRU)置换算法,是根据页面调入内存后的使用情况进行决策的。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,,当须淘汰一个页面时,选择现有页面中其t值最大的,即最近最久未使用的页面予以淘汰。33 OPT(最优页)置换算法最优页置换算法是所有算法中产生页错误率最低的,而且绝对没有Belady异常的问题。它会置换最长时间不会使用的页。最优页(OPT)置换算法,是根据最长时间不会使用的页来决策的。这就意味着,需要注意内存中的页面和页面的距离了。因此OPT算法是选择最久未使用的页面进行淘汰的。该算法赋予内存中每个页面一个访问字段,用来记录距离此处的最近页面的距离,这样通过比较,就能把最久未使用的页面淘汰掉。4 测试程序在设计过程中,曾经出过这样或者那样的问题,最让我纠结的问题是在设计OPT算法时出现的,当我认为没有问题的时候程序一运行就没有想要的结果,很明显不是语法上的错误,由于在程序编写过程中没有截图,此处没有图片说明了。都是逻辑上的错误,最让人难以接受的是,不是程序的逻辑,还是思维的逻辑,也就是从一开始编写程序时,自己的想法的错误了,我说怎么老是显示不出正确的结果,后来改正后结果就显示正常了。5 运行结果5.1 主界面5.2 输入错误的选择5.3 选择4的时候自己输入新的页面号引用串,此处输入书上的例子5.4 确认后首部分的页面号引用串改变5.5 选择FIFO算法,相关设置之后5.6 选择LRU算法之后5.7 选择OPT算法之后5.8 如果你选择的物理模块是其他的数量,此处用4个模块,OPT算法为例6 课程设计总结1、 通过完成该课程设计,使我了解了什么是缺页中断,以及处理缺页中断的调度算法。通过自己编程,加深了对理论学习的理解。自己动手的编写对缺页终端的调度算法了解加深了不少了解,使我也明白了,真理是在实践中证明的。程序中也出现过这样或者那样的问题,我也曾经颓废过,为了一个简单的逻辑问题纠结了好久,真正弄明白之后才发现自己是那么的蠢,一种豁然开朗的感觉涌上心头。2、程序执行是稳定的,高效的。在LRU算法中,要找出最近最久未使用的页面的话,就必须设置有关的访问记录项,且每一次访问这些记录项,页面都必须更新这些记录项。这个记录项在此程序中为 typedef struct page int yemian;/页面号 int biaoji;/被访问标记page; /* 页面逻辑结构,结构为方便算法实现设计*/ 如此显然要花费较大的系统开销(包括时间和空间上的),这也是实际系统中不直接采用LRU算法作为页面置换算法的直接原因,但由于其在页面置换的优越性,实际系统常使用LRU的近似算法。 7 参考文献操作系统概念第七版8 附录:源程序清单#include#include/7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1书上的例子const int Nsize=10;const int Psize=20;typedef struct page int yemian;/页面号 int biaoji;/被访问标记page; /* 页面逻辑结构,结构为方便算法实现设计*/ page blockNsize;/物理块page pagePsize;/页面号串void Init(int QString,int Nsize)/初始化内存单元、缓冲区 for(int i=0; iNsize; i+) blocki.yemian = -1;/找到空闲内存 blocki.biaoji = 0; for(i=0; iPsize; i+) pagei.yemian = QStringi; pagei.biaoji = 0; int findSpace(int Nsize)/查找是否有空闲内存 for(int i=0; iNsize; i+) if(blocki.yemian = -1) return i;/找到空闲内存,返回BLOCK中位置 return -1;int findExist(int curpage, int Nsize)/查找内存中是否有该页面 for(int i=0; iNsize; i+) if(blocki.yemian = pagecurpage.yemian) return i;/找到内存中有该页面,返回BLOCK中位置 return -1;int findReplace(int Nsize)/查找应予置换的页面 int a = 0; for(int i=0; i= blocka.biaoji) a = i;/找到应予置换页面,返回BLOCK中位置 return a;void display(int Nsize)/显示 for(int i=0; iNsize; i+) if(blocki.yemian != -1)/非空闲内存 coutblocki.yemian ; coutendl;/*FIFO核心部分*/ void FIFO(int Nsize)/先进先出页面置换算法int exist,space,aition ;float score=0;for(int i=0; iPsize; i+) exist = findExist(i,Nsize); if(exist != -1)/内存中有该页面 cout不缺页endl;score+=1;/统计不缺页次数 else space = findSpace(Nsize); if(space != -1)/找到空闲内存 blockspace = pagei; display(Nsize); else aition = findReplace(Nsize);/找到应予置换页面blockaition = pagei; display(Nsize); for(int j=0; jNsize; j+) blockj.biaoji+;/BLOCK中所有页面biaoji+ cout缺页次数为:20-scoreendl;cout缺页率为: (20-score)*100/20%endl;/*LRU核心部分*/ void LRU(int Nsize)/最近最久未使用置换算法int exist,space,aition ;float score=0;for(int i=0; iPsize; i+) exist = findExist(i,Nsize); if(exist != -1) blockexist.biaoji=0;cout不缺页endl;score+=1; else space = findSpace(Nsize); if(space != -1) blockspace = pagei; display(Nsize); else aition = findReplace(Nsize);blockaition = pagei; display(Nsize); for(int j=0; jNsize; j+) blockj.biaoji+;/BLOCK中所有页面biaoji+ cout缺页次数为:20-scoreendl;cout缺页率为: (20-score)*100/20%endl;/*OPT算法核心部分*/void OPT(int Nsize)/最优页置换算法int exist,space,aition;float score=0;for(int i=0; iPsize; i+) exist = findExist(i,Nsize); if(exist != -1)/内存中有该页面 cout不缺页endl;score+=1;/统计不缺页次数 else space = findSpace(Nsize); if(space != -1)/找到空闲内存 blockspace = pagei; display(Nsize); else for(int j=0; jNsize; j+) for(int l =i;lPsize;l+) if(blockj.yemian=pagel.yemian)/计算谁是最长时间没使用的 blockj.biaoji=l-i;break; else blockj.biaoji=Psize-i; aition = findReplace(Nsize);/找到应予置换页面blockaition = pagei; display(Nsize); cout缺页次数为:20-scoreendl;cout缺页率为: (20-score)*100/20%endl;void BlockClear(int Nsize)/块清除 for(int i=0; iNsize; i+) blocki.yemian = -1; blocki.biaoji = 0; /*主程序*/ void main(void) int i,select,Nsize,QStringPsize=0; while(select) cout页面号引用串: ; for(i=0;i20;i+) coutQStringi ; coutendl;cout+*+endl;cout+-欢迎-+endl;cout+-页面置换算法-+endl;cout+-选择应用FIFO算法-+endl;cout+-选择应用LRU算法-+endl;cout+-选择应用OPT算法-+endl;cout+-选择插入新的页面号引用串+endl;cout+-选择退出-+endl;cout+*+endl;coutselect; switch(select) case 0: break; case 1: coutNsize;while(1) if(Nsize0&Nsize=10) Init(QString,Nsize);cout页面号引用串: ; for(i=0;iPsize;i+) coutQStringi ; coutendl; coutFIFO算法结果如下:endl; FIFO(Nsize); BlockClear(Nsize); cout-endl;system(pause);system(cls); break; else cout-输入有误,物理块数请选择1-10的数-endlNsize;break; case 2: coutNsize;while(1) if(Nsize0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 泸州市中石化2025秋招笔试模拟题含答案油田工程技术岗
- 中国广电枣庄市2025秋招笔试行测题库及答案网络优化与维护类
- 梅州市中储粮2025秋招面试专业追问题库仓储保管岗
- 盐城市中储粮2025秋招笔试题库含答案
- 中国联通邵阳市2025秋招面试无领导高频议题20例
- 常德市中储粮2025秋招质检化验岗高频笔试题库含答案
- 中国移动天津市2025秋招心理测评常考题型与答题技巧
- 长沙市中储粮2025秋招面试专业追问题库基建工程岗
- 2025年中职入门考试题及答案
- 中国移动来宾市2025秋招行业解决方案岗位专业追问清单及参考回答
- 客服人员绩效考核方案
- 苹果电脑macOS效率手册
- 职称英语A级词汇大全
- 某光伏发电工程EPC总承包投标文件技术文件
- (正式版)JBT 2603-2024 电动悬挂起重机
- JJG(交通) 133-2023 落锤式弯沉仪
- 工厂主管人员值班表
- 消防安全周巡查记录表
- 第三章 护理伦理学基本原则规范和范畴
- 能源化学与能源化工概论-第一章 能源简介
- FZ/T 52058-2021低熔点聚乳酸(LMPLA)/聚乳酸(PLA)复合短纤维
评论
0/150
提交评论