目 录
知识简介
嵌入式实时操作系统
SylixOS操作系统是实时多任务嵌入式操作系统,所谓实时,是指系统的正确性不仅仅依赖于计算机的逻辑结果而且依赖于结果产生的时间。结果产生的时间就是通常所说的截止期限,描述系统实时性的指标主要有:
-
对紧急时间可预见性的快速响应;
-
高度的可调度性,所谓调度性是指系统在任务时间需求能够满足下的最高资源利用率,也就是平均每秒的及时执行的任务数量;
-
在暂时超负荷情况下的系统稳定性,即当系统超负荷运转导致不能满足所有任务的截止期限需求时,仍然能够保证关键任务的截止期限需求;
对于实时而言,截止期限的要求是必须得到满足的,但是区分具体应用场合,这种时限要求的严格成都又有所不同。如果这种要求是绝对的,即不满足截止期限的要求计算结果就毫无意义甚至可能造成无法预料的结果或系统致命的错误,那就称之为硬实时系统(Hard Real Time System);SylixOS就是硬实时系统。在硬实时系统中如果出现了这样的情况就意味着巨大的损失和灾难,比如说日本福岛核电站中的堆芯温度控制系统如果没有对堆芯过热做出及时的冷却处理,后果不堪设想。当不满足截止期限的要求时计算机结果的可调度性逐渐减弱但是并不足以造成严重后果,系统仍然继续调度直至任务完成,则称为软实时系统(Soft Real Time System)。软实时系统是指如果在系统负荷较重的时候允许发生错过截止期限的情况而且不会造成太大的危害。硬实时系统和软实时系统的实现区别主要是,在选择调度算法上选择基于优先级调度的算法是以满足软实时系统的需求而且可以提供告诉的响应和大的系统吞吐率,而对硬实时系统来说需要使用的算法就应该是调度方式简单反应速度快的实时调度算法了。
优先级调度算法
调度,是内核的主要职责之一,就是确定该轮到那个任务运行了。优先级抢占调度算法中,每个任务根据其重要程度的不同而被赋予一定的优先级。优先级抢占调度算法是指系统运行过程中高优先级的任务可以中断低优先级的任务,让处在就绪态的优先级最高的任务先运行。目前多数实时内核采用优先级可抢占的调度算法,主要原因有以下几点:
首先,处理异常的任务可能需要抢占正在运行的任务,以便及时对异常做出响应;
第二,任务的重要性不同,优先级可抢占使一些重要任务有可能抢占正在运行的任务;
第三,允许任务抢占可得到更为有效的调度;
根据不同的优先级分配方法,基于优先级的调度算法可以分为如下两种类型:
-
静态调度:
静态调度是在系统开始运行前进行调度的,严格的静态调度在系统运行时无法对任务进行重新调度。静态调度的怒表是把任务分配到各个CPU,并对每一个CPU给出所要运行任务的静态运行顺序。静态调度算法实现简单,调度的额外开销小,在系统超载时可预测性好。但也具有很大的局限性,例如资源利用率低、受系统支持的优先级个数限制以及灵活性和自适应性差等。
2.动态调度:
在嵌入式实时系统中,动态调度依赖于任务的优先级。优先级可以静态分配或者依据不同的特征参数,如截止时间、空闲时间或关键性(即任务的重要程度)等进行动态分配。动态调度可以是抢占式的或非抢占式的。当检查到一事件时,动态抢占式算法立即决定是运行与此时间相关的任务,或继续执行当前的任务;对于动态非抢占式算法,它仅仅知道有另一个任务可以运行,在当前任务结束后,它才在就绪的任务中选择一个来运行。
单调速率调度算法RMS(Rate Monotonic Scheduling