if(!isInMemory(queue[j],mem))//如果当前访问的页面没有在内存块中出现
{
dropPage(p,mem[k],n);
mem[k]=queue[j];//将访问页调入主存块中
modifyPageTable(p,queue[j],k,n);//修改页表
k=(k+1)%N;//主存块指针下移一个位置
}
print(mem);
printPageTable(p,n);
}
}
int main()
{
int i,n;
int mem[N];//主存
int queue[M];//调入页队列
int curMem=0;//指针指向当前主存块号
for(i=0;i<N;i++)
{
mem[i]=-1;//初始化主存里的页面,-1表示没有页面
}
printf("请输入页面数:");
scanf("%d",&n);
struct page *p=new struct page[n];//根据页面数创建新的页表
for(i=0;i<n;i++)//初始化页表
{
p[i].num=i;
p[i].flag=0;
p[i].memnum=-1;
}
printf("请输入要访问的页面序列:\n");
for(i=0;i<n;i++)
{
scanf("%d",&queue[i]);
}
FIFO(queue,mem,n,curMem,p);
return 0;
}