LRU页面淘汰算法

咋个办呢 2008-01-01 02:31:46
一个很简单实现 LRU 页面淘汰算法 我很容易读懂的,希望他能帮助那些和我一样对 LRU 不了解的,给他们一些帮助。

不知道我写的对不对,还点请高手们看后多多指点。


用 LRU页面淘汰算法:(试验环境TC 2 . 0)
进程: 7,0,1,2,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 存储空间:3
源代码:


#include "stdio.h"
int y,i,j,x,t,count=0;
int a[3]={-1,-1,-1},b[3]={-1,-1,-1};
int c[]={7,0,1,2,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};
void feei()
{ printf("\n============");
printf("=============");
printf("=============");
printf("============");
printf("=============");
printf("============\n");
}
void word()
{ feei();
printf(" ");
printf(" 实现LRU算法\n");
feei();
printf("页面文件:7,0,1,2,3,0,4,2");
printf("3,0,3,2,1,2,0,1,7,0,1 \n");
printf("定义三个内存空间。\n");
printf(" ");
printf(" *LRU*算法过程(左 —〉右): \n");
feei();
}
void input()
{ a[0]!=-1 ? printf("-->| %2d",a[0]) : printf("| %2c",32);
a[1]!=-1 ? printf(" %2d",a[1]) : printf(" %2c",32);
a[2]!=-1 ? printf(" %2d |",a[2]) : printf(" %2c |",32);
count++;
if(count%5==0)feei();
}

void jshuq()
{
for(t=0;t<2;t++)
{
j++;
while(j>2){j=0;}
if(a[j]!=-1)b[j]++;
}
}

void exit()
{
a[j]=c[i]; b[j]=0; input(); jshuq();
}

main()
{
i=j=0;
word();
zhu: while(a[j]==-1)
{
a[j]=c[i];
input();
jshuq();
j=0;i++;
}
loop3:if(a[j]==c[i])
{
b[j]=0;
input();
jshuq();j=0;i++;
goto loop3;
}
for(t=1;t<=3;t++)
{
if(a[2]>=0)
{
loop4:if(a[j]==c[i])
{
b[j]=0;input();
jshuq();
j=0;i++;
while(i>=18)
{
goto loop0;
}
goto loop4;
}
j++;
while(j>2){j=0;}
}
else {goto loop5;}
}
loop2: x=j;
loop1: j++;
while(j>2){j=0;}
if(x==j)exit();
else if(b[x]-b[j]>0)goto loop1;
else goto loop2;
loop5: j++;
if(j>2)
{
j=0;
goto zhu;
}
else
goto zhu;
loop0: getch();

}
...全文
1331 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinheblue 2012-10-11
  • 打赏
  • 举报
回复
好的goto....会让人看晕的
csdn5211 2008-01-01
  • 打赏
  • 举报
回复
楼主如果想帮助别人,最好加上注释。
一生有爱1980 2008-01-01
  • 打赏
  • 举报
回复
帮顶一下

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