#include<stdio.h>
static int stack_0_Size,currentIndex;
//内存分配大小stack_1_Size,输出序列的大小
int stack_1_Size=5,currentSize=0;
//定义输入序列stack_0和内存stack_1
int stack_0[50],stack_1[5];
void lru(int a[],int b);
void init()
{
printf("请输入页表的个数:");
scanf("%d",&stack_0_Size);
printf("请输页号:");
for(currentIndex=0;currentIndex<stack_0_Size;currentIndex++)
{
scanf("%d",&stack_0[currentIndex]);
}
printf("您的页号为:");
for(currentIndex=0;currentIndex<stack_0_Size;currentIndex++)
{
printf("%d\t",stack_0[currentIndex]);
}
printf("\n");
printf("分配结果为:");
printf("\n");
lru(stack_0,stack_1_Size);
}
void lru(int a[],int b)
{
int flag=0;
int tem,i,j;
printf("stack_0是:");
for(i=0;i<stack_0_Size;i++)
{
printf("%d\t",stack_0[i]);
}
printf("\n");
for(currentIndex=0;currentIndex<stack_0_Size;currentIndex++)
{
tem=stack_0[currentIndex];
//输出序列的长度逐渐增大
currentSize++;
//printf("tem:%d,currentIndex:%d,stack_1_Size:%d",tem,currentIndex,stack_1_Size);
for(i=0;i<stack_1_Size;i++)
{
if(tem==stack_1[i])
{
for(j=i;j>0;j--)
{
stack_1[j]=stack_1[j-1];
}
stack_1[0]=tem;
flag=0;
//每次命中后调换顺序,整个输出序列保持不变
currentSize--;
printf("currentSize:%d\n",currentSize);
for(i=0;i<currentSize;i++)
{
printf("%d\t",stack_1[i]);
}
printf("\n");
break;
}
else
{
flag=1;
}
}
printf("currentSize:%d\n",currentSize);
while(flag)
{
if(currentSize<stack_1_Size)
{
for(i=currentSize;i>0;i--)
{
stack_1[i]=stack_1[i-1];
}
stack_1[0]=tem;
for(i=0;i<currentSize;i++)
{
printf("%d\t",stack_1[i]);
}
printf("\n");
break;
}
else
{
//printf("5不小于5");
for(i=stack_1_Size-1;i>0;i--)
{
stack_1[i]=stack_1[i-1];
}
stack_1[0]=tem;
for(i=0;i<stack_1_Size;i++)
{
printf("%d\t",stack_1[i]);
}
printf("\n");
break;
}
}
}
}
int main()
{
int g;
init();
return 0;
}
操作系统实验_lru
最新推荐文章于 2021-11-24 23:07:03 发布