首页 > 试题广场 >

考虑以下程序: #define Size 64 int...

[问答题]
考虑以下程序:
#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.修改后的程序缺页中断出现的频率是多少?
a。由进程读出,每进行四次语句,就会产生一个读取的缺页中断,有三个数组,所以缺页频率=64*64*1/4*3=2304次
b.修改for循环语句i和j的位置
c。修改后,每64*4次循环产生中断,有三个数组,所以缺页频率为64*64*1/(64*4)*3=48次
发表于 2021-01-21 20:50:18 回复(0)