車載システムにおける高信頼性と電力管理機能の実現 ――ソフトウェアにもフェイル・セーフの考えかたが必須

岡澤幸一

tag: 組み込み

技術解説 2004年1月15日

3)異常からの復旧

 異常が検知され,その異常が発生したプログラムを停止させた後は,復旧作業が必要となります.復旧手段のいちばんシンプルな例として,ハードウェアのウォッチドッグ・タイマを考えてみます.これは,ソフトウェアからの一定時間の反応がなくなると,強制的にリセットをかける回路をシステムに組み込むことで実現されます.この方法は,一見,乱暴にみえますが,システムを「停止させない」という点では,最後の「とりで」としてもっとも信頼できる手段となるわけです.

 ウォッチドッグ・タイマの機能は,次の二つに分けることができます(図1)

  • 異常の検知:ソフトウェアからの反応が一定時間ない
  • 異常からの復旧:システムに対する物理的リセットの発生

 実際には,図1(b)のようにソフトウェアからの周期的なアクセスとCPUのリセット端子をつなぐ簡単な回路で実現できます.このため,さまざまなシステムに搭載されています(かりに搭載されていないとすれば,信頼性の最後のとりでを持っていないとも言える).

 ここで問題となるのは,リセットによる異常復旧にかかる時間です.ポート・アクセスのみのシンプルな組み込みシステムなら,リセット,リブート,システムの再スタートにかかる時間はさほど大きくありません.しかし,現在の組み込みシステムでは各種デバイス,ネットワーク,マルチプロセスの環境が複雑に絡み合っており,システムが要求する以上の復旧時間がかかります.

 ここで,構造(カーネル)の異なる以下の二つのOSについて,復旧時間の違いを考えてみます.

  • モノリシック・カーネルOS
  • マイクロカーネルOS

 モノリシック・カーネルでは,簡単に言うとドライバとシステム・サービスがカーネルに組み込まれています.この構造では,アプリケーションに異常が発生した場合はアプリケーションを停止して再起動すればよいのですが,システム・サービスやドライバの異常については,カーネル自体が停止してOSをリブートしなければ復旧できません(表1(a)).UNIX,組み込みLinuxなどの汎用OSがこのタイプとなります.

 これに対して,マイクロカーネルでは,ドライバとシステム・サービスはカーネルの外に通常のアプリケーションと同じレベルで存在します.この構造をとると,アプリケーション,システム・サービス,ドライバのどれが異常停止しても,問題となる箇所だけを再起動すれば復旧できます(表1(b)).ただし,もっとも深いレベルで問題が発生したときは,OSのリブートが必要になります.筆者ら(カナダQNX Software Systems社)が開発したリアルタイムOS「QNX」がこのタイプです注3

 注3;マイクロカーネルのOSとしては,QNXのほかに,「BeOS」や「Chorus」,「Mach」,「NeXT」,「Mac OS X」などがある.

f01_01.gif
〔図1〕ウォッチドッグ・タイマ ウォッチドッグ・タイマは,ソフトウェアから一定時間の反応がなくなると,システムに対して強制的にリセットをかける.

〔表1〕OS構造による復旧作業の違い

(a)モノリシック・カーネルの場合

異常発生箇所
現 象
対 応
アプリケーション アプリケーションの停止 アプリケーションの再起動
システム・サービス カーネルの停止 OSのリブート
ドライバ カーネルの停止 OSのリブート

(b)マイクロカーネルの場合

異常発生箇所
現 象
対 応
アプリケーション アプリケーションの停止 アプリケーションの再起動
システム・サービス サービスの停止 サービスの再起動
ドライバ ドライバの停止 ドライバの再起動
組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日