JP2006227962A - アプリケーションタスク監視システムおよび方法 - Google Patents

アプリケーションタスク監視システムおよび方法 Download PDF

Info

Publication number
JP2006227962A
JP2006227962A JP2005041672A JP2005041672A JP2006227962A JP 2006227962 A JP2006227962 A JP 2006227962A JP 2005041672 A JP2005041672 A JP 2005041672A JP 2005041672 A JP2005041672 A JP 2005041672A JP 2006227962 A JP2006227962 A JP 2006227962A
Authority
JP
Japan
Prior art keywords
task
application
monitoring
storage means
watchdog
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.)
Pending
Application number
JP2005041672A
Other languages
English (en)
Inventor
Tetsuo Suzuki
哲雄 鈴木
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.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Systems Co Ltd
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 Fuji Electric Systems Co Ltd filed Critical Fuji Electric Systems Co Ltd
Priority to JP2005041672A priority Critical patent/JP2006227962A/ja
Publication of JP2006227962A publication Critical patent/JP2006227962A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】 不定期に起動するタスクを監視する。
【解決手段】 演算手段と、ハードウェアタイマと、アプリケーション監視タスクの情報を記憶する記憶手段と、監視対象アプリケーションのタスク実行開始時刻またはタスク実行停止時刻を前記記憶手段に記録する手段(12)と、周期的にアプリケーション監視タスクを起動する手段(10)と、前記演算手段が前記アプリケーション監視タスクを監視対象アプリケーションに対して実行し、前記記憶手段に記録されたタスク実行開始時刻又はタスク実行停止時刻に基づき監視対象アプリケーションの異常の有無を検知し、正常ならば各監視対象アプリケーションに設けたウォッチドッグタイマのカウンタをリセットし、異常ならば該カウント値のハードウェアタイマによる累積を継続する手段(14)と、前記カウント値が前記記憶手段に格納されたオーバーフロー値を越えると、オーバーフロー割り込みを発生させる手段(18)により終了処理を呼び出す手段(20)とを含むタスク監視システムおよび監視方法を提供する。
【選択図】 図1

Description

