Так что я в некотором роде забочусь о том, как мне создать код или даже формулу того, как получить среднее время планирования циклического перебора и его время оборота, вот мой код в циклическом переборе. Может кто-нибудь дать мне несколько советов?
в том, как улучшить мои коды? а как получить среднее время ожидания?
#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;
}
Я не совсем уверен, чего вы пытаетесь достичь с помощью исходного кода, но это, безусловно, не «измеряет» среднее время ожидания и время оборота в схеме расписания RR.
Если вы действительно хотите профилировать схему RR данной ОС, вам нужно заняться пространством ядра. На данный момент я могу думать о том, что вам нужно использовать что-то вроде struct timespec
захватывать временные метки в микросекундах. В пространстве ядра всякий раз, когда вызывается процесс, фиксируйте метку времени. После этого вам придется статистически анализировать эти временные метки.
Выше приведено программное решение. Аппаратное решение, которое я использовал однажды, включает генератор с известной заданной частотой и счетчик в FPGA. Каждый раз, когда процесс вызывается в ядре, я помещаю значение счетчика FPGA в буфер. Выдвинув буфер в файл и проанализировав с помощью Excel, я смог определить схему планирования RR в ядре.
Не уверен, поможет ли вышеизложенное.
Других решений пока нет …