#define Size 64 int A[Size; Size], B[Size; Size], C[Size; Size]; int register i, j; for(j = 0; j < Size; j++) for(i = 0; i < Size; i++) C[i; j] = A[i; j] + B[i; j]
假设该程序在使用请求分页的系统上运行,页尺寸为 1 KB。每个整数为 4B。显然每个数组需要 16 页。例如,A[0, 0]~A[0,63]、A[1, 0]~A[1, 63]、A[2, 0]一A[2, 63]和A[3, 0]~A[3, 63] 将存储在第一个数据页中。以此类推,可知数组 A 的其他部分和数组 B、C 如何存储。假设系统给这个进程分配了 4页尺寸的工作集,其中 1 页用于代码,3 页用于数据。系统给 i , j 分配了两个寄存器(使用这两个变量时不需要访问内存)。
a. 缺页中断出现的频率是多少?(以执行 C[i; j] = A[i; j] + B[i; j] 的次数为单位)
b.如何修改这个程序以减少缺页中断出现的频率?
c.修改后的程序缺页中断出现的频率是多少?