如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
实验报告实验名称存储管理指导教师赵建立实验类型验证实验学时1x2实验时间2011.10.14实验目的和要求通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。二、实验环境(实验设备)WindowsXP+VMWare+RedHatLinux7.3三、实验原理及内容内容(五选二):常用页面置换算法模拟实验,设计一个虚拟存储区和内存工作区,并使用下述算法计算访问命中率。1.最佳淘汰算法(OPT)2.先进先出的算法(FIFO)3.最近最久未使用算法(LRU)4.最不经常使用算法(LFU)5.最近未使用算法(NUR)要求:通过模拟实现请求页式存储管理的几种基本页面置换算法,理解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中的几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。#defineTRUE1#defineFALSE0#defineINVALID-1#defineNULL0#definetotal_instruction320/*指令流长*/#definetotal_vp32/*虚页长*/#defineclear_period50/*清0周期*/typedefstruct/*页面结构*/{intpn,pfn,counter,time;}pl_type;pl_typepl[total_vp];/*页面结构数组*/structpfc_struct{/*页面控制结构*/intpn,pfn;structpfc_struct*next;};typedefstructpfc_structpfc_type;pfc_typepfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;intdiseffect,a[total_instruction];intpage[total_instruction],offset[total_instruction];intinitialize(int);intFIFO(int);intLRU(int);intLFU(int);intNUR(int);intOPT(int);intmain(){ints,i,j;srand(10*getpid());/*由于每次运行时进程号不同,故可用来作为初始化随机数队列的“种子”*/s=(float)319*rand()/32767/32767/2+1;//for(i=0;i<total_instruction;i+=4)/*产生指令队列*/{if(s<0||s>319){printf("Wheni==%d,Error,s==%d\n",i,s);exit(0);}a[i]=s;/*任选一指令访问点m*/a[i+1]=a[i]+1;/*顺序执行一条指令*/a[i+2]=(float)a[i]*rand()/32767/32767/2;/*执行前地址指令m'*/a[i+3]=a[i+2]+1;/*顺序执行一条指令*/s=(float)(318-a[i+2])*rand()/32767/32767/2+a[i+2]+2;if((a[i+2]>318)||(s>319))printf("a[%d+2],anumberwhichis:%dands==%d\n",i,a[i+2],s);}for(i=0;i<total_instruction;i++)/*将指令序列变换成页地址流*/{page[i]=a[i]/10;offset[i]=a[i]%10;}for(i=4;i<=32;i++)/*用户内存工作区从4个页面到32个页面*/{printf("---%2dpageframes---\n",i);FIFO(i);LRU(i);LFU(i);NUR(i);OPT(i);}return0;}intinitialize(total_pf)/*初始化相关数据结构*/inttotal_pf;/*用户进程的内存页面数*/{inti;diseffect=0;for(i=0;i<total_vp;i++){pl[i].pn=i;pl[i].pfn=INVALID;/*置页面控制结构中的页号,页面为空*/pl[i].counter=0;pl[i].time=-1;/*页面控制结构中的访问次数为0,时间为-1*/}for(i=0;i<total_pf-1;i++){pfc[i].next=&pfc[i+1];pfc[i].p