实现以下RoundRobin调度代码
本文关键字:调度 代码 RoundRobin 实现 | 更新日期: 2023-09-27 18:16:33
我必须为一个类创建一个轮询调度程序。我最初创建了3个List<int>
列表来表示进程id、它们的到达时间和处理时间。我把它们按到达时间分类。进程被分配了一个固定的量子(我已经将其硬编码为4),现在我想对它们应用RR并显示每个进程的序列顺序。他们在textBox
中的剩余时间。
我在这里找到了一个方法,但它是在java中:https://stackoverflow.com/questions/7544452/round-robin-cpu-scheduling-java-threads
我尝试将我的三个列表转换为对象列表,如链接中所示,但基本上,到目前为止,我已经成功地创建了一个表示进程的对象列表。在每个对象中分别存储processname
、arrivaltime
、bursttime
。这是由一个叫做PCB
的类来表示的。
现在我已经创建了一个列表,其中添加了一些进程:
public List<pcb> list = new List<pcb>(); // In place of ArrayList used in the
// example code in the link.
//For loop runs in which above 3 parameters are assigned values & then they're
// added to list:
PCB pcb = new PCB(processname1, arrivaltime1, bursttime1);
list.Add(pcb);
但是我如何搜索列表的每个值来找到一个项目并对其进行操作呢?假设我想访问processname="P1"
的bursttime
并将其减4?
在c#中这是错误的数据结构吗?
// To access the value:
int bursttime1 = list.FirstOrDefault(x => x.processname == "P1").bursttime;
// To change it:
list.FirstOrDefault(x => x.processname == "P1").bursttime -= 4;
如果您希望遍历列表:
foreach (PCB pcb in list) {
if (pcb.processname == "P1") {
pcb.bursttime -= 4;
}
}