内存分配,缺页中断程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 {