问题 单项选择题

在一个请求页式的虚拟存储系统中,每个页面的大小分为40%字节。如下某个程序需要将数组赋值,假设执行代码已经驻留内存,而数据页面尚未分配,数组按先行后列存放。请计算,其缺页中断次数是______。
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个字节。据此,我们可以计算,40%字节可以存放2行数组,由于程序中并非按行赋值,而是按列赋值,所以一页只赋值2个数组(是跳跃地赋值)。若每申请一页产生1次缺页中断,那么总共要产生1024/2=512次缺页中断。

单项选择题
单项选择题