JP2007272581A - 監視プログラム、監視方法、および、監視装置 - Google Patents

監視プログラム、監視方法、および、監視装置 Download PDF

Info

Publication number
JP2007272581A
JP2007272581A JP2006097690A JP2006097690A JP2007272581A JP 2007272581 A JP2007272581 A JP 2007272581A JP 2006097690 A JP2006097690 A JP 2006097690A JP 2006097690 A JP2006097690 A JP 2006097690A JP 2007272581 A JP2007272581 A JP 2007272581A
Authority
JP
Japan
Prior art keywords
system call
monitoring
program
buffer
monitored program
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
JP2006097690A
Other languages
English (en)
Other versions
JP4627275B2 (ja
Inventor
Toshifumi Masuko
敏文 増子
Shoichi Kamio
彰一 神尾
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006097690A priority Critical patent/JP4627275B2/ja
Publication of JP2007272581A publication Critical patent/JP2007272581A/ja
Application granted granted Critical
Publication of JP4627275B2 publication Critical patent/JP4627275B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】被監視プログラムに発生するループ障害をより高い精度で検出することを可能とした監視プログラムを提供することである。
【解決手段】本発明の監視プログラムは、実行されている被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するステップと、そのバッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定ステップと、その変化数がその閾値以内である場合に、被監視プログラムのシステムコールの発行状況を取得するステップと、取得された被監視プログラムのシステムコールの発行状況を基に、被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、そのバッファに格納される時刻の範囲内に存在しない場合に、被監視プログラムにループ障害が発生したと判定する第2判定ステップを備える。
【選択図】図2

Description

本発明は、監視プログラム、監視方法、および、監視装置に関し、特に、被監視プログラムに発生するループを検出することを可能とした監視プログラム、監視方法、および、監視装置に関する。
プログラムの実行中に、そのプログラムの実行するアドレスが周期的に変化する状態(ループ状態)がある。ループがいつまでも終了しない(無限ループ)等の障害がこのループ状態時に発生する場合がある。このようなループに発生する障害を以下ではループ障害と呼ぶ。
ループ障害を検出する技術として、例えば、特許文献1および2の技術が知られている。
特許文献1では、プログラムカウンタの値を一定の時間間隔で取得し、その取得したプログラムカウンタ値が1通りの値しかとらなくなった場合に、ループ障害が発生していると判定している。
また、特許文献2では、プログラムカウンタそのものの値を使用する代わりに、そのプログラムカウンタの値を例えば、1000で割った変換値を用いて、一定間隔で取得されるプログラムカウンタ値から得られる変換値の値が1通りの値しかとらなくなった場合に、ループ障害が発生したと判定している。
しかし、特許文献1の技術では、プログラムカウンタ値が1通りの値しかとらないようなループについては発生していることを検出できるが、例えば、2通り以上の値をとってループが発生している場合は検出できない。
また、特許文献2の技術では、予め定められた範囲の中でアドレス(プログラムカウンタ値)が周期的に変化する場合であれば、ループの発生を検出できる。しかし、その予め定められた範囲より広い範囲にまたがった(例えば、複数の関数のまたがった)ループについては、その発生が検出できない。
さらに、I/O処理等では、かなり狭い範囲でアドレスが変化して、ループを発生する場合(1文字入力の繰り返しなど)があるが、上記特許文献1および2の技術では、そのようなI/O処理等を問題のあるループとして誤検出する恐れがある。
特開平10−161908号公報 「マイクロコンピュータの暴走検出方法」 特開平3−292545号公報 「プログラムループの検知回復装置」
本発明の課題は、被監視プログラムに発生するループ障害をより高い精度で検出することを可能とした監視プログラム、監視方法、および、監視装置を提供することである。
本発明の第1態様の監視プログラムは、被監視プログラムを監視する処理をコンピュータに実行させる監視プログラムにおいて、実行されている前記被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するステップと、前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定ステップと、前記変化数が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するステップと、取得された前記被監視プログラムのシステムコールの発行状況を基に、被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない場合に、被監視プログラムにループ障害が発生したと判定する第2判定ステップを前記コンピュータに実行させることを特徴とする監視プログラムである。
ここで、第1判定ステップにおいて変化数が閾値以内と判定された場合、すなわち、ループ状態が検出された場合に、さらに、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないことを判定している。これにより、被監視プログラムが正常に動作している証拠の1つである、システムコールが、目安としての時間(バッファに格納される時刻の範囲内)が経過しても、発行されていないことになり、ループ障害の疑いが持たれる場合を検出できる(ループ障害が検出できる)。
なお、ループ状態が検出された場合に、さらに、被監視プログラムが現在システムコールを発行中でないことを併せて判定することで、I/O処理等で、かなり狭い範囲でアドレスが変化して、ループを発生する場合を、ループ障害として誤検出することを回避できる。また、第1判定ステップの変化数を、例えば、取得したアドレスの上位側ビットについて見ることにより、広い範囲にまたがった(例えば、複数の関数のまたがった)ループについても、ループが検出でき、よって、システムコールに関する判定と併せることで、その広い範囲にまたがったループについてもループ障害が検出できる。以上のことから、ループ障害をより高い精度で検出することが可能となる。
本発明の第2態様の監視プログラムは、被監視プログラムを監視する処理をコンピュータに実行させる監視プログラムにおいて、実行されている前記被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するステップと、前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定ステップと、前記変化数が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するステップと、取得された前記被監視プログラムのシステムコールの発行状況を基に、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないかどうかを判定する第2判定ステップと、前記第2判定ステップにおいて、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないと判定された場合に、ループ障害が発生したと仮判定するループ障害仮判定ステップと、前記ループ障害の仮判定が行われてから、予め定められた監視継続時間、前記変化数が前記閾値以内である状態が続き、システムコールを発行中でない状態が続き、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない状態が続いた場合は、ループ障害が発生したと判定し、前記ループ障害の仮判定が行われてから、予め定められた監視継続時間内のいずれかの時点で、前記変化数が前記閾値を超えるか、システムコールが発行中の状態となるか、または、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在するかした場合は、前記ループ障害の仮判定を取り消す判定を行うループ障害判定ステップ、を前記コンピュータに実行させることを特徴とする監視プログラムである。
ここで、第1判定ステップにおいて変化数が閾値以内と判定された場合、すなわち、ループ状態が検出された場合に、さらに、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないことを判定している。これにより、被監視プログラムが正常に動作している証拠の1つである、システムコールが、目安としての時間(バッファに格納される時刻の範囲内)が経過しても、発行されていないことになり、ループ障害の疑いが持たれる場合を検出できる(ループ障害が検出できる)。
なお、ループ状態が検出された場合に、さらに、被監視プログラムが現在システムコールを発行中でないことを併せて判定することで、I/O処理等で、かなり狭い範囲でアドレスが変化して、ループを発生する場合を、ループ障害として誤検出することを回避できる。また、第1判定ステップの変化数を、例えば、取得したアドレスの上位側ビットについて見ることにより、広い範囲にまたがった(例えば、複数の関数のまたがった)ループについても、ループが検出でき、よって、システムコールに関する判定と併せることで、その広い範囲にまたがったループについてもループ障害が検出できる。
さらに、第1判定ステップおよび第2判定ステップの判定結果が、予め定められた監視継続時間だけ持続する場合に、ループ障害が検出されたと判定しているので、例えば、ループ状態の時間が長いだけで、正常に動作するものを、ループ障害として誤検出することを回避できる。以上のことから、ループ障害をより高い精度で検出することが可能となる。
本発明の第3態様の監視方法は、被監視プログラムを監視する処理をコンピュータが実行する監視方法において、実行されている前記被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するステップと、前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定ステップと、前記変化数が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するステップと、取得された前記被監視プログラムのシステムコールの発行状況を基に、被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない場合に、被監視プログラムにループ障害が発生したと判定する第2判定ステップを備えることを特徴とする監視方法である。
本発明の第4態様の監視方法は、被監視プログラムを監視する処理をコンピュータが実行する監視方法において、実行されている前記被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するステップと、前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定ステップと、前記変化数が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するステップと、取得された前記被監視プログラムのシステムコールの発行状況を基に、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないかどうかを判定する第2判定ステップと、前記第2判定ステップにおいて、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないと判定された場合に、ループ障害が発生したと仮判定するループ障害仮判定ステップと、前記ループ障害の仮判定が行われてから、予め定められた監視継続時間、前記変化数が前記閾値以内である状態が続き、システムコールを発行中でない状態が続き、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない状態が続いた場合は、ループ障害が発生したと判定し、前記ループ障害の仮判定が行われてから、予め定められた監視継続時間内のいずれかの時点で、前記変化数が前記閾値を超えるか、システムコールが発行中の状態となるか、または、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在するかした場合は、前記ループ障害の仮判定を取り消す判定を行うループ障害判定ステップ、を備えることを特徴とする監視方法である。
本発明の第5態様の監視装置は、被監視プログラムを監視する処理を実行する監視装置において、実行されている前記被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するアドレス取得部と、前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定ステップと、前記変化数が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するシステムコール発行状況取得部と、取得された前記被監視プログラムのシステムコールの発行状況を基に、被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない場合に、被監視プログラムにループ障害が発生したと判定する第2判定部を備えることを特徴とする監視装置である。
本発明によれば、広い範囲にまたがった(例えば、複数の関数のまたがった)ループについても、ループ障害の発生が検出できる。
また、本発明によれば、I/O処理等で、かなり狭い範囲でアドレスが変化して、ループを発生する場合を、ループ障害として誤検出することを回避できる。
また、本発明によれば、ループ状態の時間が長いだけで、正常に動作するものを、ループ障害として誤検出することを回避できる。
以下、本発明の実施の形態を、図面を参照しながら詳細に説明する。
図1は、本発明の各実施形態に共通する監視システムの全体構成図である。
図1において、被監視プログラム(被監視プロセス)11は、本発明の監視処理部(監視プロセス)12によって、その動作が監視されるプログラムである。この被監視プログラムは、オペレーティングシステム(OS)13上で実行されている。
OS13は、自身の上で実行されるプログラムが発行するシステムコールの発行状況を監視する機能(システムコール発行状況監視機能)14を備える。この監視機能14は、自身の上で実行されるプログラムが発行したシステムコールの履歴情報を保存する。この履歴は、プログラム(プロセス)のID、システムコールの発行時刻(OSがプログラムからシステムコールを受け取った時刻)、システムコールのステータス(終了(正常終了、エラー終了)したか、発行中(OSからの復帰命令待ち)か、等)、を含む。
また、OS13は、自身の上で実行されるプログラム上のどのアドレスがCPUによって現在実行されているかを示すプログラムカウンタ値を取得する機能(プログラムカウンタ値取得機能)15を備える。この取得機能15は、監視処理部12からのプログラムカウンタ値の取得要求を受信すると、その取得要求を被監視プログラム(被監視プロセス)11に出力する。被監視プログラム11は、受信した取得要求に対応して、その時点でCPUが実行(フェッチ)しているアドレスの値(プログラムカウンタの値)を取得機能15に送信する。取得機能15は、このプログラムカウンタの値を監視処理部12に送信する。
図2は、本発明の第1実施形態の監視処理部の構成を示すブロック図である。
図2に示すように、監視処理部20は、予め定められたタイミングで、実行中の被監視プログラムのアドレス(プログラムカウンタ値)を取得してバッファ部23に格納するプログラムカウンタ値取得部21、取得されたプログラムカウンタ値を基に、そのプログラムカウンタ値から上位側ビット(変換値)を取り出してバッファ部23の対応する項目に書き込む変換値算出部24、バッファ部23に格納された複数のアドレスの上位側ビットを基に、それらアドレスの値またはそれらアドレスの値に基づいて算出された値が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定することでループを検出するループ検出部25、その変化数がその閾値以内であると判定された場合に、システムコール発行状況取得部22を介して、被監視プログラムのシステムコールの発行状況を取得し、その発行状況を基に、被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない場合に、被監視プログラムにループ障害が発生したと判定するループ障害判定部26、被監視プログラムのシステムコールの発行状況の取得要求を、OS13のシステムコール発行状況監視機能14に出力して、その監視機能14から、被監視プログラムのシステムコールの発行状況を取得するシステムコール発行状況取得部22、ループ障害判定部26によってループ障害が発生したと判定された場合に、ループ障害が発生したことを示すメッセージ等を出力する出力部27、を備える。
図3は、図2のバッファ部23に格納されるデータ例(その1)を示す図である。
図3に示されるように、バッファ部23は、先入れ先出し方式のFIFO(First-In First-Out)である。このバッファ部23は、予め定められた数のデータ(図3では、9個のデータ)を格納可能なバッファである。
バッファに格納されるデータは、時間(プログラムカウンタ値がバッファ部23に格納された時刻)、プログラムカウンタ値(PC値)、変換値(プログラムカウンタ値から下位側ビットを切り捨てて得られる上位側ビットの値)、の各項目を備える。
上記変換値は、例えば、プログラムカウンタ値を1000で割った値を整数型の変数に代入することにより得られる。
なお、図2からは定かでないが、ユーザは、監視処理部20に付属のユーザインターフェイス部(図2では、不図示)を介して、以下の項目を指定する。
(1)プログラムカウンタ値取得間隔(監視処理部20がOS13のプログラムカウンタ値取得機能15を介してプログラムカウンタ値を取得する時間間隔)
(2)監視テーブルサイズ(バッファ部23に格納するデータ数)
(3)プログラムカウンタ値の変化数(バッファ部23内に保持されるプログラムカウンタ値の上位側ビットが何通りの異なる値をとるかという数がこの変化数未満であれば、被監視プログラムはループ状態にあるものとみなす閾値)
(4)被監視プログラム(被監視プロセス)
図4Aおよび図4Bは、本発明の第1実施形態の監視処理部によって実行される監視処理のフローチャートである。
まず、図4Aにおいて、ステップS101で、初期化処理が実行される。この初期化処理では、現在時刻をタイマ監視処理部(図2では、不図示)がタイマ監視時に参照する参照変数に設定するとともに、上述の監視テーブルサイズ分の領域が監視テーブル(バッファ)用の領域としてメモリ上に確保される。
そして、ステップS102で、タイマ監視処理部によるタイマ監視処理が実行される。このタイマ監視処理では、ステップS101で参照変数に設定された値と、ステップS102の時点での現在時刻との差が算出され、その差が、上述のプログラムカウンタ値取得間隔より短いうちは、差の算出を繰り返し、その差が、プログラムカウンタ値取得間隔に一致したときに、参照変数に、その時点での時刻を設定するとともに、ステップS103に進む。
ステップS103では、プログラムカウンタ値取得部21によって、実行中の被監視プログラムのアドレス(プログラムカウンタ値)が、OS13の既存の機能(プログラムカウンタ値取得機能)15を介して取得され、バッファ部(監視テーブル)23の末尾に追加される。
すなわち、この監視テーブルに追加されたデータは、図3に示すように、監視テーブルへの書き込み時刻(ステップS102の参照変数に設定された現在時刻)、プログラムカウンタ値、変換値の各項目を備える。
そして、ステップS104で、監視テーブルに、上述の監視テーブルサイズに指定された数のデータが格納されたかが判定される。なお、監視テーブルへのデータ書き込みが一定の間隔(プログラムカウンタ値取得間隔)毎に行われることを考えると、ステップS104で、監視テーブルに一定時間分のデータがあるかが判定される、ということもできる。
ステップS104において、監視テーブルに、監視テーブルサイズに指定された数のデータが格納されていなければ、ステップS102に戻る。
一方、ステップS104において、監視テーブルに、監視テーブルサイズに指定された数のデータが格納されていれば、ステップS105において、監視テーブル上の変換値が何通りの異なる値をとるかという数が、上述のプログラムカウンタ値の変化数(閾値)以上であるかが判定される。
図5A、図5B、および、図5Cは、プログラムカウンタ値の変化数=4に設定した場合の、監視テーブルのデータ例を示す図である。図5Aの監視テーブルでは、変換値は、4以上の異なる値をとるため、被監視プログラムはループ状態にはないと判定される。図5Bの監視テーブルでは、変換値は、3つの異なる値をとるため、被監視プログラムは、例えば、数個の関数をまたいだループ状態にあるものと判定される。図5Cの監視テーブルでは、変換値は、1つの値しかとらないため、被監視プログラムは、例えば、図5Bの数個の関数をまたいだループ状態より、狭い範囲でループ状態にあるものと判定される。
ステップS105において、監視テーブル上の変換値が何通りの異なる値をとるかを示す数が、プログラムカウンタ値の変化数(閾値)以上であると判定されれば、ステップS102に戻る。
一方、監視テーブル上の変換値が何通りの異なる値をとるかを示す数が、プログラムカウンタ値の変化数(閾値)より小さいと判定されれば、ステップS106において、システムコール発行状況取得部22によって、被監視プログラムのシステムコールの発行状況の取得要求が、OS13のシステムコール発行状況監視機能14に出力され、その監視機能14から、被監視プログラムのシステムコールの発行状況が取得される。
続いて、図4Bに移り、この取得された被監視プログラムのシステムコールの発行状況を基に、ステップS107、S108、S109での判定がループ障害判定部26によって行われる。まず、ステップS107では、ループ障害判定部26によって、被監視プログラムがシステムコールを発行中であるか、すなわち、OSからの復帰命令待ちであるかが判定される。
ステップS107において、被監視プログラムがシステムコールを発行中であると判定された場合、ステップS102に戻る。I/O処理等でループが形成されている場合が、この場合に含まれる。
一方、ステップS107において、被監視プログラムがシステムコールを発行中でないと判定された場合、ステップS108において、ループ障害判定部26によって、ループ時間内にシステムコールが発行されたかが判定される。なお、「ループ時間内」とは、監視テーブルにデータが書き込まれた時刻の範囲内という意味である。
ステップS108において、ループ時間内にシステムコールが発行されていないと判定された場合、すなわち、ループ時間以前にシステムコールが発行されたと判定された場合、ステップS110に進む。
一方、ステップS108において、ループ時間内にシステムコールが発行されたと判定された場合、ステップS109において、そのループ時間内に発行されたシステムコールが正常終了しているかどうかが判定される。
ステップS109において、ループ時間内に発行されたシステムコールが正常終了していると判定された場合、ステップS102に戻る。
ステップS109において、ループ時間内に発行されたシステムコールがエラー終了していると判定された場合、ステップS110に進む。
なお、ステップS109の判定を行うかどうかをユーザが上述のユーザインターフェイスを介して指定できるようにしてもよい。ステップS109の判定を行わない場合、ステップS108において、ループ時間内にシステムコールが発行されたと判定された場合に直ちに、ステップS102に戻る。
ステップS110では、資料採取が行われる。資料採取では、以下の情報が出力部27を介して出力される。
1.バッファ部33に保持される複数件のデータ。
2.最近取得したシステムコールについての情報。
ここで、上記1.は、ループ範囲を特定するのに有用な情報である。また、上記2.は、ループ処理直前にプログラムが何を処理していたのかを特定するのに有用な情報である。
そして、続く、ステップS111で、ループ障害が発生したことを示すメッセージが、出力部27によって出力され、ステップS102に戻る。
続いて、本発明の第2実施形態について説明する。
第1実施形態でループ障害と判定されたものの中には、ループ状態(閾値より小さい数のアドレスを周期的に繰り返す状態)の時間が長いだけで、正常に動作するものも含まれる場合がある。第2実施形態では、そのようなものをループ障害の判定から除くようにしている。
図6は、本発明の第2実施形態の監視処理部の構成を示すブロック図である。
図6に示すように、監視処理部30は、予め定められたタイミングで、実行中の被監視プログラムのアドレス(プログラムカウンタ値)を取得してバッファ部33に格納するプログラムカウンタ値取得部31、取得されたプログラムカウンタ値を基に、そのプログラムカウンタ値から上位側ビット(変換値)を取り出してバッファ部33の対応する項目に書き込む変換値算出部34、バッファ部33に格納された複数のアドレスの上位側ビットを基に、それらアドレスの値またはそれらアドレスの値に基づいて算出された値が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定することで、ループを検出するループ検出部36、その変化数がその閾値以内であると判定された場合に、システムコール発行状況取得部32を介して、被監視プログラムのシステムコールの発行状況を取得し、その発行状況を基に、被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファ部33に格納される時刻の範囲内に存在しないかどうかを判定するループ障害仮判定部37、被監視プログラムのシステムコールの発行状況の取得要求を、OS13のシステムコール発行状況監視機能14に出力して、その監視機能14から、被監視プログラムのシステムコールの発行状況を取得するシステムコール発行状況取得部32、ループ検出部36およびループ障害仮判定部37から構成されるループ障害判定部35によってループ障害が発生したと判定された場合に、ループ障害が発生したことを示すメッセージ等を出力する出力部38、ループ障害判定部35によってループ障害が発生したと判定された場合に、バッファ部33のバッファサイズを適正値に変更するバッファサイズ変更部39、を備える。
ここで、ループ障害判定部35は、ループ障害仮判定部37によって、被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、バッファ部33に格納される時刻の範囲内に存在しないと判定された場合に、ループ障害が発生したと仮判定して、監視継続のためのタイマを起動するとともに、そのループ障害の仮判定が行われてから、予め定められた監視継続時間、変化数が閾値以内である状態が続き、システムコールを発行中でない状態が続き、かつ、システムコールの最終発行時刻が、バッファ部33に格納される時刻の範囲内に存在しない状態が続いた場合は、ループ障害が発生したと判定し、そのループ障害の仮判定が行われてから、予め定められた監視継続時間内のいずれかの時点で、変化数が閾値を超えるか、システムコールが発行中の状態となるか、または、システムコールの最終発行時刻が、バッファ部33に格納される時刻の範囲内に存在するかした場合は、そのループ障害の仮判定を取り消す判定を行う。
上記ループ障害の仮判定がループ障害判定部35によって取り消された場合、バッファ部33のバッファサイズが、ループ障害判定を行うのに十分な大きさではなかったものとみなされる。すなわち、ループ障害判定部35は、変化数が閾値を超えるか、システムコールが発行中の状態となるか、または、システムコールの最終発行時刻が、バッファ部33に格納される時刻の範囲内に存在するかした、時刻をバッファサイズ変更部39に通知する。バッファサイズ変更部39は、その通知された時刻の値を、アドレスを取得するタイミング(時間間隔)で割ることで、バッファ部33の段数の増分を算出して、バッファ部33に通知することで、バッファ部33のバッファサイズの変更を行う。
なお、図6からは定かでないが、ユーザは、監視処理部30に付属のユーザインターフェイス部(図6では、不図示)を介して、以下の項目を指定する。
(1)プログラムカウンタ値取得間隔(監視処理部30がOS13のプログラムカウンタ値取得機能15を介してプログラムカウンタ値を取得する時間間隔)
(2)監視テーブルサイズ(バッファ部33に格納するデータ数)
(3)プログラムカウンタ値の変化数(バッファ部33内に保持されるプログラムカウンタ値の上位側ビットが何通りの異なる値をとるかという数がこの変化数未満であれば、被監視プログラムはループ状態にあるものとみなす閾値)
(4)被監視プログラム(被監視プロセス)
(5)監視継続時間(ループ障害が発生したと仮判定されてから、その発生時点での状況が監視継続時間だけ続いた場合、ループ障害が発生したものと判定する)
図7A、図7B、および、図7Cは、本発明の第2実施形態の監視処理部によって実行される監視処理のフローチャートである。
まず、図7Aにおいて、ステップS201で、初期化処理が実行される。この初期化処理では、現在時刻をタイマ監視処理部(図6では、不図示)がタイマ監視時に参照する参照変数に設定し、上述の監視継続時間中かを示す監視継続フラグを、「監視継続中ではない」という値に設定し、かつ、上述の監視テーブルサイズ分の領域が監視テーブル(バッファ)用の領域としてメモリ上に確保される。
そして、ステップS202で、タイマ監視処理部によるタイマ監視処理が実行される。このタイマ監視処理では、ステップS201で参照変数に設定された値と、ステップS202の時点での現在時刻との差が算出され、その差が、上述のプログラムカウンタ値取得間隔より短いうちは、差の算出を繰り返し、その差が、プログラムカウンタ値取得間隔に一致したときに、参照変数に、その時点での時刻を設定するとともに、ステップS203に進む。
ステップS203では、プログラムカウンタ値取得部21によって、実行中の被監視プログラムのアドレス(プログラムカウンタ値)が、OS13の既存の機能(プログラムカウンタ値取得機能)15を介して取得され、バッファ部(監視テーブル)23の末尾に追加される。
すなわち、この監視テーブルに追加されたデータは、監視テーブルへの書き込み時刻(ステップS202の参照変数に設定された現在時刻)、プログラムカウンタ値、変換値の各項目を備える。
そして、ステップS204で、監視テーブルに、上述の監視テーブルサイズに指定された数のデータが格納されたかが判定される。なお、監視テーブルへのデータ書き込みが一定の間隔(プログラムカウンタ値取得間隔)毎に行われることを考えると、ステップS104で、監視テーブルに一定時間分のデータがあるかが判定される、ということもできる。
ステップS204において、監視テーブルに、監視テーブルサイズに指定された数のデータが格納されていなければ、ステップS102に戻る。
一方、ステップS204において、監視テーブルに、監視テーブルサイズに指定された数のデータが格納されていれば、ステップS205において、監視テーブル上の変換値が何通りの値をとるかを示す数が、上述のプログラムカウンタ値の変化数(閾値)以上であるかが判定される。
ステップS205において、監視テーブル上の変換値が何通りの値をとるかを示す数が、プログラムカウンタ値の変化数(閾値)以上であると判定されれば、ステップS214に進む。
一方、監視テーブル上の変換値が何通りの値をとるかを示す数が、プログラムカウンタ値の変化数(閾値)より小さいと判定されれば、ステップS206において、システムコール発行状況取得部22によって、被監視プログラムのシステムコールの発行状況の取得要求が、OS13のシステムコール発行状況監視機能14に出力され、その監視機能14から、被監視プログラムのシステムコールの発行状況が取得される。
続いて、図7Bに移り、この取得された被監視プログラムのシステムコールの発行状況を基に、ステップS207、S208、S209での判定がループ障害判定部26によって行われる。まず、ステップS207では、ループ障害判定部26によって、被監視プログラムがシステムコールを発行中であるか、すなわち、OSからの復帰命令待ちであるかが判定される。
ステップS207において、被監視プログラムがシステムコールを発行中であると判定された場合、ステップS214に進む。I/O処理等でループが形成されている場合が、この場合に含まれる。
一方、ステップS207において、被監視プログラムがシステムコールを発行中でないと判定された場合、ステップS208において、ループ障害判定部26によって、ループ時間内にシステムコールが発行されたかが判定される。なお、「ループ時間内」とは、監視テーブルにデータが書き込まれた時刻の範囲内という意味である。
ステップS208において、ループ時間内にシステムコールが発行されていないと判定された場合、すなわち、ループ時間以前にシステムコールが発行されたと判定された場合、ステップS210に進む。
一方、ステップS208において、ループ時間内にシステムコールが発行されたと判定された場合、ステップS209において、監視継続フラグの値が、「監視継続中である」という値になっているか、または、監視継続そのループ時間内に発行されたシステムコールが正常終了しているかが判定される。
ステップS209において、ループ時間内に発行されたシステムコールが正常終了している場合、または、監視継続フラグの値が、「監視継続中である」という値になっている場合は、ステップS214に進む。
ステップS209において、ループ時間内に発行されたシステムコールがエラー終了していて、かつ、監視継続フラグの値が、「監視継続中である」という値になっていない場合は、ステップS210に進む。
なお、ステップS209の判定を行うかどうかをユーザが上述のユーザインターフェイスを介して指定できるようにしてもよい。ステップS209の判定を行わない場合、ステップS208において、ループ時間内にシステムコールが発行されたと判定された場合に直ちに、ステップS214に進む。
ステップS210では、監視継続フラグの値が、「監視継続中である」という値になっているかが判定される。ステップS210の制御に初回に入った場合は、この監視継続フラグの値は、「監視継続中ではない」という値に初期化されているので、ステップS210では、監視継続フラグの値が、「監視継続中である」という値になっていないと判定され、ステップS211において、監視継続状態に移行する。すなわち、ループ障害判定部35によって、監視継続のためのタイマが起動されるとともに、監視継続フラグの値が、「監視継続中である」という値に変更される。
そして、ステップS212において、資料採取が行われる。資料採取では、以下の情報が出力部38を介して出力される。
1.バッファ部33に保持される複数件のデータ。
2.最近取得したシステムコールについての情報。
ここで、上記1.は、ループ範囲を特定するのに有用な情報である。また、上記2.は、ループ処理直前にプログラムが何を処理していたのかを特定するのに有用な情報である。
そして、続く、ステップS213で、ループ障害が発生したことを示すメッセージが、出力部38によって出力され、ステップS202に戻る。
一方、ステップS210で、監視継続フラグの値が、「監視継続中である」という値になっていると判定された場合、直ちにステップS202に戻る。これは、監視継続状態のときに「ループ障害が発生した」旨のメッセージを繰り返し出力することを避けるためである。
続く、図7Cでは、まず、ステップS214において、監視継続フラグの値が、「監視継続中である」という値になっているかが判定される。
ステップS214は、ステップS205、S207、S209から制御が渡されるステップである。よって、ここで、監視継続フラグの値が、「監視継続中である」という値になっていると判定された場合は、監視継続状態のときに、ループ障害と仮決定した時点での条件を満たさなくなったこと、すなわち、変化数が閾値を超えるか、システムコールが発行中の状態となるか、または、システムコールの最終発行時刻が、バッファ部33に格納される時刻の範囲内に存在するかした、ことを意味する。
この場合、ステップS215において、監視継続状態から非監視継続状態への移行が行われる。すなわち、すなわち、ループ障害判定部35によって、その時点での監視継続のためのタイマの値がバッファサイズ変更部39に出力されるとともに、監視継続フラグの値が、「監視継続中ではない」という値に変更される。
続く、ステップS216では、バッファサイズ変更部39によって、その通知された時刻の値が、アドレスを取得するタイミング(プログラムカウンタ値取得間隔)で割られることで、バッファ部33の段数の増分が算出されて、バッファ部33に通知されることで、バッファ部33のバッファサイズの変更が行われる。
ステップS214において、監視継続フラグの値が、「監視継続中である」という値になっていないと判定された場合、ステップS202に戻る。
図8は、記憶媒体例を示す図である。
本発明の監視処理は、情報処理装置61によって実現することが可能である。本発明の処理のためのプログラムやデータは、情報処理装置61の記憶装置65から情報処理装置61のメモリにロードして実行することも、可搬型記憶媒体63から情報処理装置61のメモリにロードして実行することも、外部記憶装置62からネットワーク66を介して情報処理装置61のメモリにロードして実行することも可能である。
本発明は下記構成でもよい。
(付記1) 被監視プログラムを監視する処理をコンピュータに実行させる監視プログラムにおいて、
実行されている前記被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するステップと、
前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定ステップと、
前記変換値が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するステップと、
取得された前記被監視プログラムのシステムコールの発行状況を基に、被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない場合に、被監視プログラムにループ障害が発生したと判定する第2判定ステップを前記コンピュータに実行させることを特徴とする監視プログラム。
(付記2) 前記第2判定ステップにおいて、被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない場合でも、前記被監視プログラムが発行するシステムコールが前記バッファに格納される時刻の範囲内に正常終了していた場合は、ループ障害が発生していないと判定することを特徴とする付記1記載の監視プログラム。
(付記3) 被監視プログラムを監視する処理をコンピュータに実行させる監視プログラムにおいて、
実行されている前記被監視プログラムのアドレスを予め定められたタイミング(時間間隔)で取得してバッファに格納するステップと、
前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定ステップと、
前記変換値が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するステップと、
取得された前記被監視プログラムのシステムコールの発行状況を基に、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないかどうかを判定する第2判定ステップと、
前記第2判定ステップにおいて、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないと判定された場合に、ループ障害が発生したと仮判定するループ障害仮判定ステップと、
前記ループ障害の仮判定が行われてから、予め定められた監視継続時間、前記変換値が前記閾値以内である状態が続き、システムコールを発行中でない状態が続き、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない状態が続いた場合は、ループ障害が発生したと判定し、
前記ループ障害の仮判定が行われてから、予め定められた監視継続時間内のいずれかの時点で、前記変換値が前記閾値を超えるか、システムコールが発行中の状態となるか、または、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在するかした場合は、前記ループ障害の仮判定を取り消す判定を行うループ障害判定ステップ、を前記コンピュータに実行させることを特徴とする監視プログラム。
(付記4) 前記ループ障害判定ステップにおいて、前記仮決定を取り消す判定が行われた場合に、変化数が閾値を超えるか、システムコールが発行中の状態となるか、または、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在するかした、時刻の値を、アドレスを取得するタイミング(時間間隔)で割ることで、前記バッファの段数の増分を算出する段数増分算出ステップと、
前記算出された増分だけ前記バッファの段数を増やすバッファサイズ変更ステップをさらに備えることを特徴とする付記3記載の監視プログラム。
(付記5) 被監視プログラムを監視する処理をコンピュータが実行する監視方法において、
実行されている前記被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するステップと、
前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定ステップと、
前記変換値が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するステップと、
取得された前記被監視プログラムのシステムコールの発行状況を基に、被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない場合に、被監視プログラムにループ障害が発生したと判定する第2判定ステップを備えることを特徴とする監視方法。
(付記6) 前記第2判定ステップにおいて、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない場合でも、前記被監視プログラムが発行するシステムコールが前記バッファに格納される時刻の範囲内に正常終了していた場合は、ループ障害が発生していないと判定することを特徴とする付記5記載の監視方法。
(付記7) 被監視プログラムを監視する処理をコンピュータが実行する監視方法において、
実行されている前記被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するステップと、
前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定ステップと、
前記変換値が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するステップと、
取得された前記被監視プログラムのシステムコールの発行状況を基に、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないかどうかを判定する第2判定ステップと、
前記第2判定ステップにおいて、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないと判定された場合に、ループ障害が発生したと仮判定するループ障害仮判定ステップと、
前記ループ障害の仮判定が行われてから、予め定められた監視継続時間、前記変換値が前記閾値以内である状態が続き、システムコールを発行中でない状態が続き、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない状態が続いた場合は、ループ障害が発生したと判定し、
前記ループ障害の仮判定が行われてから、予め定められた監視継続時間内のいずれかの時点で、前記変換値が前記閾値を超えるか、システムコールが発行中の状態となるか、または、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在するかした場合は、前記ループ障害の仮判定を取り消す判定を行うループ障害判定ステップ、を備えることを特徴とする監視方法。
(付記8) 前記ループ障害判定ステップにおいて、前記仮決定を取り消す判定が行われた場合に、変化数が閾値を超えるか、システムコールが発行中の状態となるか、または、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在するかした、時刻の値を、アドレスを取得するタイミング(時間間隔)で割ることで、前記バッファの段数の増分を算出する段数増分算出ステップと、
前記算出された増分だけ前記バッファの段数を増やすバッファサイズ変更ステップをさらに備えることを特徴とする付記7記載の監視方法。
(付記9) 被監視プログラムを監視する処理を実行する監視装置において、
実行されている前記被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するアドレス取得部と、
前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定ステップと、
前記変換値が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するシステムコール発行状況取得部と、
取得された前記被監視プログラムのシステムコールの発行状況を基に、被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない場合に、被監視プログラムにループ障害が発生したと判定する第2判定部を備えることを特徴とする監視装置。
(付記10) 前記第2判定部は、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない場合でも、前記被監視プログラムが発行するシステムコールが前記バッファに格納される時刻の範囲内に正常終了していた場合は、ループ障害が発生していないと判定することを特徴とする付記9記載の監視装置。
(付記11) 被監視プログラムを監視する処理を実行する監視装置において、
実行されている前記被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するアドレス取得部と、
前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定部と、
前記変換値が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するシステムコール発行状況取得部と、
取得された前記被監視プログラムのシステムコールの発行状況を基に、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないかどうかを判定する第2判定部と、
前記第2判定部において、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないと判定された場合に、ループ障害が発生したと仮判定するループ障害仮判定部と、
前記ループ障害の仮判定が行われてから、予め定められた監視継続時間、前記変換値が前記閾値以内である状態が続き、システムコールを発行中でない状態が続き、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない状態が続いた場合は、ループ障害が発生したと判定し、
前記ループ障害の仮判定が行われてから、予め定められた監視継続時間内のいずれかの時点で、前記変換値が前記閾値を超えるか、システムコールが発行中の状態となるか、または、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在するかした場合は、前記ループ障害の仮判定を取り消す判定を行うループ障害判定部、を備えることを特徴とする監視装置。
(付記12) 前記ループ障害判定部によって、前記仮決定を取り消す判定が行われた場合に、変化数が閾値を超えるか、システムコールが発行中の状態となるか、または、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在するかした、時刻の値を、アドレスを取得するタイミング(時間間隔)で割ることで、前記バッファの段数の増分を算出する段数増分算出部と、
前記算出された増分だけ前記バッファの段数を増やすバッファサイズ変更部をさらに備えることを特徴とする付記11記載の監視装置。
本発明の各実施形態に共通する監視システムの全体構成図である。 本発明の第1実施形態の監視処理部の構成を示すブロック図である。 図2のバッファ部23に格納されるデータ例(その1)を示す図である。 本発明の第1実施形態の監視処理部によって実行される監視処理のフローチャート(その1)である。 本発明の第1実施形態の監視処理部によって実行される監視処理のフローチャート(その2)である。 図2のバッファ部23に格納されるアドレスの組が、ループ状態にはないと判定される場合のデータ例を示す図である。 図2のバッファ部23に格納されるアドレスの組が、ループ状態にあると判定される場合のデータ例を示す図(その1)である。 図2のバッファ部23に格納されるアドレスの組が、ループ状態にあると判定される場合のデータ例を示す図(その2)である。 本発明の第2実施形態の監視処理部の構成を示すブロック図である。 本発明の第2実施形態の監視処理部によって実行される監視処理のフローチャート(その1)である。 本発明の第2実施形態の監視処理部によって実行される監視処理のフローチャート(その2)である。 本発明の第2実施形態の監視処理部によって実行される監視処理のフローチャート(その3)である。 記憶媒体例を示す図である。
符号の説明
11 被監視プログラム(被監視プロセス)
12 監視処理部(監視プログラム)
13 オペレーティングシステム
14 システムコール発行状況監視機能
15 プログラムカウンタ値取得機能
20、30 監視処理部
21、31 プログラムカウンタ値取得部
22、32 システムコール発行状況取得部
23、33 バッファ部(FIFO)
24、34 変換値算出部
25、36 ループ検出部
26、35 ループ障害判定部
27、38 出力部
37 ループ障害仮判定部
39 バッファサイズ変更部

Claims (5)

  1. 被監視プログラムを監視する処理をコンピュータに実行させる監視プログラムにおいて、
    実行されている前記被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するステップと、
    前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定ステップと、
    前記変化数が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するステップと、
    取得された前記被監視プログラムのシステムコールの発行状況を基に、被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない場合に、被監視プログラムにループ障害が発生したと判定する第2判定ステップを前記コンピュータに実行させることを特徴とする監視プログラム。
  2. 被監視プログラムを監視する処理をコンピュータに実行させる監視プログラムにおいて、
    実行されている前記被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するステップと、
    前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定ステップと、
    前記変化数が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するステップと、
    取得された前記被監視プログラムのシステムコールの発行状況を基に、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないかどうかを判定する第2判定ステップと、
    前記第2判定ステップにおいて、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないと判定された場合に、ループ障害が発生したと仮判定するループ障害仮判定ステップと、
    前記ループ障害の仮判定が行われてから、予め定められた監視継続時間、前記変化数が前記閾値以内である状態が続き、システムコールを発行中でない状態が続き、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない状態が続いた場合は、ループ障害が発生したと判定し、
    前記ループ障害の仮判定が行われてから、予め定められた監視継続時間内のいずれかの時点で、前記変化数が前記閾値を超えるか、システムコールが発行中の状態となるか、または、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在するかした場合は、前記ループ障害の仮判定を取り消す判定を行うループ障害判定ステップ、を前記コンピュータに実行させることを特徴とする監視プログラム。
  3. 被監視プログラムを監視する処理をコンピュータが実行する監視方法において、
    実行されている前記被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するステップと、
    前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定ステップと、
    前記変化数が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するステップと、
    取得された前記被監視プログラムのシステムコールの発行状況を基に、被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない場合に、被監視プログラムにループ障害が発生したと判定する第2判定ステップを備えることを特徴とする監視方法。
  4. 被監視プログラムを監視する処理をコンピュータが実行する監視方法において、
    実行されている前記被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するステップと、
    前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定ステップと、
    前記変化数が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するステップと、
    取得された前記被監視プログラムのシステムコールの発行状況を基に、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないかどうかを判定する第2判定ステップと、
    前記第2判定ステップにおいて、前記被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しないと判定された場合に、ループ障害が発生したと仮判定するループ障害仮判定ステップと、
    前記ループ障害の仮判定が行われてから、予め定められた監視継続時間、前記変化数が前記閾値以内である状態が続き、システムコールを発行中でない状態が続き、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない状態が続いた場合は、ループ障害が発生したと判定し、
    前記ループ障害の仮判定が行われてから、予め定められた監視継続時間内のいずれかの時点で、前記変化数が前記閾値を超えるか、システムコールが発行中の状態となるか、または、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在するかした場合は、前記ループ障害の仮判定を取り消す判定を行うループ障害判定ステップ、を備えることを特徴とする監視方法。
  5. 被監視プログラムを監視する処理を実行する監視装置において、
    実行されている前記被監視プログラムのアドレスを予め定められたタイミングで取得してバッファに格納するアドレス取得部と、
    前記バッファに格納された複数のアドレスの値またはそれらアドレスの値に基づいて算出された値、が何通りの異なる値をとるかを示す変化数が予め定められた閾値以内であるかを判定する第1判定部と、
    前記変化数が前記閾値以内である場合に、前記被監視プログラムのシステムコールの発行状況を取得するシステムコール発行状況取得部と、
    取得された前記被監視プログラムのシステムコールの発行状況を基に、被監視プログラムが現在システムコールを発行中でなく、かつ、システムコールの最終発行時刻が、前記バッファに格納される時刻の範囲内に存在しない場合に、被監視プログラムにループ障害が発生したと判定する第2判定部を備えることを特徴とする監視装置。
JP2006097690A 2006-03-31 2006-03-31 監視プログラム、監視方法、および、監視装置 Expired - Fee Related JP4627275B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006097690A JP4627275B2 (ja) 2006-03-31 2006-03-31 監視プログラム、監視方法、および、監視装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006097690A JP4627275B2 (ja) 2006-03-31 2006-03-31 監視プログラム、監視方法、および、監視装置

Publications (2)

Publication Number Publication Date
JP2007272581A true JP2007272581A (ja) 2007-10-18
JP4627275B2 JP4627275B2 (ja) 2011-02-09

Family

ID=38675322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006097690A Expired - Fee Related JP4627275B2 (ja) 2006-03-31 2006-03-31 監視プログラム、監視方法、および、監視装置

Country Status (1)

Country Link
JP (1) JP4627275B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013073009A1 (ja) * 2011-11-15 2013-05-23 トヨタ自動車株式会社 マイコンシステム、監視マイコン
JP5725169B2 (ja) * 2011-04-26 2015-05-27 富士通株式会社 システム、および検出方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03292545A (ja) * 1990-04-11 1991-12-24 Mitsubishi Electric Corp プログラムループの検知回復装置
JPH05224998A (ja) * 1992-02-17 1993-09-03 Nec Corp アプリケーション・タスクの障害検出方式
JPH0689130A (ja) * 1990-12-28 1994-03-29 Dia Semikon Syst Kk コンピュータシステムの状態監視方法および節電制御装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03292545A (ja) * 1990-04-11 1991-12-24 Mitsubishi Electric Corp プログラムループの検知回復装置
JPH0689130A (ja) * 1990-12-28 1994-03-29 Dia Semikon Syst Kk コンピュータシステムの状態監視方法および節電制御装置
JPH05224998A (ja) * 1992-02-17 1993-09-03 Nec Corp アプリケーション・タスクの障害検出方式

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5725169B2 (ja) * 2011-04-26 2015-05-27 富士通株式会社 システム、および検出方法
WO2013073009A1 (ja) * 2011-11-15 2013-05-23 トヨタ自動車株式会社 マイコンシステム、監視マイコン

Also Published As

Publication number Publication date
JP4627275B2 (ja) 2011-02-09

Similar Documents

Publication Publication Date Title
JP5914521B2 (ja) 処理装置、トレースユニット、および診断装置
US20150089652A1 (en) Methods of detection of software exploitation
US7562391B1 (en) Reducing false positive indications of buffer overflow attacks
JP2009064414A (ja) 非正常プロセスの探知方法及び装置
EP2615551B1 (en) Abnormality inspection device, central processing unit, and abnormality inspection method
JP2007323193A (ja) 性能負荷異常検出システム、性能負荷異常検出方法、及びプログラム
JP2008310748A (ja) タスク実行時間記録装置、タスク実行時間記録方法、及びタスク実行時間記録用プログラム
US8245085B2 (en) Dump output control apparatus and dump output control method
CN114238037B (zh) 高并发服务请求结果存储方法和装置、以及电子设备和存储介质
US8214693B2 (en) Damaged software system detection
JP4627275B2 (ja) 監視プログラム、監視方法、および、監視装置
JP6351827B2 (ja) ウイルススキャン方法及びウイルススキャン装置
KR101595936B1 (ko) 백신과 컴퓨터 최적화 기능을 구비한 컴퓨터 최적화 방법, 최적화 서버 및 컴퓨터 판독 가능한 기록매체
CN104077210A (zh) 一种客户端崩溃的定位方法及系统
JP5365273B2 (ja) 情報処理システム、監視方法及び監視プログラム
JP2012123762A (ja) 情報処理装置及び情報処理方法
JP4050253B2 (ja) コンピュータウィルス情報収集装置、コンピュータウィルス情報収集方法、及びプログラム
JP7444262B2 (ja) 表示制御装置、表示制御方法および表示制御プログラム
JP2002366393A (ja) 計算機稼動情報収集方法及びその実施システム並びにその処理プログラム
JP2009199121A (ja) 情報処理装置、通信情報採取方法、及び、プログラム
JP2005293164A (ja) タスク監視方式
US6795879B2 (en) Apparatus and method for wait state analysis in a digital signal processing system
US8614799B2 (en) Memory paging
JP5389734B2 (ja) 抽出装置及び抽出方法
JPH076113A (ja) 事象報告ワード処理機能を持つデータ処理システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080818

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100803

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101004

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: 20101102

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101104

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131119

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees