考虑到n个进程的突发时间和到达时间,任务是使用FCFS,Round Robin,最短剩余时间等调度算法找到平均等待时间和平均周转时间,
在选择数据结构来实现这些算法时,我非常困惑。我为每个属性使用一个单独的数组来实现,但这很麻烦,我们需要在c中编写很多语句。我在想一个链表,其中每个节点代表所有属性。这是一个有效的。 能不能给我建议一个有效的数据结构,以便搜索和排序更容易。
答案 0 :(得分:0)
首先,创建一个数据结构以包含有关每个过程的“实践中不可能知道的”信息(开始时间,猝发时间等),添加一个“过程状态”字段(以跟踪“未开始,已开始”或“已停止”),并在结构中添加一个“下一个”字段;然后创建这些结构的数组并填写信息。
接下来,创建一个通用函数来查找启动时间最早的“未启动”过程。
用于循环赛;找到具有最早开始时间的“未开始”过程,设置“当前时间=第一个过程开始时间”,然后将过程的“下一个”字段设置为指向自身,以便您拥有一个条目的循环链接列表,并将进程状态从“未启动”更改为“已启动”。然后找出接下来发生的事件(在任务切换发生之前,另一个进程是否会启动并添加到循环链接列表中?)并处理该事件(在提前“当前时间”的同时)。
对于FCFS,它类似于循环轮询,只是您不必费心地在当前正在运行的任务停止之前进行任务切换(可以使用非循环列表而不是循环列表)。
对于最短的剩余时间,它与FCFS相同,只是在启动进程时,您使用“剩余时间”来确定将其插入列表的位置。