Круговой циклический алгоритм разделения времени - C#
Формулировка задачи:
В пакете 5 заданий. Всем заданиям пакета по очереди предоставляется процессор на одинаковое время 10 с (круговой циклический алгоритм разделения времени). Если в течение этого времени заканчивается выполнение задания, оно покидает систему и освобождает процессор. Если же очередного кванта времени не хватает для завершения задания, оно помещается в конец очереди – пакета.
Задания характеризуются временем работы процессора 50 +/- 45 с.
Посоветуйте, как реализовать.
Решение задачи: «Круговой циклический алгоритм разделения времени»
textual
Листинг программы
Queue<double[]> myQ = new Queue<double[]>();
for (int w = 0; w < 5; w++)
{
double[] Pak = new double[3];
Pak[0] = oPaket[w];
Pak[1] = 0;
Pak[2] = w;
myQ.Enqueue(Pak);
}
prab = 0;
while (myQ.Count >0)
{
if (myQ.Peek()[0] > p)
{
prab += p;
double[] Newp = new double[3];
Newp[0] = myQ.Peek()[0]-p;
Newp[1] = prab;
Newp[2] = myQ.Peek()[2];
myQ.Dequeue();
myQ.Enqueue(Newp);
}
else
{
if (myQ.Peek()[0] == p)
{
prab += p;
myQ.Peek()[1] = prab;
rPaket[Convert.ToInt32(myQ.Peek()[2])] = myQ.Peek()[1];
myQ.Dequeue();
}
else
{
prab += myQ.Peek()[0];
myQ.Peek()[1] = prab;
rPaket[Convert.ToInt32(myQ.Peek()[2])] = myQ.Peek()[1];
myQ.Dequeue();
}
}
}