*先进先出页面置换算法*

xiaoxiao2021-02-28  76

/*先进先出页面置换算法*/ #include<stdio.h> #include<malloc.h> #define N 100 int Butter[N]={-1}; int count=0; int l=0; bool CheckFull(int a[],int n){ int num=0; while(a[num++]!=-1){ } if(num==n+1){ return true; } return false; } bool CheckFind(int a[],int n,int data){ for(int i=0;i<n;i++){ if(a[i]==data){ return true; } } return false; } void First(int a[],int n){ for(int i=0;i<n;i++){ a[i]=-1; } } void Print(int a[],int n){ printf("当前内存块中的数据:"); for(int i=0;i<n;i++){ printf("%d ",a[i]); } printf("\n"); } int piror=0; int main(){ int n,num,k=0; int *fir; int temp=0; printf("物理块的大小:"); scanf("%d",&n); printf("数据个数:"); scanf("%d",&num); fir=(int *)malloc(sizeof(int)*(n+1)); First(fir,n+1); for(int i=0;i<num;i++){ printf("数据%d:",i+1); scanf("%d",Butter+i); } Print(Butter,num); for(int j=0;j<num;j++){ if(CheckFull(fir,n)==false){ if(CheckFind(fir,n,Butter[j])==false){ *(fir+l)=Butter[j]; count++; l++; Print(fir,n); } } else{ if(CheckFind(fir,n,Butter[j])==false){ *(fir+k)=Butter[j]; count++; k++; Print(fir,n); } if(k==n){ k=0; } } } printf("缺页次数:%d\n",count); printf("页面置换次数:%d\n",count-n); printf("命中次数:%d\n",num-count); printf("命中率%.2f%\n",(1-(float)(count)/num)*100); return 0; }
转载请注明原文地址: https://www.6miu.com/read-75885.html

最新回复(0)