安全关键系统的错误检测与处理及设计安全状态
1. 系统恢复机制 - 重启(Rejuvenation)
在系统运行过程中,我们的目标是防止错误演变成故障,若无法避免,也要尽可能以可控的方式应对故障。重启就是一种可控地打破错误与故障之间联系的方法,简单来说,重启就像是定时按下“复位”按钮。
大多数使用计算机的人都知道,重启电脑能解决很多软件问题,这种原理同样适用于嵌入式系统。不过,像嵌入式心脏起搏器这类设备,重启可能并不现实。
重启的目的在于在错误引发故障之前将其拦截并消除。代码中的错误可能会导致诸如僵尸线程、数据碎片化、内存损坏、资源泄漏等问题,这些问题虽已出现,但尚未引发系统故障。例如,澳航72号航班的问题就是通过重启解决的。根据澳大利亚运输安全局的报告,当故障模式启动后,飞机的大气数据惯性基准单元(ADIRU)的异常行为会一直持续,直到该单元关闭,重新启动电源后,单元恢复正常运行。
1.1 何时进行重启
多数嵌入式系统都有自然的运行周期。例如,飞机飞行时间不超过36小时,医疗设备连续使用不超过一个月,汽车行驶不超过几小时等。鉴于这些周期性,在这些合适的时间点将重启纳入运行要求似乎是合理的。但部分原因是设计师往往倾向于追求完美,很多人认为要求系统定期重启是一种失败。
1.2 重启的作用
从可用性分析师的角度看,重启类似于硬件维护中的定期更换。例如,轻型飞机的活塞发动机每1800小时必须更换,而不是等到它出现故障再进行维修。
通过比较两个马尔可夫模型(图8.9)可以说明重启的效果:
-无重启情况:系统以每小时r1的速率从全新