在c中实现调度算法的建议
Suggestion for Implementing Scheduling algorithms in c
给定 n 个进程及其突发时间和到达时间,任务是使用 FCFS、Round Robin、最短剩余时间等调度算法找到平均等待时间和平均周转时间,
我在选择数据结构来实现这些算法时非常困惑。我为每个属性使用一个单独的数组来实现,但这很乏味,我们需要在 c 中编写很多语句。我在想一个链表,每个节点代表所有属性。它是一个有效的。 能否请您建议我一个有效的数据结构,以便搜索和排序更容易。
首先,创建一个数据结构来包含每个进程的 "impossible to know in practice" 信息(开始时间、突发时间等),添加一个 "process state" 字段(以跟踪 "not started, started or stopped"),并向结构中添加一个 "next" 字段;然后创建这些结构的数组并填写信息。
接下来创建一个通用函数来查找具有最早启动时间的 "not started" 进程。
循环赛;找到启动时间最早的"not started"进程,设置"current time = first process start time",并将进程的"next"字段设置为指向自身,这样就得到了一个循环链表,只有一个条目,并且将进程状态从 "not started" 更改为 "started"。然后找出接下来发生的事件(在任务切换发生之前另一个进程是否会启动并添加到循环链表中?)并处理该事件(同时推进你的"current time")。
对于 FCFS,它类似于循环法,除了在当前 运行 任务停止之前您不必费心进行任务切换(并且可以使用非循环列表而不是循环列表)。
对于最短剩余时间,它与 FCFS 相同,只是在启动进程时使用 "remaining time" 确定将其插入列表的位置。
给定 n 个进程及其突发时间和到达时间,任务是使用 FCFS、Round Robin、最短剩余时间等调度算法找到平均等待时间和平均周转时间,
我在选择数据结构来实现这些算法时非常困惑。我为每个属性使用一个单独的数组来实现,但这很乏味,我们需要在 c 中编写很多语句。我在想一个链表,每个节点代表所有属性。它是一个有效的。 能否请您建议我一个有效的数据结构,以便搜索和排序更容易。
首先,创建一个数据结构来包含每个进程的 "impossible to know in practice" 信息(开始时间、突发时间等),添加一个 "process state" 字段(以跟踪 "not started, started or stopped"),并向结构中添加一个 "next" 字段;然后创建这些结构的数组并填写信息。
接下来创建一个通用函数来查找具有最早启动时间的 "not started" 进程。
循环赛;找到启动时间最早的"not started"进程,设置"current time = first process start time",并将进程的"next"字段设置为指向自身,这样就得到了一个循环链表,只有一个条目,并且将进程状态从 "not started" 更改为 "started"。然后找出接下来发生的事件(在任务切换发生之前另一个进程是否会启动并添加到循环链表中?)并处理该事件(同时推进你的"current time")。
对于 FCFS,它类似于循环法,除了在当前 运行 任务停止之前您不必费心进行任务切换(并且可以使用非循环列表而不是循环列表)。
对于最短剩余时间,它与 FCFS 相同,只是在启动进程时使用 "remaining time" 确定将其插入列表的位置。