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);
}