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