有一个虚拟页式存储系统采用最近最少使用(LRU)页面置换算法,
系统分给每个进程3页内存,其中一页用来存放程序和变量ij(不作他用)。假设一个页面可以存放150个整数变量。某进程程序如下:
VAR A: ARRAY[1..300, 1..150] OF integer; j:integer; FOR j: =1 to 150 DO FOR i: =1 to 300 DO A[i,j]:=0;
设变量ij放在程序页面中,初始时,程序及变量ij已在内存,其余两页为空。矩阵A按行序存放。试问当程序执行完后,共缺页多少次
150
300
300x150
300×300
答案
300x150
解析
观察题意可知,矩阵A在内存中是按行存放,但是程序访问矩阵A是按列访问(内循环i为矩阵A的行号,每一轮内
循环访问的都是第列元素),由于页面大小可以存放150个整型变量,而矩阵行元素数量为300,所以每个页面只可以存放半行矩阵元
素,这样就会导致由缺页而调入内存的页面在对下一行元素的访问中再次未命中,又需要将下一行j列元素所在的页面调入内存,所以整
个程序执行过程中,对数组A中每个元素的访问,都是未命中状态,缺页次数为数组A的元素个数,即300*150次。
技巧:
for顺序是先J后I:
正确答案一定是 N x N 的形式
如果[整数变量]和[ J ]和[ I ]相同,结果为 [ N x N ] [N为相同数]
如果[整数变量]和[ J ]和[ I ]不同,结果为 [ N x N ] [N为不同数]