最近最久未使用(LRU)置换算法

#include 
   
   
    
    
#include 
    
    
     
     
 
#define mSIZE 3
#define pSIZE 8
 
static int memery[mSIZE] = {0};
static int process[pSIZE] = {0};
//static int process[pSIZE] = {2,3,2,1,5,2,4,5,3,2,5,2};
//static int process[pSIZE] = {7,10,1,2,10,3,10,4,2,3,10,3,2,1,2,10,1,7,10,1};

void build();             //生成一个随机数序列 
void LRU();               //最近最久未使用(LRU)置换算法
 
int main(int argc, char *argv[])
{
    printf("产生随机序列如下:\n");
    build();
    printf("最近最久未使用(LRU)置换算法 \n");
    LRU();
    system("PAUSE"); 
    return 0;
}
void build()
{
     int i = 0;
     for(i=0; i
     
     
      
      maxflag)
                 {
                       maxflag = flag[j];
                       max = j;
                 } 
           }   
           
           if(n == -1)               //不存在相同进程
           {
                if(m != -1)          //存在空闲物理块 
                {
                     memery[m] = process[i];
                     flag[m] = 0;
                     for(j = 0;j <= m; j++)
                     {
                           flag[j]++;
                     }
                     m = -1;
                }
                else                //不存在空闲物理块 
                {
                     memery[max] = process[i];
                     flag[max] = 0;
                     for(j = 0;j < mSIZE; j++)
                     {
                           flag[j]++;
                     }
                     max = -1; 
                     maxflag = 0;
                     count++;
                }
           }
           else                    //存在相同的进程 
           {
                 memery[n] = process[i];
                 flag[n] = 0;
                 if(m != -1)       //若存在空闲物理块 
                 {
                      flag[m] = 0;
                 }
                 for(j = 0;j < mSIZE; j++)
                 {
                       flag[j]++;
                 }
                 max = -1; 
                 maxflag = 0;
                 n = -1;
           } 
           for(j = 0 ;j < mSIZE; j++)
           {
                 printf("%d  ",memery[j]);
           }
           printf("\n");
     } 
     printf("页面换算次数为:%d\n",count);
}
     
     
    
    
   
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值