完整版面置换算法试验报告_第1页
完整版面置换算法试验报告_第2页
完整版面置换算法试验报告_第3页
完整版面置换算法试验报告_第4页
完整版面置换算法试验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、综合性实验报告专业 年级班级:课程名称操作系统指导教师学号姓名实验地点实验时间工程名称页而置换算法实验类型珠合性一、实验目的1. 学习常见的4种页面置换算法:最正确置换算法OPT ,先进先出页面置换算 法FIFO,最近最久未使用页面算法LRU,最少使用置换算法LFU.2. 编写函数并计算输出上述各种算法的命中率.二、总体设计设计原理、设计方案及流程等设计原理:OPT页面置换算法OPT所选择被淘汰的页面是已调入内存,且在以后永不使用的,或是在最长时间内不再被访问的页面.因此如何找出这样的页面是该算法的关键.可为每个页面设置一个步长变量,其初值为一足够大的数,对于不在内存的页面,将其值重置为零,对

2、于位于内存的页面,其值重置为当前访问页面与之后首次出现该页面时两者之间的距离,因此该值越大表示该页是在最长时间内不再被访问的页面,可以选择其作为换出页面.FIFO页面置换算法FIFO总是选择最先进入内存的页面予以淘汰,因此可设置一个先进先出的忙页帧队列,新调入内存的页面挂在该队列的尾部,而当无空闲页帧时,可从该队列首部取下一个页帧作为空闲页帧,进而调入所需页面.LRU页面置换算法LRU是根据页面调入内存后的使用情况进行决策的,它利用“最近的过去作为“最近的将 来的近似,选择最近最久未使用的页面予以淘汰.该算法主要借助于页面结构中的访问时间time来实现,time记录了一个页面上次的访问时间,因

