Круговой циклический алгоритм разделения времени - 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д