所以我很遗憾我将如何创建代码甚至是如何获得循环调度的平均时间的公式及其随时间的变化这是我在循环中的代码可以有人请给我一些提示? 在如何改进我的代码?以及如何获得平均等待时间?
#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 :(得分:0)
我不完全确定您尝试使用源代码实现的目标,但这肯定不能衡量&#34;&#34; RR计划方案中的平均等待时间和周转时间。
如果您真的想要分析给定操作系统的RR方案,则需要处理内核空间。我现在能想到的是你需要使用类似struct timespec
的东西来捕获微秒级的时间戳。在内核空间中,只要调用进程,就捕获时间戳。您之后必须对这些时间戳进行统计分析。
以上是一个软件解决方案。我曾经使用的硬件解决方案涉及一个具有已知给定频率的振荡器和FPGA中的计数器。每次在内核中调用进程时,我都会将FPGA计数器值推送到缓冲区。通过将缓冲区推送到文件并使用Excel进行分析,我能够确定内核RR调度方案。
不确定上述是否有帮助。