1

C# で FIFO を使用してページ フォールトを検出するプログラムを作成しています。ユーザーが 20 文字の参照文字列を提供するか、ランダムな参照文字列が生成されます。ユーザは、フレーム数も入力します。

そのため、20 個の 1 桁の数字の配列、フレームの配列、およびフレームの数を FIFO 関数に渡します。なんらかの理由で、番号がオフになっていて、何が間違っているのかわかりません。テストする 4 つのフレームで 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6 の参照文字列を使用しています。以下は私の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 に答える