有一个程序要将128×128的数组的初值置为“0”,数组中的每一个元素为一个字,如果页面大小为128个字,数组中的元素按行编址存放。假定只有一个主存块可用来存放数组信息,初始状态为空。将数组初始化为O的程序分别如下:
(A程序)inta[128][128];
inti,j;
for(i-0;i<-127;i++)
for(j-0;j<-127;j++)
a[i][j]=0;
(B程序)inta[128][128];
inti,j;
for(j=0;j<=127;j++)
for(i=0;i<=127;i++)
a[i][j]-0;
试问整个数组占用多少页面?上述两个程序执行时,各产生多少次缺页中断?
【正确答案】:整个数组占用128页面。 (A程序)1128次缺页中断。 (B程序)128×128次缺页中断。 [分析]作业页面数计算:数组共有128×128个元素,每个元素占一个字,页面大小为128个字,页面数量为:(128×128)÷128=128 。数组中的元素按行编址存放,所以一页中可存放一行,主存为空,第一次执行就产生缺页中断,按A程序执行,第一次将第一行元素装入主存,按a[0,0]、a[0,1]、a[0,2]……的顺序对第一行的128个元素逐一清零,之后产生缺页中断,共有128个页面,所以产生128次中断;按B程序执行,第一次将第一行元素装入主存,先对a[0,0]清零,但下一个要清零元素a[1,0]不在主存,就产生了一个缺页中断,以此类推,共产生128×128次中断。