页面置换算法 实验七报告精要.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
页面置换算法 实验七报告精要

操作系统实验七 先进先出页面置换算法 实验提示: 内存块数由用户手动输入; 页面序列号可随机生成,也可以让用户手动输入; 输出内存块存放页面的情况; 输出缺页次数和缺页率。 实验要求: 实验报告中要给出流程图和源程序,源程序中要附有详细的注释, 给出程序运行时的输入值和运行结果 总结收获或对该题的改进意见和见解。 流程图: 源程序: #include stdio.h #include stdlib.h #include math.h #include conio.h #include time.h #define TRUE 1 #define FALSE 0 #define NULL 0 #define total_instruction 20 #define total_vp 10 typedef struct { int pn,pfn; }pv_type; pv_type pv[10]; typedef struct pf_struct { int pn,pfn; struct pf_struct *next; }pf_type; pf_type pf[20],*free_head,*busy_head,*busy_tail,*q; int page[total_instruction]; int total_pf; int count; void initialiaze() { int i; count=0; for(i=0;itotal_vp;i++) { pv[i].pn=i; pv[i].pfn=-1; } printf(请输入实页数目:); scanf(%d,total_pf); for(i=0;i=total_pf-1;i++) { pf[i].next=pf[i+1]; pf[i].pfn=i+1; pf[i].pn=-1; } pf[total_pf-1].next=NULL; free_head=pf[0]; printf(随机产生的页地址流为:\n); for(i=0;itotal_instruction;i++) { page[i]=rand()%10; printf(%2d,page[i]); } } void FIFO() { int i,j; pf_type *p; q=busy_head=busy_tail=NULL; for(i=0;i=total_instruction-1;i++) { printf(\n第%d次执行:,i+1); if(pv[page[i]].pfn==-1) { count+=1; printf(缺页,缺页次数count=%d,,count); if(free_head==NULL) { printf(实页%d中的页面%d将被置换出去,busy_head-pfn,busy_head-pn); p=busy_head-next; pv[busy_head-pn].pfn=-1; free_head=busy_head; free_head-next=NULL; busy_head=p; } p=free_head-next; free_head-next=NULL; free_head-pn=page[i]; pv[page[i]].pfn=free_head-pn; if(busy_tail==NULL) busy_head=busy_tail=free_head; else { busy_tail-next=free_head; busy_tail=free_head; } free_head=p; } else printf(命中,缺页次数不变,仍为count=%d,count); printf(\npfn pn); for(j=0;j=total_pf-1;j++) { if(pf[j].pn!=-1) printf(\n%d%8d,pf[j].pfn,pf[j].pn); } } printf(\n先进先出算法的命中率为:%6.4f\n缺页总次数为%d\n,1-(float)count/20,count); } void main() { srand((unsigned)time(NULL)); initialiaze(); FIFO(); }; 输入值: 运行结果: 总结收获: 这次实验的目的是模拟虚拟存储的页面置换算法,请求页式虚存管理是常用的虚拟存储管理方案之一。通过请求页式虚存管理中对页面置换算法的模拟,有助于理解虚拟存储技术的特点,并加深对请求页式虚存管理的页面调度算法的理解。 这次实验采用的是先进先出算法。先进先出(FIFO)置换算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档