《操作系统》实验五:页面置换算法模拟_第1页
《操作系统》实验五:页面置换算法模拟_第2页
《操作系统》实验五:页面置换算法模拟_第3页
《操作系统》实验五:页面置换算法模拟_第4页
《操作系统》实验五:页面置换算法模拟_第5页
已阅读5页,还剩12页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品实验五请求页式存储管理的模拟实验内容:熟悉虚拟存储管理的各种页面置换算法,并编写模拟程序实现请求页式存储管理的页面置换算法-最近最久未使用算法(LRU),要求在每次产生置换时显示页面分配状态和缺页率。实验要求:1、 运行给出的实验程序,查看执行情况,进而分析算法的执行过程,在理解FIFO页面置换算法和最近最久未 使用算法(LRU)置换算法后,给出最佳置换算法的模拟程序实现,并集成到参考程序中。2、执行2个页面置换模拟程序,分析缺页率的情况。最好页框数和访问序列长度可调节,在使用同一组访问序列数据的情况下,改变页框数并执行2个页面置换模拟程序,查看缺页率的变化。3、 在每次产生置换时要求显示

2、分配状态和缺页率。程序的地址访问序列通过随机数产生,要求具有足够的长度。 最好页框数和访问序列长度可调节。实验的执行结果如下图所示(左下图为FIFO执行结果,右下图为 LRU执行结果):感谢下载载1 2 f yb Jfi yk SE 请请 w算出 要要要 若若若fl叽 若奠退出请按LRUhter your choice 0 4 0 6H缺缺 V/5 9 7 *8 2 6MIK缺缺缺H缺缺ifc 5 5 511140424547缺缺缺缺.缺缺缺 4 4 4 4 411111333333399 91111111ccczxccc/xzxcccccccccccccccc存存存存存存#存存存存存存存存存

3、#存存存存#r-ir J r-rTJJri- UHJ-fcJ-fcu -o-,- _J - 1r J 廿廿廿廿廿廿廿廿廿卄廿廿7廿廿计廿廿廿廿L$00 KIA 缺缺缺 m 缺缺缺3 0 k K 4 5im缺缺缺- 缺JX3B.0 “缺瓦缺贡聿36.45 9 7 8 2 63 4 4n缺缺缺m缺缺缺 A0 9 5 404245 缺铁缺 m 缺缺缺 7 7 7缺贝45.84444444771 4 4 1 1 3 31存存存存存存存存存存存#存存存存存#存存存存# fcj fcurfcu-UHJ*LHI_-tj -otjfcj-ITET JJ7-I-程序源代码:#i nclude #in elude

4、 wi ndows.h#in elude #in elude #in elude #i nclude #in elude #in elude void in itialize();/初始化相关数据结构void createps();/随机生成访问序列void displayi nfo();/显示当前状态及缺页情况void fifo();/先进先出算法intfin dpage();/查找页面是否在内存void lru();/最近最久未使用算法intin validco unt = 0;/缺页次数intvpoi nt;/页面访问指针intpageframe10;/分配的页框intpagehisto

5、ry10;/记录页框中数据的访问历史intrpoi nt;/页面替换指针intin pflag;/缺页标志,0为不缺页,1为缺页struct Page Info/页面信息结构int serial100; /模拟的最大访问页面数,实际控制在20以上intflag;/标志位,0表示尢页面访问数据intdiseffect;/缺页次数inttotal_pf;/分配的页框数inttotal_p n;/访冋页面序列长度 pf_info;/初始化相关数据结构void in itialize()int i,pf;in pflag=0;/缺页标志,0为不缺页,1为缺页pf_in fo.diseffect =0;

6、/缺页次数pf_in fo.flag =0;/标志位,0表示无页面访冋数据printf(n请输入要分配的页框数:”);/自定义分配的页框数scan f(%d,&pf);pf_in fo.total_pf =pf;for(i=0;i100;i+)/ 清空页面序列pf_in fo.seriali=-1;/随机生成访问序列void createps(void )int s,i,p n;initialize();/初始化相关数据结构printf(n请输入要随机生成访问序列的长度:”);/自定义随机生成访问序列的长度scan f(%d,&pn);srand(rand();/初始化随机数队列的”种子”s=

7、(float) ra nd() / 32767) * 50 + pn;/ 随机产生页面序列长度pf_in fo.total_p n = s;for(i=0;is;i+)/产生随机访问序列pf_info.seriali=(float) rand() / 32767) * 16 ;/ 随机数的大小在 0-15 之间/显示当前状态及缺页情况void displayi nfo(void)int i,n;if(vpo in t=0)prin tf(n=页面访问序歹U =、n);for(i=0; ipf_ in fo.total_p n; i+)prin tf(%4d,pf_i nfo.seriali);

