实验五存储管理Word文档下载推荐.docx
- 文档编号:13082091
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:7
- 大小:17.98KB
实验五存储管理Word文档下载推荐.docx
《实验五存储管理Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验五存储管理Word文档下载推荐.docx(7页珍藏版)》请在冰豆网上搜索。
③用户虚存容量为32k。
在用户虚存中,按每k存放10条指令排在虚存地址,即320条指令在虚存中的存放方式为:
第0条-第9条指令为第0页(对应虚存地址为[0,9]);
第10条-第19条指令为第一页(对应虚存地址为[10,19]);
……
第310条~第319条指令为第31页(对应虚地址为[310,319])。
按以上方式,用户指令可组成32页。
(3)基于一个虚拟存储区和内存工作区,设计下述算法并计算访问命中率。
1、最佳淘汰算法(OPT)
2、先进先出的算法(FIFO)
3、最近最久未使用算法(LRU)
4、简单时钟(钟表)算法(CLOCK)
命中率=1-页面失效次数/页地址流(序列)长度
在本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。
随机数产生办法
Linux或UNIX系统提供函数srand()和rand(),分别进行初始化和产生随机数。
例如:
srand();
语句可初始化一个随机数;
a[0]=10*rand()/65535*319+1;
a[1]=10*rand()/65535*a[0];
语句可用来产生a[0]与a[1]中的随机数。
四、实验步骤
<
程序设计〉
本实验的程序设计基本上按照实验内容进行。
即首先用srand()和rand()函数定义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算法计算出相应的命中率。
相关定义如下:
1数据结构
(1)页面类型typedefstruct{
intpn,pfn,counter,time;
}pl-type;
其中pn为页号,pfn为面号,counter为一个周期内访问该页面的次数,
time为访问时间.
(2)页面控制结构
pfc-struct{intpn,pfn;
structpfc_struct*next;
}
typedefstructpfc_structpfc_type;
pfc_typepfc_struct[total_vp],*freepf_head,*busypf_head;
pfc_type*busypf_tail;
其中pfc[total_vp]定义用户进程虚页控制结构,
*freepf_head为空页面头的指针,
*busypf_head为忙页面头的指针,
*busypf_tail为忙页面尾的指针.2.函数定义
(1)Voidinitialize():
初始化函数,给每个相关的页面赋值.
(2)VoidFIFO():
计算使用FIFO算法时的命中率.
(3)VoidLRU():
计算使用LRU算法时的命中率.
(4)VoidOPT():
计算使用OPT算法时的命中率.
(6)VoidCLOCK():
计算使用clock算法时的命中率.
3.变量定义
(1)inta[total_instruction]:
指令流数据组.
(2)intpage[total_instruction]:
每条指令所属的页号.
(3)intoffset[total_instruction]:
每页装入10条指令后取模运算页号偏移值.
(4)inttotal_pf:
用户进程的内存页面数.(5)intdisaffect:
页面失效次数.
4.程序参考源码及结果
程序>
#include<
stdio.h>
#include<
stdlib.h>
unistd.h>
string.h>
#ifndef_UNISTD_H#define_UNISTD_H#include<
IO.H>
PROCESS.H>
#endif
#defineTRUE1
#defineFALSE0
#defineINVALID-1
#definetotal_instruction320 //指令流长#definetotal_vp32 //虚页长
#defineclear_period50 //清周期
typedefstruct //页面结构
{
intpn, //页面序号
pfn, //页面所在内存区的帧号
counter, //单位时间内访问次数time;
//上次访问的时间
}pl_type;
pl_typepl[total_vp];
//页面结构数组
structpfc_struct{ //页面控制结构intpn, //页面号
pfn;
//内存区页面的帧号
//页面指针,用于维护内存缓冲区的链式结构
};
//主存区页面控制结构别名pfc_typepfc[total_vp], //主存区页面控制结构数组
*freepf_head, //主存区页面控制结构的空闲页面头指针
*busypf_head, //主存区页面控制结构的忙页面头指针
*busypf_tail;
//主存区页面控制结构的忙页面尾指针
intdiseffect;
//页错误计数器,初次把页面载入主存时也当做页错误inta[total_instruction];
//随即指令流数组
intpage[total_instruction];
//指令对应的页面号
intoffset[total_instruction];
//指令所在页面中的偏移量
int
initialize(int);
//初始化页面结构数组和页面控制结构数组
FIFO(int);
//先进先出算法
LRU(int);
//最近最久未使用算法
OPT(int);
//最佳置换算法
CLOCK(int);
//简单时钟(钟表)算法
intmain()
ints;
//随机数inti;
srand(10*getpid());
/*每次运行时进程号不同,用来作为初始化随机数队列的"
种子"
*/s=(int)((float)(total_instruction-1)*(rand()/(RAND_MAX+1.0)));
printf("
\n------------随机产生指令流 \n"
);
for(i=0;
i<
total_instruction;
i+=4)//产生指令队列
a[i]=s;
//任选一指令访问点ma[i+1]=a[i]+1;
//顺序执行一条指令
a[i+2]=(int)((float)a[i]*(rand()/(RAND_MAX+1.0)));
//执行前地址指令m'
a[i+3]=a[i+2]+1;
%6d%6d%6d%6d\n"
a[i],a[i+1],a[i+2],a[i+3]);
s=(int)((float)((total_instruction-1)-a[i+2])*(rand()/(RAND_MAX+1.0)))+a[i+2];
\n"
i<
i++)//将指令序列变换成页地址流
page[i]=a[i]/10;
offset[i]=a[i]%10;
\n--不同页面工作区各种替换策略的命中率表--\n"
printf("
Page\tFIFO\tLRU\tOPT\tCLOCK\n"
for(i=4;
=32;
i++) //用户内存工作区从个页面到个页面
%2d\t"
i);
FIFO(i);
LRU(i);
OPT(i);
CLOCK(i);
\n"
return0;
//total_pf;
用户进程的内存页面数
intinitialize(inttotal_pf)
inti;
diseffect=0;
for(i=0;
total_vp;
i++)
pl[i].pn=i;
pl[i].pfn=INVALID;
//置页面所在主存区的帧号为-1.表示该页不在主存中pl[i].counter=0;
//置页面结构中的访问次数为
pl[i].time=-1;
//置页面结构中的上次访问的时间为-1
total_pf-1;
pfc[i].next=&
pfc[i+1];
//建立pfc[i-1]和pfc[i]之间的链接pfc[i].pfn=i;
//初始化主存区页面的帧号
pfc[total_pf-1].next=NULL;
pfc[total_pf-1].pfn=total_pf-1;
freepf_head=&
pfc[0];
//主存区页面控制结构的空闲页面头指针指向pfc[0]return0;
//inttotal_pf;
用户进程的内存页面数
intLRU(inttotal_pf)
intMinT;
//最小的访问时间,即很久没被访问过
intMinPn;
//拥有最小的访问时间的页的页号inti,j;
intCurrentTime;
//系统当前时间
initialize(total_pf);
//初始化页面结构数组和页面控制结构数组CurrentTime=0;
diseffect=0;
for(i=0;
if(pl[page[i]].pfn==INVALID) //页面失效
diseffect++;
//页错误次数加
if(freepf_head==NULL) //无空闲页面
MinT=100000;
for(j=0;
j<
j++){ //找出time的最小值,表明该页很久没被访
问过
if(MinT>
pl[j].time&
&
pl[j].pfn!
=INVALID)
MinT=pl[j].time;
MinPn=j;
pfc[pl[MinPn].pfn];
//最久没被访问过的页被释放pl[MinPn].pfn=INVALID;
//最久没
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 存储 管理