家庭作业:
考虑二维数组 A:
int A[][] = new int[200][200];
其中 A[0][0] 位于页面大小为 500 的分页内存系统中的位置 500(有点不切实际——不是 512)。一个操作矩阵的小进程位于页面 0(位置 0 到 499)中。因此,每条指令都将来自当前存储在第 0 页中的一条指令。
假设只有五个页框,包括第 0 页,以下数组初始化循环产生了多少页错误,使用 LRU 替换并假设页框 0 包含进程,而其他四个最初为空?
A)for (int j = 0; j < 200; j++) for (int i = 0; i < 200; i++) A[i][j] = 0;
B)for (int i = 0; i < 200; i++) for (int j = 0; j < 200; j++) A[i][j] = 0;
问题:
我从哪里开始解决这个问题?我已经阅读了我的文字,但没有发现其中的大部分内容有用。我扔了一些数字,我发现:
40,000 = 数组项的总数
80 (40k/500) = 总页数
A) 20,000 (80*250) 因为每隔一个循环都会导致页面错误?
B) 80(每页一个,40,000/500 = 80)?
我在正确的轨道上吗?有什么建议吗?提示?