os模拟页面置换算法.docVIP

  • 6
  • 0
  • 约 10页
  • 2016-12-21 发布于北京
  • 举报
os模拟页面置换算法.txt爱情是艺术,结婚是技术,离婚是算术。这年头女孩们都在争做小“腰”精,谁还稀罕小“腹”婆呀?高职不如高薪,高薪不如高寿,高寿不如高兴。用C语言或C++语言对页面置换算法进行模拟LFU NUR 要求:从文件中输入进程的n个访问序列,以及分配给进程的物理页面数m,输出该访问序列的缺页率q。 //*****LRU*********************: #include stdio.h #include stdlib.h #define mSIZE 3//分配三个内存页块 #define pSIZE 12//总共12个进程 struct mem { int num; int count; }memery[3]={0,-1,0,-1,0,-1}; static int process[pSIZE] ={1,2,3,4,1,2,5,1,2,3,4,5};//页面访问序列 void LRU(); void get(); int main() { get(); printf(\n(LRU)\treplace\n); LRU(); system(PAUSE); return 0; } void get() { int w[12]={1,2,3,4,1,2,5,1,2,3,4,5}; int i,n; for(i=0;i12;i++) { printf(%d ,w[i]); } } void LRU() { int i = 0, j = 0,k=0,x,y; int replace; for(i = 0; ipSIZE; i++) //对输入序列进行循环 { x=0;y=0; //置x,y初值为0 for(j = 0; j mSIZE; j++) //对三个内存块进行循环,先查找有没有与即将访问页号相同的 if(memery[j].num == process[i]) { x=1;//有相同的则置x为1 replace=process[i]; memery[j].count=0;//置此块count为0 for(k=0;k3;k++) if(k!=jmemery[k].num!=0)memery[k].count++;//其他不为0页count++ break;//跳出此次内存块循环 } if(x==0)//没有与即将访问页号相同的内存块 { for(j = 0; j mSIZE; j++)//对内存块循环,查找有没有空内存块 if(memery[j].num== 0) { y=1;//有则置y为1 replace=0; memery[j].num=process[i];// 置此内存块为访问页号 memery[j].count=0;//置此块count为0 for(k=0;k3;k++) if(k!=jmemery[k].num!=0)memery[k].count++;//其他不为0页count++ break;//跳出此次内存块循环 } } if(x==0y==0)//既没有与即将访问页号相同的内存块也没有空内存块 { int m=memery[0].count; for(j = 0; j mSIZE; j++) { if(memery[j].countm) m=memery[j].count; }//查找出count最大的内存块m for(j=0;jmSIZE;j++)//对内存块循环,count=m的内存块 { if(memery[j].count==m) { replace=memery[j].num; memery[j].num=process[i]; //置此内存块为访问页号块 memery[j].count=0;//置此块count为0 } else memery[j].count++;//其他块count++ } } for(j = 0 ;j mSIZE; j++) //打印每次访问后的情况 printf(%d ,memery[j].num); printf(\t%d\n,replace); } } //*******nur******************** #includestdio.h #includestdlib.h #define ap 4 #define CLEAR_PERIOD 4 #define max 100 struct zhan //处理页数顺序的栈 { int i; int j; //状态项,用于

文档评论(0)

1亿VIP精品文档

相关文档