有一矩阵“int a[50][50]”以行为序进行存储,有一个虚拟存储系统,物理内存共有 3页,其中1页用来存放程序,其余2页用于存放数据。假设程序已在内存中占1页,其余 2页空闲。 程序A: for(i=0; i<=49;i++) fo

admin2010-01-23  21

问题 有一矩阵“int a[50][50]”以行为序进行存储,有一个虚拟存储系统,物理内存共有 3页,其中1页用来存放程序,其余2页用于存放数据。假设程序已在内存中占1页,其余 2页空闲。
   程序A:
   for(i=0; i<=49;i++)
   for(j=0; j<=49;j++)
       A[j]=0;
   程序B:
   for(i=0; i<=49; i++)
   for(j=0; j<=49; j++)
   A[j]=0;
   若每页可存放50个整数,执行程序A会发生(52)次缺页,执行程序B会发生(53)次缺页。

选项 A、50
B、500
C、2000
D、2500

答案D

解析 由题目中所给条件可知,数组A有50×50个整数,系统中共有2个内存页用于存放数据,信息数组中的元素按行编址。
   若每页可以存放50个整数,则一个内存页中可以存放1行数组元素,对于程序A,数组元素的访问顺序为:
                  A[0][0],A[0][1]…A[0][49]
                  A[1][0],A[1][1]…A[1][49]
                  ┇
                  A[49][0],A[49][1]…A[49][49]
   显然,程序A对数据A的访问顺序与存储顺序一致,也是按行进行的。因此程序A每访问1行数据元素都会产生一次缺页中断,则访问整个数据会产生50次缺页中断。
   对于程序B,数组元素的访问顺序为:
                  A[0][0],A[1][0]…A[49][0]
                  A[0][1],A[1][1]…A[49][1]
                  ┇
                  A[0][49],A[1][49]…A[49][49]
   显然,程序B对数据A的访问顺序与存储顺序不一致,因此程序B每访问1个数据元素都会产生一次缺页中断,则访问整个数据会产生2500次缺页中断。
   经过上述分析,不得不引人深思,平时写程序的过程中,一个很细微的改变,可能导致计算机工作量数十倍的增长。
转载请注明原文地址:https://kaotiyun.com/show/dqxZ777K
0

相关试题推荐
最新回复(0)