3、此,当须淘汰一个页面时,选择 处于内存的页面中其time值最小的页面,即最近最久未使用的页面予以淘汰.LFU页面置换算法LFU要求为每个页面配置一个计数器即页面结构中的counter , 一旦某页被访问,那么将其计数器的值加1,在需要选择一页置换时,那么将选择其计数器值最小的页面,即内存中访 问次数最少的页面进行淘汰.设计流程:1. 通过随机数产生一个指令序列,共320条指令.2. 指令序列变换成页地址流3. 计算并输出下述各种算法在不同内存容量下的命中率.4. 在主函数中生成要求的指令序列,并将其转换成页地址流;在不同的内存容量下调用上 述函数使其计算并输出相应的命中率.三、实验步骤(包括主

4、要步骤、代码分析等) 主要代码:1. 页面结构typedef struct(int pn, pfn, counter, time; pl_type ;pl_type pltotal_vp;其中pn为页面号(页号),pfn为页帧号(物理块号),counter为一个周期内访问该 页面的次数,time为访问时间;pltotal_vp 为页面结构数组,由于共有 320条指令,每 页可装入10条指令,因此虚页长 total_vp 的值为32.将此结构封装到 Pahg.h文件中.2. 页帧限制结构struct pfc_struct(int pn, pfn;struct pfc_struct *next;t

5、ypedef struct pfc_struct pfc_type;pfc_type pfctotal_vp, *freepf_head, *busypf_head, *busypf_tail;其中pfctotal_vp定义用户进程的页帧限制结构数组,在该实验中,用户内存工作区是动态变化的,最多可到达用户进程的虚页数目,即32个物理块.*freepf_head为空闲页帧头的指针*busypf_head为忙页帧头的指针*busypf_tail忙页帧尾的指针讲此结构封装到 PageControl.h 头文件中.3. 主要函数(1) void initialize(int):初始化函数该函数主要对页

6、面结构数组pl和页帧结构数组 pfc进行初始化,如置页面结构中的页面号pn,初始化页帧号 pfn为空,访问次数 counter为0,访问时间time为-1 ;同样对页 帧数组进行初始化,形成一个空闲页帧队列.(2) void OPT(int):计算使用最正确贝面算法时的命中率(3) void FIFO(int):计算使用先进先出贝面置换算法时的命中率 void LRU(int):计算使用最近最久未使用页面置换算法时的命中率(5) void LFU(int):计算使用最少使用置换算法时的命中率void FIFO(int total_pf)/*先进先出贝面置换算法*/(int i,j;pfc_ty

7、pe *p;initialize(total_pf);busypf_head=busypf_tail=NULL;for(i=0;i<total_instruction;i+)(if(plpagei.pfn=INVALID)/*页面失效 */(diseffect=diseffect+1;if(freepf_head=NULL) /*无空闲页帧 */(p=busypf_head->next;plbusypf_head->pn.pfn=INVALID; /将忙页帧队首页面作为换出页面freepf_head=busypf_head;freepf_head->next=NULL;

8、busypf_head=p; /忙页帧头指针后移p=freepf_head->next; / 有空闲页帧freepf_head->next=NULL;freepf_head->pn=pagei; /*将所需页面调入空闲页帧*/plpagei.pfn=freepf_head->pfn;if(busypf_tail=NULL) /*假设忙页帧队列为空,那么将其头尾指针都指向刚调入页面所在的页帧*/busypf_head=busypf_tail=freepf_head;else( / 否那么,将刚调入页面所在的页帧挂在忙页帧队列尾部 busypf_tail->next=

9、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;for(i=0;i<total_instruction;i+)if(plpagei.pfn=INVALID) /*页面失效 */diseffe

10、ct+;if(freepf_head=NULL) /*无空闲页帧 */min=32767;for(j=0;j<total_vp;j+) /*if(min>plj.time && plj.pfn!=INVALID)找出位于内存且time值最小的页面作为置换页面*/ min=plj.time; minj=j; freepf_head=&pfcplminj.pfn; / plminj.pfn=INVALID;plminj.time=-1;freepf_head->next=NULL;plpagei.pfn=freepf_head->pfn; / plp

11、agei.time=present_time; / freepf_head=freepf_head->next; /腾出一个单元有空闲页面,改为有效修改页面的访问时间减少一个free 页面 elseplpagei.time=present_time; /命中那么修改该单元的访问时间present_time+;printf("LRU:%6.4f ",1-(float)diseffect/320);void OPT(int total_pf) /*最正确页面置换算法*/int i,j,max,maxpage,d,disttotal_vp;initialize(total_

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

13、j<total_instruction;j+) if(plpagej.pfn!=INVALID && distpagej=32767) distpagej=d;d+; max=-1;/查找dist变量值最大的页面作为换出页面for(j=0;j<total_vp;j+)(if(max<distj)(max=distj;maxpage=j;freepf_head=&pfcplmaxpage.pfn; /腾出一个单元freepf_head->next=NULL;plmaxpage.pfn=INVALID;plpagei.pfn=freepf_head-

14、>pfn; /有空闲页面,改为有效freepf_head=freepf_head->next; /减少一个 free 页面printf("OPT:%6.4f ",1-(float)diseffect/320);void LFU(int total_pf)/* 最少使用页面置换算法*/ (int i,j,min,minpage;initialize(total_pf);for(i=0;i<total_instruction;i+)(if(plpagei.pfn=INVALID) /页面失效( diseffect+; if(freepf_head=NULL)

15、/ 无空闲页帧 ( min=32767; for(j=0;j<total_vp;j+) ( /查找位于内存且访问次数最少的页面作为换出页面 if(min>plj.counter&&plj.pfn!=INVALID) ( min=plj.counter; minpage=j; plj.counter=0; freepf_head=&pfcplminpage.pfn; /腾出一个单元 plmi npage.pfn=INVALID;freepf_head->next=NULL;plpagei.pfn=freepf_head->pfn; /有空闲页面,改

16、为有效plpagei.counter+; /增加页面访问次数freepf_head=freepf_head->next; / 减少一个 free 页 else plpagei.counter+; / 命中增加页面访问次数 printf("LFU:%6.4f ",1-(float)diseffect/320);将上述函数写成头文件的格式封装在Memory.h头文件中,由主函数 main调用使用.运行结果翻开linux虚拟机,用vim编辑器翻开代码进行修改和调整.用g+编译器进行编译运,如下列图:17root1o carhost; 成作系条/综合性室登.' nX文

17、件(E)编辑9 查看终端标管host 综合性实验忡 gr -o main main.cppMemory h: In constructor CMeimry: :CMenKiry: J :Memory ,h:35:警告:当转换到inf (从floalj 时Memory.h:警吾:当转换蓟int' (Ariggiz)时Memory h ; 44 :警告:当转供到inf (从float WroDtlocalhost 综合性实脸./mainFIFO.0.54375LRL:0,543750FT:0.984375LFU:0.528125FIFO.0.553125LRC0,5fi250PT:O,98

18、125LFU10.5375FIFO.0.578125LRI0.57B1230PT:0.97B125LFU:0.55625FIFO.0.5S125LRU:0.593750PI:C-S75LFU:0.565625FIFO.0.39373LRL':0.60PT:0.97IS75LFL:0.575FIFO.0.6125LRU:0.6I56230PIJ0.96B75LFU:0.6FIFO.6跆LF?山0.643750PT;0.965625LFU:0.61875FIFO.0.6375LRU:0.656250FT:0.0625LFIU0*621575rii;o.0.65LRC:0.66250FT:0

19、.959375LFU:0.621B75FIFO,0.69375LRU:0.6a43750PT:0,95625LFU:0.634373FIFO.0.696875LRI0.6906250PT:0.953125LFU:0.653125FIFO-0.703125LRI0.7093750PT:0-S5LFUJ0.665625FIFO.0.715625LRL0.7281250PT:O-946B7SLFU:0.S84375FIFO.0.71B75LRE:0.7406250PT:O.g4373LFL:0.70625FIFO.0.75&375LRU0.750PT:0.940625LFU:0.721375I-IFO.0.75S375LRUOA6B750PT:0.9375LFU10.7J0625FIFO.0.7S9375LRL0.7750FI:O.934375LFU:0.5625FIFO,0,B03l25LRL0,793750PI:O,93125LFU:0,7S873FIFO.0.S03125LRI0.81250FT:0.92fil25LFU:0.7875FIR).0.E03125LRU0.8250P

温馨提示

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

评论

0/150

提交评论