我想知道 Earliest Deadline First (EDF)调度算法的任何替代方案是否可用。如果是,请提供参考链接。
感谢。
答案 0 :(得分:5)
截止日程安排可以分为两类:1)由实时计算社区思考; 2)作为调度理论界的思想。类别1是类别2的子集。大多数实时计算从业者不知道类别2.
主要区别在于类别1假设相对简单的特殊情况,即截止日期是满足或错过,并且错过最后期限是失败,因此调度最优性标准是满足所有期限(所谓的“硬”真实-时间)。 Earliest Deadline First(EDF)是最常见的1类截止日期调度算法。有关第1类截止日程安排的大量文献 - 例如,在IEEE实时系统研讨会的会议记录中。一本好书是斯坦科维奇等人的Deadline Scheduling for Real-Time Systems - EDF and Related Algorithms。
AFAIK,现有的实时操作系统COTS产品没有实现截止日期安排,特别是EDF。已经尝试了几种商业产品(例如,DEC,IBM),但由于各种困难而被放弃,例如将EDF与OS中的其他资源管理(例如,同步器,非调度活动)集成,同时保持向后兼容性。解决方案是将截止日期调度(EDF和其他算法)从头开始设计为操作系统的组成部分。我知道有三个COTS实时操作系统产品就是这样做的,没有一个产品因为与操作系统无关的组织原因而进入市场:DECs Libra,IBM的OS / 2 for PowerPC(与DEC合作完成),以及Open Software Foundation的OSF-1 Mk7.3a(与DEC和IBM合作完成)。从裸硬件设计和实现的一些研究操作系统(例如,CMU的Jensen's Alpha)已经成功地结合了截止日期调度。 Alpha通过允许插入任意调度算法来利用完全自由的优势,包括EDF和Utility Acrual算法。其他研究操作系统试图扩充Linux(参见Jonatan Anderson的帖子引用的VA Tech的ChronOS项目)。 ChronOS受基于Linux的约束,但也支持Utility Accrual调度算法。
类别2一般包含截止日程安排的整个主题,其中类别1是更容易的子集。特别是,第2类承认关于截止日期的早期和迟到的概念。调度最优性标准包括最小化错过的最后期限的数量,最小化平均延迟,最小化最大延迟,以及许多(任何)其他。从技术上讲,类别2减去类别1子集是“软”实时,“虽然实时从业者甚至研究人员使用了许多不同的不精确和不准确的术语”软“实时描述。类别2调度比是第1类调度。然而,它更现实,更广泛适用于许多行业(例如,运输,制造等)。文献中的文献比第1类更多。一本好的教科书是Pindo的{ {3}}。
答案 1 :(得分:3)
stock linux内核仅支持以下调度策略(对于CPU):
SCHED_FIFO
- FIFO实时优先级调度SCHED_RR
- 循环实时优先级安排SCHED_OTHER
- 非实时,尽力而为的日程安排特别缺席,因为您的问题是EDF,或者确实是任何截止日期驱动的调度程序。为什么不?那么,愿意进行分析以使用截止日期调度程序的应用程序的数量以及将其与其他调度策略集成的复杂性可能是驱动因素。一个LWN article does discuss deadline scheduling in Linux,大约在2009年。
已尝试为Linux提供其他调度策略。一些很好的例子是UNC的LitmusRT project和Virginia Tech's ChronOS project。 LitmusRT专注于一系列软实时调度程序和附带的同步原语。 ChronOS属于同一个域,但主要关注效用 - 应计(UA)驱动的调度(请参阅Jensen页面上的this thesis和time-utility functions)和同步策略。
似乎还有一个最近的EDF调度程序实现(我没有使用过,在回答这个问题之前没有注意到。)"Evidence" EDF scheduler。
还有商业Linux供应商,它们具有其他实时调度程序实现。它们的可用性可能有点令人困惑。一个例子是Concurrent的RedHawk linux,其中包含一个时间驱动的调度策略。有关操作系统的详细信息,请参见datasheet。 RedHawk正在许多实时和分布式美国国防部应用程序中使用。