我正在阅读一篇关于实时内核的文章,作者解释了如何使用链表为任务实现调度程序。他还指出,这不是最好的方法,因为任务是根据优先级插入和删除的;但是,他没有解释其他方法是什么。
除了链表之外,还有哪些实现调度器的方法?
我正在阅读一篇关于实时内核的文章,作者解释了如何使用链表为任务实现调度程序。他还指出,这不是最好的方法,因为任务是根据优先级插入和删除的;但是,他没有解释其他方法是什么。
除了链表之外,还有哪些实现调度器的方法?
有很多,例如可能是一个双链表,所以为了插入一个低优先级的任务,可以从尾部向后搜索。
您可以在任务列表中使用从数组到 B-Tree 的任何内容来实现计划,您使用哪个取决于您正在计划的内容。
链表,如果它相当短,可能是最佳解决方案。
仔细看看队列数据结构。如果每个优先级都有一个队列,则可以从最高优先级的队列开始,一直处理到队列为空,然后进入下一个优先级查询,直到达到所有优先级。
在队列中拥有相同优先级的任务,可以保证每个任务在被扔到(可能是另一个)队列的尾部之前至少获得一个处理量。
当然,对于实时处理,您希望快速响应中断。也许某种优先队列可能适用。