ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:90.75KB ,
资源ID:13264261      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-13264261.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Clock及改进Clock置换算法实现.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

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

1、Clock及改进Clock置换算法实现Clock-及改进-Clock置换算法实现LT(1)Clock置换算法:当采用简单Clock算法是只需为每页设置一位访问位,再将内存中的所用页面都通过链接指针链接成一个循环队列。当某页被访问时,其访问位被置1。置换算法在选择一页淘汰时,只需检查页的访问位。如果是0,就选择该页换出;若为1,则重新将他置0,暂不换出,而给该页第二次驻留内存的机会,在按照FIFO 算法检查下一个页面。当检查到队列中的最后一个页面是,若其访问位仍为1,则再返回到队首去检查第一个页面。(2)算法流程图(3)改进型Clock置换算法在将一个页面换出时,如果该页已被修改过,便须将该页重

2、新写回到磁盘上;但如果该页未被修改过,则不必将它拷回磁盘。在改进型Clock算法中,除须考虑页面的使用情况外,还须在增加一个因素,即置换代价,这样 页面换出时,既要是未使用过的页面,又要是未被修改过的页面。把同时满足这两个条件的页面作为首选淘汰的页面。由访问位A和修改位M可以组合成下面四种类型的页面:1类(A=0,M=0):表示该页最近既未被访问,又未被修改,是最佳淘汰页。2类(A=0,M=0):表示该页最近未被访问,但已被修改,并不是很好的淘汰页。3类(A=1,M=0):表示该页最近已被访问,但未被修改,该页有可能在被访问。4类(A=1,M=1):表示该页最近已被访问且被修改,该页可能再被访

3、问。,执行过程: 从查寻指针当前位置起扫描内存分页循环队列,选择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 iendl; else if(count = A) lost+; for(j=0; j A; ) if(statej = 0) break; el

4、se statej = 0; j+; j = j %3; Insidej = Pagenum; statej = 1; for(int i=0 ; i A; i+) cout物理块i#中内容:Inside iendl; else Insidecount = Pagenum; count+; for(int i=0 ; i A; i+) cout物理块i#中内容:Inside iendl; (2)改进Clock置换算法实现void LCLOCK(int num) int j; if(isInside2(num) cout命中endl; for(int i=0 ; i A; i+)cout物理块i

5、#中内容:Inside iendl; else if(count = A) lost+; j =whichpage(); Insidej = Pagenum; state2j0 = 1; for(int i=0 ; i A; i+) cout物理块i#中内容:Inside iendl; else Insidecount = Pagenum; count+; for(int i=0 ; i A; i+) cout物理块i#中内容:Inside iendl; 五程序截图运行截图:六程序代码#include#includeusing namespace std;#define M 2int cons

6、t A = 4;/内存中存放的页面数int count = 0;int InsideA;int const PageCount =10;/总的页面数int PagePageCount;int insert = 0;/先到先出置换算法fcfo中表示 当内存满的时候,新进入的页号放的位置int suiji = 0; /随机置换算法randchange 当内存满的时候,新进入的页号放的位置int stateA;/clock置换算法中,内存中的每个页面号对应的状态int state2AM;/ 二维数组,第一行第一列为访问位,第一行的第二列为修改位double lost = 0.0;/检测页号是否在内存

7、中bool isInside(int num) for(int i = 0; i A; i+) if(Insidei = Pagenum) statei = 1; return true; return false;/判断页面是否已经被修改bool change() if(rand()%2+1) = 1 ) cout该页面被修改endl; return true; else return false;/用于改进型clock置换算法,检测页号是否在内存中并把访问位和修改位置1bool isInside2(int num) for(int i = 0; i A; i+) if(Insidei =

8、Pagenum) if(change() state2i0 = 1; state2i1 = 1; else state2i0 = 1; return true; return false;/用于改进型clock置换算法,判断内存中第几个需要被置换int whichpage() int j; for(j=0; j A;j+) if(state2j0 = 0&state2j1 = 0) return j; for(j=0; j A;j+ ) if(state2j0 = 0&state2j1 = 1) return j; state2j0 = 0 ; for(j=0; j A;j+ ) state2

9、j0 = 0 ; return whichpage();/简单Clock置换算法void CLOCK(int num) int j; if(isInside(num) cout命中endl; for(int i=0 ; i A; i+) cout物理块i#中内容:Inside iendl; else if(count = A) lost+; for(j=0; j A; ) if(statej = 0) break; else statej = 0; j+; j = j %3; Insidej = Pagenum; statej = 1; for(int i=0 ; i A; i+) cout物

10、理块i#中内容:Inside iendl; else Insidecount = Pagenum; count+; for(int i=0 ; i A; i+) cout物理块i#中内容:Inside iendl; /改进型clock置换算法void LCLOCK(int num) int j; if(isInside2(num) cout命中endl; for(int i=0 ; i A; i+) cout物理块i#中内容:Inside iendl; else if(count = A) lost+; j =whichpage(); Insidej = Pagenum; state2j0 =

11、 1; for(int i=0 ; i A; i+) cout物理块i#中内容:Inside iendl; else Insidecount = Pagenum; count+; for(int i=0 ; i A; i+) cout物理块i#中内容:Inside iendl; int main() char ch ; cout默认的页号为endl; for(int i = 0; i PageCount; i+) Pagei =rand()%9 + 1; coutPagei ; coutendl; while(1) cout-1.Clock置换算法(CLOCK)-endl; cout-2.改进

12、型Clock置换算法-endl; cout-0.退出-endl; cout-输入进行选择-ch; switch(ch) case 1: lost = 0; count = 0; for(int m = 0; m A; m+) statem = 0; for(int j = 0; j A; j+) Insidej = 0; for(int i = 0; i PageCount; i+) cout读入Pagei=Pageiendl; CLOCK(i); coutn页面访问次数PageCountn缺页中断次数lostn缺页率lost/(PageCount)nendl; break; case 2: lost = 0; count = 0; for(int m = 0; m A; m+) for(int n = 0; n 2;n+) state2mn = 0; for(int j = 0; j A; j+) Insidej = 0; for(int i = 0; i PageCount; i+) cout读入Pagei=Pageiendl; LCLOCK(i); coutn页面访问次数PageCountn缺页中断次数lostn缺页率lost/(PageCount)nendl; break; case 0: exit(0); break; return 0;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2