【问题标题】:Suggestion for Implementing Scheduling algorithms in c在 c 中实现调度算法的建议
【发布时间】:2018-08-28 05:53:41
【问题描述】:

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

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

【问题讨论】:

标签: c operating-system scheduling


【解决方案1】:

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

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

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

对于 FCFS,它类似于循环法,除了在当前运行的任务停止之前您不必担心任务切换(并且可以使用非循环列表而不是循环列表)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 2019-10-10
    相关资源
    最近更新 更多