欢迎来到天天文库
浏览记录
ID:46504578
大小:74.50 KB
页数:8页
时间:2019-11-24
《实验4存储管理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、2013〜2014学年第一学期操作系统实验报告实验题目:实验四存储管理专业:计算机科学与技术班级:EU计算机111学号:1111503111姓名:于秀芳实验日期:2013年11月22日实验地点:1J2A205盐城工学院优集学院实验四存储管理1、实验目的存储管理的主要功能之一是合理地分配空间。请求页式管理是一•种常用的虚拟存储管理技术。木实验的忖的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法。2、实验内容(1)通过随机数产牛一个指令序列,共320条指令。指令的地址按卜•述原则牛成:%150%的指
2、令是顺序执行的;%150%的指令是均匀分布在前地址部分;%150%的指令是均匀分布在后地址部分。具体的实施方法是:%1在[0,319]的指令Z间随即选取一起点%1顺序执行一条指令,即执行地址为m+l的指令;%1在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为mz;%1顺序执行一•条指令,其地址为+1;%1在后地址[nV+2,319]中随机选収一条指令并执行;%1重复上述步骤①-⑤,直到执行320次指令。(2)将指令序列变换为页地址流设:①页面大小为lk;%1用户内存容量为4页到32页;%1用户虚存容量为32ko在川户虚存屮,按每k存放10条指
3、令排在虚存地址,即320条指令在虚存屮的存放方式为:第0条•第9条指令为第0页(对应虚存地址为[0,9]);第10条■第19条指令为第一页(对应熄存地址为[10,19]);••••••第310条~第319条指令为第31页(对应虚地址为[310,319])0按以上方式,用户指令可纟fl成32页。(3)计算并输出下述各种算法在不同内存容量下的命中率。%1先进先出的算法(FIFO);%1最近最少使用算法(LRR);%1最佳淘汰算法(OPT)先淘汰最不常用的页地址;%1最少访问页面算法(LFR);%1最近最不经常使用算法(NUR)o其中③和④为选择内容。命中率=1
4、.页血失效次数/页地址流长度在本实验屮,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。3>随机数产生办法,Linux或UNIX系统提供函数strand()和rand(),分别进行初始化和产生随机数。a[0]=10*rand(庐5535*319+1;a[l]=10*rand()/65535*a[0];语句可用来产生a[0]与a[l]«P的随机数。实验代码:#defineTRUE1#defineFALSE0#defineINVALID-1#defineNULL0#include#include5、dio.h>#definetotal_instruction320#definetotal_vp32#defineclear_period50typedefstruct{intpn;intpfn;intcounter;inttime;}pl_type;PLtypepl[total_vp];typedefstructpfc_struct{intpn;intpfn;structpfc_struct*next;}pfc_type;pfc_typepfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;intdis6、effect,a[total」nstruction];NUR(int);intpage[total_instruction],offset[total_instruction];intinitialize(int);intFIFO(int);intLRU(int);intLFU(int);intintOPT(int);intmain(){intsj,j;srand(10*getpid());s=(float)319*rand()/3276於276^+1;for(i=0;i7、8、s>319){pri9、ntf(MWheni==%d,Error,s==%d“,i,s);exit(0);}a[i]=s;a[i+l]=a[i]+l;a[i+2]=(float)a[i]*rand()/3276於2767/2;a[i+3]=a[i+2]+l;s=(float)(318-a[i+2])*rand()/3276於276加+a[i+2]+2;if((a[i+2]>318)10、11、(s>319))printf("a[%d+2],anumberwhichis:%dands==%d",i,a[i+2]zs);}for(i=0;i12、*将指令序列变换成页地址流*/{page[i]=a[i]/10;o
5、dio.h>#definetotal_instruction320#definetotal_vp32#defineclear_period50typedefstruct{intpn;intpfn;intcounter;inttime;}pl_type;PLtypepl[total_vp];typedefstructpfc_struct{intpn;intpfn;structpfc_struct*next;}pfc_type;pfc_typepfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;intdis
6、effect,a[total」nstruction];NUR(int);intpage[total_instruction],offset[total_instruction];intinitialize(int);intFIFO(int);intLRU(int);intLFU(int);intintOPT(int);intmain(){intsj,j;srand(10*getpid());s=(float)319*rand()/3276於276^+1;for(i=0;i7、8、s>319){pri9、ntf(MWheni==%d,Error,s==%d“,i,s);exit(0);}a[i]=s;a[i+l]=a[i]+l;a[i+2]=(float)a[i]*rand()/3276於2767/2;a[i+3]=a[i+2]+l;s=(float)(318-a[i+2])*rand()/3276於276加+a[i+2]+2;if((a[i+2]>318)10、11、(s>319))printf("a[%d+2],anumberwhichis:%dands==%d",i,a[i+2]zs);}for(i=0;i12、*将指令序列变换成页地址流*/{page[i]=a[i]/10;o
7、
8、s>319){pri
9、ntf(MWheni==%d,Error,s==%d“,i,s);exit(0);}a[i]=s;a[i+l]=a[i]+l;a[i+2]=(float)a[i]*rand()/3276於2767/2;a[i+3]=a[i+2]+l;s=(float)(318-a[i+2])*rand()/3276於276加+a[i+2]+2;if((a[i+2]>318)
10、
11、(s>319))printf("a[%d+2],anumberwhichis:%dands==%d",i,a[i+2]zs);}for(i=0;i12、*将指令序列变换成页地址流*/{page[i]=a[i]/10;o
12、*将指令序列变换成页地址流*/{page[i]=a[i]/10;o
此文档下载收益归作者所有