- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
精品文档
精品文档
PAGE
精品文档
.
实验编号 4
名称 页面置换算法模拟
实验目的
通过请求页式存储管理中页面置换算法模拟设计,以便:
1、了解虚拟存储技术的特点
2、掌握请求页式存储管理中页面置换算法
实验内容与步骤
设计一个虚拟存储区和内存工作区,并使用 FIFO和LRU算法计算访问命中率。
程序设计
先用srand()函数和rand()函数定义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算法计算相应的命中率。
程序1
#includewindows.h
//Windows版,随机函数需要,
GetCurrentProcessId()需要
//#includestdlib.h
//Linux版,随机函数srand和rand需要
#includestdio.h
//printf()需要
#defineTRUE1
#defineFALSE0
#defineINVALID-1
#defineNULL0
#definetotal_instruction320
//共320条指令
#definetotal_vp32
//虚存页共32页
#defineclear_period50
//访问次数清零周期
typedefstruct{//定义页表结构类型(页面映射表 PMT)
intpn,pfn,counter,time;//页号、页框号(块号)、一个周期内访问该页面的次数、访问时
间
}PMT;
PMTpmt[32];
typedefstructpfc_struct{//页面控制结构
.
.
intpn,pfn;
structpfc_struct*next;
}pfc_type;
pfc_typepfc[32];
pfc_type*freepf_head,*busypf_head,*busypf_tail; //空闲页头指针,忙页头指针,忙页尾指针
intNoPageCount;//缺页次数
inta[total_instruction];//指令流数组
intpage[total_instruction],offset[total_instruction]; //每条指令的页和页内偏移
voidinitialize(int);
voidFIFO(int);//先进先出
voidLRU(int);//最近最久未使用
voidNRU(int);//最近最不经常使用
/****************************************************************************
main()
*****************************************************************************/
voidmain(){
inti,s;
//srand(10*getpid());//用进程号作为初始化随机数队列的种子 //Linux版
srand(10*GetCurrentProcessId());//用进程号作为初始化随机数的种子 //Windows版
s=rand()%320;//在[0,319]的指令地址之间随机选取一起点 m
for(i=0;itotal_instruction;i+=4){ //产生指令队列
if(s0||s319){
printf(wheni==%d,error,s==%d\n,i,s);
exit(0);
}
a[i]=s;//任意选一指令访问点 m。(将随机数作为指令地址 m)
a[i+1]=a[i]+1;//顺序执行下一条指令
a[i+2]=rand()%(s+2);//在[0,m+1]的前地址之间随机选取一地址,记为 m
a[i+3]=a[i+2]+1;//顺序执行一条指令
s=a[i+2]+(int)rand()%(320-a[i+2]); //在[m,319]的指令地址之间随机选取一起点 m
if((a[i+2]318)||(s319))printf(a[%d+2,anumberwhichis:%dands=%d\n,i,a[i+2],s);
}
.
.
for(i=0;itotal_instruction;i++){ //将指令序列变成页地址流
page[i]=a[i]/10;
offset[i]=a[i]%10;
}
for(i=4;i=32;i++){ //内存块分别为 4块、5块、...32块时的命中率
printf(%2dpageframes,i);
FIFO(i);//计算用FIFO置换时,有 i个内存块时的命中率
LRU(i);//最近最久未使用
NRU(i);//最近最不经常使用
printf(\n);
}
}
/***************************
您可能关注的文档
- 音乐调查学习报告计划3篇.docx
- 音乐赏析期末总结复习计划题库及参考答案.docx
- 音乐鉴赏复习计划总结计划资料.docx
- 音乐高考训练计划.docx
- 音响工程合同.docx
- 音序查字典习题.docx
- 音标专项总结复习练学习试题.docx
- 音标元音测习题.docx
- 音标元音测试题.docx
- 音标在四线三格书写.docx
- 2025年度(最新)国家开放大学本科《会计学概论》形考任务参考题库及答案.docx
- 2025年度(最新)国家开放大学《金融基础》机考题库.docx
- 2025年度(最新)国家开放大学本科《会计学概论》形考任务参考题库.docx
- 2025年度(最新)国家开放大学《金融基础》形考题库.docx
- 2025年度(最新)国家开放大学《金融基础》形考任务参考题库及答案.docx
- 2025年度(最新)国家开放大学本科《公共行政学》网考题库.docx
- 2025年度(最新)国家开放大学《金融基础》考试知识题库及答案.docx
- 2025年度(最新)国家开放大学《金融基础》形考任务参考题库.docx
- 2025年度(最新)国家开放大学本科《公共行政学》机考复习题库.docx
- 2025年度(最新)国家开放大学《建设监理》机考复习题库(含答案).docx
原创力文档


文档评论(0)