本発明は、ウォッチドッグタイマを用いて複数のアプリケーションタスクを監視するシステムおよび方法に関する。
通常、プログラムのループや暴走により一定時間内に所定の処理が実行できなかった場合には、プログラムの異常を検出してCPUリセットや異常内容の保存などの異常処理を行うために、ウォッチドッグタイマ(以下、「WDT」と略称することがある)が使用されている。
ここで、リアルタイム・オペレーティングシステム(リアルタイムOS)が組み込まれておらずタスクの概念のない単純な組込みプログラムの場合には、ある処理が終了すると、処理全体を管理する処理を繰り返し動作させることにより異常検出を行うことができる。そして、処理の開始時または終了時においてウォッチドッグタイマをリセットし、同じウォッチドッグタイマを用いてプログラムの監視を継続することができる。
一方、リアルタイムOSが組み込まれている場合には、最も単純な方法として、優先順位が最も低いタスクでウォッチドッグタイマをリセットする方法がある。しかし、この方法では、タスクが実行権から切り離されて繰り返されるような状態に陥った場合(例えば、ダイナミックループしてしまった場合)には、ウォッチドッグタイマを用いて監視することができないという問題が生じる。そのため、タスクの監視をタスク単位に行う必要がある。その一方で、このような問題を回避するために1つのタスクに対して1つのウォッチドッグタイマを使用すると、タスクが追加される度にハードウェアで構成されたウォッチドッグタイマを追加する必要が生じる。その結果、ハードウェアで構成されたウォッチドッグタイマの増加により、システムの高コスト化や大型化などを招くという問題が生じる。
このような問題を回避して、ハードウェアで構成された1つのウォッチドッグタイマを用いて複数のタスクを監視する方法が、以下の特許文献1に記載されている。この特許文献1には、ハードウェアで構成されたWDT1と、所定の周期T1〜Tnでそれぞれ繰り返されるn個のプログラム(PRG1〜PRGn)とが記載されている。まず、ハードウェアで構成されたWDT1が、プログラム1(PRG1)の動作を監視する。そして、プログラム1(PRG1)が、ソフトウェアで構成されたWDT2〜WDTnを用いて残りプログラム2〜n(PRG2〜PRGn)の動作を監視する。ここで、プログラム2〜nの監視周期(t2〜tn)は、プログラム1を監視するハードウェアのWDT1のリセット周期の整数倍に設定されている。
そして、プログラム1(PRG1)は、所定のカウントアップ時間t1〜tnを経過しても残りのプログラム2〜n(PRG2〜PRGn)のいずれかが起動しない場合には異常であるとして、異常なプログラムのWDT2〜WDTnがアラーム通知を行う。また、プログラム1の異常については、ハードウェアで構成されたWDT1がアラーム通知を行う。ここで、カウントアップ時間t1〜tnは、各プログラム1〜nの起動周期T1〜Tnよりも長い時間にそれぞれ設定されている。すなわち、特許文献1に記載された発明によれば、1つのハードウェアで構成されたWDT1を用いてプログラム1の動作を監視し、プログラム1内に設けたソフトウエアタイマWDT2〜WDTnを用いてプログラム2〜プログラムnの動作を監視するといった仕方で、複数のプログラム(またはタスク)を監視している。
特開平8−30490号公報
しかしながら、上記の特許文献1に記載された複数のタスクの監視方法では、定期に動作するタスクを監視することはできるが、外部からのイベントにより不定期に動作するタスクを監視することはできない。
本発明は、演算手段と、1個又は2個のハードウェアタイマと、アプリケーション監視タスクのための情報を少なくとも記憶する記憶手段と、監視対象アプリケーションのタスク実行開始時刻またはタスク実行停止時刻あるいはその両方を記憶手段に記録する手段と、周期的にアプリケーション監視タスクを起動する手段と、演算手段がアプリケーション監視タスクを複数の監視対象アプリケーションに対して実行することにより、記憶手段に記録されたタスク実行開始時刻又はタスク実行停止時刻と現在時刻に基づいて、監視対象アプリケーションの異常の有無を検知し、異常がなければ、アプリケーション監視タスクに関連して各監視対象アプリケーションについて設けたウォッチドッグタイマのカウンタをリセットし(カウンタのカウント値を0にし)、異常があれば、ウォッチドッグタイマカウンタのカウント値のハードウェアタイマによる累積を継続する手段と、ウォッチドッグタイマカウンタのカウント値が記憶手段に格納されたオーバーフロー値を越えたときに、オーバーフロー割り込みを発生させる手段と、オーバーフロー割り込みが発生すると、終了処理を呼び出す手段とを含んでなるアプリケーションタスク監視システムを提供する。
アプリケーションのタスク実行開始時刻あるいはタスク実行開始時刻とタスク実行停止時刻の両方を記録しておくことにより、定期的に動作するアプリケーションと不定期に動作するアプリケーションのいずれについても正しく監視を行うことができる。
また、上記のアプリケーション監視タスクを起動する手段は、記憶手段に格納されたキャプチャ割り込みカウンタ値に基づいて、ハードウェアタイマのカウンタがキャプチャ割り込みカウンタ値に達したときにキャプチャ割り込みを発生させる手段と、キャプチャ割り込みによりアプリケーション監視タスクを起動する手段とを含むことが好ましい。
また、本発明は、演算手段と、1個又は2個のハードウェアタイマと、アプリケーション監視タスクのための情報を少なくとも記憶する記憶手段を含んでなるシステムにおいて実行される方法であって、監視対象アプリケーションのタスク実行開始時刻またはタスク実行停止時刻あるいはその両方を前記記憶手段に記録するステップと、定期的にアプリケーション監視タスクを起動するステップと、演算手段がアプリケーション監視タスクを複数の監視対象アプリケーションに対して実行することにより、記憶手段に記録されたタスク実行開始時刻又はタスク実行停止時刻に基づいて、監視対象アプリケーションの異常の有無を検知し、異常がなければ、アプリケーション監視タスクに関連して各監視対象アプリケーションについて設けたウォッチドッグタイマのカウンタをリセットし、異常があれば、該ウォッチドッグタイマのカウント値のハードウェアタイマによる累積を継続するステップと、ウォッチドッグタイマのカウント値が記憶手段に格納されたオーバーフロー値を越えたときに、オーバーフロー割り込みを発生させるステップと、オーバーフロー割り込みが発生すると、終了処理を呼び出すステップとを含んでなるアプリケーションタスク監視方法も提供する。
また、上記のアプリケーション監視タスクを起動するステップは、記憶手段に格納されたキャプチャ割り込みカウンタ値に基づいて、ハードウェアタイマのカウンタがキャプチャ割り込みカウンタ値に達したときにキャプチャ割り込みを発生させるステップと、キャプチャ割り込みによりアプリケーション監視タスクを起動するステップとを含むことが好ましい。
ここで、演算手段がアプリケーション監視タスクを複数の監視対象アプリケーションに対して実行することにより、記憶手段に記録されたタスク実行開始時刻又はタスク実行停止時刻に基づいて、監視対象アプリケーションの異常の有無を検知する際には、タスク実行開始時刻又はタスク実行停止時刻と現在時刻との差を求めて、それが記憶手段に記録した実行監視時間あるいは停止監視時間よりも大きいか小さいかを比較することにより、判断することができる。また、上記の終了処理を呼び出す手段又はステップは、該当する監視対象アプリケーションを終了させるほか、システムまたは演算手段のリセットを行うこと含むことができる。さらに、アプリケーション監視タスクを起動させるためにはウォッチドッグコールバック関数1と呼ぶ関数を用いて、演算手段がキャプチャ割り込みを呼び出すようにすることが好ましい。このウォッチドッグコールバック関数1を用いる代わりに前記システム内のオペレーションシステムのスケジュールタイマを用いて、定期的にアプリケーション監視タスクを起動させることも可能である。
さらに、ウォッチドッグタイマのカウント値が所定の値に達すると、ウォッチドッグコールバック関数2とよぶ関数を用いて、演算手段がオーバーフロー割り込みを呼び出すようにすることができる。ここで、オーバーフロー割り込みを発生させる機能を備えたハードウェアタイマと、キャプチャ割り込みを発生させる機能を備えたハードウェアタイマとをそれぞれ別個に設けて2個のハードウェアタイマを使用することも可能である。また、監視対象アプリケーションのタスク実行開始時刻またはタスク実行停止時刻あるいはその両方を記憶手段に記録する手段またはステップは、演算手段が、タスク動作開始通知関数およびタスク動作停止通知関数を用いて、前記アプリケーション監視タスク内の前記監視対象タスクの各動作状態を通知することにより実現することができる。
加えて、定期的に動作する監視対象アプリケーションのタスクに対しては、そのタスク動作開始時にタスク動作開始関数を呼び出し、不定期に動作する監視対象アプリケーションのタスクに対しては、タスクが終了あるいはタスクのがイベント待ちの状態になったときにタスク動作終了関数を呼び出して、対応するイベントが発生した場合にタスク動作開始関数を呼び出して、タスク実行開始時刻とタスク実行停止時刻を記録することが好ましい。ここで、前記システムの外部との通信により前記定期に動作する前記監視対象アプリケーションについては、一定時間が経過した後であっても通信がない場合には、システムまたは演算手段のリセットを行うようにすることができる。
また、本発明は、上記のいずれかの態様をコンピュータに実行させるためのプログラムも提供する。
なお、定期に動作するタスクとは、タスクの動作に対応するイベントの発生時刻があらかじめ分かっているものをいい、不定期に動作するタスクとは、タスクの動作に対応するイベントの発生時刻が不明なものをいう。
本発明によれば、定期で動作するタスクだけでなく、外部からのイベントによって不定期に動作するタスクについても監視することができ、タスクの動作時間だけでなく、停止時間についても監視できる。
まず、本発明の実施に用いられるタスク監視システムは、少なくとも1個又は2個のハードウェアタイマと、アプリケーション監視タスクに関連した情報を記憶する記憶手段と、ハードウェアタイマおよび記憶手段に接続された(コンピュータのCPUなどの)演算手段とを含んでなる。
ここで、上述のハードウェアタイマは、オーバーフロー割り込みとキャプチャ割り込みとの2種類の割り込みを発生させる機能を備えたハードウェアで構成されており、カウンタを含んでいる。また、アプリケーション監視タスクは、監視対象タスクであるアプリケーションのウォッチドッグ監視を行う。このアプリケーション監視タスクは、それが監視する全てのアプリケーションタスクよりも高い優先順位のタスクとして動作する。ここで、アプリケーション監視タスクは、好ましくは、それに関連して設けられたタスク監視設定テーブルとタスク監視状態ファイルとウォッチドッグタイマ発生状態管理フラグとを使用する。
図1に、本発明の実施に用いられる上記のタスク監視システムにおいて、監視対象タスクであるアプリケーションを監視する仕方をフローチャートで示す。まず、ステップ10において、演算手段がアプリケーション監視タスクを複数の監視対象タスク(アプリケーション)に対して起動する。そして、ステップ12において、アプリケーションの実行開始時刻、及び/又は、実行停止時刻が記憶手段に記憶される。次に、ステップ14では、前記記憶手段に記録されたタスク実行開始時刻又はタスク実行停止時刻に基づいて、監視対象アプリケーションの異常の有無を検知する。ここで、異常がなければ、アプリケーション監視タスクに関連して各監視対象のアプリケーションについて設けたウォッチドッグタイマのカウンタをリセットする。一方、異常があれば、ウォッチドッグタイマのカウント値のハードウェアタイマによる累積を継続する(すなわち、この場合にはウォッチドックタイマのカウント値はリセットされない)。
そして、ステップ18において、ウォッチドッグタイマのカウント値が前記記憶手段に格納されたオーバーフロー値を越えているかどうかが判断される。ここで、このカウント値がオーバーフロー値を超えている場合には、オーバーフロー割り込みが発生し、ステップ20に進んで終了処理が呼び出される。一方、カウント値がオーバーフロー値を超えていない場合には、ステップ10に再び戻る。そして、上記のステップ10〜18が所定の監視時間で繰り返される。
次に、図2に、ウォッチドッグタイマを用いたタスク監視システム内でのタスク監視処理の概略を示す。ここで、単に時間的な目安を与えるために、ウォッチドッグタイマの監視時間が600msである場合を例に考えるが、このような時間の大きさに本発明が限定されるものではない。
ウォッチドッグコールバック関数1(wdt_callbak1)は、ハードウェアタイマにより、例えば、100〜300msの呼出し周期(wdt_interval)で呼び出されて、アプリケーション監視タスクを起動させる。そして、アプリケーション監視タスクが起動すると、監視対象タスク(アプリケーション)の動作が正常であれば、ウォッチドッグリセット関数(sys_wdg_timer_reset)を返すので、ハードウェアタイマのカウンタがリセットされる。
また、図2では、ウォッチドッグタイマの監視時間が600msに設定されている。このウォッチドッグタイマの監視時間を超えるとハードウェアタイマのカウンタがタイムアップして、ウォッチドッグコールバック関数2(wdt_callbak2)が呼び出される。すなわち、このウォッチドッグコールバック関数2は、ハードウェアタイマのカウンタのカウント値が所定の値に達した場合(すなわち、ウォッチドッグタイムアップが発生した場合)に、割り込みハンドラによって呼び出され、アプリケーションの終了処理を開始させる。
本発明のタスク監視システムでは、アプリケーション監視タスクの起動にはキャプチャ割り込みを使用しており、ウォッチドッグタイマのタイムアップ時のウォッチドッグコールバック関数2の呼び出しにはオーバーフロー割り込みを使用している。ここで、オーバーフロー割り込みとキャプチャ割り込みについて、同じハードウェアタイマのカウンタのカウント値を別個独立に設定することができる。この場合、両者は、ハードウェアタイマのカウンタが指定されたカウント値だけカウントアップしたときに発生する割り込みである点において共通する。しかし、オーバーフロー割り込みは、割り込み発生後にハードウェアタイマのカウンタを0にリセットするが、キャプチャ割り込みはそのままカウントを継続させる(すなわち、リセットしない)点において両者は相違する。ここで、カウンタのカウント値としては、オーバーフロー割り込みの方がキャプチャ割り込みよりも大きい値が設定される。
なお、オーバーフロー割り込みを発生させる機能を備えたタイマと、キャプチャ割り込みを発生させる機能を備えたタイマの2個のハードウェアタイマを用いることもできる。本明細書においては、オーバーフロー割り込みとキャプチャ割り込みとの2つを発生させることができる機能を備えたハードウェアタイマを1つ使用した場合を例として説明する。
あるいは、キャプチャ割り込みによってウォッチドッグコールバック関数1を用いてアプリケーション監視タスクを起動する代わりに、オペレーションシステム(OS)に付属しているスケジュールタイマなどを使用して、アプリケーション監視タスクを定期的に起動することもできる。
図3は、図2のウォッチドッグタイマのカウンタのリセット動作の概略を示すものである。ここで、ウォッチドッグタイマのカウンタのカウント値は経過時間を示すものと考えることができる。図3を参照して、本願のタスク監視システムにおいて監視対象タスクが正常に動作している場合を以下に説明する。
まず、ウォッチドッグコールバック関数1が、ウォッチドッグコールバック関数1の呼出し周期(wdt_interval)で呼び出される。ここで、他の割り込み処理の動作に影響を与えずに処理時間を短くするために、このウォッチドッグコールバック関数1はアプリケーション監視タスクの起動のみを行っている。監視対象タスクが正常に動作している場合(正常時)には、このアプリケーション監視タスクの起動後にウォッチドッグタイマのタイマカウンタのカウント値がウォッチドッグリセット関数(sys_wdg_timer_reset)を用いてリセットされ、ウォッチドッグタイマのカウンタは再び0からカウントを開始する。そのため、正常時には、オーバーフロー割り込みは発生しない。
次に、図3を参照して異常時の動作について説明する。割り込み処理のダイナミックループなどの異常があるために、キャプチャ割り込みによって対応するアプリケーション監視タスクが起動できない場合には、ハードウェアタイマのカウンタのカウント値がウォッチドッグリセット関数(sys_wdg_timer_reset)によりリセットされず、カウンタのカウント値が累積されていき、最終的にはオーバーフロー割り込みが発生する。オーバーフロー割り込みが発生すると、ウォッチドッグコールバック関数2が呼び出されて、ウォッチドッグタイムアウト処理が行われる。
図4は、アプリケーション監視タスクを用いて監視対象タスクを監視する方法を示すものである。ここで、アプリケーション監視タスクは、前述したように、タスク監視設定テーブルとタスク監視状態ファイルとウォッチドッグ異常発生状態監視フラグとを使用するものである。
タスク監視設定テーブルには、監視対象タスクを特定する1〜N個(Nは正の整数)のタスク番号と、個々のタスク番号に対応させて、監視対象タスクについての実行監視時間および停止監視時間とが記録されている。実行監視時間とは、監視対象タスクの実行中のウォッチドッグ監視時間をいう。停止監視時間とは、タスクが停止中のウォッチドッグ監視時間をいう。
なお、ウォッチドッグ実行監視時間または停止監視時間が指定されていない場合(すなわち、監視時間が0の場合)には、該当する監視対象タスクについては、監視を行わない。
タスク監視状態ファイルは、1〜N個のタスク番号と、個々のタスク番号に対応させて、タスク実行開始時刻とタスク実行停止時刻とタスク監視状態フラグと統計情報とを含む。タスク実行開始時刻とはタスクの実行が開始された時点をいい、タスク実行停止時刻とはタスクの実行が終了した時点をいう。タスク監視状態フラグは、監視対象タスクが監視状態にあるか否かを表すものである。例えば、0であればその監視対象タスクについては監視がないことを表し、1であればその監視対象タスクの監視を実行中であることを表し、2であればその監視対象タスクの監視を停止中であることを表わすことができる。統計情報は、監視対象タスクについての適正な監視時間を設定するために統計的に処理された情報をいう。このような統計情報は、例えば、ある監視対象タスクについての監視回数、平均動作時間、動作最大時間、動作最小時間、動作ウォッチドッグタイマ発生回数、停止ウォッチドッグタイマ発生回数などの情報を含むことができる。ウォッチドッグタイマ発生状態管理フラグは、ウォッチドッグタイマの状態を表すものである。例えば、0であればウォッチドッグタイマは発生していないことを示し、1であればウォッチドッグタイマが発生していることを示すよう規定することができる。
また、各監視対象タスクの動作状態をアプリケーション監視タスクに通知するために、タスク動作開始通知関数およびタスク動作停止通知関数の2種類の関数を使用することができる。ここで、タスク動作開始通知関数とは、監視対象タスクの動作が開始したことをタスク監視状態ファイルに設定するための関数をいう。また、タスク動作停止通知関数とは、監視対象タスクの動作が停止したことをタスク監視状態ファイルに設定するための関数をいう。
図5に、アプリケーション監視タスクのフローチャートを示す。まず、ステップ400において、システムの起動時に他のタスクが動作を開始する前にアプリケーション監視タスクが起動される。ステップ402で、アプリケーション監視タスクは、その起動時に、キャプチャ割り込みとオーバーフロー割り込み(すなわち、ウォッチドッグコールバック関数1および2)のための割り込みハンドラを登録する。ステップ404では、ウォッチドッグ異常発生状態管理フラグをオフ(すなわち0)にする。ステップ406で、ウォッチドッグタイマを起動する。そして、ステップ408で、アプリケーション監視タスクは、ウォッチドッグコールバック関数1からの起動待ち状態になる。
そして、ハードウェアタイマのカウント値が所定の値に達すると、キャプチャ割込みによりウォッチドッグコールバック関数1が起動する。すると、アプリケーション監視タスクが再び起動して、監視対象タスクの監視が開始される。そしてステップ410では、演算手段により現在時刻が読み出される。この現在時刻は、タスク監視状態ファイルの一部として記録手段に記録される。
これらウォッチドッグ異常発生状態管理フラグをオフにするステップ404、ウォッチドッグタイマの起動のステップ406、現在時刻の読み出しのステップ410の処理は、登録された監視対象タスク全部について繰り返される。
次に、監視タスク分ループ(ステップ412)を説明する。このステップ412以降のステップ414〜420は、タスク監視状態ファイルに登録された監視対象タスクの数(1〜N個)まで繰り返される。まず、タスクが動作中であるかまたは停止中であるかを、タスク監視状態フラグを用いて演算手段が判断する。そして、この判断によって以下のようにその後の処理が区別される。
監視対象タスクが動作中であって、その監視対象タスクのタスク実行監視時間が0以外の場合(すなわち、タスク監視要求がある場合)には、ステップ414においてタスク実行開始時刻と現在時刻とを比較して実行時間を算出する。そして、ステップ416において、実行時間がタスク実行監視時間より大きい場合には異常発生と判断し、ステップ418においてウォッチドッグ異常発生ログを保存してから、ステップ420においてウォッチドッグ異常発生状態管理フラグをオン(すなわち1)にする。そして、ステップ412に戻る。一方、ステップ416において、実行時間がタスク実行監視時間より小さい場合には、異常は発生していないので、そのままステップ412に戻る。この場合には、ウォッチドッグ異常発生状態管理フラグはオフ(すなわち0)のままである。
同様にして、監視対象タスクが停止中であって、その監視対象タスクのタスク停止監視時間が0以外の場合(すなわち、タスク監視要求がある場合)には、ステップ414においてタスク実行停止時刻と現在時刻とを比較して停止時間を算出する。そして、ステップ416において、停止時間がタスク停止監視時間より大きい場合には異常発生と判断し、ステップ418において異常発生ログを保存してから、ステップ420においてウォッチドッグ異常発生状態管理フラグをオン(すなわち1)にする。そして、ステップ412に戻る。一方、ステップ416において、停止時間がタスク実行停止監視時間より小さい場合には、異常は発生していないので、そのままステップ412に戻る。この場合には、ウォッチドッグ異常発生状態管理フラグはオフ(すなわち0)のままである。
これらのステップ414〜420を、タスク番号順に、全ての登録された監視対象タスクについて繰り返す。全ての監視対象タスクについて処理が終了すると、ステップ412に戻った後に、ステップ422へと進み、監視対象タスクに異常が発生していないかどうかをウォッチドッグ異常発生状態管理フラグがオンまたはオフであるかに基づいて、演算手段が判断する。
ここで、異常が発生していない場合には、ステップ424においてウォッチドッグリセット関数(sys_wdg_timer_reset)を用いてウォッチドッグタイマのカウント値がリセットされる。一方、異常が発生している場合には、ステップ426においてウォッチドッグリセット関数が呼び出されないので、ウォッチドッグタイマのカウント値がリセットされず(ウォッチドッグ異常発生処理)、カウント値は増大し続ける。そして、再びステップ408に戻り、全ての監視対象タスク分まで上記ステップ408〜426の処理が繰り返される。
ある監視対象タスクについて異常がある場合には、ウォッチドッグ異常状態管理フラグがオンのままになるので、ウォッチドッグタイマのカウント値がリセットされることなく、最終的には、カウント値が所定の値に達する。すると、オーバーフロー割り込みが発生して、ウォッチドッグコールバック関数2が呼び出されることになる。
ウォッチドッグ異常発生状態管理フラグがオンの場合(異常発生ありの場合)には、メモリやハードディスクドライブなどの記録手段にあるタスク監視状態ファイル中に、動作中ウォッチドッグ異常発生回数または停止異常発生回数が格納される。また、ウォッチドッグ異常発生状態管理フラグがオフの場合(異常発生なしの場合)には、監視対象タスクの監視回数と平均動作時間と動作最大時間と動作最小時間とが記録手段に同様に格納される。
次に、上記のキャプチャ割り込み処理およびオーバーフロー割り込み処理に用いられるウォッチドッグコールバック関数1および2について簡単に説明する。キャプチャ割り込み処理では、ウォッチドッグコールバック関数1が呼び出されて(ステップ4002)、アプリケーション監視タスクが起動される(ステップ408)。つまり、ウォッチドッグコールバック関数1は、アプリケーション監視タスクの起動処理を行う。また、オーバーフロー割り込み処理では、ウォッチドッグコールバック関数2が呼び出され(ステップ432)、ウォッチドッグコールバック関数2から応答が戻ってきたら、例えば、システムのリセットを行うことができる(ステップ440)。つまり、ウォッチドッグコールバック関数2は、システムの停止処理を行う。
上記の図5において、ステップ400においてアプリケーション監視タスクを起動するために、キャプチャ割り込みが発生してウォッチドッグコールバック関数1が呼び出されることになる。キャプチャ割り込みが発生した後の処理をステップ4000〜4010に示す。ここで、ステップ4000においてキャプチャ割り込みが発生すると、ステップ4002においてウォッチドッグコールバック関数1が呼び出される。そして、ステップ4004において呼び出されたウォッチドッグコールバック関数1がステップ4006においてアプリケーション監視タスクの起動処理を行う。そして、ステップ4008において起動処理が終了すると、その旨をステップ4002において演算手段に返し、ステップ4010においてキャプチャ割り込み処理が終了する。
上記の図5において、ウォッチドッグ異常発生状態管理フラグがオンの場合(異常発生ありの場合)には、ウォッチドッグタイマのカウント値がリセットされないので最終的にオーバーフロー割り込みが発生することになる。オーバーフロー割り込みが発生した後の処理をステップ430〜442に示す。ここで、ステップ430においてオーバーフロー割り込みが発生すると、ステップ432においてウォッチドッグコールバック関数2が呼び出される。そして、ステップ436において呼び出されたウォッチドッグコールバック関数2がアプリケーション異常停止処理を行い、ステップ438においてアプリケーションを終了させる。そして、アプリケーションが終了した旨の応答を演算手段が受けると、システムのリセット(または演算手段(CPU)のリセット)が行われる。ここで、システム又はCPUのリセットの代わりに、単に異常があった監視対象アプリケーションのみに対する終了処理を行うこともできる。なお、上記のウォッチドッグコールバック関数1および2は、アプリケーションの処理とシステムの処理との機能を分離するために設けられている。
図6に、本発明のタスク監視システムを用いて、定期または不定期に動作するアプリケーションタスクを監視する仕方を示す。
まず、定期的に動作するタスクを監視する仕方を説明する。定期的に動作するタスクは、タスク動作開始時に「タスク動作開始関数」を呼び出し(ステップ500)、その後に処理を行う(ステップ502)。そして、処理が終了すると、一定時間スリープ状態になる(ステップ504)。ここで、タスク動作開始関数は、タスク監視状態フラグをオン(すなわち1)に設定して(ステップ520)、タスク監視状態ファイル中のタスク実行開始時刻として、タスク状態監視関数の呼び出し時の現在時刻を保存する(ステップ522)。なお、ポーリング・セレクティング方式の通信のようにタスク監視システムの外部と通信する定期的なタスクを監視対象としている場合に、所定の通信時間が経過しても通信がないときには、通信LSIの異常などが考えられる。そのような場合には、ハードウェアのリセットなどの処理を行うために、上記処理が使用される。
次に、不定期に動作するタスク(例えば、不定期なイベントにより起動するタスク)を監視する仕方を説明する。不定期なイベントにより起動するタスクは、イベント待ちになる前に「タスク動作停止関数」を呼びだし(ステップ506)、その後イベント待ちに入る(ステップ508)。イベントが発生して実行中になった場合には、「タスク動作開始関数」を呼び出し(ステップ510)、その後に処理を実行する(ステップ512)。
本発明の実施に用いられるタスク監視システムにおいて監視対象タスク(アプリケーション)を監視する仕方を示す概略フローチャートである。 本発明の実施に用いられるタスク監視システム内でのタスク監視処理を示す概略図である。 図2のタスク監視システム内にあるウォッチドッグタイマのタイマカウンタのリセット動作を示す概略図である。 本発明の実施に用いられるアプリケーション監視タスクを用いて監視対象タスクを監視する方法を示す概略図である。 本発明の実施に用いられるアプリケーション監視タスクの処理を示すフローチャートである。 本発明の実施に用いられるタスク監視システムを用いて、定期または不定期に動作するアプリケーションタスクを監視する仕方を示すフローチャートである。
符号の説明
400 アプリケーション監視タスク
4000 キャプチャ割り込み
430 オーバーフロー割り込み

