完整word版页面置换算法的实现和比较试验报告.docVIP

完整word版页面置换算法的实现和比较试验报告.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浙江万里学院《操作系统》实验报告 实验名称:页面置换算法的实现和比较 指导教师:詹卫华 2018.11.27 实验时间: 26组号:164 班级:计算机 姓名:林文辉 学号:2016011147 164 班级:计算机 姓名:王旭升 学号:2016011133 一、实验目的 理解各种常见的页面置换算法的原理,并能实现这些算法,并进行比较。 二、实验内容 实现以下页面置换算法: 先进先出(1) 最近最久未使用(2) 时钟页面置换算法(选做)(3) OPT置换算法) 4( ,各算法输出对应的页面置换序要求根据输入的页面引用序列和物理块数k 列,并统计缺页率。 k=4 ,页面引用序列为:测试样例为, k=3和 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1】 【 二、实验过程 1. 功能设计 )重要的数据结构设计1( queue 1)顺序队列 queueSTL标准库容器中的实际代码中使用的是deque,双端队列,只是因为,实际上只需要让双端队列一头只能没有迭代器不便于遍历队列才选的deque 头文 进,另一头只出即可实现顺序队列。代码的话直接通过 #includedeque 创建队列,具体构造细节不表。件的构造函数dequeint 作用的话相当于内存的物理地址空间,页面调入内存在这里就是调入该队 列,页面置换就相当于出队列成员并入队列新成员的过程。 displace; int deque dequeint::iterator pos; //迭代器 stack )栈 2 不提供遍历,没有迭代器,在实际使用中选择 与队列的理由类似,stcak进行替代,只需要让双端队列的一端堵死(既不让它进也不让它出)即deque 可实现栈。 )相同,值得一提的是,在实际使用中可能会出现如是情况 声明方式与(1 dequepagedisplace; dequepage::iterator pos; //迭代器 (结构体类型)的队列 不建立默认int类型的队列,而是建立一个page 直接进行队列 在LRU算法中,在页面进行替换的时候,为了方便,使用erase 中的指定元素删除而不是用出队列,其实破坏了双端队列的规则(在两端进 反而更像普通 行删除插入),实际上…在这一点上可能连双端队列都算不上… 的线性表了… 3)动态数组deque函数,这里用了算法中,在页面进行替换的时候,用了insert 在CLOCK支持随机访问的特性,实际上已经跟双端队列没啥关系了,性质源于它的原 型——动态数组,实际上是若干连续空间。 4) 页面结构体 OPT LRU和 struct PAGEtypedef { //页号 int num; //时间 int time; }page; 考虑到部分算法的需求,当然实际上不特地定义结构体,在程序中随便设置 一些标志位或者标志数组也是可以考虑的。 CLOCK算法还用到了如下页面结构体 其中, structtypedefPAGE { //页号 int num; //使用位 int visit; }page; 5) 全局常量 #define PAGE_VIEW 20 //访问总次数 其中,OPT算法还用到了一个常量,表示接下来永远不会被访问的页面 #define Infinite 65535 //无穷大 (2)主要函数或接口设计 代码本身没有采用函数的形式,实际上很多部分是可以写成函数的形式的。包括三段程序本身也可以写成三个函数合成为一段程序,每个算法对应一个子函数。很多 数据结构全局变量实际上三个函数是差不多的,可以使用同一个。 以及一些反复执行的常见操作也可以进行封装。. 例如: out有参函数 利用迭代器遍历队列,然后输出队列,就可以封装成一个然后情况判断封装成一个函switch case 包括四种情况的判断主程序部分可以改为 数返回状态类型,包括每种状态执行的内容也可以封装成几个小函数。 OPT算法开头关于时间计算的函数也可以封装成函数。 LRU算法和 实现起来并不复杂,虽然能简洁不少,不过现在的代码也挺好,每个算法独立开来,:) 某些情况下还是对阅读代码有很大帮助的,所以就没改 标准库函数:此外调用了不少STL] 而言 [对dequ

文档评论(0)

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

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

1亿VIP精品文档

相关文档