计算二维数组中的页面错误数

标签 c page-fault

//1)

#include <stdio.h>
int A[1024][1024];
int main(void)
{
    int i, j=0;
    for (i=0 ; i < 1024 ; i++)
    {
        for (j=0 ; j < 1024 ; j++)
        {
            A[i][j] = 0; // 
        }
    }
}

//2)

#include <stdio.h>
int A[1024][1024];
int main(void)
{
    int i, j=0;
    for (i=0 ; i < 1024 ; i++)
    {
        for (j=0 ; j < 1024 ; j++)
        {
            A[j][i] = 0; //
        }
    }
}

考虑二维数组 A:int A[1024][1024];每个页面有4kb(而int的大小是4byte)。操作矩阵的小进程驻留在第 0 页(位置 0 到 1023)。因此,每个指令都将从页 0 获取。

对于两个页框,使用 FIFO、LRU 和最优替换并假设第一个页框包含进程而另一个最初为空,以下数组初始化循环会生成多少个页面错误?

最佳答案

  1. 256 (1024 * 1024/4096)
  2. 1024 * 256 (1024 * (1024 * 1024/4096))

关于计算二维数组中的页面错误数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27507455/

相关文章:

linux - 从大型 malloced 数组读取而不是仅存储时,页面错误的数量是原来的两倍?

linux - 防止 linux 上实时进程中的小页面错误

c - sleep 时信号处理比旋转时慢?

c - C 的非线性最小二乘优化库

字符编码问题

c# - 如何避免 C# .NET 应用程序生成的大量软页面错误?

c - 为什么页面错误和不可恢复的错误需要不可屏蔽?

C# 和 C++ 与 C 的关系

free() 上损坏的双链表

MongoDB、NUMA 硬件、页面错误但有足够的 RAM 用于工作集、touch 命令或 vmtouch/dd 未加载到内存中