在c语言中实现调度算法的建议

在c语言中实现调度算法的建议,c,operating-system,scheduling,C,Operating System,Scheduling,给定n个进程及其突发时间和到达时间,任务是使用调度算法(如FCFS、循环、最短剩余时间等)查找平均等待时间和平均周转时间 在选择数据结构来实现这些算法时,我感到非常困惑。我为每个属性使用了一个单独的数组来实现,但它很乏味,我们需要用c编写很多语句。我想到的是一个链表,每个节点代表所有属性。这是一个有效的方法能否请您为我推荐一个高效的数据结构,以便搜索和排序更容易首先,创建一个数据结构,包含关于每个流程的“实践中不可能知道”信息(开始时间、突发时间等),添加一个“流程状态”字段(跟踪“未启动、启动

给定n个进程及其突发时间和到达时间,任务是使用调度算法(如FCFS、循环、最短剩余时间等)查找平均等待时间和平均周转时间


在选择数据结构来实现这些算法时,我感到非常困惑。我为每个属性使用了一个单独的数组来实现,但它很乏味,我们需要用c编写很多语句。我想到的是一个链表,每个节点代表所有属性。这是一个有效的方法能否请您为我推荐一个高效的数据结构,以便搜索和排序更容易

首先,创建一个数据结构,包含关于每个流程的“实践中不可能知道”信息(开始时间、突发时间等),添加一个“流程状态”字段(跟踪“未启动、启动或停止”),并在结构中添加一个“下一个”字段;然后创建这些结构的数组并填充信息

接下来,创建一个通用函数来查找具有最早启动时间的“未启动”进程

循环赛;找到具有最早开始时间的“未启动”流程,设置“当前时间=第一个流程开始时间”,并将流程的“下一步”字段设置为指向自身,以便您拥有一个条目的循环链接列表,并将流程的状态从“未启动”更改为“已启动”。然后找出接下来发生的事件(另一个进程是否会在任务切换发生之前启动并添加到循环链表中?)并处理该事件(同时推进“当前时间”)

对于FCFS,它类似于循环,只是在当前正在运行的任务停止之前,您不需要麻烦进行任务切换(并且可以使用非循环列表而不是循环列表)


对于最短的剩余时间,它与FCFS相同,只是在启动流程时,您可以使用“剩余时间”来确定将其插入列表的位置。

欢迎访问stackoverflow.com。请花些时间阅读,特别是命名和。也请和。最后,请学习如何创建。我还建议您阅读。为什么不使用
struct
对流程进行建模?您可以显示一些代码来公开您的尝试。结构也是一个好主意。顺便说一下,不要进行排序。相反,保留一个优先级队列(其中“优先级”是您想要的任何内容),以便按顺序插入节点。那你就不需要分类了。如果“优先级”可以更改,那么只需从队列中删除节点,然后重新插入即可。要运行的下一个进程将始终是队列中的“第一个”节点。