【问题标题】:FIFO page replacement algorithm problemsFIFO页面替换算法问题
【发布时间】:2013-12-06 18:39:22
【问题描述】:

我正在编写一个程序来使用 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);
    }

【问题讨论】:

  • 你的帧阵列是什么?
  • 只是一个大小为 7 的 int 数组(7 是允许的最大帧数)它被命名为“frame”

标签: c# fifo page-replacement


【解决方案1】:

原因是这一点:

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

每次缓存未命中都会引发 4 个错误(因此你是 56 = 14 * 4 )

【讨论】:

  • 谢谢!我删除了循环,只使用了 fault++,它似乎正在工作!
  • 然后随意对答案进行投票并将其标记为已回答:)
  • 我没有足够的声望来支持你,否则我会!另外,如果有人知道有关 LRU 的任何信息,我也会遇到问题。 stackoverflow.com/questions/20136696/…
猜你喜欢
  • 2014-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2013-12-06
相关资源
最近更新 更多