Claims (4)

  1. 演算手段と、
    1個又は2個のハードウェアタイマと、
    アプリケーション監視タスクのための情報を少なくとも記憶する記憶手段と、
    監視対象アプリケーションのタスク実行開始時刻またはタスク実行停止時刻あるいはその両方を前記記憶手段に記録する手段と、
    周期的にアプリケーション監視タスクを起動する手段と、
    前記演算手段が該アプリケーション監視タスクを複数の監視対象アプリケーションに対して実行することにより、前記記憶手段に記録されたタスク実行開始時刻又はタスク実行停止時刻に基づいて、監視対象アプリケーションの異常の有無を検知し、異常がなければ、該アプリケーション監視タスクに関連して各監視対象アプリケーションについて設けたウォッチドッグタイマのカウンタをリセットし、異常があれば、該ウォッチドッグタイマのカウント値のハードウェアタイマによる累積を継続する手段と、
    前記ウォッチドッグタイマのカウント値が前記記憶手段に格納されたオーバーフロー値を越えたときに、オーバーフロー割り込みを発生させる手段と、
    該オーバーフロー割り込みが発生すると、終了処理を呼び出す手段と
    を含んでなるアプリケーションタスク監視システム。
  2. 前記アプリケーション監視タスクを起動する手段が、
    該記憶手段に格納されたキャプチャ割り込みカウンタ値に基づいて、ハードウェアタイマのカウンタが該キャプチャ割り込みカウンタ値に達したときにキャプチャ割り込みを発生させる手段と、
    該キャプチャ割り込みによりアプリケーション監視タスクを起動する手段と
    を含んでなる請求項1に記載のアプリケーションタスク監視システム。
  3. 演算手段と、1個又は2個のハードウェアタイマと、アプリケーション監視タスクのための情報を少なくとも記憶する記憶手段を含んでなるシステムにおいて実行される、
    監視対象アプリケーションのタスク実行開始時刻またはタスク実行停止時刻あるいはその両方を前記記憶手段に記録するステップと、
    定期的にアプリケーション監視タスクを起動するステップと、
    前記演算手段が該アプリケーション監視タスクを複数の監視対象アプリケーションに対して実行することにより、前記記憶手段に記録されたタスク実行開始時刻又はタスク実行停止時刻に基づいて、監視対象アプリケーションの異常の有無を検知し、異常がなければ、該アプリケーション監視タスクに関連して各監視対象アプリケーションについて設けたウォッチドッグタイマのカウンタをリセットし、異常があれば、該ウォッチドッグタイマのカウント値のハードウェアタイマによる累積を継続するステップと、
    前記ウォッチドッグタイマのカウント値が前記記憶手段に格納されたオーバーフロー値を越えたときに、オーバーフロー割り込みを発生させるステップと、
    該オーバーフロー割り込みが発生すると、終了処理を呼び出すステップと
    を含んでなるアプリケーションタスク監視方法。
  4. 前記アプリケーション監視タスクを起動するステップが、
    該記憶手段に格納されたキャプチャ割り込みカウンタ値に基づいて、ハードウェアタイマのカウンタが該キャプチャ割り込みカウンタ値に達したときにキャプチャ割り込みを発生させるステップと、
    該キャプチャ割り込みによりアプリケーション監視タスクを起動するステップと
    を含んでなる請求項3に記載のアプリケーションタスク監視方法。
