文档详情

请求调页存储管理方式的模拟NRU.docx

发布:2017-07-23约3.48千字共5页下载文档
文本预览下载声明
?#include?stdio.h?#include?stdlib.h?#include?string.h?#ifndef?_UNISTD_H?#define?_UNISTD_H?#include?IO.H?#include?PROCESS.H?#endif??#define?TRUE?1?#define?FALSE?0?#define?INVALID?-1?#define?NULL?0??#define??total_instruction?320?/*指令流长*/?#define?total_vp?32?/*虚页长*/?#define?clear_period?50?/*清0周期*/??typedef?struct?/*页面结构*/?{?int?pn,pfn,counter,time;?}pl_type;?pl_type?pl[total_vp];?/*页面结构数组*/?struct?pfc_struct{??????????????????/*页面控制结构*/??int?pn,pfn;??struct?pfc_struct?*next;?};??typedef?struct?pfc_struct?pfc_type;??pfc_type?pfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;??int?diseffect,??a[total_instruction];?int?page[total_instruction],??offset[total_instruction];??int initialize(int);int NUR(int)?int?main(?)?{??int?s,i,j;?srand(10*getpid());?/*由于每次运行时进程号不同,故可用来作为初始化随机数队列的“种子”*/?s=(float)319*rand(?)/32767/32767/2+1;?//?for(i=0;itotal_instruction;i+=4)?/*产生指令队列*/?{?if(s0||s319)??{?printf(When?i==%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)||(s319))??printf(a[%d+2],a?number?which?is?:%d?and?s==%d\n,i,a[i+2],s);??}?for?(i=0;itotal_instruction;i++)?/*将指令序列变换成页地址流*/?{?page[i]=a[i]/10;??offset[i]=a[i]%10;?}?for(i=4;i=32;i++)?/*用户内存工作区从4个页面到32个页面*/?{?printf(%2d?page?frames\n,i);?NUR(i);??}??return?0;?}??int?initialize(total_pf)?/*初始化相关数据结构*/?int?total_pf;?/*用户进程的内存页面数*/?{int?i;?diseffect=0;?for(i=0;itotal_vp;i++)?{?pl[i].pn=i;??pl[i].pfn=INVALID;?/*置页面控制结构中的页号,页面为空*/??pl[i].counter=0;??pl[i].time=-1;?/*页面控制结构中的访问次数为0,时间为-1*/?}?for(i=0;itotal_pf-1;i++)?{??pfc[i].next=pfc[i+1];??pfc[i].pfn=i;?}?/*建立pfc[i-1]和pfc[i]之间的链接*/?pfc[total_pf-1].next=NULL;?pfc[total_pf-1].pfn=total_pf-1;?freepf_head=pfc[0];?/*空页面队列的头指针为pfc[0]*/?return?0;?}???int?NUR(total_pf)?/*最近未使用算法*/?int?total_pf;?{int?i,j,dp,cont_flag,old_dp;?pfc_type?*t;?initialize(total_pf);?dp=0;?for(i=0;itotal_instruction
显示全部
相似文档