我正在编写一个程序,在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);
}
答案 0 :(得分:1)
原因是这一点:
for (k = 0; k < numFrames; k++)
{
fault++;
}
每次错过缓存都会引发4个错误(因此你的56 = 14 * 4)