1 / 5
文档名称:

NUR页面置换算法.doc

格式:doc   大小:29KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

NUR页面置换算法.doc

上传人:changjinlai 2019/9/12 文件大小:29 KB

下载得到文件列表

NUR页面置换算法.doc

文档介绍

文档介绍:NRU页面置换算法1)假设每个页面中可存放10条指令,分配给作业的内存块数为4。2)用C语言模拟一个作业的执行过程,该作业共有320条指令,即它的地址空间为32页,目前它的所有页都还未调入内存。在模拟过程中,如果所访问的指令已在内存,则显示其物理地址,并转下一条指令。如果所访问的指令还未装入内存,则发生缺页,此时需记录缺页的次数,并将相应页调入内存。如果4个内存块均已装入该作业,则需进行页面置换,最后显示其物理地址,并转下一条指令。在所有320指令执行完毕后,请计算并显示作业运行过程中发生的缺页率。3)置换算法:最近最不经常使用(NRU)算法。#include<>#include<>#include<>#defineN4#definesize320typedefstructPage{ intpage_num; intflag_A;//访问位 intflag_M;//修改位 intread_or_write;//0表示不被修改,1表示被修改}PAGE;typedefstructBlock{ intblock_num;//块号 PAGEpage;//所装页的信息 structBlock*next;}BLOCK,*BLOCKLIST;typedefstructinstruct{//指令数据结构 intaddress;//指令地址 PAGEpage;//对应页的信息}INSTRUCTION,*INSTRUCTIONLIST;INSTRUCTIONinstructions[size];//定义320个指令BLOCKLISTblock_head;//块的头指针intdiseffect=0;//缺页次数intblockSize=0;voidInit_Instructions(){ for(inti=0;i<320;i++) instructions[i].address=rand()%320; for(intk=0;k<320;k++){ instructions[k].=(int)instructions[k].address/10; instructions[k].=0; instructions[k].=rand()%2; if(instructions[k].==0) instructions[k].=0; elseinstructions[k].=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->=-1; p->=0; p->=0; } p->next=head; returnhead;}voiddisplay(INSTRU