2012-09-23 29 views
1

我正在阅读关于real-time kernels的文章,作者解释了如何为具有链接列表的任务实现调度器。他还表示,这并不是根据优先级插入和删除任务的最佳方式;但是,他并没有解释其他方法。使用链接列表的调度程序有哪些替代方法?

实现除链接列表之外的其他调度程序的其他方法是什么?

+1

链表是一个集合的实现。一个数组,双向链表,二叉树,哈希列表等都是可能的选择。链表对于调度器来说是一个糟糕的选择,因为你必须遍历列表才能找到一个通常按优先级排序的元素。这违背实时要求。 –

回答

1

仔细查看队列数据结构。如果每个优先级都有一个队列,那么您可以从最高优先级队列开始,然后进行处理直到队列为空,然后进入下一个优先级查询,直到您击中了所有优先级。

让队列中的任务处于相同的优先级,可以保证每个任务在被引入(可能是另一个)队列的尾部之前至少获得一个处理量。

当然,对于实时处理,您希望快速响应中断。也许某种优先队列可能适用。

1

有很多,例如可能是一个双链表,所以插入一个低优先级的任务,可以从尾部向后搜索。

您可以在任务列表中使用数组中的任何内容来实现计划,您可以使用哪个计划取决于您计划的内容。

链接列表,如果它相当短,可能是最佳解决方案。

相关问题