JP2005041672A 2005-02-18 2005-02-18 アプリケーションタスク監視システムおよび方法 Pending JP2006227962A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005041672A JP2006227962A (ja) 2005-02-18 2005-02-18 アプリケーションタスク監視システムおよび方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005041672A JP2006227962A (ja) 2005-02-18 2005-02-18 アプリケーションタスク監視システムおよび方法

Publications (1)

Publication Number Publication Date
JP2006227962A true JP2006227962A (ja) 2006-08-31

Family

ID=36989292

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005041672A Pending JP2006227962A (ja) 2005-02-18 2005-02-18 アプリケーションタスク監視システムおよび方法

Country Status (1)

Country Link
JP (1) JP2006227962A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103853625A (zh) * 2012-12-06 2014-06-11 苏州工业园区新宏博通讯科技有限公司 多任务看门狗的实现装置和方法
JPWO2013124918A1 (ja) * 2012-02-20 2015-05-21 パナソニック株式会社 イニシエータ装置、ターゲット装置、通信システム、タイムアウト検出方法、およびタイムアウト検出プログラム
CN112612636A (zh) * 2020-12-22 2021-04-06 浙江中控技术股份有限公司 硬件看门狗的控制方法、看门狗系统
CN112783624A (zh) * 2021-01-18 2021-05-11 广汽零部件有限公司 用于汽车的非实时调度系统以及任务执行方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08202587A (ja) * 1995-01-23 1996-08-09 Fujitsu Ltd ソフトウェア自己診断機能を有するディジタル処理装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08202587A (ja) * 1995-01-23 1996-08-09 Fujitsu Ltd ソフトウェア自己診断機能を有するディジタル処理装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2013124918A1 (ja) * 2012-02-20 2015-05-21 パナソニック株式会社 イニシエータ装置、ターゲット装置、通信システム、タイムアウト検出方法、およびタイムアウト検出プログラム
CN103853625A (zh) * 2012-12-06 2014-06-11 苏州工业园区新宏博通讯科技有限公司 多任务看门狗的实现装置和方法
CN112612636A (zh) * 2020-12-22 2021-04-06 浙江中控技术股份有限公司 硬件看门狗的控制方法、看门狗系统
CN112612636B (zh) * 2020-12-22 2023-05-05 浙江中控技术股份有限公司 硬件看门狗的控制方法、看门狗系统
CN112783624A (zh) * 2021-01-18 2021-05-11 广汽零部件有限公司 用于汽车的非实时调度系统以及任务执行方法

