某虚拟页式存储管理系统中采用最近最少使用(LRU)页面置换算法,
系统给每个进程分配3页内存,每页大小为64个整数。某进程创建
后,代码部分占用2页内存并驻留,数据部分占用1页内存且当前为空,对于如下程序
VAR A: ARRAY [1...128, 1...128] OF INTEGER; FOR i:= 1 TO 128 DO FOR j:= 1 TO 128 DO A[i, j]:=0;
该程序执行中会产生多少次缺页中断
128×128
128×1
128×2
128×64
答案
128×2
解析
最近最少使用页面置换算法(LRU)总是淘汰距离现在最长时间内没有被访问过的页面,题意中,系统给每个进
程分配3页,每页大小为64个整数,进程创建后,代码部分占用2页,所以只有1页内存可以使用,程序运行时,对数组A的访问是按行优
先的方式,一行128个整数是占用连续的内存空间的,所以可以直接将一行数据存放到内存页中,接下来遍历访问这一行时,数据都在内
存页中,当访问下一行时,需要将上一行的数据页置换出去,所以每访问一个新数组行,就会产生一次缺页中断,总共128行,产生
128×2次缺页中断。
128*128/64=256=(128*2)
技巧:
for顺序是先I后J:
用第一个for循环数乘第二个for循环数再除[可以存放N个整数变量]