问题 单项选择题

在一个请求页式的虚拟存储系统中,每个页面的大小分为4096字节。如下某个程序需要将数组赋值,假设,执行代码已经驻留内存,而数据页面尚未分配,数组按先行后列存放。请计算,其缺页中断次数是______。
int a[1024][1024];
int i, j;
i=0;
for(j=0; j≤1023; j++)
a[i][j]=j;

A.2
B.1
C.1024
D.512

答案

参考答案:D

解析: 本题考查C语言程序在使用内存时的分配机制。采用请求页式虚拟存储管理的基本点是按需分配内存,仅当使用到该页时才通过缺页中断分配内存。C语言对数组的存放是先行后列的,整型数组每个占用2个字节,据此,我们可以计算,4096字节可以存放2行数组,由于程序中并非按行赋值,而是按列赋值,所以一页只赋值2个数组(是跳跃地赋值),若每申请一页产生1次缺页中断,那么总共要产生1024/2=512次缺页中断。

单项选择题 A1/A2型题
单项选择题