计算机操作系统-页面置换算法.doc_第1页
计算机操作系统-页面置换算法.doc_第2页
计算机操作系统-页面置换算法.doc_第3页
计算机操作系统-页面置换算法.doc_第4页
计算机操作系统-页面置换算法.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计 报 告课程名称 计算机系统与系统软件 课题名称 页面置换算法问题 专 业 信息管理与信息系统 班 级 * 学 号 * 姓 名 * 指导教师 * 2013年 7 月 7 日课 程 设 计 任 务 书课程名称 计算机操作系统 课 题 页面置换算法问题 专业班级 * 学生姓名 * 学 号 * 指导老师 * 审 批 任务书下达日期 2013 年 6 月 27 日任务完成日期 2013 年 7 月 7 日一、设计内容与设计要求1.课程设计目的全面熟悉、掌握JAVA程序设计基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及JAVA程序设计的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,增强JAVA程序设计概念,熟悉java语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。 进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。2.课题题目页面置换算法问题3.设计要求设计课题题目:按学号顺序(每15位学生选择一题)选择相应题号的课题。换题者不记成绩。根据自己对应的课题完成以下主要工作:完成系统需求分析:包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。完成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。完成系统详细设计:包括需求分析;类层次图;界面设计与各功能模块实现。系统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。使用说明书及编程体会:说明如何使用你编写的程序,详细列出每一步的操作步骤。关键源程序(带注释)按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。不得抄袭他人程序、课程设计报告,每个人应体现自己的个性。设计。二、进度安排第18周 星期三 上午 8:00-12:00 星期四 上午 8:00-12:00 下午 14:30-18:30课题4:页面置换算法问题(一)、课程设计题目:页面置换算法问题(二)、目的与要求: 1、目的: (1)要求学生达到熟练掌握java语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2、基本要求: (1)要求利用面向对象的方法以及java的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统中定义类,每个类中要有各自的属性和方法; (4)在系统的设计中,至少要用到面向对象的一种机制。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 4、写出设计说明书 (三)、设计方法和基本原理: 1、问题描述(功能要求): 页面置换算法问题能实现1)最佳置换算法2)先进先出算法3)最近最久未被使用算法4)clock置换算法要求:(1)界面友好,能自由选择算法(2)能实现初始页面的设置(3)随机生成访问页面(包括数量和页面号)2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法); (4)完成类中各个成员函数的定义;(5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告以及系统使用说明书目 录1 系统需求分析1.1 关于页面置换算法1.1.1页面置换算法及其分类在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内 存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。 常见的置换算法有: (1)最佳置换算法(OPT)(理想置换算法) (2)先进现出置换算法(FIFO): (3)最近最久未使用(LRU)算法 (4)Clock置换算法(LRU算法的近似实现) (5)最少使用(LFU)置换算法 (6)页面缓冲置换算法1.1.2关于页面置换算法模拟程序问题的产生在各种存储器管理方式中,有一个共同的特点,即它们都要求将一个作业全部装入内存方能运行,但是有两种情况:(1) 有的作业很大,不能全部装入内存,致使作业无法运行;(2) 有大量作业要求运行,但内存容量不足以容纳所有这些作业。而虚拟内存技术正式从逻辑上扩充内存容量,将会解决以上两个问题。 从内存中调出一页程序或数据送磁盘的对换区中,通常,把选择换出的页面的算法称为页面置换算法(Page-Replacement Algorithms)。进而页面置换算法模拟程序能客观的将其工作原理展现在我们面前。2 总体设计2.1总体设计图主函数输入物理块和页面数选择最近最久未使用算法选择最佳置换算法选择lock置换算法选择先进先出置换算法输出缺页率图 2.1 总体设计图2.2 各函数之间的调用关系主函数调用开始函数getin(),通过选择再调用最佳置换算法opt()、先进先出置换算法fifo()、最近最久未使用置换算法lru()、clock置换算法。主函数Getin函数选择OPT函数FIF函数LRU函数LOCK函数 图2.2 各函数之间的调用关系3 详细设计3.1 主要函数以及其思想流程图3.1.1 最佳置换算法;void OPT()设计原理:需要进行页面置换,把内存中以后一段时间都不使用或是使用时间离现在最远的页面换出。 开始页面走向存入数组yms 中,内存块用wlk表示初始化为0当前yms是否装满? n y装满,并累积缺页个数。 当前页面是否在内存中? n y不缺页把wlk中以后一段时间都不使用或是使用时间离现在最远的换出统计缺页 Ym数组是否读完? n输出缺页率 y结束图3.1 OPT 流程图3.1.2 先进先出置换算法;void FIFO()设计原理:需要进行页面置换,即把内存中装入最早的那个页面淘汰,换入当前的页面。 开始页面走向存入数组yms 中,内存块用wlk表示初始化为0当前yms是否装满? n y装满,并累积缺页个数。 当前页面是否在内存中? n y按页面加载的先后顺序,换出最先进入的,用max记录。不缺页统计缺页Ym数组是否读完? n输出缺页率 y结束 图3.2 fifo流程图3.1.3 最近最久未使用置换算法void LRU()设计原理:当需要淘汰某一页时,选择离当前时间最近的一段时间内最久没有使用过的页先淘汰该算法的主要出发点是,如果某页被访问了,则它可能马上还要被访问。或者反过来说如果某页很长时间未被访问,则它在最近一段时间也不会被访问。 开始页面走向存入数组yms 中,内存块用wlk表示初始化为0当前yms是否装满? n y装满,并累积缺页个数。 当前页面是否在内存中? n y按页面加载的先后顺序,换出最先进入的,用max记录。不缺页统计缺页Ym数组是否读完? n输出缺页率 y 结束图3.3 lru流程图3.1.4 简单的lock置换算法lock()设计原理:只需为每页设置以为访问位,再将内存中的所有页面都通过链接指针链成一个循环队列。当某页被访问时,其访问位被置1。置换算法在选择一页淘汰时。如果访问位是0,换出此页,若为1,则重新将它置为0,暂不换出。在按照fifo算法检查下一个页面。当检查到队列中的最后一个页面时,若其访问位仍为1,则返回到队首去检查第一个页面。 开始页面走向存入数组yms 中,内存块用wlk表示初始化为0当前yms是否装满? n y装满,并累积缺页个数。 当前页面是否在内存中? n y循环队列,将当前页面的访问位置1,并将访问位为1的,置0。Front前进一位置换访问位为0的页面,将访问位为1的访问位置0。Front前进一位。统计缺页Ym数组是否读完? n 输出缺页率 y结束图3.4 lock流程图4 系统调试及运行结果4.1 主界面程序运行,如图4.1所示图4.1 主界面说明:首先键入你说要设置的内存个数,页面个数。再输入页面的内容。随后选择算法。4.2 选择OPT算法程序运行,如图4.2所示。图4.2 OPT算法说明:当选择1,即最佳置换算法时。输出置换过程,和标记缺页。最后计算出缺页率。4.3 选择FIFO算法程序运行,如图4.3所示。图4.3 FIFO算法说明:当选择2,即先进先出置换算法时。输出置换过程,和标记缺页。最后计算出缺页率。4.4 选择LRU算法程序运行,如图4.4所示。图4.4 LRU算法说明:当选择3,即最近最久置换算法时。输出置换过程,和标记缺页。最后计算出缺页率。4.5选择CLOCK算法运行程序,如图4.5所示:图4.5 CLOCK算法说明:当选择4,即简单的lock置换算法时。输出置换过程,和标记缺页。最后计算出缺页率。5 程序调试5.1 调试结果图5.1 调试1原因:swich语句后面未加“”。图5.2 调试2原因:定义数组未明确个数。6 心得体会页面置换算法,是关乎系统性能的一个因素。因此理解好页面置换算法,对理解操作系统有很大的帮助。什么事页面置换算法,在进程运行过程中,若所要访问的页面不在内存而需要把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据送磁盘的对换区中。这就需要用到页面置换算法来选择哪页调出。在这个计算机系统与系统软件课程设计时,我选择了用c+来编程。以前是习惯用C语言编的。因此这对我充满挑战性,我使用了两个数组,一个是内存块用wk表示,一个是页面用ym表示。并设为全局变量,以便后面的程序调用。之后,以面向对象的方法,定义了五个子函数,分opt(),fifo(),lru(),lock(),getin()。中间遇到了不少问题,比方说wk,ym两个数组的初始化。在这次课设中学习到了很多东西,锻炼了自己的设计思维,在程序终于告结的之后,感谢李老师和所以帮助我的同学,没有他们的帮助就不会这么顺利的完成这次课设。7 附录7.1 源代码#include using namespace std;int wk10=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;int ym20=0;class ymzhprivate:int wlk, yms;public:ymzh(int w,int y);void getin();/输入函数。void opt();/最佳置换算法void fifo();/先来先置换算法void lru();/最近最久置换算法void lock(); /简单的lock置换算法;ymzh:ymzh(int w,int y)wlk=w;yms=y;void ymzh:getin()cout请输入页面的内容endl;for(int i=0;iymi;/*if(ymi0)cout您输入有误,请重新输入!*/cout共有i个数字endl;/*if(i!=yms)cout你输入的数字个数与你设置的个数不一致,请重来!;exit(0);*/cout输入成功;void ymzh:opt()int i,j,ii,max1,max2,jj=0,log,qy=0;int wk10=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;cout您选用的页面置换算法为最佳置换算法,置换过程如下:endl;for(i=0;iyms;i+)coutymitt;if(iwlk)wkjj=ymi;for(j=0;jwlk&wkj!=-1;j+)coutwkj ;jj+;qy+;coutttt缺页endl;/判断物理块中有所在页面。elsefor(j=0,log=0;jwlk;j+)if(wkj=ymi)log=1;break;elselog=0;if(log=0)for(j=0,max1=0,max2=i;jwlk;j+)ii=i;while(iiyms&wkj!=ymii)ii+;if(iimax2)max1=j;max2=ii;wkmax1=ymi;for(j=0;jwlk;j+)coutwkj ;qy+;coutttt缺页endl;elsecoutttt不缺页endl;cout缺页率为(qy/(yms/1.0)endl;void ymzh:fifo()int i,j,jj=0,log,front=0,qy=0;int wk10=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;cout您选用的页面置换算法为先进先出置换算法,置换过程如下:endl;for(i=0;iyms;i+)coutymitt;if(iwlk)wkjj=ymi;for(j=0;jwlk&wkj!=-1;j+)coutwkj ;jj+;qy+;coutttt缺页endl;/判断物理块中有所在页面。elsefor(j=0,log=0;jwlk;j+)if(wkj=ymi)log=1;break;elselog=0;if(log=0)wkfront=ymi;front=(front+1)%wlk;for(j=0;jwlk;j+)coutwkj ;qy+;coutttt缺页endl;elsecoutttt不缺页endl;cout缺页率为(qy/(yms/1.0)endl;void ymzh:lru()int i,j,ii,min1,min2,jj=0,log,qy=0;int wk10=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;cout您选用的页面置换算法为最近最久未使用置换算法,置换过程如下:endl;for(i=0;iyms;i+)coutymitt;if(iwlk)wkjj=ymi;for(j=0;jwlk&wkj!=-1;j+)coutwkj ;jj+;qy+;coutttt缺页endl;/判断物理块中有所在页面。elsefor(j=0,log=0;jwlk;j+)if(wkj=ymi)log=1;break;elselog=0;if(log=0)for(j=0,min1=0,min2=i;jwlk;j+)ii=i;while(wkj!=ymii)ii-;if(iimin2)min1=j;min2=ii;wkmin1=ymi;for(j=0;jwlk;j+)coutwkj ;qy+;coutttt缺页endl;elsecoutttt不缺页endl;cout缺页率为(qy/(yms/1.0)endl;void ymzh:lock()int i,j,jj=0,log,front=0,qy=0;int bj10=1,1,1,1,1,1,1,1,1,1;int wk10=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;cout您选用的页面置换算法为简单的lock置换算法,置换过程如下:endl;for(i=0;iyms;i+)coutymitt;if(iwlk)wkjj=ymi;for(j=0;jwlk&wkj!=-1;j+)coutwkj ;jj+;qy+;coutttt缺页endl;/判断物理块中有所在页面。elsefor(j=0,log=0;jwlk;j+)if(wkj=ymi)log=1;break;elselog=0;if(log=0)while(bjfront=1)bjfront=0;front=(front+1)%wlk;wkfront=ymi;bjfront=1;front=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论