如何查找循环的平均等待时间及其随时间的变化

问题描述 投票:0回答:1

所以我很遗憾我将如何创建一个代码甚至是如何获得循环调度的平均时间的公式,并且随着时间的推移,这是我的循环代码,任何人都可以给我一些提示吗?在如何改进我的代码?以及如何获得平均等待时间?

#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;   
}
c++ round-robin
1个回答
0
投票

我不完全确定您要使用源代码实现什么,但这肯定不会“衡量”RR调度方案中的平均等待时间和转换时间。

如果您真的想要分析给定操作系统的RR方案,则需要处理内核空间。我现在能想到的是你需要使用像struct timespec这样的东西来捕获微秒级的时间戳。在内核空间中,只要调用进程,就捕获时间戳。您必须在事后对这些时间戳进行统计分析。

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

不确定上述是否有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.