2014改进型算法实验报告.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
福州大学工程技术学院 实 验 报 告 课程名称: 操作系统 ____ 学 号: xx ____ 姓 名: xx _____ 专 业: 计算机科学与技术 ____ 年 级: 10级 学 期: 2010年第1学期 _ 2010年12月20日 实验一 页面置换算法及其实现分析 一、实验目的 本实验主要对操作系统中应用的一些关键算法进行模拟。学生通过设计与实现相关算法,能够加强对相应理论的理解,并对了解操作系统内部的基本处理原理与过程也有很多益处。 实验要求 描述Clock算法的基本原理、必要的数据结构、算法执行流程图、编码实现。 三、实验内容 1、页面置换原理描述 在采用请求分页机制的操作系统中,当运行一个程序的时候,若要访问的页面不在内存中而需要把它们调入内存,但此时内存已无空闲空间,为了保证该进程能正常运行,需选择内存中暂时不用的页面调出到磁盘交换区。选择调出哪个页面,由页面算法决定。页面置换算法的好坏,直接影响系统的性能,所以一个好的页面置换算法,应尽可能选择调出较长时间内不会再访问的页面,以保证较低的缺页率。 改进型的Clock算法的思想:在将一个页面换出时,如果该页已被修改过,便须将它重新写到磁盘上;但如果该页未被修改过,则不必将它拷回磁盘。同时满足这两条件的页面作为首先淘汰的页。由访问位A和修改位M可以组合成下面四种类型的页面: 1 类(A=0,M=0):表示该页最近既未被访问、又未被修改,是最佳淘汰页。 2 类(A=0,M=1):表示该页最近未被访问,但已被修改,并不是很好的淘汰页。 3 类(A=1,M=0):最近已被访问,但未被修改,该页有可能再被访问。 4 类(A=1,M=1):最近已被访问且被修改,该页有可能再被访问。 在内存中的每个页必定是这四类页面之一,在进行页面置换时,可采用与简单Clock算法相类似的算法,其差别在于须同时检查访问位和修改位,以确定该页是四类页面中的哪一种。此算法称为改进型Clock算法。其执行过程可分成以下三步: (1)从指针所指示的当前位置开始,扫描循环队列,寻找A=0且M=0的第一类页面,将所遇到的第一个页面作为所选中的淘汰页。在第一次扫描期间不改变访问位A。 (2)如果第一步失败,即查找一周后未遇到第一类页面,则开始第二轮扫描,寻找A=0且M=1的第二类页面,将所遇到的第一个这类页面作为淘汰页。在第二轮扫描期间,将所有经过的页面的访问位置0。 (3)如果第二步也失败,即未找到第二类页面,则将指针返回到开始的位置,并将所有的访问位复0。然后,重复第一步,如果仍失败,必要时再重复第二步,此时就一定能够找到被淘汰的页。 3、改进型的 Clock算法的流程图如下: 3、页面置换实现过程 定义页面表的数据结构,它包括页号(info),访问位(A),修改标志(M)和指针4个属性。代码如下: templatetypename Tclass Node //结点类模板,不同数据类型,编译时生成不同的类 { public: T info; //定义三个变量 int A; //访问页变量,引用位的值 int M; //修改页变量,引用位的值 NodeT *link;//定义类的基地址 }; (2)通过界面接收的页面数(K),在主程序中先对K个页面通过调用方法Insertrear(T data)进行初始化,代码如下: while(1) {if(nk) {cout请输入要访问的页面号:endl; cinnum; coutendl; www-Insertrear(num); n++; } } 初始化显示如下图: 初始化页面之后会提示是否对内存中存在的页面进行修改,选择Y,就会调用方法change(),并对你选择的页面的修改标志(M)进行修改,把它改为1(说明该页面已被修改过了)。选择N,就会提示你“请输入访问的页面号”,当你输入一个页面号: a、通过调用方法find0(T data)判断你输入的页面号是否跟内存中存在的页面号是否相同,如果相同,通过调用方法tihuan(NodeT*p,T data)来进行置换页面。代码如下: find0(T data) {NodeT *tempb; tempb=head-link; while(tempb!=head) {if(tempb-info==data) retu

文档评论(0)

mPfLSltjAw + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档