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

admin2019-07-18  35

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

选项 A、2
B、1
C、1024
D、512

答案D

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

最新回复(0)