使用SAFECheckpoints验证任务调度性能

浏览:1420来源:本站时间:2019-12-12
在基于任务优先级的抢占式调度机制中,会选择就绪的最高优先级任务执行,因此,需要仔细考虑分配给每个任务的优先级,它将直接影响任务何时被执行。任务调度还受中断影响,因为中断的优先级高于所有任务。过长或频繁的中断、更高优先级的任务都会导致较低优先级任务无规律的延迟或阻塞,称为时间破坏。

1、时间破坏(Temporal Disruption)的例子

有时,运行在后台的低优先级的任务也有时间需求。例如,针对整个代码的CRC检查需要每小时执行一次。在图1中,CRC任务运行在较低优先级(Low Priority Task),经常会被高优先级任务(High Priority Task)抢占。在该系统中,还有一个中断触发的中等优先级任务(Medium Priority Task)。如果中断的频率太高,它将导致执行CRC检查的低优先级周期任务的启动和运行时间都不正常,可能下次检查周期开始时,上次周期处理还没有完成。
图1   时间破坏实例

2、避免时间问题

有许多已制定的方法处理调度过度执行的影响。减少时间干扰影响的方法包括:


? 缩短中断处理程序
? 分析周期内最坏情况下的中断处理时间,如果需要,采取措施限制最长中断处理
? 分析最坏情况下的任务处理时间,以此确定CPU负载的平均值和峰值
? 在可能的情况下,有效地利用优先级调度机制,尽可能以确定的方式执行重要任务。
? 正确选择处理器


3、使用SAFECheckpoints监控任务调度性能

SAFECheckpoints模块使用软件定时器监控任务的运行,检测调度问题, 并帮助改善时间隔离。注意,SAFECheckpoints不执行时间间隔;它只是提供了一种方法来检测何时发生了违背时间的需求。

图2 展示了一个拥有2个周期任务的简单系统,在任务中的给定点,执行检查,测试时间性能。计算所用时间,并确定任务是否欠运行。检查点使用软件定时器检测,如果任务过度运行即复位(重启);如果检测到软件定时器超时,则任务违反了其调度策略,将报告错误。根据时间分析的性质,在任务开始运行或结束时执行时间检查更有意义。

该机制还可以用于度量整个安全功能,其中包含多个事件,多个任务交互,最终产生单个输出。

图 2   软件定时器检查

4、SAFECheckpoints使用

使用SAFECheckpoints可以帮助RTOS验证:

? 周期任务在容忍的时间范围内运行

? 任务中的处理部分已完成

? 中断处理任务在容忍的时间范围内完成中断事件处理

? 涉及多个任务的复杂功能在容忍的时间范围内完成

为了有效的使用SAFECheckpoints,系统的时间需求需先明确,对周期任务,需了解:

1、代码的运行频率?

2、时间容忍度?

3、任务周期相对于上次执行时间是还是固定频率执行?

4、对事件驱动型任务,需了解:

5、事件的发生时是周期性的还是限制的?

6、事件的最大响应时间?

5、汽车应用中的SAFECheckpoints

在ISO 26262 软件ASIL C和D级中,需要运行时监控来检测、指示和处理系统故障,SAFECheckpoints是为了满足汽车ISO 26262 ASIL C/D需求而设计的,它提供了复杂的任务监视功能,确保任务的调度按预期进行。

与SAFERTOS一样,SAFECheckpoints也提供了设计保证包(DAP),帮助用户实现ISO 26262 ASIL D和IEC 61508 SIL 3的安全认证。





京ICP备:京ICP备05011254号-1 版权归北京麦克泰软件技术有限公司所有
北京麦克泰软件技术有限公司