車載システムにおける高信頼性と電力管理機能の実現 ――ソフトウェアにもフェイル・セーフの考えかたが必須
●○● Column ●○●
市販リアルタイムOSが提供する高信頼性実現機能
筆者ら(QNX社)が開発しているリアルタイムOSを例に,高信頼性を実現するフレームワークの概要について述べます.このフレームワークの中では,ユーザ・ドメインによって異常を検知し,復旧を制御する機能があらかじめ用意されています.また,それによって高信頼性を持たせたシステムを構築することができます(図A-1).
〔図A-1〕QNXのアーキテクチャ
●システム・ドメイン
システム・ドメインは,リアルタイムOSベンダがモジュールを提供し,かつ,品質管理を行っている領域です.この中にはマイクロカーネル,ドライバ,システム・サービス(ネットワーク,ファイル・システムなど),HA(High Availability)マネージャなどが含まれています.
システム・ドメイン部の保守はベンダが行います.このことは,だれがソフトウェア部品を保守するかが明確であり,本OSを組み込んだ製品自体の保守にとって重要な意味を持ちます.
●ユーザ・ドメイン
ユーザ・ドメインの部分は,ユーザがモジュールを開発して保守する領域です.ここには,ユーザが作ったドライバ,サービス,アプリケーションが含まれています.それぞれHAM(High Availability Manager)APIとHAM Libraryを介してHAマネージャとリンクすることで高信頼性を実現しています.
●HAマネージャ,ガーディアン
高信頼性機能を実現するため,リアルタイムOSはHAマネージャを提供しています.このマネージャは2重化によって信頼性を確保しています.HAマネージャを起動したときに同じ管理データを共有したガーディアンが起動されます(図A-2).ガーディアンは,マスタのHAマネージャがダウンしたときに自分がマスタに切り替わり,そして,新たなガーディアンを起動するようになっています.このため,強じんなHAマネージャを実現できるわけです.
〔図A-2〕 HAマネージャと ガーディアン
本フレームワーク内では異常の検知および異常からの復旧について,次のような項目が設けられています.
●シンプル・リスタート
一つのプロセスに再起動をかける単純なリスタートです.これは,リスタートをかけてサービスを再開することが可能なものに対して利用します.
●複合リスタート
再起動が複数のサービス・プロセス,ドライバのリスタートを要求する場合に利用します.
●停止および異常条件の通知
プロセス(アプリケーション)の異常停止条件が発生したことを,ほかのプロセスに通知するサービスです.OSで検知する異常(メモリ異常など)と,次に示すハートビートの監視の結果として得られる異常が存在します.
●ハートビートの発生およびチェック
ハートビートとは「鼓動」のことです.つまり,鼓動を返しているうちは生きており,鼓動を返さなくなった場合に停止したものとして異常を検知します.実際にはプログラムの中でHAM
APIを介して鼓動を発生させ,HAマネージャに生存を通知します.もし鼓動がなくなると,HAマネージャはOSで検知された異常と同じように扱います.すなわち,シンプル・リスタートや複合リスタートを起こすことができます.
●サービスの2重化
アプリケーションとサービス,ドライバをつなぐ方法として,本OSではプロセス間通信を使います.このため,サービスを2重化したときに単純にプロセス間通信の接続先を切り替えることにより,2重化できます.