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

1 回答 1

0

我不完全确定你想用你的源代码实现什么,但这肯定不能“衡量”平均等待时间和 RR 调度方案中的交接时间。

如果你真的想分析给定操作系统的 RR 方案,你需要进入内核空间。目前我能想到的是,你需要使用类似的东西struct timespec来捕捉微秒级的时间戳。在内核空间中,每当调用一个进程时,都会捕获一个时间戳。之后您必须对这些时间戳进行统计分析。

以上是软件解决方案。我曾经使用的硬件解决方案涉及一个具有已知给定频率的振荡器和 FPGA 中的计数器。每次在内核中调用进程时,我都会将 FPGA 计数器值推送到缓冲区。通过将缓冲区推送到文件并使用 Excel 进行分析,我能够确定内核 RR 调度方案。

不确定以上是否有帮助。

于 2014-03-05T15:15:29.977 回答