综合题
有一个虚存系统,按行存储矩阵的元素。一进程要为矩阵进行清零操作。系统为该进程分配物理主存共3页。系统用其中一页存放程序,且已经调入,其余两页空闲。按需调入矩阵数据。若进程按如下两种方式进行编程:
var:array[1..100,1..100]of integer;
程序A:
{
for i=1 to 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方式时,各个执行过程分别会发生多少次缺页?
【正确答案】
若每页可存放200个整数,即每2行产生一次中断,程序A在执行过程中会发生50次缺页中断;程序B运行时,每一页存放2列元素,内层循环每2次产生一次中断,完成内层循环需要50次中断,外层循环也是每列产生一次,完成外层循环也需要100次中断,这个循环完,共产生5000次缺页中断。
【答案解析】
问答题
若每页只能存放100个整数时,会是什么情况?
【正确答案】
若每页只能存放100个整数,程序A的执行过程中会发生100次缺页;而程序B的执行过程中内、外循环的每一次都会分别发生100次缺页中断,共发生10000次。 以上两个程序说明对矩阵计算的编程方式直接影响缺页次数,因此,为了提高程序的运行效率,应该查找相关语言手册,了解数组的数据存放方式。同样也可看出,页面的大小对缺页次数影响,页面越大,缺页次数越少。
【答案解析】
提交答案
关闭