車載システムにおける高信頼性と電力管理機能の実現 ――ソフトウェアにもフェイル・セーフの考えかたが必須
2 ソフトウェアの高信頼性を実現する
では,上述の高信頼性を実現するための具体的なOSやアプリケーションを紹介しましょう.
●異常の種類に応じて適切な復旧作業を選択する
システムの異常を簡単に分類すると,OSで検知可能な異常(物理的レベルの異常)とアプリケーション・レベルで検知する異常(ソフトウェア検知の異常)に分けることができます(表2).OSで検知する異常については,OSのトラップ機構を用いることによって検知が可能です.一方,ソフトウェアで検知するタイプの異常では,アプリケーション・レベルで検知ロジックを組み込む必要があります.
OS検知の異常とソフトウェア検知の異常がそれぞれ発生した場合,異常からの具体的な復旧が必要となります.この復旧のためのプログラムをアプリケーションに組み込む場合,アプリケーション自身が走行しなくなってしまうOS検知のような状態では意味をなしません.そこで,図4のように異常の監視や復旧を行うためのマネージャを置く方法がもっとも適しています.
異常からの復旧でもっとも単純な方法は,ウォッチドッグ・タイマなどによってシステムにハードウェア・リセットを与えることであると前述しました.また,この場合のシステム要件は,復旧にかかる時間であることも述べました.ソフトウェアとしてこの復旧作業を考えたとき,サービスのみの再起動,さらにはサービスの多重化による復旧が考えられます.この場合,現実的には2重化が妥当であり,それ以上の多重化はシステムが複雑になってしまうため得策とは言えません.
〔表2〕システムの異常
OS検知の異常
|
ソフトウェア検知の異常
|
|
|
〔図4〕アプリケーション・レベルの異常からの復旧
OS検知の異常とソフトウェア検知の異常がそれぞれ発生した場合を考えると,異常の監視や復旧を行うためのマネージャを置く方法が適している.