(57)【特許請求の範囲】
【請求項１】
コンピュータにおいて実行される監視対象プログラムが正常に実行されているか否かを監視するプログラム実行状況監視装置であって、
前記監視対象プログラムの一部の処理として、予め第１の記録領域に記録された第１の値および予め第２の記録領域に記録された第２の値のうちの直近の時刻に更新された値との対応関係が所定条件を満たすための第１の操作を行うことで求められる値である第１新値に、前記第１の値および前記第２の値のうちの直近の時刻に更新されていない値を更新する第１更新手段と、
前記監視対象プログラムの一部の処理として、前記第１新値に対して第２の操作を行うことで得られる操作値を生成する操作値生成手段と、
前記監視対象プログラムの一部の処理として、正常な順序で当該監視対象プログラムが実施される場合に前記第１更新手段による処理の後で前記第１更新手段が更新していない第１の値または第２の値を更新する処理であって、前記操作値に対して前記第１の操作および前記第２の操作を相殺する操作を行うことで求められる値である第２新値に、前記第１の値および前記第２の値のうちの直近の時刻に更新されていない値を更新する第２更新手段と、
前記監視対象プログラムとは別の処理として、前記第１の値と前記第２の値との対応関係が所定の関係になっているか否かを繰り返し判定し、該判定結果に応じた出力を行う対応関係判定出力手段と、
を備えたことを特徴とするプログラム実行状況監視装置。
【請求項２】
請求項１に記載のプログラム実行状況監視装置において、
前記第１更新手段、前記操作値生成手段、および前記第２更新手段は、これらを１組として複数組備えられており、
前記操作値生成手段は、前記第１新値に対して当該第１更新手段が属する組特有の第２の操作を行うことで操作値を生成し、
前記第２更新手段は、既に読み出された操作値を除く操作値のうちの最新のものを読み出し、該操作値に対して、当該第２更新手段が属する組の操作値生成手段が行った第２の操作および前記第１の操作を相殺する操作を行うことで前記第２新値を演算すること
を特徴とするプログラム実行状況監視装置。
【請求項３】
請求項１または請求項２に記載のプログラム実行状況監視装置において、
前記第１更新手段は、前記監視対象プログラムにおける関数定義の前半部分において前記第１新値を演算し、
前記第２更新手段は、前記第１更新手段が第１新値を演算する関数定義の後半部分において前記第２新値を演算すること
を特徴とするプログラム実行状況監視装置。
【請求項４】
請求項１または請求項２に記載のプログラム実行状況監視装置において、
前記対応関係判定出力手段は、前記第１の値と前記第２の値との対応関係が所定の関係になっていない場合の出力として、前記監視対象プログラムを実行する処理をリセットさせる信号を出力すること
を特徴とするプログラム実行状況監視装置。
【請求項５】
コンピュータを、請求項１〜請求項４の何れか１項に記載のプログラム実行状況監視装置を構成する各手段として機能させるための実行状況監視プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータにおいて実行されるプログラムが正常に実行されているか否かを監視するプログラム実行状況監視装置、および実行状況監視プログラムに関する。
【背景技術】
【０００２】
上記プログラム実行状況監視装置として、プログラムにおいて関数定義の際（サブルーチンを実行する際）に、命令内容や復帰アドレス等を表に書き込み、この表を検査することでプログラムが正常に実行されているか否かを検査できるようにしたものが知られている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表平０８−５１０３４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記プログラム実行状況監視装置では、命令内容や復帰アドレス等を表に書き込むため、表のための膨大な記憶容量が必要になるという問題点があった。
そこで、このような問題点を鑑み、コンピュータにおいて実行されるプログラムが正常に実行されているか否かを監視するプログラム実行状況監視装置、および実行状況監視プログラムにおいて、多くの記憶容量を必要とすることなくプログラムが正常に実行されているか否かを監視できる技術を提供することを本発明の目的とする。
【課題を解決するための手段】
【０００５】
かかる目的を達成するために成された第１の構成のプログラム実行状況監視装置において、第１更新手段は、監視対象プログラムの一部の処理として、予め第１の記録領域に記録された第１の値および予め第２の記録領域に記録された第２の値のうちの直近の時刻に更新された値（現在を基準として更新時刻が最も近いもの）との対応関係が所定条件を満たすための第１の操作を行うことで求められる値である第１新値に、第１の値および第２の値のうちの直近の時刻に更新されていない値を更新する。また、操作値生成手段は、監視対象プログラムの一部の処理として、第１新値に対して第２の操作を行うことで得られる操作値を生成する。そして、第２更新手段は、監視対象プログラムの一部の処理として、正常な順序でこの監視対象プログラムが実施される場合に第１更新手段による処理の後で第１更新手段が更新していない第１の値または第２の値を更新する処理であって、操作値に対して第１の操作および第２の操作を相殺する操作を行うことで求められる値である第２新値に、第１の値および第２の値のうちの直近の時刻に更新されていない値を更新する。さらに、対応関係判定出力手段は、監視対象プログラムとは別の処理として、第１の値と第２の値との対応関係が所定の関係になっているか否かを繰り返し判定し、この判定結果に応じた出力を行う。
【０００６】
本発明において例えば、第１更新手段によって求められる第１新値が第１の値を更新する値である場合には、正常な順序で第２更新手段が作動する場合には、第２の値が第２新値に更新される。この第２新値を求める際には、第１の値との関係が所定条件を満たす第２の値に対して第１の操作および第２の操作を行うことで生成された操作値に対して、第１の操作と第２の操作とを相殺する操作を行うので、第２の値は第１の値との対応関係は所定条件を満たすように維持される。
【０００７】
一方、正常な順序で第２更新手段が作動せず、別の処理によって第２の値が更新されたと仮定し、次に第２更新手段が作動すると第１の値が第２新値に更新される。この場合には、本来、第２の値となるべき値が第１の値になるため、第１新値（第１の値）と第２新値（第２の値）との対応関係は所定条件を満たすように維持されない可能性が高い。また、プログラムカウンタが電磁波の影響等によって破壊等され、意図しない値に書き換わる場合においても、第１新値（第１の値）と第２新値（第２の値）との対応関係は所定条件を満たすように維持されない可能性が高い。
【０００８】
したがって、このようなプログラム実行状況監視装置によれば、第１の数値と第２の数値との関係を監視することでプログラムの実行状況を判定することができる。また、この判定の際には、第１の値、第２の値、および操作値を記録する記録領域を備えておけばよいので、実行された命令等を記録した表を準備する構成と比較して、少ない記録領域でプログラムが正常に実行されているか否かを監視することができる。
【０００９】
なお、第１更新手段は、第１の値および第２の値のうちの直近の時刻に更新されていない値等の所定の値に対して第１の操作を行うようにすればよい。
ところで、上記プログラム実行状況監視装置においては、第２の構成のように、第１更新手段、操作値生成手段、および第２更新手段は、これらを１組として複数組備えられており、操作値生成手段は、第１新値に対してこの第１更新手段が属する組特有の第２の操作を行うことで操作値を生成し、第２更新手段は、既に読み出された操作値を除く操作値のうちの最新のものを読み出し、この操作値に対して、この第２更新手段が属する組の操作値生成手段が行った第２の操作および第１の操作を相殺する操作を行うことで第２新値を演算するようにしてもよい。
【００１０】
このようなプログラム実行状況監視装置によれば、操作値生成手段は、組毎に異なる操作値を生成し、第２更新手段は既に読み出された操作値を除く操作値のうちの最新のものを読み出し、該操作値に対して組毎に異なる第２の操作を相殺する操作を行うので、プログラムの実行順序に誤りが生じると、第２更新手段は第２の操作を相殺することができなくなる。この結果、プログラムの実行順序に誤りが生じると、第１の値と第２の値との対応関係が変化する可能性が高くなるため、複数組の第１更新手段、操作値生成手段、および第２更新手段を備えた構成であっても、プログラムの実行状況を判定することができる。
【００１１】
なお、本発明においては、ある組の第１更新手段および操作値生成手段が実施された直後に、この組の第２更新手段が実施された場合、または、ある組の第１更新手段および操作値生成手段が実施された後、この組の第２更新手段が実施される前に、他の組（複数の組でも可。）の第１更新手段、操作値生成手段、および第２更新手段が実施された場合に、プログラムの実行順序が正しい場合の第２新値が演算される。
【００１２】
さらに、上記プログラム実行状況監視装置においては、第３の構成のように、第１更新手段は、監視対象プログラムにおける関数定義の前半部分において第１新値を演算し、第２更新手段は、第１更新手段が第１新値を演算する関数定義の後半部分において第２新値を演算するようにしてもよい。
【００１３】
このようなプログラム実行状況監視装置によれば、第１更新手段および第２更新手段による処理が実施される関数定義内のプログラムが正常に作動したか否かを確認することができる。
【００１４】
また、上記プログラム実行状況監視装置においては、第４の構成のように、対応関係判定出力手段は、第１の値と第２の値との対応関係が所定の関係になっていない場合の出力として、監視対象プログラムを実行する処理をリセットさせる信号を出力するようにしてもよい。
【００１５】
このようなプログラム実行状況監視装置によれば、第１の値と第２の値との対応関係が所定の関係になっていない状態、つまり、プログラム実行状況に異常がある場合に、監視対象プログラムを実行する処理をリセットさせることができる。
【００１６】
次に、上記目的を達成するために成された実行状況監視プログラムは、コンピュータを、上記何れかに記載のプログラム実行状況監視装置を構成する各手段として機能させるためのプログラムであることを特徴とする。
【００１７】
このような実行状況監視プログラムによれば、少なくとも請求項１に記載のプログラム実行状況監視装置と同様の効果を享受することができる。
【図面の簡単な説明】
【００１８】
【図１】実行状況監視装置１の概略構成を示すブロック図である。
【図２】メインプログラム１３の概略構成および階層構造を示す説明図である。
【図３】先頭マクロ処理を示すフローチャート（ａ）、および末尾マクロ処理を示すフローチャート（ｂ）である。
【図４】評価処理を示すフローチャートである。
【図５】正常時において記憶領域１５内の各値の遷移状態を示す説明図である。
【図６】異常時において記憶領域１５内の各値の遷移状態を示す説明図である。
【発明を実施するための形態】
【００１９】
以下に本発明にかかる実施の形態を図面と共に説明する。
［本実施形態の構成］
図１は、本発明が適用された実行状況監視装置１の概略構成を示すブロック図である。実行状況監視装置１は、図１に示すように、処理実行装置１０（プログラム実行状況監視装置）と、ウォッチドック回路２１と、を備えて構成されており、処理実行装置１０にて実行されるプログラムが正常に実行されているか否かを監視する機能を有する。
【００２０】
詳細には、処理実行装置１０は、ＣＰＵ１１と、ＲＯＭに格納されたメインプログラム１３および監視プログラム１４と、ＲＡＭとして構成された記憶領域１５と、を備えたマイコンとして構成されている。ＣＰＵ１１には、プログラムの起動タイミングを制御するためのクロック１２（タイマ）が備えられている。クロック１２は、所定の時間毎（例えば１秒程度毎）にＣＰＵ１１に対して監視プログラム１４を実行させるための信号を送る。
【００２１】
記憶領域１５は、関数定義毎に演算される一次記憶値がそれぞれ格納される。また、ＣＰＵ１１は、記憶領域１５に記憶された一次記憶値を読み出す際には、各一次記憶値のうちの最新のものを読み出し、一度読み出した値は読み出さないよう設定されている。なお、ＣＰＵ１１は読み出す一次記憶値を削除してもよい。
【００２２】
ウォッチドック回路２１は、処理実行装置１０から一定時間内にエッジ信号が得られない場合に、処理実行装置１０をリセットさせるリセット信号を出力する。つまり、後述する処理において、プログラムが正常に実行されていれば処理実行装置１０はエッジ信号を定期的にウォッチドック回路２１に送信することでウォッチドック回路２１からリセット信号が出力されることを防止するが、プログラムが正常に実行されていなければ処理実行装置１０はエッジ信号をウォッチドック回路２１に送信しなくなり、ウォッチドック回路２１からリセット信号が出力されることになる。
【００２３】
メインプログラム１３は、例えば、実行状況監視装置１が車両に搭載されている場合、車両の各部を制御するためのプログラム等として機能する。ここで、図２はメインプログラム１３の概略構成および階層構造を示す説明図である。
【００２４】
メインプログラム１３は、図２に示すように、最も上位の階層である階層０（ネストの深さが０）において、スタートアップルーチンに続いてメインルーチンが記述されている。図２に示すメインルーチンでは、２つの関数定義（サブルーチン）Ａ１、Ａ２が含まれており、これらの関数定義Ａ１，Ａ２についてプログラムは、１つ下位の階層である階層１として記述されている。
【００２５】
また、関数定義Ａ１内には、関数定義Ｂ１が含まれており、これらの関数定義Ｂ１についてのプログラムは、さらに１つ下位の階層である階層２として記述されている。そして、関数定義Ｂ１内には、関数定義Ｃ１，Ｃ２が含まれており、これらの関数定義Ｃ１，Ｃ２についてのプログラムは、さらに１つ下位の階層である階層３として記述されている。
【００２６】
ここで、本実施形態の各関数定義には、先頭マクロ（プログラム）および末尾マクロが、通常のプログラム（例えば車両を制御するためのプログラム）に影響を及ぼさない形態で追記されている。例えば、関数定義Ａ１には、関数定義Ａ１用のマクロであるＡ１先頭マクロおよびＡ１末尾マクロが追記されており、関数定義Ｃ２には、関数定義Ｃ２用のマクロであるＣ２先頭マクロおよびＣ２末尾マクロが追記されている。
【００２７】
［本実施形態の処理］
このように構成された処理実行装置１０において実行される、具体的な先頭マクロの作動について、図３を用いて説明する。図３（ａ）はＣＰＵ１１がメインプログラム１３の一部として実行する先頭マクロ処理を示すフローチャート、図３（ｂ）はＣＰＵ１１がメインプログラム１３の一部として実行する末尾マクロ処理を示すフローチャートである。
【００２８】
なお、先頭マクロ処理および末尾マクロ処理では、フラグｔ、変数ｔ１，ｔ２を利用する。これらの値は、スタートアップルーチンにおいて、初期値として、ｔ＝ＯＮ、ｔ１＝０、ｔ２＝１、が与えられるものとする。
【００２９】
先頭マクロ処理は、各関数定義において先頭マクロが読み込まれると開始される処理である。詳細には、図３（ａ）に示すように、まず、フラグｔの状態を判定する（Ｓ１１０）。
【００３０】
ｔがＯＮであれば（Ｓ１１０：ＯＮ）、「ｔ１＋１」（第１の操作、第１新値）をｔ２に上書きし（Ｓ１２０：第１更新手段）、「ｔ２＋Ｐ」（第２の操作、操作値）を一次記憶値として記憶領域１５内のスタックに記録させる（Ｓ１３０：操作値生成手段）。ここで、Ｐは関数定義固有の任意の値であって、ある関数定義ｉでのＰの値Ｐ＿ｉは、他の関数定義ｊでのＰの値Ｐ＿ｊとは異なる値となり、かつ、｜１−Ｐ＿ｉ＋Ｐ＿ｊ｜（絶対値）が、１にならないように設定されている。
【００３１】
この処理が終了すると後述するＳ１６０の処理に移行する。また、Ｓ１１０の処理にて、フラグｔがＯＦＦであれば（Ｓ１１０：ＯＦＦ）、「ｔ２＋１」（第１の操作、第１新値）をｔ１に上書きし（Ｓ１４０：第１更新手段）、「ｔ１＋Ｐ」（第２の操作、操作値）を一次記憶値として記憶領域１５内のスタックに記録させる（Ｓ１５０：操作値生成手段）。そして、フラグｔの状態を反転させて（つまり、ｔがＯＮであればＯＦＦにし、ｔがＯＦＦであればＯＮにして）（Ｓ１６０）、先頭マクロ処理を終了する。
【００３２】
次に、末尾マクロ処理は、各関数定義において末尾マクロが読み込まれると開始される処理であり、詳細には、図３（ｂ）に示すように、まず、一次記憶値のうちの最新のもの（ｐｏｐ）をｔｅｍｐとして読み出す（Ｓ２１０）。そして、フラグｔの状態を判定する（Ｓ２２０）。
【００３３】
ｔがＯＦＦであれば（Ｓ２２０：ＯＦＦ）、「ｔｅｍｐ−１−Ｐ」（第２新値）をｔ１に上書きし（Ｓ２３０：第２更新手段）、後述するＳ２５０の処理に移行する。また、ｔがＯＮであれば（Ｓ２２０：ＯＮ）、「ｔｅｍｐ−１−Ｐ」（第２新値）をｔ２に上書きし（Ｓ２４０：第２更新手段）、フラグｔの状態を反転させて（Ｓ２５０）、末尾マクロ処理を終了する。
【００３４】
つまり、Ｓ２３０、Ｓ２４０の処理では、読み出した一次記憶値に対して第１の操作（１を加算する処理）および第２の操作（Ｐを加算する処理）を相殺する操作を行う。なお、先頭マクロ処理および末尾マクロ処理のうちのｔ１、ｔ２を更新する処理（Ｓ１２０，Ｓ１４０，Ｓ２３０，Ｓ２４０）では、割込タスクからの影響を避けるため、１命令で済むようプログラムの記載が考慮されている。
【００３５】
次に、プログラムが正常に実行されているか否かを評価する処理について図４を用いて説明する。図４はＣＰＵ１１が監視プログラム１４として実行する評価処理を示すフローチャートである。評価処理は、クロック１２から当該処理を起動する旨の信号を受けると開始される。
【００３６】
評価処理では、図４に示すように、まず、｜ｔ１−ｔ２｜（絶対値）が１であるか否かを判定する（Ｓ３１０：対応関係判定出力手段）。｜ｔ１−ｔ２｜が１であれば（Ｓ３１０：ＹＥＳ）、ウォッチドック回路２１に対してエッジ信号を出力し（Ｓ３２０：対応関係判定出力手段）、評価処理を終了する。また、｜ｔ１−ｔ２｜が１でなければ（Ｓ３１０：ＮＯ）、エッジ信号を出力することなく評価処理を終了する。
【００３７】
図２に示すプログラム構成において、上記先頭マクロ処理および末尾マクロ処理を実行した場合において、記憶領域１５内の各値の遷移状態を、図５を用いて説明する。図５は正常時において記憶領域１５内の各値の遷移状態を示す説明図である。
【００３８】
前述のように、スタートアップルーチン実施直後においては、フラグｔがＯＮ、ｔ１＝１、ｔ２＝１に設定されている。
メインルーチンが開始され、Ａ１先頭マクロが実行されると、フラグｔがＯＦＦになり、記憶領域１５のＡ１スタックに「１＋Ｐ＿Ａ１」が記録される。このとき、ｔ２は１のままとなる。
【００３９】
続いて、Ｂ１先頭マクロが実行されると、ｔ１＝２となり、フラグｔがＯＮになる。そして、記憶領域１５のＢ１スタックに「２＋Ｐ＿Ｂ１」が記録される。次に、Ｃ１先頭マクロが実行されると、ｔ２＝３となり、フラグｔがＯＦＦになる。そして、記憶領域１５のＣ１スタックに「３＋Ｐ＿Ｃ１」が記録される。
【００４０】
続いて、Ｃ１末尾マクロが実行されると、ｔ１＝（３＋Ｐ＿Ｃ１）−１−Ｐ＿Ｃ１＝２となり、フラグｔがＯＮになる。また、Ｃ２先頭マクロが実行されると、フラグｔがＯＦＦになり、記憶領域１５のＣ２スタックに「３＋Ｐ＿Ｃ２」が記録される。
【００４１】
そして、Ｃ２末尾マクロが実行されると、ｔ１＝（３＋Ｐ＿Ｃ２）−１−Ｐ＿Ｃ２＝２となり、フラグｔがＯＮになる。続いて、Ｂ１末尾マクロが実行されると、ｔ２＝（２＋Ｐ＿Ｂ１）−１−Ｐ＿Ｂ１＝１となり、フラグｔがＯＦＦになる。
【００４２】
また、Ａ１末尾マクロが実行されると、ｔ１＝（１＋Ｐ＿Ａ１）−１−Ｐ＿Ａ１＝０となり、フラグｔがＯＮになる。続いて、Ａ２先頭マクロが実行されるとフラグｔがＯＦＦになり、記憶領域１５のＡ１スタックに「１＋Ｐ＿Ａ２」が記録される。また、Ａ１末尾マクロが実行されると、フラグｔがＯＮになる。なお、ｔ１＝（１＋Ｐ＿Ａ２）−１−Ｐ＿Ａ２＝０となり、ｔ１の値は変化しない。
【００４３】
このように、正常な順序でプログラムが実行されている場合には、｜ｔ１−ｔ２｜（絶対値）が常に１となり、評価処理にてエッジ信号が出力される状態となる。
次に、図６は異常時において記憶領域１５内の各値の遷移状態を示す説明図である。図６では、関数定義Ｃ２の実行後、Ｂ１末尾マクロ実行前に、誤ってＣ１末尾マクロが実行されたものとして説明する。
【００４４】
図６に示すように、図５と同様に、Ｃ２末尾マクロが終了するまでは、｜ｔ１−ｔ２｜（絶対値）が常に１となっている。しかし、Ｃ２末尾マクロの次にＣ１末尾マクロが実行されると、ｔ２＝（２＋Ｐ＿Ｂ１）−１−Ｐ＿Ｃ１＝１＋Ｐ＿Ｂ１−Ｐ＿Ｃ１、となり、前述の条件より、｜１−Ｐ＿Ｂ１＋Ｐ＿Ｃ１｜が１でないので、｜ｔ１−ｔ２｜が１でなくなる。よって、評価処理にてエッジ信号が出力されない状態となる。
【００４５】
［本実施形態による効果］
以上のように詳述した実行状況監視装置１において、処理実行装置１０のＣＰＵ１１は、メインプログラム１３の一部の処理として、予め第１の記録領域に記録された第１の値および予め第２の記録領域に記録された第２の値のうちの直近の時刻に更新された値との対応関係が所定条件を満たすための第１の操作を行うことで求められる値である第１新値に、第１の値および第２の値のうちの直近の時刻に更新されていない値を更新し、第１新値に対して第２の操作を行うことで得られる操作値を生成する。そして、正常な順序でこのメインプログラム１３が実施される場合にＣＰＵ１１による処理の後でＣＰＵ１１が更新していない第１の値または第２の値を更新する処理であって、操作値に対して第１の操作および第２の操作を相殺する操作を行うことで求められる値である第２新値に、第１の値および第２の値のうちの直近の時刻に更新されていない値を更新する。さらに、ＣＰＵ１１は、メインプログラム１３とは別の監視プログラム１４において、第１の値と第２の値との対応関係が所定の関係になっているか否かを繰り返し判定し、この判定結果に応じた出力を行う。
【００４６】
このような処理実行装置１０によれば、第１の数値と第２の数値との関係を監視することでプログラムの実行状況を判定することができる。また、この判定の際には、第１の値、第２の値、および操作値を記録する記録領域を備えておけばよいので、実行された命令等を記録した表を準備する構成と比較して、少ない記録領域でプログラムが正常に実行されているか否かを監視することができる。
【００４７】
また、処理実行装置１０においてＣＰＵ１１は、メインプログラム１３における各関数定義において、関数定義の前半部分において第１新値を演算し、関数定義の後半部分において第２新値を演算する。特に、ＣＰＵ１１は、第１新値に対して各関数定義特有の第２の操作を行うことで操作値を生成し、既に読み出された操作値を除く操作値のうちの最新のものを読み出し、該操作値に対して、この関数定義特有の第２の操作および第１の操作を相殺する操作を行うことで第２新値を演算する。
【００４８】
このような処理実行装置１０によれば、関数定義毎に異なる操作値を生成し、関数定義毎に異なる第２の操作を相殺する操作を行うので、プログラムの実行順序に誤りが生じると、第２の操作を相殺することができなくなる。この結果、プログラムの実行順序に誤りが生じると、第１の値と第２の値との対応関係が変化する可能性が高くなるため、関数定義内のプログラムが正常に作動したか否かを確認することができる。
【００４９】
また、処理実行装置１０においてＣＰＵ１１は、第１の値と第２の値との対応関係が所定の関係になっていない場合の出力として、メインプログラム１３を実行する処理をリセットさせる信号を出力する。
【００５０】
このような処理実行装置１０によれば、第１の値と第２の値との対応関係が所定の関係になっていない状態、つまり、プログラム実行状況に異常がある場合に、メインプログラム１３を実行する処理をリセットさせることができる。
【００５１】
［その他の実施形態］
本発明の実施の形態は、上記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
【００５２】
例えば、上記実施形態においては、第１の操作としてｔ１またはｔ２に「１」を加算し、第２の操作としてｔ１またはｔ２に「Ｐ」を加算したが、任意の値を加減算、或いは乗除算等の任意の演算をするようにしてもよい。また、第１の値と第２の値との対応関係を検査する際には、評価処理にて、これら任意の演算に対応した対応関係になっているか否かを検査すればよい。
【００５３】
例えば、第１の操作としてｔ１またはｔ２に「２」を乗じる場合、評価処理では、ｔ１がｔ２の２倍または０．５倍になっているか否かを検査すればよい。
【符号の説明】
【００５４】
１…実行状況監視装置、１０…処理実行装置、１１…ＣＰＵ、１２…クロック、１３…メインプログラム、１４…監視プログラム、１５…記憶領域、２１…ウォッチドック回路。
【図１】
0005541201.tif 000002
【図２】
0005541201.tif 000003
【図３】
0005541201.tif 000004
【図４】
0005541201.tif 000005
【図５】
0005541201.tif 000006
【図６】
0005541201.tif 000007