第一范文网 - 专业文章范例文档资料分享平台

操作系统 - --存储管理实验报告 (2)

来源:用户分享 时间:2020-06-21 本文由坦然理解 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

河南师范大学计算机与信息技术学院实验报告

}

freepf_head=freepf_head->next; //减少一个free 页面

else

pl[page[i]].time=present_time; //命中则修改该单元的访问时间

present_time++;

}

printf(\}

void NUR(int total_pf) /* 最近未使用页面置换算法 */ {

int i,j,dp,cont_flag,old_dp;

initialize(total_pf); dp=0;

for(i=0;i

if(pl[page[i]].pfn==INVALID) /*页面失效*/ {

diseffect++;

if(freepf_head==NULL) /*无空闲页帧*/ {

cont_flag=TRUE; old_dp=dp; while(cont_flag) {

if(pl[dp].counter==0&&pl[dp].pfn!=INVALID)

cont_flag=FALSE; //找到位于内存且未被访问的页面

else {

dp++;

if(dp==total_vp) dp=0; //将替换指针重新指向第一个页面 if(dp==old_dp)

{/* 若内存中所有页面扫描完毕未找到访问位为0的页面,将内存中

所有页面的访问位置0 */

}

freepf_head=&pfc[pl[dp].pfn]; //腾出一个单元

}

}

for(j=0;j

pl[j].counter=0;

河南师范大学计算机与信息技术学院实验报告

}

pl[dp].pfn=INVALID; freepf_head->next=NULL;

}

pl[page[i]].pfn=freepf_head->pfn; //有空闲页面,改为有效 freepf_head=freepf_head->next; //减少一个free 页面

else

pl[page[i]].counter=1; //命中则将访问位置1

if(i%clear_period==0) //清零周期到,将所有访问位清零

{

for(j=0;j

pl[j].counter=0;

}

} }

void OPT(int total_pf) /* 最佳页面置换算法 */ {

int i,j,max,maxpage,d,dist[total_vp]; initialize(total_pf);

for(i=0;i

{

if(pl[page[i]].pfn==INVALID) /*页面失效*/ {

diseffect++;

if(freepf_head==NULL) /*无空闲页面*/ {

for(j=0;j

/* 对于位于内存且在当前访问页面之后将再次被访问的页面,dist重置为当前页 面与之后首次出现该页面时两者之间的距离 */ for(j=i+1;j

if(pl[j].pfn!=INVALID)//所有位于内存页面的距离变量赋一足够大的数

dist[j]=32767;

printf(\

else //不在内存的页面该变量则置为0

dist[j]=0;

河南师范大学计算机与信息技术学院实验报告

}

}

if(pl[page[j]].pfn!=INVALID && dist[page[j]]==32767)

dist[page[j]]=d;

d++;

max=-1;

//查找dist变量值最大的页面作为换出页面 for(j=0;j

freepf_head=&pfc[pl[maxpage].pfn]; //腾出一个单元 freepf_head->next=NULL; pl[maxpage].pfn=INVALID;

if(max

max=dist[j]; maxpage=j;

}

}

pl[page[i]].pfn=freepf_head->pfn; //有空闲页面,改为有效 freepf_head=freepf_head->next; //减少一个free 页面

printf(\}

void LFU(int total_pf) /* 最少使用页面置换算法 */ {

int i,j,min,minpage; initialize(total_pf);

for(i=0;i

{

if(pl[page[i]].pfn==INVALID) //页面失效 {

diseffect++;

if(freepf_head==NULL) //无空闲页帧 {

min=32767;

for(j=0;j

{ //查找位于内存且访问次数最少的页面作为换出页面

if(min>pl[j].counter&&pl[j].pfn!=INVALID) {

河南师范大学计算机与信息技术学院实验报告

}

}

}

min=pl[j].counter; minpage=j;

pl[j].counter=0;

freepf_head=&pfc[pl[minpage].pfn]; //腾出一个单元 pl[minpage].pfn=INVALID; freepf_head->next=NULL;

pl[page[i]].pfn=freepf_head->pfn; //有空闲页面,改为有效 pl[page[i]].counter++; //增加页面访问次数 freepf_head=freepf_head->next; //减少一个free 页面

} else

pl[page[i]].counter++; //命中增加页面访问次数

}

printf(\}

六、源程序

见电子稿(文件名ymzh.c);

七、运行结果

本实验的运行结果如下图所示(以OPT、FIFO、LRU为例):

从上述结果可知,随着内存页面数的增加,三种算法的访问命中率逐渐增大。在内存页面数为4~25个页面之间时,三种算法的命中率大致在56%至88%之间变化,但是,OPT算法和其他两种

河南师范大学计算机与信息技术学院实验报告

算法之间的差别一般在6~12个百分点左右。在内存页面为25~32个页面时,由于用户进程的所有指令基本上都已装入内存,从而命中率增加较大,各种算法之间的差别不大。 比较上述三种算法,OPT算法的命中率最高,LRU算法和FIFO算法的命中率则较为接近。

八、自我评析与总结

(可参考以下内容:) 1.总的自我打分。

2.你认为你完成的作业哪些地方做得比较好或比较出色。

3.差距与局限,什么地方做得不太好,或什么地方可以做得更好,进一步的工作。 4.从本作业得到的收获。对编写与调试过程中经验教训的总结。 5.完成本题的其他方法。

6.对实验题的评价和改进意见。

九、参考文献

1.《计算机操作系统教程系统解答与实验指导》第2版,张尧学编著,清华大学出版社,2000年出版 2.《计算机操作系统》修订版,汤子瀛等编著,西安电子科技大学出版社,2003年6月出版

十、教师评语:

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新小学教育操作系统 - --存储管理实验报告 (2)全文阅读和word下载服务。

操作系统 - --存储管理实验报告 (2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1089820.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top