2013-11-22 100 views
1

我正在編寫一個程序,用C#中的FIFO查找頁面錯誤。用戶提供20個字符的參考字符串或生成一個隨機的字符串。用戶也輸入幀數。FIFO頁面替換算法問題

所以,我傳遞了20個單位數字,數組幀和幀數組到我的FIFO函數。出於某種原因,我的號碼關閉,我不確定我做錯了什麼。我用4幀的參考字符串1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6進行測試,我似乎要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

什麼是你的框架陣列? – Noctis

+0

只是一個大小爲7的int數組(7是允許的最大幀數)它被命名爲「幀」 – user3015999

回答

1

的原因是該位:

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

你提高4個故障的高速緩存的每一小姐(因此你56 = 14 * 4)

+0

謝謝!我刪除了循環,只是使用故障++,它似乎工作! – user3015999

+0

然後隨時upvote答案,並將其標記爲回答:) – Noctis

+1

我沒有足夠的聲譽upvote你或我會!另外,如果有人對LRU有任何瞭解,我也會遇到問題。 http://stackoverflow.com/questions/20136696/lru-page-replacement-algorithm-c-sharp – user3015999