问答题 有一矩阵intA[100,100]以行优先进行存储。计算机采用虚拟存储系统,物理内存共有3页,其中一页用来存放程序,其余两页用于存放数据。假设程序已在内存中占一页,其余两页空闲。若每页可存放200个整数,程序1、程序2执行过程各会发生多少次缺页?试问若每页只能存放100个整数,这两个程序执行过程各发生多少次缺页?以上说明了什么问题?【西北工业大学1999年】 程序1: for(i=0;i<100;i++) for(j=0;j<100; j++) A[i,j]=0, 程序2: for(j=0;j<100;j++) for(i=0;i<100;i++) A[i,j]=0;
【正确答案】正确答案:程序1按行优先的顺序访问数组元素,与数组在内存中存放的顺序一致,每个内存页面可存放200个数组元素,这样,程序1每访问两行数组元素产生一次缺页中断,所以程序1的执行过程会发生50次缺页。程序2按列优先的顺序访问数组元素,由于每个内存页面存放两行数组元素,故程序2每访问两个数组元素就产生一次缺页中断,整个执行过程会发生5000次缺页。若每页只能存放100个整数,则每页仅能存放一行数组元素,同理可以计算出:程序1的执行过程产生100次缺页:程序2的执行过程产生10000次缺页。以上说明缺页的次数与内存中数据存放的方式及程序执行的顺序有很大关系;同时说明,当缺页中断次数不多时,减小页面大小影响并不大,但缺页中断次数很多时,减小页面大小会带来很严重的影响。
【答案解析】