JP2013041484A - プログラム監視システム - Google Patents

プログラム監視システム Download PDF

Info

Publication number
JP2013041484A
JP2013041484A JP2011178752A JP2011178752A JP2013041484A JP 2013041484 A JP2013041484 A JP 2013041484A JP 2011178752 A JP2011178752 A JP 2011178752A JP 2011178752 A JP2011178752 A JP 2011178752A JP 2013041484 A JP2013041484 A JP 2013041484A
Authority
JP
Japan
Prior art keywords
program
monitoring
normal information
destination
normal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2011178752A
Other languages
English (en)
Other versions
JP5737055B2 (ja
JP2013041484A5 (ja
Inventor
Ryozo Kiyohara
良三 清原
Masashi Saito
正史 齋藤
Hiroshi Kozuka
宏 小塚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2011178752A priority Critical patent/JP5737055B2/ja
Publication of JP2013041484A publication Critical patent/JP2013041484A/ja
Publication of JP2013041484A5 publication Critical patent/JP2013041484A5/ja
Application granted granted Critical
Publication of JP5737055B2 publication Critical patent/JP5737055B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】 複数プログラムが動作するシステム環境で、動作障害を検出し、復旧させる。
【解決手段】 この発明に係るプログラム監視システムは、複数のプログラムの設定情報を記憶した管理テーブルに基づいて、各プログラムの起動時に、監視先プログラムと監視元プログラムとを関係付けるプログラム管理手段と、監視先プログラムとして、正常に動作する過程で、正常動作状態を示す正常情報を一定時間以内の間隔で繰り返し更新するプログラム正常情報更新手段と、監視元プログラムとして、正常情報を監視するタイミングを定期的に指示するタイマー手段と、タイマー手段の指示で正常情報を参照し、前回参照時に保存した正常情報との比較に基づいて、監視先プログラムの動作の異常を検出する他プログラム監視手段と、動作の異常の検出を通知された場合に、監視先プログラムを強制終了させて再起動する他プログラム再起動手段とを備えた。
【選択図】 図2

Description

この発明は、複数のプログラムが動作するシステム環境で、プログラムの動作障害を検出し、復旧させるプログラム監視システムに関する。
複数のプログラムを実行するシステムでは、プログラムを時分割で動作させている場合に、一つのプログラムの動作に障害が発生し、そのまま放置しておくと、次第に他のプログラムも正常に動作できなくなって、システム全体が停止に至ることもある。よって、システムを例えば二重化(または多重化)することで冗長に構成して動作の信頼性を向上させることもできるが、コストが上昇してしまい、低コスト化を求められるシステムでは採用しにくい面もある。また、プログラム動作の障害発生の検出を含めたシステム処理の負荷はできるだけ抑えることも望まれる。このように、システムで動作するプログラムに障害が検出された場合には、システムを再起動して復旧させる方法を採ることが一般的である。
従来技術としては、例えば、複数のプログラムが周期的に動作する場合に、一つのハードウェアウォッチドッグタイマーを利用して異常を検出する方式がある(例えば特許文献1)。この方式では、複数のプログラムのいずれか一つが停止や暴走などの正常でない動作状態になったことを検出したとき、システム全体を再起動することにより正常な動作状態に戻す。
一方、複数のプログラムが周期的ではなく、不定期に動作する場合に、異常を検出する方式もある(例えば特許文献2)。この方式では、実際に各プログラムが動作した時間から動作中か停止中かの判定を必要とし、異常が検出されるとシステム全体を再起動する。
また、複数のプログラムが動作する場合に、同時に実行できるプログラムの数を制限することにより、確実に動作させる方式がある(例えば特許文献3)。この方式では、同時に実行できるプログラム数を制限することで、運用後のシステムの拡張性が確保できず、アプリケーションの追加を行うことが難しいことがある。
また、周期的に動作するプログラムと不定期に動作するプログラムとが混在する場合に、システム全体で共通のテーブルにカウントダウンを行うことで、システム全体の再起動の要否を検出する方式がある(例えば特許文献4)。
また、各プログラム(タスク)の実行許容時間を抑えておき、他の処理に影響を及ぼさないようにする方法がある(例えば特許文献5)。
特開平5−257748号公報 特開平5−346877号公報 特開平8−328880号公報 特開2000−181755号公報 特開2007−26309号公報
従来のプログラム監視システムでは、プログラムの動作に異常を検出すると、正常な状態に戻すために、システム全体を再起動させなければならないという問題がある。このとき、各プログラムの動作に異常を適時検出するために、全プログラムを監視するプログラムを常駐させることは、システムのオーバーヘッドが大きくなるという課題がある。
そのため、リアルタイムに処理することが求められるシステムでは、長時間のシステム停止が許されないため、短時間でシステム全体を復旧させることは困難であった。
特に、システム上で動作する監視対象が画像表示や音声再生を伴うプログラムであるとき、復旧過程で正常時と異なる不自然さや違和感をユーザの視覚や聴覚などに知覚させずにシステムを復旧させることは難しかった。
この発明は、上記のような問題点を解決するためになされたものであり、複数のプログラムを実行するシステムにおいて、プログラム間の相互監視を少ない負荷で行いながら、正常に動作していないプログラムを検出した時点で、そのプログラムのみを短時間に再起動して、システム全体の再起動を伴わずに復旧させることを目的とする。
この発明に係るプログラム監視システムは、複数のプログラムの設定情報を記憶した管理テーブルに基づいて、各プログラムの起動時に、監視元プログラムとして監視する対象とする監視先プログラムと、前記監視先プログラムとして監視される対象となる前記監視元プログラムとにプログラム間で関係付けさせるプログラム管理手段と、前記監視先プログラムとして、プログラムが正常に動作する過程で、前記監視元プログラムと情報共有した正常動作状態を示す正常情報を一定時間以内の間隔で繰り返し更新するプログラム正常情報更新手段と、前記監視元プログラムとして、前記監視先プログラムの前記正常情報を監視するタイミングを定期的に指示するタイマー手段と、前記タイマー手段が指示するタイミングで、前記監視先プログラムの前記プログラム正常情報更新手段が更新する前記正常情報を参照し、前回参照時に保存した正常情報との比較に基づいて、前記監視先プログラムの動作の異常を検出する他プログラム監視手段と、前記他プログラム監視手段から前記監視先プログラムの動作の異常の検出を通知された場合に、前記監視先プログラムを強制終了させて再起動する他プログラム再起動手段とを備えた。
この発明に係るプログラム監視システムによれば、複数のプログラムを実行するシステムにおいて、プログラム間の相互監視を少ない負荷で行いながら、正常に動作していないプログラムを検出した時点で、そのプログラムのみを短時間に再起動して、システム全体の再起動を伴わずに復旧させることができる。
この発明の実施の形態1に係るプログラム監視システムのプログラム監視の関係の一例を示す概念図である。 この発明の実施の形態1に係るプログラム監視システムの構成の一例を示す説明図である。 この発明の実施の形態1に係るプログラム監視システムが監視するプログラムの起動(初期化)の一例を示すフローチャートである。 この発明の実施の形態1に係るプログラム監視システムの監視元/監視先プログラム間の処理の一例を示す説明図である。 この発明の実施の形態1に係るプログラム監視システムのプログラム本体の実行の一例を示すフローチャートである。 この発明の実施の形態1に係るプログラム監視システムのプログラム実体処理の一例を示すフローチャートである。 この発明の実施の形態1に係るプログラム監視システムのカウンタ値変更関数の一例を示すフローチャートである。 この発明の実施の形態1に係るプログラム監視システムの監視プログラムの実行の一例を示すフローチャートである。 この発明の実施の形態1に係るプログラム監視システムのプログラムの初期登録の一例を示すフローチャートである。 この発明の実施の形態1に係るプログラム監視システムのプログラム管理手段が行うプログラムの追加/削除の一例を示す概念図である。 この発明の実施の形態1に係るプログラム監視システムのプログラムの追加の一例を示すフローチャートである。 この発明の実施の形態1に係るプログラム監視システムのプログラムの削除の一例を示すフローチャートである。 この発明の実施の形態2に係るプログラム監視システムの監視元/監視先プログラム間の処理の一例を示す説明図である。
この発明に係るプログラム監視システムは、複数のプログラムを実行するシステムにおいて、プログラム間の相互監視を少ない負荷で行いながら、正常に動作していないプログラムを検出した時点で、そのプログラムのみを短時間に再起動して、システム全体の再起動を伴わずに復旧させるものである。以下に、この発明に係るプログラム監視システムの一例について説明する。
実施の形態1.
図1は、この発明の実施の形態1に係るプログラム監視システムのプログラム監視の関係の一例を示す概念図である。図において、第1のプログラム(プログラム1)10aから第4のプログラム(プログラム4)10dの4つのプログラムがプログラム監視システム上で動作している状態(動作状況)を示している。このとき、各プログラムは、他のプログラムのうち、一つのプログラムの動作状況を監視するものとする。例えば、監視元プログラムとして第1のプログラム10aは、監視先プログラムとして第2のプログラム10bの動作状況を監視している。同様に、第2のプログラム10bは第3のプログラム10cの動作状況、第3のプログラム10cは第4のプログラム10dの動作状況、また第4のプログラム10dは第1のプログラム10aの動作状況を監視する。
このように、各プログラムは、他のプログラムの動作状況を監視する一方で他のプログラムから動作状況を監視されることによって、全体でループ形状の監視関係を構成している。よって、全プログラムが一つのループをなす形状で動作状況を監視することにより、あるプログラムの動作が異常になっても、その動作が異常になったプログラムを監視対象としていた他の正常動作するプログラムが発見できる。各プログラムは、一つのプログラムしか監視しないので、処理の負荷、すなわちオーバーヘッドは少なくできる。
ここで、各プログラムは、一つのプログラムしか監視しないものとしたが、処理の負荷に余裕があれば、他のプログラムのうち、二つ以上のプログラムを監視し、かつ二つ以上のプログラムに監視されても構わない(図示せず)。
図2は、この発明の実施の形態1に係るプログラム監視システムの構成の一例を示す説明図である。図において、プログラム制御手段(プラットフォーム)30は、オペレーティングシステム(OS)として、プログラムの実行の全般を制御する。
プログラム管理手段(プログラム管理機能)25は、プログラム監視の対象となる各プログラムの情報を統括し、監視元プログラムとして起動する各プログラムが監視すべき監視先プログラムを決定して管理テーブル(データベース。以下、DBと記す。)251にプログラムの各種設定情報を記憶し、管理テーブル(DB)251の設定情報を各プログラム間で関係付けさせることで管理する。
各プログラムは、プログラム実体を処理するプログラム本体(図示せず)と監視プログラムから構成され、監視機能の実現手段として、具体的には次のプログラム正常情報更新手段(プログラム正常情報更新機能)21、他プログラム監視手段(他プログラム監視機能)22、タイマー手段(タイマー機能)23、他プログラム再起動手段(他プログラム再起動機能)24をそれぞれ有する。
プログラム正常情報更新手段21は、このプログラムが監視先プログラムとして正常に動作する過程で、プログラムの起動時に決定された監視元プログラムと情報共有した、この監視先プログラムの動作状態を示す正常情報を一定時間以内の間隔で繰り返し更新する。なお、監視先プログラムの動作状態を示す正常情報は、監視元プログラムと監視先プログラムとの共有メモリ上の格納値として情報共有される。他プログラム監視手段22は、プログラムの起動時に決定された監視先プログラムのプログラム正常情報更新手段21が更新する正常情報を参照し、前回参照した後に保存した正常情報との比較に基づいて監視先プログラムの動作の異常を検出する。タイマー手段23は、他プログラム監視手段22を呼び出して監視先プログラムの正常情報を定期的に監視するタイミングを指示する。
他プログラム再起動手段24は、他プログラム監視手段22が監視先プログラムの動作に異常を検出した場合に、監視先プログラムを強制終了させて再起動する。
図3は、この発明の実施の形態1に係るプログラム監視システムが監視するプログラムの起動(初期化)の一例を示すフローチャートである。
図において、ステップST101、ST102で、起動させるプログラムに関するプログラム管理手段25の管理テーブル(DB)251の記憶情報およびこのプログラム内の設定を初期化する。
ステップST101で、起動させるプログラム(自己プログラム)の情報を管理テーブル(DB)251に書き出す。ここで、管理テーブル(DB)251に書き出す自己プログラムの情報は、静的に設定されているプログラム情報として、自己プログラムの識別情報(ID)と、自己プログラムが監視先プログラムとなるときに、監視元プログラムと共有した情報を参照させるための共有メモリのアドレス情報を含む。
ステップST102で、起動させるプログラムが監視元プログラムとして監視する監視先プログラムをプログラム管理手段25の管理テーブル(DB)251の保存情報から特定した後、読み出した監視先プログラムの情報を他プログラム監視手段22、他プログラム再起動手段24に設定する。ここで、管理テーブル(DB)251から読み出す監視先プログラムの情報には、監視先プログラムの識別情報(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の管理テーブル(DB)251に保存する。
ステップ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の管理テーブル(DB)251に保存する。
ステップST706で、追加したプログラムおよびこのプログラムの追加処理を休眠させる。
図12は、この発明の実施の形態1に係るプログラム監視システムのプログラム管理手段が行うプログラムの削除の一例を示すフローチャートである。この処理は、プログラム監視システムの起動後、プログラムの削除要求があった時点で呼び出され、プログラムを削除するものである。
ステップST801で、削除するプログラムEが監視していたプログラムFを削除するプログラムEを監視していたプログラムDが監視するように関連付けを変更する。
ステップST802で、削除するプログラムEを消去する。
ステップST803で、削除要求されたプログラムに関するプログラム情報、関連付け情報等をプログラム管理手段25の管理テーブル(DB)251から削除する。
ステップ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で、管理テーブル(DB)251に書き出す自己プログラムの情報に、自己プログラムが監視先プログラムとなるときに、監視元プログラムと共有した情報を参照させるための共有メモリのアドレス情報を含める必要もなくなる。
なお、この発明の実施の形態2に係るプログラム監視システムでは、メッセージ通信により割込みを掛けて送信情報領域の値を受信情報領域の値として書き込んでもらうことで更新し、情報共有を実現するものとして説明したが、一変形例として、この発明の実施の形態1に係るプログラム監視システムと同様に共有メモリで正常情報と活性化フラグの情報共有を実現した上で、監視先プログラムから監視元プログラムにメッセージ通信により割込みを掛けてプログラム動作を監視するタイミングを通知するだけにしてもよい。このとき、先に説明した図8の監視プログラムの実行では、監視元プログラムがタイマーイベントにより休眠から起こされるものとしたが、監視プログラムは割込みにより通知されたタイミングで起動することになるので、次回起動するタイミングを設定するタイマー設定(図8のステップST507および図3のステップST107)に相当する処理は不要となる。
以上、この発明の実施の形態2に係るプログラム監視システムによれば、この発明の実施の形態1に係るプログラム監視システムと同様に、複数のプログラムを実行するシステムにおいて、プログラム間の相互監視を少ない負荷で行いながら、正常に動作していないプログラムを検出した時点で、そのプログラムのみを短時間に再起動して、システム全体の再起動を伴わずに復旧させることができるという効果がある。
ここまで説明してきたこの発明に係るプログラム監視システムのような複数の実行プログラムを監視するシステムとして、例えば車両に搭載され、あるいは携帯端末として車両に持ち込まれるカーナビゲーション(カーナビ)装置を考えた場合、その内部では、位置測位、ナビゲーション、テレビ、ラジオ、映像・音声メディアの再生、また文字放送などの機能に代表される複数のプログラムが動作する。ここには、画像表示や音声再生の両方に関わるプログラムもあれば、画像表示のみ、音声再生のみに関わるプログラムも存在し、また画像表示にも音声再生にも関わらないプログラムも含むことができる。
ここで、システム上で動作する監視対象が画像表示や音声再生を伴うプログラムであるとき、動作に異常を検出してその復旧過程に時間がかかると、正常時と異なる不自然さや違和感をユーザの視覚や聴覚などに知覚させてしまうため、できるだけ短時間でシステムを復旧させることが望ましい。例えば、画像表示を伴うプログラムでは、映像の1フレームの表示時間より早くシステムを復旧させることができれば、ユーザに気付かせることはない。
また、ここではカーナビゲーション装置を例に挙げたが、今後はより多くの車載機器も統合されていき、カーナビゲーション装置が他の車載機器を統合することもあれば、他の車載装置に統合されることも考えられる。例えば、カーナビゲーション装置、空調の運転状況の表示類などが、運転時の走行速度などの各種情報を示す計器類の表示パネルに統合されたインストルメントパネル(インパネ)も普及し始めている。このとき、表示パネルはタッチパネル機能が実装されていても構わない。なお、このような統合されたインストルメントパネル化は、車両のみならず、飛行機、船舶、列車などの乗り物全般にも応用可能であり、そこに実装される各機能に関わるプログラムも、この発明に係るプログラム監視システムを実装して監視対象にできることは言うまでもない。
また、この発明に係るプログラム監視システムは、複数の実行プログラムを監視するものであれば、例えば医療機器のような医療分野、ゲームのような娯楽・エンターテインメント分野、また、マルチメディア分野やテレマティクス分野の装置にも適用することができ、その他にもプログラム動作の異常発生時に短時間に復旧することを望まれ、あるいは義務付けられた様々な分野のシステムで広く応用できるものである。
以上、この発明に係るプログラム監視システムによれば、複数のプログラムを実行するシステムにおいて、プログラム間の相互監視を少ない負荷で行いながら、正常に動作していないプログラムを検出した時点で、そのプログラムのみを短時間に再起動して、システム全体の再起動を伴わずに復旧させることができるという効果がある。
特に、システム上で動作する監視対象が画像表示や音声再生を伴うプログラムであるとき、復旧過程で正常時と異なる不自然さや違和感をユーザの視覚や聴覚などに知覚させずにシステムを復旧させることができる。
また、この発明に係るプログラム監視システムによれば、プログラム動作の異常復旧に関してリアルタイム性、信頼性を低コストで得られるようになる。
10 プログラム、21 プログラム正常情報更新手段(プログラム正常情報更新機能)、22 他プログラム監視手段(他プログラム監視機能)、23 タイマー手段(タイマー機能)、24 他プログラム再起動手段(他プログラム再起動機能)、25 プログラム管理手段(プログラム管理機能)、251 管理テーブル(データベースDB)、26 共有メモリ、261 正常情報、262 活性化フラグ、30 プログラム制御手段(プラットフォーム)。

Claims (7)

  1. 複数のプログラムの設定情報を記憶した管理テーブルに基づいて、各プログラムの起動時に、監視元プログラムとして監視する対象とする監視先プログラムと、前記監視先プログラムとして監視される対象となる前記監視元プログラムとにプログラム間で関係付けさせるプログラム管理手段と、
    前記監視先プログラムとして、プログラムが正常に動作する過程で、前記監視元プログラムと情報共有した正常動作状態を示す正常情報を一定時間以内の間隔で繰り返し更新するプログラム正常情報更新手段と、
    前記監視元プログラムとして、前記監視先プログラムの前記正常情報を監視するタイミングを定期的に指示するタイマー手段と、
    前記タイマー手段が指示するタイミングで、前記監視先プログラムの前記プログラム正常情報更新手段が更新する前記正常情報を参照し、前回参照時に保存した正常情報との比較に基づいて、前記監視先プログラムの動作の異常を検出する他プログラム監視手段と、
    前記他プログラム監視手段から前記監視先プログラムの動作の異常の検出を通知された場合に、前記監視先プログラムを強制終了させて再起動する他プログラム再起動手段と
    を備えたプログラム監視システム。
  2. 前記監視先プログラムの前記プログラム正常情報更新手段は、前記監視元プログラムと情報共有した活性化フラグに、休眠から起こされた時点で動作中を示す状態を設定し、動作終了時点で休眠を示す状態を設定し、
    前記監視元プログラムの前記他プログラム監視手段は、前記監視先プログラムの活性化フラグが休眠の状態を示しているときは、前記監視先プログラムの動作の異常を判定しないことを特徴とする請求項1記載のプログラム監視システム。
  3. 前記監視元プログラムの前記他プログラム監視手段は、前記監視先プログラムの前記プログラム正常情報更新手段が更新する前記正常情報を参照し、前回参照時に保存した正常情報から更新されていない回数を計数し、計数した回数が所定値に達したとき、異常と判定することを特徴とする請求項1または請求項2記載のプログラム監視システム。
  4. 前記正常情報は、前記監視先プログラムの前記プログラム正常情報更新手段と前記監視元プログラムの前記他プログラム監視手段との両者が利用可能な共有メモリに格納して情報共有することを特徴とする請求項1ないし請求項3のいずれかに記載のプログラム監視システム。
  5. 前記活性化フラグは、前記監視先プログラムの前記プログラム正常情報更新手段と前記監視元プログラムの前記他プログラム監視手段との両者が利用可能な共有メモリに格納して情報共有することを特徴とする請求項2または請求項3記載のプログラム監視システム。
  6. 前記正常情報は、前記監視先プログラムから前記監視元プログラムへメッセージを送信し、前記監視先プログラムが管理する正常情報の値を前記監視元プログラムが管理する正常情報の値として書き込むことで情報共有することを特徴とする請求項1ないし請求項3のいずれかに記載のプログラム監視システム。
  7. 前記活性化フラグは、前記監視先プログラムから前記監視元プログラムへメッセージを送信し、前記監視先プログラムが管理する正常情報の値を前記監視元プログラムが管理する正常情報の値として書き込むことで情報共有することを特徴とする請求項2または請求項3記載のプログラム監視システム。
JP2011178752A 2011-08-18 2011-08-18 プログラム監視システム Expired - Fee Related JP5737055B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011178752A JP5737055B2 (ja) 2011-08-18 2011-08-18 プログラム監視システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011178752A JP5737055B2 (ja) 2011-08-18 2011-08-18 プログラム監視システム

Publications (3)

Publication Number Publication Date
JP2013041484A true JP2013041484A (ja) 2013-02-28
JP2013041484A5 JP2013041484A5 (ja) 2014-03-27
JP5737055B2 JP5737055B2 (ja) 2015-06-17

Family

ID=47889800

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011178752A Expired - Fee Related JP5737055B2 (ja) 2011-08-18 2011-08-18 プログラム監視システム

Country Status (1)

Country Link
JP (1) JP5737055B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015079413A (ja) * 2013-10-18 2015-04-23 日本電信電話株式会社 プロセス監視システム、プロセス監視方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619744A (ja) * 1992-07-01 1994-01-28 Nec Software Ltd マルチプロセッサシステムの動作監視方式
JPH09128268A (ja) * 1995-10-30 1997-05-16 Oki Tsushin Syst Kk プログラム障害検出方法
JPH09162976A (ja) * 1995-12-05 1997-06-20 Nippon Telegr & Teleph Corp <Ntt> 分散処理システムのモジュール運転状態制御方法
JPH09319684A (ja) * 1996-05-29 1997-12-12 Nec Software Ltd ヘルスチェック装置
JPH10161952A (ja) * 1996-11-27 1998-06-19 Toshiba Corp コンピュータ障害監視方法及びそのシステム
JPH1131136A (ja) * 1997-07-11 1999-02-02 Meidensha Corp 分散処理システムの異常監視方式
JP2007114941A (ja) * 2005-10-19 2007-05-10 Nec Corp 相互監視システム、相互監視装置、相互監視方法およびプログラム
JP2010257113A (ja) * 2009-04-23 2010-11-11 Nec System Technologies Ltd 監視システム、監視方法、及びプログラム
JP2010267091A (ja) * 2009-05-14 2010-11-25 Canon Inc 情報処理装置、その制御方法、及びコンピュータプログラム

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619744A (ja) * 1992-07-01 1994-01-28 Nec Software Ltd マルチプロセッサシステムの動作監視方式
JPH09128268A (ja) * 1995-10-30 1997-05-16 Oki Tsushin Syst Kk プログラム障害検出方法
JPH09162976A (ja) * 1995-12-05 1997-06-20 Nippon Telegr & Teleph Corp <Ntt> 分散処理システムのモジュール運転状態制御方法
JPH09319684A (ja) * 1996-05-29 1997-12-12 Nec Software Ltd ヘルスチェック装置
JPH10161952A (ja) * 1996-11-27 1998-06-19 Toshiba Corp コンピュータ障害監視方法及びそのシステム
JPH1131136A (ja) * 1997-07-11 1999-02-02 Meidensha Corp 分散処理システムの異常監視方式
JP2007114941A (ja) * 2005-10-19 2007-05-10 Nec Corp 相互監視システム、相互監視装置、相互監視方法およびプログラム
JP2010257113A (ja) * 2009-04-23 2010-11-11 Nec System Technologies Ltd 監視システム、監視方法、及びプログラム
JP2010267091A (ja) * 2009-05-14 2010-11-25 Canon Inc 情報処理装置、その制御方法、及びコンピュータプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015079413A (ja) * 2013-10-18 2015-04-23 日本電信電話株式会社 プロセス監視システム、プロセス監視方法

Also Published As

Publication number Publication date
JP5737055B2 (ja) 2015-06-17

Similar Documents

Publication Publication Date Title
CN108702421B (zh) 用于控制应用和组件的电子设备和方法
KR101534474B1 (ko) 디스플레이 이미지의 선택적 갱신을 이용하는 플랫폼 전력 소비의 제어
JP2006277062A (ja) アプリケーション管理装置およびそのソフトウェアを格納した記憶媒体
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
US20100064165A1 (en) Failover method and computer system
CN103902316A (zh) 切换方法和电子设备
CN103581225A (zh) 分布式系统中的节点处理任务的方法
CN103620521B (zh) 用于控制系统功耗的技术
WO2021248836A1 (zh) 智能设备启动方法、装置、智能设备和可读存储介质
WO2019042174A1 (zh) 在主数据库和备数据库之间的同步方法、数据库系统和设备
CN109408149B (zh) 应用程序的启动方法、装置、设备以及存储介质
CN114327606B (zh) 配置管理方法、装置、电子设备及计算机可读存储介质
JP5166211B2 (ja) 不揮発性メモリを主記憶に用いた装置
JP5737055B2 (ja) プログラム監視システム
WO2021175187A1 (zh) 数据保护方法、装置、电子设备及计算机可读存储介质
JP2009128313A (ja) カーナビゲーション装置、制御方法、プログラムおよび制御装置
CN110691401B (zh) 一种系统应用的管理方法及装置
JP5403160B2 (ja) 通信装置、通信方法、および通信プログラム
JP5887952B2 (ja) 車載端末、及び、アプリケーション実行環境プログラム
JP5579257B2 (ja) 主記憶装置における情報を復元するための装置及び方法
JP2012003510A (ja) 計算機及び転送プログラム
WO2023141832A1 (zh) 程序更新方法和程序更新装置
JP7363617B2 (ja) 通信装置、情報処理方法、およびシステム
CN112462926B (zh) 移动终端中的电源管理方法、装置、电子设备及计算机存储介质
JP2012203449A (ja) 情報処理装置、情報処理方法、および、コンピュータ・プログラム

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140206

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140206

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20140326

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140924

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150302

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150324

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150406

LAPS Cancellation because of no payment of annual fees