1 / 5
文档名称:

NUR页面置换算法.doc

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

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

分享

预览

NUR页面置换算法.doc

上传人:小s 2021/12/7 文件大小:57 KB

下载得到文件列表

NUR页面置换算法.doc

文档介绍

文档介绍:NRU页面置换算法
)假设每个页面中可存放10条指令,分配给作业的内存块数为 4。
)用C语言模拟一个作业的执行过程,该作业共有 320条指令,即它的地址空
间为32页,目前它的所有页都还未调入内存。在模拟过程中,如果所访问的指令 已在内存,则显示其物理地址,并转下一条指令。如果所访问的指令还未装入内
存,则发生缺页,此时需记录缺页的次数,并将相应页调入内存。如果 4个内存
块均已装入该作业,则需进行页面置换,最后显示其物理地址,并转下一条指令。 在所有320指令执行完毕后,请计算并显示作业运行过程中发生的缺页率。
3)置换算法:最近最不经常使用(NRU )算法。
#i nclude<>
#i nclude<>
#i nclude<>
#defi ne N 4
#defi ne size 320
typedef struct Page{
int page_ num;
int flag_A; // 访问位
int flag_M; 〃修改位
int read_or_write; 〃0表示不被修改,1表示被修改
}PAGE;
typedef struct Block{
int block_num; 〃块号
PAGE page; //所装页的信息
struct Block *n ext;
}BLOCK,*BLOCKLIST;
typedef struct in struct{ 〃指令数据结构
int address; 〃指令地址
PAGE page; //对应页的信息
}INSTRUCTION,*INSTRUCTIONLIST;
INSTRUCTION instructions[size];〃 定义 320 个指令
BLOCKLIST block_head; 〃块的头指针
int diseffect=0; 〃缺页次数
int blockSize=0;
void Init_In structio ns()
{ _
for(i nt i=0;i<320;i++)
in struct ion s[i].address=ra nd()%320;
for(i nt k=0;k<320;k++){
in struct ion s[k]. num=(i nt) in structi on s[k].address/10;
in struct ion s[k].=0;
in structio ns[k].=ra nd()%2;
if(i nstructio ns[k].==0)
in structi on s[k].=0;
else in structi on s[k].=1;
} _
}
BLOCKLIST Ini t_block()
{
BLOCKLIST head=(BLOCKLIST)malloc(sizeof(BLOCK));
BLOCKLIST p;
for(i nt i=1;i<=N;i++) {
if(i==1) p=head;
else {
p-> n