Similar Documents

Publication Publication Date Title
US9720761B2 (en) System fault detection and processing method, device, and computer readable storage medium
JP4562568B2 (ja) 異常検出プログラムおよび異常検出方法
JP5726340B2 (ja) プロセッサシステム
JP2016224883A (ja) 異常検出方法、情報処理装置および異常検出プログラム
KR101203099B1 (ko) 운영체제 태스크의 실행시간 모니터링 방법 및 시스템
CN103530197B (zh) 一种检测及解决Linux系统死锁的方法
JP2006227962A (ja) アプリケーションタスク監視システムおよび方法
JP2008225807A (ja) 制御装置およびそのプログラム暴走監視方法
JP2965075B2 (ja) プログラム実行状態監視方法
JPWO2016204070A1 (ja) Cpu監視装置
JP2009151440A (ja) プログラムハング検出方法及びそれを適用したコンピュータ装置
CN111143127B (zh) 监管网络设备的方法、装置、存储介质及设备
JP3859564B2 (ja) イベント通知タスク制御処理方式及び方法並びにプログラム
JP2870250B2 (ja) マイクロプロセッサの暴走監視装置
JPWO2014112039A1 (ja) 情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラム
JP2012108848A (ja) 動作ログ収集システム及びプログラム
CN101149702A (zh) 操作系统故障检测的方法和装置
JP2008204013A (ja) スレッド動作異常検知方法、マルチスレッドシステム
CN111597016B (zh) 一种系统任务的时间保护方法、系统、存储介质及终端
JP2005293164A (ja) タスク監視方式
JPH10269110A (ja) 計算機システムのハングアップ回避方法並びにこの方法を用いた計算機システム。
JP2018005490A (ja) 電子制御装置
JPH11327959A (ja) プロセッサの異常監視方法及び装置
WO2017037863A1 (ja) 計算機装置及び制御方法及び制御プログラム
JP5906807B2 (ja) 演算処理装置及びストール監視方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100709

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100827

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100906

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110128

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110308

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20110422

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110930