8、if (i+1) % 10 =0) printf(n);/ 每行显示 10 个prin tf(n=n);printf(访问 %3d :内存 ,pf_info.serialvpoint);for(n=0;n=0)prin tf(%3d,pageframe n);elseprintf( );printf(” );if(inpflag=1)/缺页标志,0为不缺页,1为缺页printf(= 缺页);printf(缺页率 3.1f,(float)(pf_info.diseffect)*100.00/vpoint);prin tf(n);/查找页面是否在内存,1为在内存,0为不在即缺页int fin dp

9、age(i nt page)int n;for(n=0;npf_in fo.total_pf; n+)pagehistoryn +;/ 访问历史加 1for(n=0;npf_in fo.total_pf; n+)if (pageframe n=page )1为缺页inpflag=0 ;/inpflag缺页标志,0为不缺页,pagehistoryn=0;/ 置访问历史为 0return 1;inpflag=1;/页面不存在,缺页return 0;/ FIFO页面置换算法 void fifo(void)int n,coun t,pstate;rpo in t=0;/页面替换指针初始化为 0in v

10、alidco unt = 0;/缺页数初始化为0createps();/随机生成访问序列coun t=0;/是否装满是所有的页框for(n=0; npf_i nfo.total_pf; n+) /清除页框信息pageframe n=-1;inpflag=0;/缺页标志,0为不缺页,1为缺页for(vpoint=0;vpointpf_info.total_pn;vpoint+)/ 执行算法pstate=findpage(pf_info.serialvpoint);/ 查找页面是否在内存if(countpf_info.total_pf)/ 开始时不计算缺页if(pstate=0)/页不存在则装入页

11、面pageframerpo in t=pf_i nfo.serialvpo in t;rpo in t=(rpo in t+1) % pf_in fo.total_pf;coun t+;else/正常缺页置换if(pstate=O)/页不存在则置换页面pageframerpo in t=pf_ in fo.serialvpo in t;rpo in t=(rpo in t+1) % pf_in fo.total_pf;pf_info.diseffect+;/ 缺页次数加 1Sleep(10);displayinfo();/ 显示当前状态/置换算法循环结束getch();return;/ LRU

12、页面置换算法void Iru(void) int n,coun t,pstate,max;rpoin t=0;II页面替换指针in validco unt = 0;II缺页次数初始化为 0createps();II随机生成访问序列coun t=0;II是否装满所有的页框for(n=0;npf_in fo.total_pf; n+)pageframen=-1;II清除页框信息pagehistoryn=0;II 清除页框历史inpflag=0; II缺页标志,0为不缺页,1为缺页for(vpo in t=0;vpo in tpf_ in fo.total_p n; vpo in t+)II执行算法

13、pstate=findpage(pf_info.serialvpoint);II 查找页面是否在内存if(countpf_info.total_pf)II 开始时不计算缺页if(pstate=0) II页不存在则装入页面pageframerpoi nt=pf_i nfo.serialvpoi nt; II把要调入的页面放入一个空的页框里rpo in t=(rpo in t+1) % pf_in fo.total_pf;coun t+;else /正常缺页置换if(pstate=O)页不存在则置换页面max=O;for(n=1; npagehistorymax)max =n;rpoi nt=ma

14、 x;pageframerpo in t=pf_ in fo.serialvpo in t; pagehistoryrpo in t=0;pf_info.diseffect+; / 缺页次数加 1 Sleep(10);displayinfo();/ 显示当前状态 /置换算法循环结束_getch();return;/最佳置换算法自己完成/ 主函数int mai n()char ch;system(cls);while ( true )printf(* n);printf(若要执行FIFO页面置算法请按printf(”若要执行LRU页面置算法请按printf(”若要退出请按3n);1 n);2n);printf(* n);prin tf( E nter your choice (1 or 2 or 3):); do/如果输入信息不正确,继续输入ch = (char)getch();while(ch != 1 & ch != 2& ch != 3);printf(nn 你按的是:%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论