2014-03-05 34 views
0

所以我有點失落,我將如何創建一個代碼,甚至是如何獲得循環賽調度的平均時間和公式在這裏轉過身是我的代碼在循環賽任何人都可以請給我一些提示? 如何提高我的代碼?以及如何獲得平均等待時間?如何查找循環賽的平均等待時間及其輪換時間

#include<iostream> 
using namespace std; 

int main(){ 
    int number; 
    int interval; 
    cout<<"How many Process Need: "; 
    cin>>number; 
    cout<<"Time Quantum: "; 
    cin>>interval; 
    int array[number]; 
    for(int i=0;i<number;i++) 
    { 
     cout<<"Process Time for Job "<<i+1<<": "; 
     cin>>array[i]; 
    } 

    for(int z=0;z<number;z++) 
    { 
     for(int i=0;i<number;i++) 
     { 
      if(array[i]-interval>=interval-1) 
      { 
       for(int x=1;x<=interval;x++) 
       { 
        cout<<"Job "<<i+1<<"\t"; 
       } 
       array[i]=array[i]-interval; 
      } 
      else 
      { 
       for(int x=1;x<=array[i];x++) 
       { 
        cout<<"Job "<<i+1<<"\t"; 
       } 
       array[i]=0; 
      } 

     } 
    } 

    cout<<endl; 
    system("pause"); 
    return 0; 
} 
+0

您可以使用C的時間函數。可能重複[Processing Time calculation](處理時間計算)(http://stackoverflow.com/questions/12231166/timing-algorithm-clock-vs-time-in-c)! 。請訪問前面給出的鏈接。 –

+0

我沒有得到你想說的話wafeeq – MaouAion

+0

@wafeeq除非os有rt補丁,否則時間函數是不準確的。進程調度的持續時間非常短,這非常敏感。此外,時間函數被調用爲更高優先級隊列中的RR調度進程......這可能會超出目的。 – Xephon

回答

0

我不是很確定你要實現你的源代碼是什麼,但肯定不會「措施」,平均等待時間,並在RR調度方案翻身時間。

如果你真的想分析給定的操作系統的RR方案,你需要解決進入內核空間。我現在所能想到的是,您需要使用諸如struct timespec之類的東西來捕獲微秒級別的時間戳。在內核空間中,每當調用一個進程時,捕獲一個時間戳。之後你必須對這些時間戳進行統計分析。

以上是軟件解決方案。我曾經使用的硬件解決方案包括一個在FPGA中具有已知給定頻率和計數器的振盪器。每次在內核中調用進程時,我都會將FPGA計數器值推送到緩衝區。通過將緩衝區推送到文件並使用Excel進行分析,我可以確定內核RR調度方案。

不確定上述是否有幫助。

+0

Xephon我不認爲我需要一個真正的時間我想我只需要讓它運行循環,我的教練要我怎麼做 – MaouAion

+0

所以你想要一個寬鬆的「估計」的運行時間?如果是這樣,使用時間戳應該給你一個很好的估計,即使沒有rt模塊。我的額外硬件解決方案適用於生產環境,我們需要確定配置文件。因此,額外的一英里。 – Xephon