(2)为减少缺页中断的次数,请改写上面的程序,">
(2)为减少缺页中断的次数,请改写上面的程序,">

某系统采用页式虚拟存储管理,主存每块为128个字节,现在要把一个128×128的二维数组置初值为“0”。在分页时把数组中的元素每一行放在一页中,假定系统只分给用户一页数据区。
(1)对如下程序段,执行完要产生多少次缺页中断?

(2)为减少缺页中断的次数,请改写上面的程序,

某系统采用页式虚拟存储管理,主存每块为128个字节,现在要把一个128×128的二维数组置初值为“0”。在分页时把数组中的元素每一行放在一页中,假定系统只分给用户一页数据区。
(1)对如下程序段,执行完要产生多少次缺页中断?

(2)为减少缺页中断的次数,请改写上面的程序,使之仍能完成所要求的功能。


【正确答案】:

(1)只有第一次访问数组的第一行时,不产生缺页中断,以后的要产生缺页中断,执行完该程序段,共需访问128×128次主存,故产生128×128-1次缺页中断。
(2)上述程序段是按列的顺序来置数的,因为一行占用一页,故应改为按行来置数,当一页在主存时就将这一行的各元素全部赋值完,然后再换下一行,这样虽然访间主存也是128×128次,但每一行只产生一次缺页中断,可大大减少缺页中断的次数,程序如下:


Top