1

我正在编写一个程序来使用 C# 中的 FIFO 查找页面错误。用户要么提供一个 20 个字符的参考字符串,要么生成一个随机的参考字符串。用户还输入帧数。

因此,我将 20 个个位数的数组、帧数组和帧数传递给我的 FIFO 函数。出于某种原因,我的号码已关闭,我不确定自己做错了什么。我正在使用 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6 的参考字符串进行 4 帧测试,我似乎得到 56,而我应该得到 14 个故障。下面是我的 FIFO 函数。

        private static void FIFO(int numFrames, int []refString, int []frame)
    {
        int i, j = 0, k, fault = 0, flag = 0;

        for (i = 0; i < 20; i++)
        {
            for (k = 0; k < numFrames; k++)
            {
                if (frame[k] == refString[i])
                    flag = 1;
            }

            if (flag == 0)
            {
                frame[j] = refString[i];
                j++;

                for (k = 0; k < numFrames; k++)
                {
                    fault++;
                }
            }

            else
            {
                flag = 0;
            }

            if (j == numFrames)
            {
                j = 0;
            }

        }
        Console.WriteLine("\nThe number of page faults with FIFO is: " + fault);
    }
4

1 回答 1

2

原因是这一点:

for (k = 0; k < numFrames; k++)
{
    fault++;
}

您为缓存的每次未命中引发 4 个错误(因此您是 56 = 14 * 4 )

于 2013-11-22T02:21:13.313 回答