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