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