内存分配,缺页中断程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#define M 100 // 要装入的作业数

#define N 10 //系统可以分配的最大主存数int chazhao(int x,int b[],int n)

{

for(int i=0;i

{

if(x==b[i])

return 1;

}

return 0;

}

int main(int argc, char *argv[])

{

int a[M];

int b[N];

int c[M]; // 淘汰的页号

int m=0,n,num;

int count;//缺页总数

printf("请输入作业队列,输入-1结束:");

do{

scanf("%d",&a[m]);

m++;

} while(a[m-1]!=-1);

printf("\n请输入分配的主存数:");

scanf("%d",&n);

count=n;

for(int i=0;i

{

b[i]=a[i];

}

num=0;

for(int j=n;j

{

if(!chazhao(a[j],b,n))

{

c[num++]=b[0];

for(int i=0;i

{

b[i]=b[i+1];

}

b[n-1]=a[j];

count++;

}

}

printf("\n缺页的次数为: %d\n\n",count);

printf("缺页中断率为: %.2f%%%\n\n",(float)count*100/(m-1));

printf("在内存中的页号为:");

for(int i=0;i

printf("%3d",b[i]);

printf("\n\n被淘汰的页号为:");

for(int i=0;i

printf("%3d",c[i]);

printf("\n\n");

return 0;

}

十一郎16:14:42

#include

int find(int x,int b[],int n)

{

int i;

for( i=0;i

if(x==b[i])

return i;

return -1;

}

int main(int argc, char *argv[])

{

int a[100],b[15],c[100];

int i,j,k,count,num,flag,n,m,x;

printf("请输入作业队列数:");

scanf("%d",&m);

printf("请输入作业队列:");

for(i=0;i

scanf("%d",&a[i]);

printf("请输入内存数:");

scanf("%d",&n);

count=n;

for(i=0;i

b[i]=a[i];

num=0;

for(i=n;i

{

flag=find(a[i],b,n);

if(flag==-1)

{

c[num++]=b[0];

for( j=0;j

{

b[j]=b[j+1];

}

b[n-1]=a[i];

count++;

}

else

{

x=b[flag];

for(j=flag;j

b[j]=b[j+1];

b[n-1]=x;

}

}

printf("缺页的次数为:%3d\n\n",count);

printf("缺页率为:%.2f%%%\n\n",(float)count*100/m);

printf("驻留再内存的页号:");

for(i=0;i

printf("%3d",b[i]);

printf("\n\n被淘汰的页号为:");

for(i=0;i

printf("%3d",c[i]);

printf("\n\n");

return 0;

}

十一郎16:14:49

#include

int find(int x,int b[],int n)

{

int i;

for( i=0;i

if(x==b[i])

return 1;

return 0;

}

int xuanze(int a[],int b[],int m,int n,int x)

{

int i,j,k;

int max=0,num;

for(i=0;i

{

num=0;

for(j=x;j

{

相关文档
最新文档