複数のプログラムの設定情報を記憶した管理テーブルに基づいて、各プログラムの起動時に、監視元プログラムとして監視する対象とする監視先プログラムと、前記監視先プログラムとして監視される対象となる前記監視元プログラムとにプログラム間で関係付けさせるプログラム管理手段と、前記監視先プログラムとして、プログラムが正常に動作する過程で、前記監視元プログラムと情報共有した正常動作状態を示す正常情報を一定時間以内の間隔で繰り返し更新するプログラム正常情報更新手段と、前記監視元プログラムとして、前記監視先プログラムの前記正常情報を監視するタイミングを定期的に指示するタイマー手段と、前記タイマー手段が指示するタイミングで、前記監視先プログラムの前記プログラム正常情報更新手段が更新する前記正常情報を参照し、前回参照時に保存した正常情報との比較に基づいて、前記監視先プログラムの動作の異常を検出する他プログラム監視手段と、前記他プログラム監視手段から前記監視先プログラムの動作の異常の検出を通知された場合に、前記監視先プログラムを強制終了させて再起動する他プログラム再起動手段とを備えたプログラム監視システム。前記監視先プログラムの前記プログラム正常情報更新手段は、前記監視元プログラムと情報共有した活性化フラグに、休眠から起こされた時点で動作中を示す状態を設定し、動作終了時点で休眠を示す状態を設定し、前記監視元プログラムの前記他プログラム監視手段は、前記監視先プログラムの活性化フラグが休眠の状態を示しているときは、前記監視先プログラムの動作の異常を判定しないことを特徴とする請求項1記載のプログラム監視システム。前記監視元プログラムの前記他プログラム監視手段は、前記監視先プログラムの前記プログラム正常情報更新手段が更新する前記正常情報を参照し、前回参照時に保存した正常情報から更新されていない回数を計数し、計数した回数が所定値に達したとき、異常と判定することを特徴とする請求項1または請求項2記載のプログラム監視システム。前記正常情報は、前記監視先プログラムの前記プログラム正常情報更新手段と前記監視元プログラムの前記他プログラム監視手段との両者が利用可能な共有メモリに格納して情報共有することを特徴とする請求項1ないし請求項3のいずれかに記載のプログラム監視システム。前記活性化フラグは、前記監視先プログラムの前記プログラム正常情報更新手段と前記監視元プログラムの前記他プログラム監視手段との両者が利用可能な共有メモリに格納して情報共有することを特徴とする請求項2または請求項3記載のプログラム監視システム。前記正常情報は、前記監視先プログラムから前記監視元プログラムへメッセージを送信し、前記監視先プログラムが管理する正常情報の値を前記監視元プログラムが管理する正常情報の値として書き込むことで情報共有することを特徴とする請求項1ないし請求項3のいずれかに記載のプログラム監視システム。前記活性化フラグは、前記監視先プログラムから前記監視元プログラムへメッセージを送信し、前記監視先プログラムが管理する正常情報の値を前記監視元プログラムが管理する正常情報の値として書き込むことで情報共有することを特徴とする請求項2または請求項3記載のプログラム監視システム。従来のプログラム監視システムでは、プログラムの動作に異常を検出すると、正常な状態に戻すために、システム全体を再起動させなければならないという問題がある。このとき、各プログラムの動作に異常を適時検出するために、全プログラムを監視するプログラムを常駐させることは、システムのオーバーヘッドが大きくなるという課題がある。そのため、リアルタイムに処理することが求められるシステムでは、長時間のシステム停止が許されないため、短時間でシステム全体を復旧させることは困難であった。特に、システム上で動作する監視対象が画像表示や音声再生を伴うプログラムであるとき、復旧過程で正常時と異なる不自然さや違和感をユーザの視覚や聴覚などに知覚させずにシステムを復旧させることは難しかった。この発明は、上記のような問題点を解決するためになされたものであり、複数のプログラムを実行するシステムにおいて、プログラム間の相互監視を少ない負荷で行いながら、正常に動作していないプログラムを検出した時点で、そのプログラムのみを短時間に再起動して、システム全体の再起動を伴わずに復旧させることを目的とする。この発明に係るプログラム監視システムは、複数のプログラムの設定情報を記憶した管理テーブルに基づいて、各プログラムの起動時に、監視元プログラムとして監視する対象とする監視先プログラムと、前記監視先プログラムとして監視される対象となる前記監視元プログラムとにプログラム間で関係付けさせるプログラム管理手段と、前記監視先プログラムとして、プログラムが正常に動作する過程で、前記監視元プログラムと情報共有した正常動作状態を示す正常情報を一定時間以内の間隔で繰り返し更新するプログラム正常情報更新手段と、前記監視元プログラムとして、前記監視先プログラムの前記正常情報を監視するタイミングを定期的に指示するタイマー手段と、前記タイマー手段が指示するタイミングで、前記監視先プログラムの前記プログラム正常情報更新手段が更新する前記正常情報を参照し、前回参照時に保存した正常情報との比較に基づいて、前記監視先プログラムの動作の異常を検出する他プログラム監視手段と、前記他プログラム監視手段から前記監視先プログラムの動作の異常の検出を通知された場合に、前記監視先プログラムを強制終了させて再起動する他プログラム再起動手段とを備えた。この発明に係るプログラム監視システムによれば、複数のプログラムを実行するシステムにおいて、プログラム間の相互監視を少ない負荷で行いながら、正常に動作していないプログラムを検出した時点で、そのプログラムのみを短時間に再起動して、システム全体の再起動を伴わずに復旧させることができる。この発明に係るプログラム監視システムは、複数のプログラムを実行するシステムにおいて、プログラム間の相互監視を少ない負荷で行いながら、正常に動作していないプログラムを検出した時点で、そのプログラムのみを短時間に再起動して、システム全体の再起動を伴わずに復旧させるものである。以下に、この発明に係るプログラム監視システムの一例について説明する。実施の形態1.図1は、この発明の実施の形態1に係るプログラム監視システムのプログラム監視の関係の一例を示す概念図である。図において、第1のプログラムプログラム110aから第4のプログラムプログラム410dの4つのプログラムがプログラム監視システム上で動作している状態動作状況を示している。このとき、各プログラムは、他のプログラムのうち、一つのプログラムの動作状況を監視するものとする。例えば、監視元プログラムとして第1のプログラム10aは、監視先プログラムとして第2のプログラム10bの動作状況を監視している。同様に、第2のプログラム10bは第3のプログラム10cの動作状況、第3のプログラム10cは第4のプログラム10dの動作状況、また第4のプログラム10dは第1のプログラム10aの動作状況を監視する。このように、各プログラムは、他のプログラムの動作状況を監視する一方で他のプログラムから動作状況を監視されることによって、全体でループ形状の監視関係を構成している。よって、全プログラムが一つのループをなす形状で動作状況を監視することにより、あるプログラムの動作が異常になっても、その動作が異常になったプログラムを監視対象としていた他の正常動作するプログラムが発見できる。各プログラムは、一つのプログラムしか監視しないので、処理の負荷、すなわちオーバーヘッドは少なくできる。ここで、各プログラムは、一つのプログラムしか監視しないものとしたが、処理の負荷に余裕があれば、他のプログラムのうち、二つ以上のプログラムを監視し、かつ二つ以上のプログラムに監視されても構わない図示せず。図2は、この発明の実施の形態1に係るプログラム監視システムの構成の一例を示す説明図である。図において、プログラム制御手段プラットフォーム30は、オペレーティングシステムOSとして、プログラムの実行の全般を制御する。プログラム管理手段プログラム管理機能25は、プログラム監視の対象となる各プログラムの情報を統括し、監視元プログラムとして起動する各プログラムが監視すべき監視先プログラムを決定して管理テーブルデータベース。以下、DBと記す。251にプログラムの各種設定情報を記憶し、管理テーブルDB251の設定情報を各プログラム間で関係付けさせることで管理する。各プログラムは、プログラム実体を処理するプログラム本体図示せずと監視プログラムから構成され、監視機能の実現手段として、具体的には次のプログラム正常情報更新手段プログラム正常情報更新機能21、他プログラム監視手段他プログラム監視機能22、タイマー手段タイマー機能23、他プログラム再起動手段他プログラム再起動機能24をそれぞれ有する。プログラム正常情報更新手段21は、このプログラムが監視先プログラムとして正常に動作する過程で、プログラムの起動時に決定された監視元プログラムと情報共有した、この監視先プログラムの動作状態を示す正常情報を一定時間以内の間隔で繰り返し更新する。なお、監視先プログラムの動作状態を示す正常情報は、監視元プログラムと監視先プログラムとの共有メモリ上の格納値として情報共有される。他プログラム監視手段22は、プログラムの起動時に決定された監視先プログラムのプログラム正常情報更新手段21が更新する正常情報を参照し、前回参照した後に保存した正常情報との比較に基づいて監視先プログラムの動作の異常を検出する。タイマー手段23は、他プログラム監視手段22を呼び出して監視先プログラムの正常情報を定期的に監視するタイミングを指示する。他プログラム再起動手段24は、他プログラム監視手段22が監視先プログラムの動作に異常を検出した場合に、監視先プログラムを強制終了させて再起動する。図3は、この発明の実施の形態1に係るプログラム監視システムが監視するプログラムの起動初期化の一例を示すフローチャートである。図において、ステップST101、ST102で、起動させるプログラムに関するプログラム管理手段25の管理テーブルDB251の記憶情報およびこのプログラム内の設定を初期化する。ステップST101で、起動させるプログラム自己プログラムの情報を管理テーブルDB251に書き出す。ここで、管理テーブルDB251に書き出す自己プログラムの情報は、静的に設定されているプログラム情報として、自己プログラムの識別情報IDと、自己プログラムが監視先プログラムとなるときに、監視元プログラムと共有した情報を参照させるための共有メモリのアドレス情報を含む。ステップST102で、起動させるプログラムが監視元プログラムとして監視する監視先プログラムをプログラム管理手段25の管理テーブルDB251の保存情報から特定した後、読み出した監視先プログラムの情報を他プログラム監視手段22、他プログラム再起動手段24に設定する。ここで、管理テーブルDB251から読み出す監視先プログラムの情報には、監視先プログラムの識別情報IDと、自己プログラムが監視元プログラムとなるときに、監視先プログラムと共有した情報を参照するための共有メモリのアドレス情報を含む。ここで、まだ監視先プログラムが起動されておらず、情報を読み出せない場合は、監視先プログラムから読み出せるようになるまで設定を保留しておく。ステップST103で、このプログラムが正常に動作している状態であることを示すために、このプログラムを監視先プログラムとし、監視元プログラムとの間の共有メモリに設けた正常情報に初期値を設定する。ステップST104で、例えばマルチプロセスやマルチスレッドといった複数プログラムを並行動作する機能を利用して、ここで起動させるプログラムを、プログラムの実体であるプログラム本体と、定期的に監視先プログラムを監視する監視プログラムとに分けて並行動作させる。プログラム本体の動作として、ステップST105で、プログラム本体の状態を示す活性化フラグをオフに設定して休眠を準備する。ここで、活性化フラグは、オンはプログラム本体が起きている状態、オフは休眠している状態を示す。なお、プログラム本体の状態を示す活性化フラグは、正常情報と同様、監視元プログラムと監視先プログラムとの共有メモリ上の格納値として情報共有される。ステップST106で、プログラム本体を一旦休眠させる。監視プログラムの動作として、ステップST107で、監視プログラムが次に起きるタイミングをタイマーに設定する。このタイマー設定により、監視プログラムは定期的に動作させることができる。ステップST108で、監視プログラムを一旦休眠させる。なお、プログラムが休眠状態となった後、プログラム制御手段プラットフォーム30がタイマーイベントやユーザイベントを検出して、対応するプログラムを起こすように制御する。また、ここでは、起動するプログラムをプログラム本体と監視プログラムとに分割して並行動作させる際に、それぞれを一旦休眠させるものとして説明したが、休眠させずに、プログラム本体の実行図5後述。ステップST105、ST106はステップST202、ST203に対応する、監視プログラムの実行図8後述。ステップST107、ST108はステップST507、ST508に対応するを最初から処理するようにしてもよい。図4は、この発明の実施の形態1に係るプログラム監視システムの監視元/監視先プログラム間の処理の一例を示す説明図である。ここでは、監視元プログラムプログラム1が監視先プログラムプログラム2を監視する一対応部分のみ示している。また、破線で囲んだ手段は、監視元プログラムプログラム1が監視先プログラムプログラム2を監視する関係付けでは機能しない構成手段である。図において、監視先プログラムのプログラム正常情報更新手段21bは、プログラム本体が正常に動作する過程で、監視元プログラムとの共有メモリ26bに保持した正常動作状態を示す正常情報261aを一定時間以内の間隔で繰り返し更新する。ここで、プログラム本体が、正規に動作するときは、共有メモリ26bに保持したプログラム本体が起きていることを示す活性化フラグ262bがオンに設定されている。監視元プログラムの他プログラム監視手段22aは、監視先プログラムのプログラム正常情報更新手段21bが更新する正常情報を監視し、監視先プログラムの正常情報の更新状況および活性化フラグの設定状態に基づいて、監視先プログラムの動作の異常を検出する。他プログラム再起動手段24aは、他プログラム監視手段22aが監視先プログラムの動作に異常を検出した場合に通知され、監視先プログラムを強制終了させて再起動する。図5は、この発明の実施の形態1に係るプログラム監視システムのプログラム本体の実行の一例を示すフローチャートである。ここで、休眠から起こされたプログラム本体は、監視先プログラムとして動作することになる。図において、ステップST201で、このプログラムが起きていることを示す活性化フラグをオンに設定する。共有メモリ上の活性化フラグをオンに設定することで、このプログラムが周期的に動作する、しないに関わらず、プログラムが起きている間のみを、監視元プログラムによる正常動作の監視対象とすることができる。すなわち、活性化フラグがオフであれば正常情報が更新されていなくても、このプログラム本体の動作を監視する監視元プログラムに異常ではないと判断させることができる。ステップST300で、プログラム実体処理図6後述を行う。ステップST202で、このプログラムが休眠していることを示す活性化フラグをオフに設定して休眠を準備する。ステップST203で、プログラム本体を休眠させる。なお、プログラムごとに、そのプログラム本体の処理は異なるため、各プログラム本体が次に起きるタイミングは、ユーザイベント、タイマーイベントのどちらで起こされる設計としてもよい。ただし、タイマーイベントで起こされる設計であれば、ステップST202の前後いずれかでタイマー設定が必要となる。図6は、この発明の実施の形態1に係るプログラム監視システムのプログラム実体処理の一例を示すフローチャートである。ここでは、一例としてプログラム本体の処理を定義する処理群を、プログラム本体が起きている間に正常情報を更新する間隔が一定時間以内の実行時間となるように、処理群1から処理群Nに細分化し、その再分化した処理群の間に正常情報を更新する正常情報更新関数に関する一連の処理を埋め込んでおくものとする。図において、ステップST301で、処理群1を処理する。ステップST302aで、CPU上のレジスタ群をすべて退避する。ステップST303aで、乱数を発生させる。ステップST304aで、CPU上のレジスタ群からステップST303で発生させた乱数値に基づいて決定されたレジスタに現在のプログラムカウンタPC値を書き込むとともに、特定のレジスタに同じ乱数値を書き込んで、呼び出し元アドレスを仮保存する。ステップST400aで正常情報変更処理図7後述を呼び出して処理する。正常情報を変更する処理関数の呼び出し時には、関数から正式の戻り先となる呼び出し元アドレスプログラムカウンタ値。を含め、各レジスタが退避される。ステップST305aで、ステップST304aで仮保存したCPU上のレジスタ群をすべて復帰する。以降も、ステップST306で、処理群2を処理した後、ステップST302aからST305aの一連の処理に対応するステップST302bからST305bを処理し、同様に、ステップST307で、細分化した最後の処理群Nを処理した後、ステップST302aからST305aの一連の処理に対応するステップST302cからST305cを処理するまで、プログラム本体の処理を定義する処理群を細分化した処理群を順次実行する。なお、一般に、より現実的なプログラム本体の処理を定義する処理群は、分岐や関数呼び出しなどにより複雑な順序、経路で処理されるため、そのような処理順序、経路も考慮した上で、正常情報を更新する間隔が一定時間以内の実行時間となるように、プログラム本体の処理を定義する処理群を複数の処理群に細分化し、その再分化した処理群の間に正常情報を更新する正常情報更新関数ステップST400を含むステップST302からST305の一連の処理を埋め込んでおくものとする。プログラム本体に埋め込まれたこれら一連の処理は、監視プログラムのプログラム正常情報更新手段で実行される。図7は、この発明の実施の形態1に係るプログラム監視システムの正常情報変更処理の一例を示すフローチャートである。図において、ステップST401で、スタックポインタの示すアドレスに基づいて、この正常情報変更処理後の正式の戻り先となる呼び出し元アドレスプログラムカウンタ値と、図6のステップST400から正常情報変更処理を呼び出す前に、ステップST304で書き込んだ乱数値を特定のレジスタから読み出し、その乱数値に基づいて決定される退避したレジスタから仮保存した呼び出し元アドレスプログラムカウンタ値を読み出す。ステップST402で、読み出した正式の呼び出し元アドレスと仮保存した呼び出し元アドレスが一致するか比較する。ここで、比較する呼び出し元アドレスである仮保存時のプログラムカウンタ値と関数呼び出し時のプログラムカウンタ値は、ステップST302の明示的なレジスタ退避処理とステップST400の正常情報変更処理呼び出しの時点のプログラムカウンタ値のオフセットを考慮した一致判定とする。2つの呼び出し元アドレスがオフセットを考慮しても一致といえないときNo、暴走状態などの異常と考えられるので、正常情報を更新するまでもなく、正常情報変更処理を終了する。2つの呼び出し元アドレスが一致といえるときYes、ステップST403で、共有メモリから正常情報を読み出して、ステップST404で、正常情報を更新し、ステップST405で、共有メモリに正常情報を書き込む。なお、正常情報の値は、所定の増減分で単調増加カウントアップまたは単調減少カウントダウンさせてもよいし、異なる値になればランダムに書き換えて更新してもよい。このように、監視先プログラムが正常に動作している場合に限って正常情報は更新され、動作に異常があれば正常情報の書き換えは行われないことになる。また、一定の更新動作だけに限らず、複数の更新動作を組み合わせて処理してもよい。複数の更新動作には、例えば、正常情報の値の増減分を一定にせず、用意された複数の更新動作を順次行うようにしてもよい。図8は、この発明の実施の形態1に係るプログラム監視システムの監視プログラムの実行の一例を示すフローチャートである。ここで、タイマーイベントにより休眠から起こされた監視プログラムは、監視元プログラムとして動作することになる。ステップST501で、監視元プログラムの他プログラム監視手段は、監視先プログラムとの共有メモリから正常情報を読み出し、また前回記憶した正常情報を読み出す。ここで、図4のステップST101で、監視先プログラムが起動されておらず、情報を読み出せていなかった場合は、監視先プログラムから情報の読み出しを試みて、ここでも情報が読み出せなければ再度設定を保留する。保留する場合、監視対象の監視先プログラムが起動されていないので、このフローチャートを終了する図示せず。ステップST502で、共有メモリから今回読み出した正常情報と他プログラム監視手段が前回記憶した正常情報を比較し、正常情報が変化していればYes、ステップST506へ進み、変化していなければNo、ステップST503へ進む。ステップST503で、共有メモリから活性化フラグを読み出し、その状態がオフならばYes、ステップST506へ進み、オフでなければNo、ステップST504へ進む。ここで、活性化フラグの状態がオフならば、正常情報に変化がなくても監視先プログラムの動作は正常であるので、再起動は必要がないと判断できる。一方、活性化フラグの状態がオンならば、監視先プログラムの動作は異常であるので、他プログラム監視手段は他プログラム再起動手段に異常検出を通知する。なお、監視先プログラムの動作状態が正常か異常かの判定では、所定回数だけ連続して変わってない場合を異常であると判断するようにしても構わない。このとき、連続して正常情報が変わってないことを計数する手段を用意しておくことで、例えばシステムのCPU本体や動作クロックの変更によって、プログラム本体と監視プログラムの処理速度の関係が変更前と変化しても、そのまま実行可能なプログラムであれば運用継続できるようになる。ステップST504で、監視元プログラムの他プログラム再起動手段は、監視先プログラムを強制終了させ、ステップST505で、監視先プログラムを再起動する。なお、監視元プログラムの他プログラム再起動手段は、監視先プログラムの再起動のみ行い、再起動された監視先プログラム自身が以前の同一監視先プログラムを見つけて、見つかった場合に強制的に終了するようにしても構わない。ステップST506で、監視元プログラムの他プログラム監視手段は、ステップST501で共有メモリから今回読み出した正常情報を次回の比較のために保存する。ステップST507で、監視元プログラムの監視プログラムが次に起きるタイミングをタイマーに設定する。ステップST508で、監視プログラムを休眠し、タイマーイベントで起こされるのを待つ。ただし、本体プログラムが休眠状態でも、正常情報更新関数ステップST400を含むステップST302からST305の一連の処理を一定時間以内に常に呼び出して正常情報を更新し続けるならば、活性化フラグを設けない運用も可能である。この発明の実施の形態1に係るプログラム監視システムのプログラム管理手段が行うプログラム管理として、プログラムの初期登録、プログラムの追加、プログラムの削除の一例について説明する。図9は、この発明の実施の形態1に係るプログラム監視システムのプログラム管理手段が行うプログラムの初期登録の一例を示すフローチャートである。この処理は、プログラム監視システムを起動してプログラムの登録要求があった時点で呼び出され、起動する各プログラムを初期登録するものである。図において、ステップST601で、登録要求のあった各プログラムに、静的に設定されているプログラム情報を読み出す。ステップST602で、各プログラムに番号を振って順序付けを行う。ステップST603で、監視先プログラムが次の順序のプログラムになるように関連付けを行う。ステップST604で、各プログラムに関するプログラム情報、関連付け情報等をプログラム管理手段25の管理テーブルDB251に保存する。ステップST605で、登録した各プログラムおよびこのプログラムの初期登録処理を休眠させる。図10は、この発明の実施の形態1に係るプログラム監視システムのプログラム管理手段が行うプログラムの追加/削除の一例を示す概念図である。プログラムの追加/削除については、例えばリスト構造にセルを追加するのと同様に行う。図において、上段は、プログラムAとプログラムBとの間にプログラムCが追加される場合を示している。プログラムAは監視対象をプログラムBからプログラムCに変更し、追加するプログラムCがプログラムBを監視するように設定される。また、下段は、プログラムDとプログラムFとの間のプログラムEが削除される場合を示している。プログラムAは監視対象をプログラムEからプログラムFに変更される。図11は、この発明の実施の形態1に係るプログラム監視システムのプログラム管理手段が行うプログラムの追加の一例を示すフローチャートである。この処理は、プログラム監視システムの起動後、プログラムの追加要求があった時点で呼び出され、プログラムを追加登録するものである。図において、ステップST701で、追加要求されたプログラムに、静的に設定されているプログラム情報を読み出す。ステップST702で、このプログラムに番号を振って順序付けを行う。ステップST703で、直前に追加されたプログラムAが追加するプログラムCを監視するように関連付けを変更する。ステップST704で、直前に追加されたプログラムAが監視していたプログラムBを追加するプログラムCが監視するように関連付けを変更する。ステップST705で、追加要求されたプログラムに関するプログラム情報、関連付け情報等をプログラム管理手段25の管理テーブルDB251に保存する。ステップST706で、追加したプログラムおよびこのプログラムの追加処理を休眠させる。図12は、この発明の実施の形態1に係るプログラム監視システムのプログラム管理手段が行うプログラムの削除の一例を示すフローチャートである。この処理は、プログラム監視システムの起動後、プログラムの削除要求があった時点で呼び出され、プログラムを削除するものである。ステップST801で、削除するプログラムEが監視していたプログラムFを削除するプログラムEを監視していたプログラムDが監視するように関連付けを変更する。ステップST802で、削除するプログラムEを消去する。ステップST803で、削除要求されたプログラムに関するプログラム情報、関連付け情報等をプログラム管理手段25の管理テーブルDB251から削除する。ステップST804で、このプログラムの削除処理を休眠させる。このように、プログラム管理手段が行う図9のプログラムの初期登録はプログラム監視システムの起動時のイベント初期登録要求で一度のみ起こされて処理する。また、図11のプログラムの追加、図12のプログラムの削除は、ユーザイベント追加要求、削除要求の度に休眠から起こされて処理することになる。また、図10ないし図12で説明したプログラム管理手段が行うプログラムの追加および削除は、拡張性のあるプログラム監視システムには必須であるが、拡張性が必要のないプログラム監視システムでは動作するプログラム種別、数を起動させてから変化させないため、必ずしも実装しなくても構わない。ただし、動作に異常が検出されたときに、強制終了させて再起動するが、強制終了を削除、再起動を追加と見ることもできる。以上、この発明の実施の形態1に係るプログラム監視システムによれば、複数のプログラムを実行するシステムにおいて、プログラム間の相互監視を少ない負荷で行いながら、正常に動作していないプログラムを検出した時点で、そのプログラムのみを短時間に再起動して、システム全体の再起動を伴わずに復旧させることができるという効果がある。実施の形態2.この発明の実施の形態1に係るプログラム監視システムは、正常情報と活性化フラグを共有メモリを介して情報共有するものであった。次に、この発明の実施の形態2に係るプログラム監視システムとして、正常情報と活性化フラグをメッセージ通信を介して情報共有するものについて説明する。図13は、この発明の実施の形態2に係るプログラム監視システムの監視元/監視先プログラム間の処理の一例を示す説明図である。ここでは、図4と同様に、監視元プログラムプログラム1が監視先プログラムプログラム2を監視する一対応部分のみ示している。また、破線で囲んだ手段は、監視元プログラムプログラム1が監視先プログラムプログラム2を監視する関係付けでは機能しない構成手段である。図において、監視先プログラムプログラム2の送信情報領域27bと監視元プログラムプログラム1の受信情報領域27Aに、正常情報と活性化フラグをそれぞれ用意し、メッセージ通信により割込みを掛けて送信情報領域の値を受信情報領域の値として書き込んでもらうことで更新し、情報共有を実現する。ここでは図示していないが、監視先プログラムプログラム2には受信情報領域27B、監視元プログラムプログラム1には送信情報領域27aが別途あるものとする。このような構成により、情報共有の実現方法を除き、正常情報の参照と変更、活性化フラグの設定、プログラム動作の監視、異常検出時の再起動などは、図4と同様に処理される。このような正常情報と活性化フラグの情報共有の実現方法の変更により、共有メモリへのアクセスが、送信情報領域または受信情報領域へのアクセスとなる。よって、図7のプログラム監視システムの正常情報変更処理のフローチャートでは、ステップST403で、送信情報領域から正常情報を読み出して、ステップST405で、送信情報領域に正常情報を書き込むことになる。また、図8のプログラム監視システムの監視プログラムの実行のフローチャートでは、ステップST501で、監視元プログラムの他プログラム監視手段は、受信情報領域から正常情報を読み出し、また前回記憶した正常情報を読み出すことになる。また、共有メモリを使用しなくなったことに伴い、図3のプログラム監視システムが監視するプログラムの起動初期化のフローチャートでは、例えばステップST101で、管理テーブルDB251に書き出す自己プログラムの情報に、自己プログラムが監視先プログラムとなるときに、監視元プログラムと共有した情報を参照させるための共有メモリのアドレス情報を含める必要もなくなる。なお、この発明の実施の形態2に係るプログラム監視システムでは、メッセージ通信により割込みを掛けて送信情報領域の値を受信情報領域の値として書き込んでもらうことで更新し、情報共有を実現するものとして説明したが、一変形例として、この発明の実施の形態1に係るプログラム監視システムと同様に共有メモリで正常情報と活性化フラグの情報共有を実現した上で、監視先プログラムから監視元プログラムにメッセージ通信により割込みを掛けてプログラム動作を監視するタイミングを通知するだけにしてもよい。このとき、先に説明した図8の監視プログラムの実行では、監視元プログラムがタイマーイベントにより休眠から起こされるものとしたが、監視プログラムは割込みにより通知されたタイミングで起動することになるので、次回起動するタイミングを設定するタイマー設定図8のステップST507および図3のステップST107に相当する処理は不要となる。以上、この発明の実施の形態2に係るプログラム監視システムによれば、この発明の実施の形態1に係るプログラム監視システムと同様に、複数のプログラムを実行するシステムにおいて、プログラム間の相互監視を少ない負荷で行いながら、正常に動作していないプログラムを検出した時点で、そのプログラムのみを短時間に再起動して、システム全体の再起動を伴わずに復旧させることができるという効果がある。ここまで説明してきたこの発明に係るプログラム監視システムのような複数の実行プログラムを監視するシステムとして、例えば車両に搭載され、あるいは携帯端末として車両に持ち込まれるカーナビゲーションカーナビ装置を考えた場合、その内部では、位置測位、ナビゲーション、テレビ、ラジオ、映像音声メディアの再生、また文字放送などの機能に代表される複数のプログラムが動作する。ここには、画像表示や音声再生の両方に関わるプログラムもあれば、画像表示のみ、音声再生のみに関わるプログラムも存在し、また画像表示にも音声再生にも関わらないプログラムも含むことができる。ここで、システム上で動作する監視対象が画像表示や音声再生を伴うプログラムであるとき、動作に異常を検出してその復旧過程に時間がかかると、正常時と異なる不自然さや違和感をユーザの視覚や聴覚などに知覚させてしまうため、できるだけ短時間でシステムを復旧させることが望ましい。例えば、画像表示を伴うプログラムでは、映像の1フレームの表示時間より早くシステムを復旧させることができれば、ユーザに気付かせることはない。また、ここではカーナビゲーション装置を例に挙げたが、今後はより多くの車載機器も統合されていき、カーナビゲーション装置が他の車載機器を統合することもあれば、他の車載装置に統合されることも考えられる。例えば、カーナビゲーション装置、空調の運転状況の表示類などが、運転時の走行速度などの各種情報を示す計器類の表示パネルに統合されたインストルメントパネルインパネも普及し始めている。このとき、表示パネルはタッチパネル機能が実装されていても構わない。なお、このような統合されたインストルメントパネル化は、車両のみならず、飛行機、船舶、列車などの乗り物全般にも応用可能であり、そこに実装される各機能に関わるプログラムも、この発明に係るプログラム監視システムを実装して監視対象にできることは言うまでもない。また、この発明に係るプログラム監視システムは、複数の実行プログラムを監視するものであれば、例えば医療機器のような医療分野、ゲームのような娯楽エンターテインメント分野、また、マルチメディア分野やテレマティクス分野の装置にも適用することができ、その他にもプログラム動作の異常発生時に短時間に復旧することを望まれ、あるいは義務付けられた様々な分野のシステムで広く応用できるものである。以上、この発明に係るプログラム監視システムによれば、複数のプログラムを実行するシステムにおいて、プログラム間の相互監視を少ない負荷で行いながら、正常に動作していないプログラムを検出した時点で、そのプログラムのみを短時間に再起動して、システム全体の再起動を伴わずに復旧させることができるという効果がある。特に、システム上で動作する監視対象が画像表示や音声再生を伴うプログラムであるとき、復旧過程で正常時と異なる不自然さや違和感をユーザの視覚や聴覚などに知覚させずにシステムを復旧させることができる。また、この発明に係るプログラム監視システムによれば、プログラム動作の異常復旧に関してリアルタイム性、信頼性を低コストで得られるようになる。