全局页面替换策略.docxVIP

  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文档。上传文档
查看更多
全局页面替换策略

全局页面替换策略 南通大学杏林学院 计算机科学与技术专业 设计组长: 左志文 1113023063 组员: 崔佳琪1113023062 黄龙吟1113023060 许张洋1113023017 卢家琦1113023058 瞿灿1113023059 问题描述 在多道程序的正常运行过程中,属于不同进程的页面被分散存放在主存页框中,当发生缺页中断时,如果已无空闲页框,系统要选择一个驻留页面进行淘汰。在此讨论的是所有驻留页面都可作为置换对象的情况,而不管页面所属进程的全局页面置换算法。 实验例题: 一个页式存储管理系统使用FIFO、OPT和LRU页面替换算法,如果一个作业的页面走向为: 2,3,2,1,5,2,4,5,3,2,5,2; 4,3,2,1,4,3,5,4,3,2,1,5; 1,2,3,4,1,2,5,1,2,3,4,5; 当分配给此作业的物理块数分别为3和4时,试描述所发生的缺页中断过程。 需求分析 本实验主要研究的页面置换算法有三个: OPT(OPTimal replacement,OPT)最佳页面替换算法。 FIFO(First In First Out)先进先出页面替换算法。 LRU(Least Recently Used,LRU)最近最少使用页面替换算法。 通过研究这些页面替换算法可以使我们对操作系统的认识更加深入,为以后自己开发操作系统或者进行其他系统分析提供良好的基础,OPT、FIFO、LRU三种算法设计时间不同,性能也不同通过实验我们可以得出比较详细的了解并且可以尝试创造设计出更加优秀的算法。 概要设计 OPT算法: 当要调入一页而必须淘汰旧页时,应该淘汰以后不再访问的页,或距现在最长时间后要访问的页面。 这就需要在替换页面的时候对当前内存区域的各个页面进行一轮判定,找到当前内存区域当中最长时间内不再使用(或今后不再使用)的页面,判定时要扫描下面即将使用的内存列表。 FIFO算法: 基于程序总是按线性顺序来访问物理空间这一假设,总是淘汰最先调入主存的页面,即淘汰在主存中驻留时间最长的页面。 实现这一算法,我们需要按照时间顺序对页面进行排列,需要置换的时候从一端删除页面,而从一端添加进页面。 LRU算法: 淘汰的页面总是在最近一端时间内最久没有访问的那一页,它是基于程序局部性原理来考虑的,认为那些刚被使用过的页面可能还要立即被使用,而那些在长时间内未被使用的页面可能不会立即使用。 为了能准确淘汰最近最少使用的页面,必须维护一个特殊的队列页面淘汰队列。每次使用内存区域对队列进行动态调整,确保最不常使用的页面位于队尾,替换的时候自动替换出队尾出指向的页面。 详细设计 页面替换的实现上使用C++面向对象的设计思路。首先设计出内存管理类,内部维护一个双端链表(deque),和一个定义内存区域最大的值的无符号整型变量unsigned int maxsize。定义两个私有函数bool isPageExist(int page)和bool DeletePage(int page)分别用于判定指定序号的页面是否存在于内存当中,以及在内存中删除指定页面的内存。 内存管理类原型如下 class MemManager { private: dequeint mem; unsigned int maxsize; bool isPageExist(int page); bool DeletePage(int page); public: MemManager(int maxsize); //~MemManager(); void operator()(int maxsize); void clear(); void FIFO(int* pages,int len); void OPT(int* pages,int len); void LRU(int* pages,int len); void info(); }; 三个共有函数FIFO(),OPT(),LRU()分别对应三种算法; clear()函数用于清空管理器对象的内存区; info()函数用于显示当前内存区域情况。 各个函数的具体实现代码: MemManager::MemManager(int maxsize) { this-maxsize = maxsize; } void MemManager::operator()(int maxsize) { this-maxsize = maxsize; //产生新任务,清空内存区域列表 clear(); } void MemManager::clear() { //清空双端队列,即内存区域 mem.clear(); } bool MemManager::isPageExist(int page)

文档评论(0)

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

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

1亿VIP精品文档

相关文档