Clock及改进Clock置换算法实现.docx

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用标准文案 操作系统课程设计报告 学 院: 学生姓名: __ 学 号: 题 目: Clock 及改进 Clock 置换算法实现 指导教师: 精彩文档 实用标准文案 一、课程设计目的 操作系统课程设计是计算机专业重要的教学环节, 它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。 进一步巩固和复习操作系统的基础知识。 培养学生结构化程序、模块化程序设计的方法和能力。 提高学生调试程序的技巧和软件设计的能力。 提高学生分析问题、解决问题以及综合利用 C 语言进行程序设计的能力。 二、课程设计内容与要求: 模拟实现 Clock 及改进 Clock 置换算法,程序应按照 Clock 置换算法及改进 Clock 置换算法模拟实现页面的置换。 1.不同的功能使用不同的函数实现(模块化) ,对每个函数的功 能和调用接口要注释清楚。对程序其它部分也进行必要的注 释。 2.对系统进行功能模块分析、画出总流程图和各模块流程图。 3.用户界面要求使用方便、简洁明了、美观大方、格式统一。所 有功能可以反复使用,最好使用菜单。 4.通过命令行相应选项能直接进入某个相应菜单选项的功能模 块。 5.所有程序需调试通过 三、算法及关键数据结构设计 精彩文档 实用标准文案 (1)Clock 置换算法 : 当采用简单 Clock 算法是只需为每页设置一位访问位,再将内存中的所用页面都通过链接指针链接成一个循环队列。 当某页被访问时,其访问位被置 1。置换算法在选择一页淘汰时,只需检查页的访问位。如果是 0,就选择该页换出;若为 1,则重新将他置 0,暂不换出,而给该页第二次驻留内存的机会 ,在按照 FIFO 算法检查下一个 页面。当检查到队列中的最后一个页面是,若其访问位仍为 1,则再 返回到队首去检查第一个页面。 (2)算法流程图 (3)改进型 Clock置换算法 在将一个页面换出时, 如果该页已被修改过, 便须将该页重新写回 到磁盘上;但如果该页未被修改过,则不必将它拷回磁盘。在改进型 Clock 算法中,除须考虑页面的使用情况外,还须在增加一个因素, 即置换代价,这样 页面换出时,既要是未使用过的页面,又要是未 被修改过的页面。把同时满足这两个条件的页面作为首选淘汰的页 精彩文档 实用标准文案 面。由访问位 A 和修改位 M 可以组合成下面四种类型的页面 : 类( A=0,M=0):表示该页最近既未被访问,又未被修改,是最佳淘汰页。 类( A=0,M=0):表示该页最近未被访问,但已被修改,并不是很好的淘汰页。 类( A=1,M=0):表示该页最近已被访问,但未被修改,该页有可能在被访问。 类( A=1,M=1):表示该页最近已被访问且被修改,该页可能再被访问。, 执行过程 :① 从查寻指针当前位置起扫描内存分页循环队列,选择 A=0 且 M=0 的第一个页面淘汰;若未找到,转 ② ② 开始第二轮扫描,选择 A=0 且 M=1 的第一个页面淘汰,同时将 经过的所有页面访问位置 0;若不能找到,转 ① 四、程序代码分析 (1) Clock 置换算法代码实现 void CLOCK(int num){ int j; if(isInside(num)){ cout 命中 endl; for(int i=0 ; i A; i++) cout 物理块 i# 中内容 :Inside [i]endl; 精彩文档 实用标准文案 } else if(count == A){ lost++; for(j=0; j A; ){ if(state[j] == 0){ break; } else{ state[j] = 0; } j++; j = j %3; } Inside[j] = Page[num]; state[j] = 1; for(int i=0 ; i A; i++) cout 物理块 i# 中内容 :Inside [i]end l; } else{ Inside[count] = Page[num]; 精彩文档 实用标准文案 count++; for(int i=0 ; i A; i++) cout 物理块 i# 中内容 :Inside [i]end l; } } (2)改进 Clock 置换算法实现 void LCLOCK(int num){ int j; if(isInside2(num)){ cout 命中 endl; for(int i=0 ; i A; i++) cout 物理块 i# 中内容 :Inside [i]endl; } else if(count == A){ lost++; =whichpage(); Inside[j] = Page[num]; state2[j][0] = 1; f

文档评论(0)

150****5607 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档