- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)