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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

完整word版页面置换算法实验报告文档格式.docx

1、LRU是根据页面调入内存后的使用情况进行决策的,它利用“最近的过去”作为“最近的将来的近似,选择最近最久未使用的页面予以淘汰。该算法主要借助于页面结构中的访问时间time来实现,time记录了一个页面上次的访问时间,因此,当须淘汰一个页面时,选择处于内存的页面中其time值最小的页面,即最近最久未使用的页面予以淘汰。LFU页面置换算法LFU要求为每个页面配置一个计数器(即页面结构中的counter),一旦某页被访问,则将其计数器的值加1,在需要选择一页置换时,则将选择其计数器值最小的页面,即内存中访问次数最少的页面进行淘汰。设计流程: 1。通过随机数产生一个指令序列,共320条指令。 2.指令

2、序列变换成页地址流 3.计算并输出下述各种算法在不同内存容量下的命中率。 4.在主函数中生成要求的指令序列,并将其转换成页地址流;在不同的内存容量下调用上述函数使其计算并输出相应的命中率。三、实验步骤(包括主要步骤、代码分析等)主要代码:1。页面结构 typedef struct int pn, pfn, counter, time; pl_type ;pl_type pltotal_vp;其中pn为页面号(页号),pfn为页帧号(物理块号),counter为一个周期内访问该页面的次数,time为访问时间;pltotal_vp为页面结构数组,由于共有320条指令,每页可装入10条指令,因此虚页

3、长total_vp的值为32.将此结构封装到Pahg.h文件中。2.页帧控制结构struct pfc_struct int pn, pfn; struct pfc_struct *next;;typedef struct pfc_struct pfc_type;pfc_type pfctotal_vp, freepf_head, busypf_head, *busypf_tail;其中pfctotal_vp定义用户进程的页帧控制结构数组,在该实验中,用户内存工作区是动态变化的,最多可达到用户进程的虚页数目,即32个物理块。*freepf_head为空闲页帧头的指针busypf_head为忙页帧

4、头的指针busypf_tail忙页帧尾的指针讲此结构封装到PageControl。h头文件中。3。主要函数(1) void initialize(int): 初始化函数该函数主要对页面结构数组pl和页帧结构数组pfc进行初始化,如置页面结构中的页面号pn,初始化页帧号pfn为空,访问次数counter为0,访问时间time为-1;同样对页帧数组进行初始化,形成一个空闲页帧队列.(2) void OPT(int): 计算使用最佳页面算法时的命中率(3) void FIFO(int): 计算使用先进先出页面置换算法时的命中率(4) void LRU(int): 计算使用最近最久未使用页面置换算法时

5、的命中率(5) void LFU(int): 计算使用最少使用置换算法时的命中率void FIFO(int total_pf) /先进先出页面置换算法/ int i,j; pfc_type p; initialize(total_pf); busypf_head=busypf_tail=NULL;for(i=0;itotal_instruction;i+) if(plpagei.pfn=INVALID) /*页面失效/ diseffect=diseffect+1; if(freepf_head=NULL) /*无空闲页帧*/ p=busypf_head-next; plbusypf_head-

6、pn.pfn=INVALID; /将忙页帧队首页面作为换出页面 freepf_head=busypf_head; freepf_head-next=NULL; busypf_head=p; /忙页帧头指针后移 p=freepf_headnext; /有空闲页帧 freepf_head freepf_head-pn=pagei; / 将所需页面调入空闲页帧 / plpagei.pfn=freepf_head-pfn; if(busypf_tail=NULL) / 若忙页帧队列为空,则将其头尾指针都指向刚调入页面所在的页帧 / busypf_head=busypf_tail=freepf_head

7、; else /否则,将刚调入页面所在的页帧挂在忙页帧队列尾部 busypf_tailnext=freepf_head; busypf_tail=freepf_head; freepf_head=p; /空闲页帧头指针后移 printf(FIFO:6。4f ,1-(float)diseffect/320);void LRU(int total_pf) /*最近最久未使用页面置换算法/ int i,j; int min,minj,present_time; initialize(total_pf); present_time=0;i plpagei。pfn=freepf_headpfn; /有空

8、闲页面,改为有效 plpagei。time=present_time; /修改页面的访问时间 freepf_head=freepf_head-next; /减少一个free 页面 else plpagei。time=present_time; /命中则修改该单元的访问时间 present_time+;LRU:%6.4f ,1(float)diseffect/320);void OPT(int total_pf) /* 最佳页面置换算法 / int i,j,max,maxpage,d,disttotal_vp; initialize(total_pf); for(i=0;total_instru

9、ction; if(plpagei.pfn=INVALID) /*页面失效/ if(freepf_head=NULL) /无空闲页面/ for(j=0;j+) if(plj.pfn!=INVALID)/所有位于内存页面的距离变量赋一足够大的数 distj=32767; else /不在内存的页面该变量则置为0 distj=0; d=1; /* 对于位于内存且在当前访问页面之后将再次被访问的页面,dist重置为当 前页 面与之后首次出现该页面时两者之间的距离 / for(j=i+1;jtotal_instruction; if(plpagej.pfn!=INVALID & distpagej=3

10、2767) distpagej=d; d+; max=-1; /查找dist变量值最大的页面作为换出页面 if(maxdistj) max=distj; maxpage=j; freepf_head=pfcplmaxpage。 freepf_headnext=NULL; plmaxpage.pfn=INVALID; plpagei.pfn=freepf_head-pfn; freepf_head=freepf_head- /减少一个free 页面 printf(OPT:6.4f ,1-(float)diseffect/320);void LFU(int total_pf) / 最少使用页面置换

11、算法 / int i,j,min,minpage; if(plpagei。pfn=INVALID) /页面失效 diseffect+; if(freepf_head=NULL) /无空闲页帧 min=32767; for(j=0;jplj.counter&plj。counter; minpage=j; plj.counter=0; freepf_head=pfcplminpage.pfn; plminpage。 freepf_head-next=NULL; plpagei.pfn=freepf_headpfn; plpagei。counter+; /增加页面访问次数 freepf_head=f

12、reepf_headnext; /减少一个free 页 plpagei.counter+; /命中增加页面访问次数LFU:4f ”,1(float)diseffect/320);将上述函数写成头文件的格式封装在Memory.h头文件中,由主函数main调用使用.运行结果打开linux虚拟机,用vim编辑器打开代码进行修改和调整。用g+编译器进行编译运,如图所示:四、结果分析与总结 由实验结果可知opt算法可保证获得最低的缺页率,但是由于目前还无法预知一个进程在内存的若干的页面中,哪一个页面是未来最长时间内不被访问的,因而该算法在实际应用中无法实现。Fifo算法有时候比较差,因为它所依据的条件是各个界面调入内存的时间,而页面调入的先后顺序不能反映页面的使用情况。LRU算法置换算法虽然是一种比较好的置换算法,但是在实际中需要用到寄存器和栈的硬件支持,LFC算法选择在最近时期使用最少的页面作为淘汰页,效率有时候很高.教师签名: 年 月 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1