有一个矩阵Var A:array[1……100,1……100] of integer:以行为先进行存储。有一个虚存系统,物理内存共有三页,其中一页用来存放程序,其余两页用于存放数据。假设程序已经在内存中占一页,其余两页空闲。 程序A: for

admin2013-03-18  51

问题 有一个矩阵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次缺页中断。 以上结果说明:页面越大,缺页中断次数越少;页面越小,缺页中断次数越多。

解析
转载请注明原文地址:https://kaotiyun.com/show/lVsp777K
0

最新回复(0)