有一个虚拟页式存储系统采用最近最少使用(LRU)页面置换算法,
系统分给每个进程3页内存,其中一页用来存放程序和变量ij(不作他用)。假设一个页面可以存放300个整数变量。某进程程序如下:
VARA: ARRAY[1..300, 1..200] OF integer; i,j:integer; FOR i: =1 to 300 DO FOR j: =1 to 200 DO A[i,j]:=0;
设变量ij放在程序页面中,初始时,程序及变量ij已在内存,其余两页为空。矩阵A按行序存放。试问当程序执行完后,共缺页多少次
200
300
500
301
答案
200
解析
矩阵按行存放,分析代码了解到存放方式与访问方式相同,也是按行访问的。因此可把矩阵按页大小分为200页,
每页300个元素,分析当访问第1个元素(第1页第1个元素) ,第301个元素(第2页第1个元素) ,第601个元素(第3页第1个元素)
时会发生缺页于是得知共缺页200次。
300*200/300=200
技巧:
for顺序是先I后J:
用第一个for循环数乘第二个for循环数再除[可以存放N个整数变量]