NUR页面置换算法

NUR页面置换算法

ID:42618846

大小:29.52 KB

页数:5页

时间:2019-09-18

NUR页面置换算法_第1页
NUR页面置换算法_第2页
NUR页面置换算法_第3页
NUR页面置换算法_第4页
NUR页面置换算法_第5页
资源描述:

《NUR页面置换算法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、NRU页面置换算法1)假设每个页面中可存放10条指令,分配给作业的内存块数为4。2)用C语言模拟一个作业的执行过程,该作业共有320条指令,即它的地址空间为32页,目前它的所有页都还未调入内存。在模拟过程中,如果所访问的指令已在内存,则显示其物理地址,并转下一条指令。如果所访问的指令还未装入内存,则发生缺页,此时需记录缺页的次数,并将相应页调入内存。如果4个内存块均已装入该作业,则需进行页面置换,最后显示其物理地址,并转下一条指令。在所有320指令执行完毕后,请计算并显示作业运行过程中发生的缺页率。3)置换算

2、法:最近最不经常使用(NRU)算法。#include#include#include#defineN4#definesize320typedefstructPage{intpage_num;intflag_A;//访问位intflag_M;//修改位intread_or_write;//0表示不被修改,1表示被修改}PAGE;typedefstructBlock{intblock_num;//块号PAGEpage;//所装页的信息structBlock

3、*next;}BLOCK,*BLOCKLIST;typedefstructinstruct{//指令数据结构intaddress;//指令地址PAGEpage;//对应页的信息}INSTRUCTION,*INSTRUCTIONLIST;INSTRUCTIONinstructions[size];//定义320个指令BLOCKLISTblock_head;//块的头指针intdiseffect=0;//缺页次数intblockSize=0;voidInit_Instructions(){for(inti=0;i

4、<320;i++)instructions[i].address=rand()%320;for(intk=0;k<320;k++){instructions[k].page.page_num=(int)instructions[k].address/10;instructions[k].page.flag_A=0;instructions[k].page.read_or_write=rand()%2;if(instructions[k].page.read_or_write==0)instructions[k

5、].page.flag_M=0;elseinstructions[k].page.flag_M=1;}}BLOCKLISTInit_block(){BLOCKLISThead=(BLOCKLIST)malloc(sizeof(BLOCK));BLOCKLISTp;for(inti=1;i<=N;i++){if(i==1)p=head;else{p->next=(BLOCKLIST)malloc(sizeof(BLOCK));p=p->next;}p->block_num=i;p->page.page_num=

6、-1;p->page.flag_A=0;p->page.flag_M=0;}p->next=head;returnhead;}voiddisplay(INSTRUCTIONinstructions){BLOCKLISTp=block_head;printf("Thenewpage:(page_num==%d),(flag_M==%d),(address==%d)",instructions.page.page_num,instructions.page.flag_M,instructions.addres

7、s);printf("block_num,page_num,flag_A,flag_M");do{printf("%2d%10d%9d%8d",p->block_num,p->page.page_num,p->page.flag_A,p->page.flag_M);p=p->next;}while(p!=block_head);}voidshow_physical_address(BLOCKLIST&p,INSTRUCTIONinstructions){intaddress;printf("physi

8、caladdress:");address=p->block_num*1024+instructions.address%10;//页面大小为1kprintf("%d",address);}//查找四个块中是否有此页面intFind_page_in_block(INSTRUCTIONinstructions,BLOCKLIST&p){p=block_head;do{if(p->page.pa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。