实现以下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

我尝试将我的三个列表转换为对象列表,如链接中所示,但基本上,到目前为止,我已经成功地创建了一个表示进程的对象列表。在每个对象中分别存储processnamearrivaltimebursttime。这是由一个叫做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#中这是错误的数据结构吗?

实现以下RoundRobin调度代码

// 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;
    }
}