上一期我们聊了聊功能安全概念里的免于干扰——空间干扰相关(ISO 26262 FFI),本期我们承接上一期,继续来聊一聊功能安全里概念里的免于干扰——时间干扰相关。
时序是嵌入式系统的一个重要特征。如果有任何时间干扰,它将可能会违反安全相关的要求,因此违反最高的安全需求,安全目标。我们将定义时间干扰,并举例子来说明QM和ASIL 任务之间的干扰。
什么是时间干扰(temporal interference)?
软件组件之间的干扰可能导致故障,这种干扰类型是由于软件组件之间的时序干扰造成的。也就是说,一个任务可以独占CPU时间,比如在CPU负载很高的情况下,或者在其他任务没有进展的情况下,有很多中断请求。
下面罗列出造成这种时间干扰的相关故障:
1-执行阻塞(blocking of execution):一个任务有CPU控制,阻塞了另外一个任务。
2-死锁(deadlocks):每一个处于等待状态的任务相互等待释放已经被锁定的资源。
3-活锁(livelocks):几乎类似于死锁,除了活锁中涉及的进程的状态总是不断地相互改变,没有进展。最简单的例子就是两个人在走廊里面对面,两人都让开让对方通过。他们从一边移动到了另一边,因为他们同时以相同的方式移动,所以没有任何进展。
上图说明:
1)-进程A占用Y资源;
2)-进程B占用X资源;
3)-进程A需要X资源;
4)-进程B需要Y资源;
假设,进程A先运行,并过去数据资源X,然后进程B运行,获取资源Y,无论哪个进程先运行,都不会继续运行。
但是,这两个进程都没有被阻塞,他们重复使用CPU资源,没有任何进展,但也会停止任何处理块。
4)-执行时间分配错误,或者
5)-软件元素之间不正确的同步。
举个栗子:循环执行调度,基于固定优先级的调度,时间出发调度,处理器执行时间监控,程序序列监控和到达率监控等机制。
下面举一个演示时间干扰的例子:
下图说明了由于共享资源(例如共享处理要素)的冲突使用而引起的干扰。如下所示,一个QM软件要素干扰并阻止了ASIL软件要素的及时执行。这种干扰也可能发生在具有不同ASIL等级的软件组件之间。图中说明了在没有和不受干扰机制的情况下对软件执行的影响。通过在软件中引入“检测点”并实现对检测点的超时监控,可以检测到时间干扰并启动适当的响应。检测要点:
在上图中,我们注意到,在添加了安全机制之后,我们可以检测到QM Task独占了CPU,阻塞了ASIL任务在指定的时间内运行。对此的反应取决于能够减轻或者防止故障的应用软件。
在运行时,看门狗验证监督实体是否根据配置的图形执行,这叫做逻辑监督(Logic Supervision)。此外,看门狗可以验证检测点和图标中的转换时间。检测点之间的转换时间可以通过Deadline Supervision 来验证,而逻辑监控则验证监测点的正确顺序。
上图描述了一个监督实体SE0的while循环的控制流程CFG,该实体有多个监测点CP0-X。在运行时,安全机制看门狗验证监督实体是否根据配置的图形执行,这叫逻辑监督。此外,看门狗可以验证监测点和图表中的转换时间。检测点之间的转换时间可以通过DeadLine Supervision 来验证,而逻辑监控则验证监测点的正确顺序。
定时保护和监控可以描述为对以下属性的监控:监控任务在指定的时间被分派,满足他们的执行时间预算,并且不独占操作系统资源。为了保证与安全相关的功能会尊重他们的时间限制,需要检测和处理独占CPU的任务(如CPU负荷重、中断请求多)。因此,可以避免时间干扰。
以上就是本期全部内容啦,小伙伴,我们下期再见啦!
参考资料:外文资料、ISO 26262,Part6
已完成
数据加载中