嵌入式系统开发:调度、界面设计、语言使用与编码风格
1. 实时调度方法
1.1 速率单调调度(RMS)
RMS 调度在使用谐波任务周期时,能保证 100% CPU 使用率下的可调度性。谐波任务周期指每个任务的周期必须是系统中所有更短周期的精确整数倍,相同周期也是允许的。例如,周期集合 {2, 10, 20} 是谐波的,因为 2 能整除 10 和 20,10 能整除 20;而 {2, 10, 25} 不是谐波的,因为 2 和 10 都不能整除 25。
在实际应用中,大多数嵌入式系统使用谐波周期来最大化 CPU 使用率。有时为了使所有周期成为谐波,系统会让某些任务运行得比实际需要更快。例如,若任务必须在 2、11 和 21 毫秒内完成,可将相应的截止时间分别设置为 2、10 和 20 毫秒,这样既能满足谐波要求,又能确保所有任务按时完成。
改变任务周期为谐波倍数后,需确保 CPU 负载不超过 100%,建议预留一定余量。计算方法是将每个任务使用的 CPU 时间占比(Ci/Pi)相加,总和应小于 100%。与之前讨论的周期性调度方法不同,只要周期是谐波倍数且总 CPU 负载不超过 100%,周期的长短没有限制。
1.2 截止时间单调调度(DMS)
DMS 是 RMS 的一种变体,区别在于 DMS 系统中截止时间可以短于周期。在 DMS 中,会创建一个伪周期,它是周期和截止时间中的较小值,调度时假设任务每伪周期运行一次。例如,一个周期为 10 毫秒、截止时间为 3 毫秒的任务,其伪周期为 3 毫秒,该任务将与所有 3 毫秒的任务具有相同的优先级。CPU 使用计算假设任务每 3 毫秒消耗一次 CPU 时间,即使实际执行频率
超级会员免费看
订阅专栏 解锁全文
1235

被折叠的 条评论
为什么被折叠?



