FIFO(先进先出算法) 代码 #include<stdio.h> void fifo(int process[],int pronum,int pagenum) { int i,j,k; int count=0;//用于记录当前的占用页的数量 int qynum=0; int placePage; int pagemem[10][2]; int min,mink;//代表最小的序列号,和最小序列号的下标; for(i=0;i<pronum;i++){ for(j=0;j<count;j++){ //判断所用页是否已经在内存中 if(pagemem[j][0]==process[i]) break; } if(j==count&&count<pagenum) //代表没有装入内存中,但是还有空间 { pagemem[count][0]=process[i]; pagemem[count][1]=i+1;//用于记录序列号 count++; qynum++; } else if(j==count){ //没有装入内存,也没有空闲空间 min=pagemem[0][1]; mink=0; for(k=1;k<count;k++){ if(pagemem[k][1]<min){ mink=k; min=pagemem[k][1]; } } placePage=pagemem[mink][0]; pagemem[mink][0]=process[i]; pagemem[mink][1]=i+1; qynum++; printf("页号%d被淘汰,页号%d被装入内存,共缺页次数%d\n",placePage,process[i],qynum); } else{ printf("页号%d已经在内存中\n",process[i]); } } printf("共发生缺页%d",qynum); } int main(){ int pronum; int process[100]; int pagenum; int i; printf("请输入内存中可存储的页面数:"); scanf("%d",&pagenum); printf("请输入进入内存的总的进程数"); scanf("%d",&pronum); for(i=0;i<pronum;i++){ scanf("%d",&process[i]); } fifo(process,pronum,pagenum); return 0; }