问题 问答题

有一个矩阵Var A:array[1……100,1……100] of integer:以行为先进行存储。有一个虚存系统,物理内存共有三页,其中一页用来存放程序,其余两页用于存放数据。假设程序已经在内存中占一页,其余两页空闲。
程序A:
for i:=1 t0 100 do
for j=1 to 100 do
A[i,j]:=0;
程序B:
for j:=1 to 100 do
for i:=1 to 100 do
A[i,j]:=0;
若每页可存放200个整数,程序A和程序B的执行过程各会发生多少次缺页试问:若每页只能存放100个整数呢以上说明了什么问题。

答案

参考答案:考虑本题所给条件:每个主存块的大小可以存放200个数组元素,有两个内存块可以用来存放数组信息,数组中的元素按行编址。
对于程序A,数组访问顺序是:
A[1,1],A[1,2],A[1,3],……,A[1,99],A[1,100]
A[2,1],A[2,2],A[2,3],……,A[2,99],A[2,100]
…………………………………………………………………………
A[100,1],A[100,2],A[100,3],……,A[100,99],A[100,100]
显然,数组的存储顺序与访问顺序一致,每访问两行数组遇到一次缺页中断,如果采用LRU页面调度算法,会产生50次缺页中断。
对于程序B,数组的访问顺序是:
A[1,1],A[2,1],A[3,1],……,A[99,1],A[100,1]
A[1,2],A[2,2],A[3,2],.……,A[99,2],A[100,2]
A[1,100],A[2,100],A[3,100],……,A[99,100],A[100,100]
显然,数组的存储顺序(按行的顺序)与访问顺序(按列的顺序)不一致,每访问两个数组元素遇到一次缺页中断。如果采用LRU页面调度算法,会产生5000次缺页中断。若每页只能存放100个整数,对于程序A,数组的存储顺序与访问顺序一致,每访问一行数组遇到一次缺页中断。如果采用LRU页面调度算法,会产生100次缺页中断。对于程序B,数组的顺序(按行的顺序)与访问顺序(按列的顺序)不一致,每访问一个数组元素遇到一次缺页中断。如果采用LRU页面调度算法,会产生10000次缺页中断。
以上结果说明:页面越大,缺页中断次数越少;页面越小,缺页中断次数越多。

选择题
选择题