(57)【要約】【課題】タイムシェアリングを行いながら複数のタスクが並行して稼働する電子計算機装置において、再起動後に行う異常原因特定作業を迅速、容易にできるようにする電子計算機装置の提供を目的とする。【解決手段】ウォッチドッグタイマ２は暴走を検知するとＮＭＩを発行する。タスク管理手段７２はその後一定時間の間にＣＰＵを占有したタスクのＣＰＵ占有時間をタスク毎に積算して不揮発性媒体４上のＣＰＵ占有時間テーブル４１に記録する。この記録データを元に再起動後に暴走原因を容易に特定できる機能を備えた電子計算機装置を提供する。【選択図】図２
2009217760.tif 000002
【特許請求の範囲】
【請求項１】
タイムシェアリングによってＣＰＵで実行される複数のタスクを含むソフトウェアの暴走を検知するウォッチドッグタイマと、このウォッチドッグタイマがソフトウェアの暴走を検知した後、所定時間後に電子計算機装置を再起動させるリセット手段と、ソフトウェア暴走を検知してから電子計算機装置が再起動される迄の間にＣＰＵを占有したタスクのＣＰＵ占有時間をタスク毎に積算するタスク管理手段と、このタスク管理手段によって積算された値を記録するメモリとを備えた電子計算機装置。
【請求項２】
上記メモリへの記録はタスク識別子とそれに対応するＣＰＵ占有時間積算値からなるＣＰＵ占有時間テーブルにすることを特徴とする請求項１に記載の電子計算機装置。
【請求項３】
上記メモリは不揮発性媒体であることを特徴とする請求項１又は請求項２に記載の電子計算機装置。
【請求項４】
タイムシェアリングによってＣＰＵで実行される複数のタスクを含むソフトウェアの暴走を検知するウォッチドッグタイマと、このウォッチドッグタイマがソフトウェアの暴走を検知した後、所定時間の間にＣＰＵを占有したタスクのＣＰＵ占有時間をタスク毎に積算するタスク管理手段と、このタスク管理手段によって積算された値を先ず記録する第１のメモリと、電子計算機装置を再起動する前に第１のメモリの記録をコピーして保存するための不揮発性の第２のメモリと、前記コピー終了後に指示を受けて電子計算機装置を再起動させるリセット手段とを備えた電子計算機装置。
【請求項５】
上記第１及び第２のメモリへの記録はタスク識別子とそれに対応するＣＰＵ占有時間積算値からなるＣＰＵ占有時間テーブルにするすることを特徴とする請求項４に記載の電子計算機装置。
【請求項６】
上記コピー終了後のソフトウェアによるリセット手段へのリセット指示が機能しない場合、所定時間後にウォッチドッグタイマによって強制的にリセット指示を出すことを特徴とする請求項４又は請求項５に記載の電子計算機装置。
【請求項７】
電子計算機装置を再起動する前に第１のメモリを検索し、最もＣＰＵ占有時間積算値が大きいタスクの記録を第２のメモリに保存することを特徴とする請求項４乃至請求項６のいずれか１項に記載の電子計算装置。
【請求項８】
ＣＰＵ占有時間テーブルには所定のタスクのＣＰＵ占有時間積算値を記録すること特徴とする請求項２、３、５、６又は請求項７のいずれか１項に記載の電子計算機装置。
【請求項９】
ＣＰＵ占有時間テーブルは新たなタスクが動作するとそのタスクの識別子が追加されることを特徴とする請求項２、３、５、６又は請求項７のいずれか１項に記載の電子計算機装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はソフトウェア暴走による異常を検知し、その原因を特定するための機能を備えた電子計算機装置に関するものである。
【背景技術】
【０００２】
従来の電子計算機装置においては、ソフトウェア暴走を検知したＷＤＴ（ウォッチドッグタイマ）がＣＰＵに対しＮＭＩ割り込み（ノンマスカブルインタラプト）を行い、ＮＭＩ割り込みを受けた電子計算機装置のＯＳが例外ハンドラを使用して異常検出時のタスク実行記録を不揮発性媒体に保存し、後で不揮発性媒体に保存されたタスク実行記録を、異常原因を特定するために使用していた（例えば、特許文献１参照）。
【０００３】
また、従来の電子計算機装置においては、ＷＤＴ再設定周期の間において、個々のタスクにおけるＣＰＵ占有時間の最小値および最大値、及び予め指定したタスクの組み合わせの連続ＣＰＵ占有時間の最小値、最大値を保存し、後で異常原因を特定するために使用していた（例えば特許文献２参照）。
【０００４】
【特許文献１】特開２００６−１１９９１号公報（第７頁、第１図）
【特許文献２】特開平０２−２７６７８４号公報（第９頁、第１図）
【０００５】
なお本明細書中において使用する「ソフトウェア」、「ＯＳ」及び「アプリケーションソフト」、「タスク」の各概念はソフトウェアを最上位概念として順に下位概念であるものとしてとして記載する。タスクはソフトウェアを構成する１実行単位である。
また、文中で使用する用語を次のように定義する。
「タスク稼働時間」とは、あるタスクが動作を開始してからタスクスイッチングによる一時停止、再開を繰り返しながら終了するまでの時間をいう。
「ＣＰＵ占有時間」とは、あるタスクが初めて動作し、或いはタスクスイッチングによる一時停止状態から復帰してＣＰＵを占有してから、次のタスクスイッチングによって一時停止、あるいは完全に終了するまでの時間をいう。
ソフトウェアの暴走とは、タスクが無限ループに陥って終了できない場合のみならず、予期せぬタスクの実行が発生する場合を含む。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１に示される従来の電子計算機装置は上記のように構成されているので、タイムシェアリングを行い、複数のタスクが並行して稼働する電子計算機装置に用いた場合、ＮＭＩ割り込みが発生したときにＣＰＵを占有しているタスクの実行記録は保存されているが、当該タスクが必ずしもソフトウェア暴走の原因となっているタスクではない場合があるために、保存されたタスクの実行記録を使用しても異常原因の特定が困難であるという問題点があった。
【０００７】
特許文献２に示される従来の電子計算機装置に使用される検知機能は上記のように構成されているので、個々のタスクを決められた順序で、決められた周期で行うような組み込み計算機では有効である。しかしこれを、タイムシェアリングを行い多数のタスクが並行して稼働する汎用電子計算機装置に用いた場合、個々のタスクが状況に応じて停止および実行再開を行っているので異常発生後に保存された個々のタスクについてのＣＰＵ占有時間の最大、最小値のデータを記録しても、記録データがタスクスイッチング周期の影響を受けるため、どのタスクに問題が発生していたのかを特定することが困難であった。
また特許文献２中のＴＩＭＥ・ＭＩＮ［３］、ＴＩＭＥ・ＭＡＸ［３］に記録されるデータのように、直前に引き続いて実行されたタスク１、タスク２、タスク３のＣＰＵ占有時間の合計を記録するというような、記録するタスクの組み合わせを予め決めておくことは汎用電子計算機においては事実上不可能である。
結局、汎用電子計算機において記録できるデータは個別タスク毎の連続したＣＰＵ占有時間の最小値、最大値のみとなる。
この値はほとんどの場合タスクスイッチングされるまでの当該タスクのＣＰＵ占有時間であって、当該タスク稼働時間の中の一部分のＣＰＵ占有時間の最小、最大値を記録しても、そのタスクが異常原因であったことを特定することはほとんどできないという問題があった。
【０００８】
また、稼動時間の極短い予期せぬタスクが断続して大量に動作するようなソフトウェア暴走が発生した場合は記録されるデータは小さな値を示す。この場合、他に１回実行されただけでも、稼動時間が長かったタスクがあれば、それを異常原因と誤認する可能性があるなどの問題点があった。
【０００９】
この発明は上記のような課題を解決するためになされたものであり、タイムシェアリングを行いながら複数のタスクが並行して稼働する電子計算機装置においてソフトウェアの暴走を検知した後に、所定の時間内にＣＰＵを占有するタスクのＣＰＵ占有時間をタスク毎に積算記録することにより、再起動後に行う異常原因特定作業を迅速、容易にできるようにする電子計算機装置の提供を目的とする。
【課題を解決するための手段】
【００１０】
複数のタスクがタイムシェアリングによってＣＰＵを占有しながら稼働している環境でソフトウェアの暴走が発生した場合、まず、ウォッチドッグタイマがその暴走を検知し、その後所定時間後に電子計算機装置を再起動する迄の間にＣＰＵを占有したタスクのＣＰＵ占有時間をタスク毎に積算し、その値をメモリに記録する機能を備えた電子計算機装置を提供する。
【発明の効果】
【００１１】
タイムシェアリングを行いながら複数のタスクが並行して稼働する電子計算機装置においてソフトウェアの暴走を検知した後に、所定の時間内にＣＰＵを占有するタスクのＣＰＵ占有時間をタスク毎に積算記録することにより、再起動後に行う異常原因特定作業を迅速、容易にできるようにする効果がある。
【発明を実施するための最良の形態】
【００１２】
実施の形態１．
この実施の形態１では、予め初期値Ｘで設定される所定時間の間にＷＤＴ（ウォッチドッグタイマ）がＷＤＴ再設定指示を受けなかった場合、ＷＤＴは、ＯＳに対してＮＭＩ（ノンマスカブルインタラプト）を発行し、その後に更に初期値Ｘで指定される所定時間の間にＣＰＵを占有したタスクのＣＰＵ占有時間をタスク毎に積算して不揮発性媒体に記録した後システムを再起動する。この時に記録されたデータを元に異常原因となったタスクを迅速、容易に特定しようとするものである。
以下、この発明の実施の形態１を図１、２に基づいて説明する。
図１において、１００は電子計算機装置である。１はＣＰＵである。３はリセット手段でありシステム全体を再起動するための装置である。２はＷＤＴ（ウォッチドッグタイマ）であってＦＰＧＡ、ＣＰＬＤ等を用いている。４は不揮発性媒体である。５はＲＡＭ、６は外部記憶装置であってＨＤＤ等を用いる。各ハードウェア資源はバス１０９によって接続されてメイン基板上に実装、或いは外部接続されている。
７はマルチタスクＯＳであってＵｎｉｘ（登録商標），Ｌｉｎｕｘ等である。電子計算機装置１００はＯＳ７を読み込んで起動後、各種ドライバソフト８、アプリケーションソフト９を読み込んで実行する。
【００１３】
図２において、７は本発明における電子計算機装置のＯＳ、２はＷＤＴ、３は電子計算機装置を再起動させるリセット手段、４は不揮発性媒体である。７１はＷＤＴ２からのＮＭＩ割り込みにより動作するＮＭＩ例外ハンドラ、７２はＯＳ７で管理されるタスクのスイッチング処理等を行うタスク管理手段、７ａから７ｎおよび７ｔはタスク管理手段７２によるスイッチングの対象となるタスク、特に７ｔは他のタスクより低い実行優先度を与えられ周期的にＷＤＴ２に対してカウンタ２１の再設定指示を行うＷＤＴ再設定タスク、７３はＮＭＩ例外ハンドラ７１から実行される測定開始処理、７４は測定開始処理７３およびタスク管理手段７２に現在時刻を通知する時刻取得手段、７５は測定が開始されたことを記録する測定開始変数、７６は現在実行中のタスク７ｘの処理開始時間を記録する開始時間変数、２１はＷＤＴ２がカウントダウンし値が０になるとソフトウェアが暴走したと検知するカウンタ、２２はカウントダウン処理が何回目かを記録する回数変数、４１は測定開始処理７３を実行後、タスク毎のＣＰＵ占有時間を積算して記録するＣＰＵ占有時間テーブルである。
【００１４】
次に、ＣＰＵ占有時間テーブル４１の構造を図３に基づいて説明する。
図３はＣＰＵ占有時間テーブル４１である。タスク７ｘを一意に識別する識別子とそのタスクのＣＰＵ占有時間積算値を１レコードとして、タスク７ａからタスク７ｎまでのレコードを持つテーブルである。このＣＰＵ占有時間積算値に記録されるデータは、記録開始後のタスク毎のＣＰＵ占有時間の積算値である。
【００１５】
次に、ＷＤＴ２の動作を図４に基づいて説明する。
ＷＤＴ２は電子計算機装置の起動と共に動作を開始する（Ｓ０２０１）。まず回数変数２２を０に設定する（Ｓ０２０２）。次にカウンタ２１を初期値Ｘに設定する（Ｓ０２０３）。次にカウンタ２１から１を減算する（Ｓ０２０４）。次にカウンタ２１が０か否かを判別する（Ｓ０２０５）。判別Ｓ０２０５においてカウンタ２１が０でなかった場合はＳ０２０４の処理に戻る。判別Ｓ０２０５においてカウンタ２１が０であった場合は回数変数２２が１であるか否かを判別する（Ｓ０２０６）。判別Ｓ０２０６において回数変数２２が１でなかった場合、すなわち回数が０であった場合はＯＳ７に対してＮＭＩを発行する（Ｓ０２０７）。次に回数変数２２に１を加算する（Ｓ０２０８）。次にＳ０２０３に戻りカウントダウンを開始する。０までカウントダウンされると、判別Ｓ０２０６において回数変数２２が１であった場合は、リセット手段３にリセット指示を与え電子計算機装置を再起動する（Ｓ０２０９）。
【００１６】
また、ＷＤＴ２はカウントダウン中にＷＤＴ再設定指示を受けた場合、カウンタ値の再設定処理を開始する（Ｓ０２１１）。まず回数変数２２が０であるか判別する（Ｓ０２１２）。判別Ｓ０２１２において回数変数が０であった場合カウンタ２１を初期値Ｘに再設定する（Ｓ０２１３）。次に処理を終了する（Ｓ０２１４）。判別Ｓ０２１２において回数変数が０ではなかった場合は直ちに処理を終了する（Ｓ０２１４）。
なお、回数変数が一旦１に設定された後は、ＷＤＴ再設処理が開始されても、判別Ｓ０２１２でＮＯと判別されるためＷＤＴ２のカウンタ２１は再設定されない。
【００１７】
上記のように、ＷＤＴ２は予め初期値Ｘで設定される所定時間にＷＤＴ再設定タスク７ｔによってカウンタが再設定されなかった場合、ＯＳ７に対してＮＭＩ（ノンマスカブルインタラプト）を発行し、その後に更に初期値Ｘで指定される所定時間後にリセット手段３に対して電子計算機装置の再起動指示を出すものである。
【００１８】
次に、ＷＤＴ再設定タスク７ｔの動作を図５に基づいて説明する。
ＷＤＴ再設定タスク７ｔは他のタスクより実行優先度が低い状態でＯＳ７起動後動作を開始する（Ｓ０７０１）。まずＷＤＴ２に対しＷＤＴ再設定指示を行う（Ｓ０７０２）。次にＹ時間待機する（Ｓ０７０３）。これを繰り返す。
【００１９】
ＷＤＴ再設定タスク７ｔは実行優先度が最も低いため、他のタスクが動作していない場合のみ動作可能である。そのため、カウンタ２１がＸからカウントダウンされ０に至るまでの間にＷＤＴ再設定タスクが全く動作できなければ、初期値Ｘで設定される所定時間の間、常に他のタスクが動作していた事を意味し、これはソフトウェアの暴走が起こっていると判断できる。
【００２０】
このようなＷＤＴ２とＷＤＴ再設定タスク７ｔの組み合わせにより、ソフトウェア暴走を検知するとＯＳ７に対しＮＭＩを発行し、後に所定時間後、電子計算機装置を再起動させる構成を実現できる。
【００２１】
次にＮＭＩ例外ハンドラ７１の動作を図６に基づいて説明する。
ＮＭＩ例外ハンドラ７１はＷＤＴ２から発行されるＮＭＩを受けて処理を開始する（Ｓ０５０１）。まず測定開始処理７３を実行する（Ｓ０５０２）。次に終了する（Ｓ０５０３）。
【００２２】
次に測定開始処理７３の動作を図７に基づいて説明する。
測定開始処理７３実行前は測定開始変数７５の値は０であるとする。
測定開始処理７３はＮＭＩ例外ハンドラ７１により実行されて処理を開始する（Ｓ０８０１）。まず測定開始変数を１にする（Ｓ０８０２）。次に時刻取得手段９から現在時刻を取得し開始時刻変数１１に代入する（Ｓ０８０３）。次に終了する（Ｓ０８０４）。
【００２３】
次にタスク管理手段７２のタスクスイッチング処理を図８に基づいて説明する。
まず、ソフトウェアの暴走が検知される前の処理を説明する。
タスク管理手段７２におけるタスクスイッチング処理は、何らかの要因により実行中のタスクを切り替える場合に処理が開始される（Ｓ０６０１）。この場合、要因はタイマ割り込みによるタスク切り替え、Ｉ／Ｏ割り込みによる待機タスクの起床、優先度変更に基づくタスクのプリエンプション、排他制御に基づく実行権の委譲などさまざまな要因がある。処理開始後、測定開始変数７５が１であるか否か判別する（Ｓ０６０２）。ソフトウェアの暴走を検知する前は、測定開始変数は０であり、Ｓ０６０３に進む。次に現在実行中のタスクの実行記録を保存する（Ｓ０６０３）。実行記録には各種レジスタの値、プログラムカウンタの値、スタックポインタの値、実行すべきタスクの識別子などがある。次にスイッチ先のタスクの実行記録を復帰させる（Ｓ０６０４）。次にタスク切り替え処理が完了する（Ｓ０６０５）。これによりタスク管理手段７２のタスクスイッチング処理の前後でタスクが切り替わる。
【００２４】
ソフトウェアの暴走が検知された後では、ＷＤＴ２よりＯＳ７に対しＮＭＩが発行され、測定開始処理７３により測定開始変数７５が１とされている。
【００２５】
何らかの要因により実行中のタスク１が次のタスク２に切り替えられる場合にタスク管理手段７２はタスクスイッチング処理を開始する（Ｓ０６０１）。まず、測定開始変数７５が１であるか否か判別する（Ｓ０６０１）。ソフトウェアの暴走を検知した後であるため、測定開始変数は１であるのでＳ０６０６に進む。次に時刻取得手段７４から現在時刻を取得し開始時間変数７６との差分を計算する（Ｓ０６０６）。この差分の値は、ＮＭＩ割り込み時にＣＰＵを占有していたタスク１が次のタスク２へタスクスイッチングするまでにＣＰＵを占有した時間に相当する。
計算した差分をＣＰＵ占有時間テーブル４１におけるタスク１のＣＰＵ占有時間積算値に加算する（Ｓ０６０７）。次に時刻取得手段７４から現在時刻を取得し開始時間変数７６に代入する（Ｓ０６０８）。以降はＳ０６０３に進み、ソフトウェア暴走中に更に次のタスク３へスイッチングした場合、（Ｓ０６０１）、（Ｓ０６０２）、（Ｓ０６０６）、（Ｓ０６０７）が実行され、タスク２のＣＰＵ占有時間がテーブルのタスク２のＣＰＵ占有時間の積算値に加算される。
【００２６】
このように測定開始処理７３とタスク管理手段７２の組み合わせにより、ＷＤＴ２よりＮＭＩが発行された後ＣＰＵを占有したタスク毎のＣＰＵ占有時間の積算値がＣＰＵ占有時間テーブル４１に記録される構成を実現できる。
【００２７】
ＣＰＵ占有時間テーブル４１へのタスク毎のＣＰＵ占有時間の加算はＷＤＴ２がＯＳ７に対しＮＭＩを発行してから、ＷＤＴ２がリセット手段３により電子計算機装置を再起動させるまで継続して行われる。またＣＰＵ占有時間テーブル４１は不揮発性媒体４内に配置されているため、電子計算機装置再起動後も値が残る。
【００２８】
このように、本発明における実施の形態１は、ソフトウェアの暴走を検知するとＯＳに対しＮＭＩを発行し、後に所定時間後、電子計算機装置を再起動させるＷＤＴと、ＯＳに対しＮＭＩが発行されてから電子計算機装置を再起動される間に実行されたタスク毎のＣＰＵ占有時間を積算するタスク管理手段と、不揮発性媒体上に配置され、タスク毎のＣＰＵ占有時間積算値を保持するＣＰＵ占有時間テーブルから構成された電子計算機装置である。
【００２９】
上記の構成による電子計算機装置では、ソフトウェアの暴走が発生した場合、それを検知し、後の所定時間の間に実行されたタスク毎のＣＰＵ占有時間の積算値を不揮発性媒体上に保持した後に電子計算機装置が再起動させることが可能であり、また再起動後、不揮発性媒体上に保持したタスク毎のＣＰＵ占有時間積算値を参照することにより、ソフトウェアの暴走が発生した後に、最も長い間ＣＰＵを占有していたタスクが何であるかを分析できるため、異常原因解析が容易となるという効果がある。
【００３０】
また、タイムシェアリングを行いながら複数のタスクが並行して停止および再開を繰り返しながら稼働する電子計算機装置などにおいて、暴走後にＣＰＵを占有していたタスクをタスク毎にＣＰＵ占有時間積算値で記録しているためＷＤＴ再設定周期を超えてＣＰＵを占有するに至ったタスクが存在する場合は容易に特定できる。
更に、稼動時間の短い同じタスクが予期せず大量に実行されてしまうような場合にもソフトウェア暴走の原因を解析できるという効果がある。
【００３１】
実施の形態２．
以下、この発明の実施の形態２を図９に基づいて説明する。
図９において、７７はＯＳ７の主メモリ上に配置されたＣＰＵ占有時間テーブルであり構造は実施の形態１におけるＣＰＵ占有時間テーブル４１と同様である。７８はＣＰＵ占有時間テーブル７７の内容をＣＰＵ占有時間テーブル４１にコピーし、後にリセット手段３に指示して電子計算機装置を再起動させる測定終了処理、２０１は実施の形態１におけるＷＤＴ２に替わり、所定時間ＷＤＴ再設定指示が無ければＯＳ７に対しＮＭＩを発行し、更に所定時間後再度ＮＭＩを発行するＷＤＴ、７１１は実施の形態１におけるＮＭＩ例外ハンドラ７１に替わり、一回目のＮＭＩに対し測定開始処理７３を実行し、２回目のＮＭＩに対し測定終了処理７８を呼び出すＮＭＩ例外ハンドラ、７２１は実施の形態１におけるタスク管理手段７２に替わり、ＣＰＵ占有時間テーブル７７に対し入出力を行うタスク管理手段である。他の構成要素に関しては実施の形態１と等しい。
【００３２】
次に、ＷＤＴ２０１の動作を図１０に基づいて説明する。
図１０においてＳ０２０１からＳ０２０５までの処理は実施の形態１（図４）におけるＷＤＴ２のＳ０２０１からＳ０２０５迄の処理と等しい。判別Ｓ０２０５においてカウンタ２１が０であった場合、Ｓ２１０１に進む。ここでは回数変数２２が２であるか否かを判別する（Ｓ２１０１）。判別Ｓ２１０１で回数変数２２が２ではない場合、すなわち０か１であった場合、ＯＳ７に対しＮＭＩを発行する（Ｓ０２０７）。以降の処理は実施の形態１（図４）における（Ｓ０２０８）、（Ｓ０２０３）から（Ｓ０２０５）の処理と等しい。再び（Ｓ２１０１）にて回数変数２２が２であるかを判別する。２であれば処理を停止する（Ｓ２１０２）。
回数変数が一旦１に設定された後は、ＷＤＴ再設処理が開始されても、図１０Ｓ０２１２でＮＯと判別されるためＷＤＴ２０１のカウンタ２１は再設定されない。
【００３３】
上記の動作により、ＷＤＴ２０１は初期値Ｘで設定される所定時間の間にソフトウェア暴走によりＷＤＴ再設定指示を受けなかった場合、まず、ＯＳ７に対しＮＭＩを発行し、後に初期値Ｘで指定される所定時間の間待機した後に再度ＯＳ７に対し２回目のＮＭＩを発行する。
【００３４】
次に、ＮＭＩ例外ハンドラ７１１の動作を図１１に基づいて説明する。
ＮＭＩ例外ハンドラ７１１はＷＤＴ２０１から発行されるＮＭＩを受けて処理を開始する（Ｓ０５０１）。まず測定開始変数７５が１であるか判別する（Ｓ０５１１）。判別Ｓ０５１１において測定開始変数７５が１でなかった場合、すなわち０であった場合は、測定開始処理７３を実行する（Ｓ０５０２）。次に終了する（Ｓ０５０３）。２回目のＮＭＩであるかどうかを判定する判別Ｓ０５１１において測定開始変数７５が１であった場合は、測定終了処理７８を実行する（Ｓ０５１２）。次に終了する（Ｓ０５０３）。以上により１回目のＮＭＩを受けてタスクのＣＰＵ占有時間の測定が始まり、２回目のＮＭＩを受けて測定が終了する。
【００３５】
次に、測定終了処理７８の動作を図１２に基づいて説明する。
測定終了処理７８は２回目のＮＭＩ発行を受けてＮＭＩ例外ハンドラ７１１により実行されて処理を開始する（Ｓ１６０１）。まずＣＰＵ占有時間テーブル７７の内容をＣＰＵ占有時間テーブル４１にコピーする（Ｓ１６０２）。次にリセット手段３に対して電子計算機装置の再起動を指示する（Ｓ１６０３）。
【００３６】
次にタスク管理手段７２１の動作を再度図９に基づいて説明する。
タスク管理手段７２１は、実施の形態１におけるタスク管理手段７２が、不揮発性媒体４上のＣＰＵ占有時間テーブル４１に対し入出力を行った替わりに、電子計算機装置の主メモリ上のＣＰＵ占有時間テーブル７７に対し入出力を行う点以外はタスク管理手段７２と等しい。
【００３７】
このように、本発明における実施の形態２は、ソフトウェアの暴走を検知するとＯＳに対し１回目のＮＭＩを発行し、後に所定時間後、２回目のＮＭＩを発行するＷＤＴと、ＯＳに対し一回目のＮＭＩが発行されてから二回目のＮＭＩが発行される間に実行されたタスク毎のＣＰＵ占有時間を積算するタスク管理手段と、主メモリ上に配置され、タスク毎のＣＰＵ占有時間の積算値を保持するＣＰＵ占有時間テーブルと、二回目のＮＭＩを受信後に主メモリ上のＣＰＵ占有時間テーブルを不揮発性媒体上のＣＰＵ占有時間テーブルにコピーし、後にリセット手段に電子計算装置の再起動を指示する測定終了処理から構成された電子計算機装置である。
なお、ＮＭＩを２回発行する理由は、ＣＰＵ占有時間テーブル７７を主メモリから不揮発性メモリへコピーするための測定終了処理の起動に必要であるからである。
実施の形態１では、ＮＭＩ発行後所定時間後に、ＯＳ７内の処理に関係なくリセット手段３にＷＤＴ２がリセット指令を出す構成であった。実施の形態１の構成で主メモリにＣＰＵ占有時間テーブルを置いた場合、テーブルを不揮発性メモリにコピー中に電子計算機装置がリセットされ、データが消失する可能性がある。そこで、本実施の形態２では測定終了処理がリセット指示を出す構成とした。
【００３８】
上記の構成による電子計算機装置では、実施の形態１に示した効果に加え、高速アクセスが可能な主メモリ上に一旦ＣＰＵ占有時間テーブルを保存し、そのテーブルを最後に一括して不揮発性媒体にコピーするので、スピードの遅い不揮発性媒体を使用した場合でも、タスク管理手段に不可をかけずにタスクスイッチングが行えるという効果がある。
また、測定終了処理が、全ての処理を終了した後でリセット手段に電子計算機装置の再起動を指示するので、データを確実に保存できるという効果がある。
【００３９】
実施の形態３．
以下、この発明の実施の形態３を図１３に基づいて説明する。
図１３において、ＷＤＴ２０２は実施の形態２におけるＷＤＴ２０１に替わるものである。ＷＤＴ２０２は所定時間内にＷＤＴ再設定指示が無ければＯＳ７に対しＮＭＩを発行し、その後所定時間後再度ＮＭＩを発行し、その後所定時間後にリセット手段３に対して電子計算機装置の再起動を指示するＷＤＴである。他の構成要素に関しては実施の形態２と等しい。
【００４０】
次に、ＷＤＴ２０２の動作を図１４に基づいて説明する。
図１４中のＳ２２０２、Ｓ２２０３以外の構成については、実施の形態２におけるＷＤＴ２０１の動作を示す図１０と同様である。
実施の形態３におけるＷＤＴ２０２では、１回目、２回目のＮＭＩを発行した後、再度カウンタをＸから０までカウントダウンし、判別Ｓ２２０１で回数変数が２となる場合、リセット手段３を用いて電子計算機装置を再起動する（Ｓ２２０２）。そして処理を停止する（Ｓ２２０３）。
【００４１】
上記の動作により、ＷＤＴ２０２は初期値Ｘで設定される所定時間の間にＷＤＴ再設定指示を受けなかった場合、まず、ＯＳ７に対しＮＭＩを発行し、後に初期値Ｘで指定される所定時間の間待機した後に再度ＯＳ７に対しＮＭＩを発行し、後に初期値Ｘで指定される所定時間の間待機して電子計算機装置のリセットを指示する。
【００４２】
このように、本発明における実施の形態３は、ソフトウェアの暴走を検知するとＯＳ７に対し１回目のＮＭＩを発行し、後に所定時間後、２回目のＮＭＩを発行し、更に所定時間後にリセット手段に電子計算機装置の再起動を指示するＷＤＴと、ＯＳに対し一回目のＮＭＩが発行されてから二回目のＮＭＩが発行される間に実行されたタスク毎のＣＰＵ占有時間を積算するタスク管理手段と、主メモリ上に配置され、タスク毎のＣＰＵ占有時間の積算値を保持するＣＰＵ占有時間テーブルと、二回目のＮＭＩを受信後に主メモリ上のＣＰＵ占有時間テーブルを不揮発性媒体上のＣＰＵ占有時間テーブルにコピーし、後にリセット手段に対して電子計算機装置の再起動を指示する測定終了処理から構成された電子計算機装置である。
【００４３】
上記の構成による電子計算機装置では、実施の形態２に示した効果に加え、ＯＳ内部で行われる処理において異常が発生し再起動が行えない場合でも所定時間後ＷＤＴにより強制的に再起動が行われる。このため、より確実に異常発生状態から復帰できるという効果がある。
【００４４】
実施の形態４．
以下、この発明の実施の形態４を図１５に基づいて説明する。
図１５において、測定終了処理７８１は実施の形態２及び３における測定終了処理７８に、処理実施時にＣＰＵ占有時間テーブル７７を検索し、最もＣＰＵ占有時間積算値の長いタスクを特定し、そのタスクにおける実行記録を不揮発性媒体４上の実行記録エリア４２に保存する処理を追加したものである。他の構成要素に関しては実施の形態３と等しい。
【００４５】
次に、測定終了処理７８１の動作を図１６に基づいて説明する。
測定終了処理１７はＮＭＩ例外ハンドラ７１１により実行されて処理を開始する（Ｓ１６０１）。まずＣＰＵ占有時間テーブル７７の内容をＣＰＵ占有時間テーブル４１にコピーする（Ｓ１６０２）。次にＣＰＵ占有時間テーブル７７を検索し、最もＣＰＵ占有時間積算値の長いタスクを特定する（Ｓ１７０１）。次に特定したタスクの実行記録を実行記録エリア４２に保存する。次にリセット手段３に対し電子計算機装置の再起動を指示する（Ｓ１６０３）。
【００４６】
このように、本発明における実施の形態４は、予め主メモリ上のＣＰＵ占有時間テーブルを検索し、最もＣＰＵ占有時間の長いタスクの実行記録を不揮発性媒体上の実行記録エリアに保存し、後にリセット手段に対して電子計算機装置の再起動を指示する構成である。
【００４７】
上記の構成による電子計算機装置では、異常検知から再起動までの間に最もＣＰＵ占有時間積算値の長かったタスクの記録を素早く参照でき、実施の形態３に示した効果に加えて、より原因解析が容易になるという効果がある。
【００４８】
実施の形態５．
以下、この発明の実施の形態５を図１７に基づいて説明する。
図１７において、７８２は実施の形態４における測定終了処理７８１に替わり、処理実施時に稼動時間テーブルのコピーを行わないようにした測定終了処理である。他の構成要素に関しては実施の形態４と等しい。
【００４９】
次に、測定終了処理７８２の動作を図１８に基づいて説明する。
測定終了処理７８２はＮＭＩ例外ハンドラ７１１により実行されて処理を開始する（Ｓ１６０１）。まずＣＰＵ占有時間テーブル７７を検索し、最もＣＰＵ占有時間の長いタスクを特定する（Ｓ１７０１）。次に特定したタスクの実行記録を実行記録エリア４２に保存する。次にリセット手段３に対して電子計算機装置の再起動を指示する（Ｓ１６０３）。
【００５０】
このように、本発明における実施の形態５は、予め主メモリ上のＣＰＵ占有時間テーブルを検索し、最もＣＰＵ占有時間積算値の長いタスクの実行記録だけを不揮発性媒体上の実行記録エリアに保存し、後にリセット手段に対して電子計算機装置の再起動を指示する構成である。
【００５１】
上記の構成による電子計算機装置では、実施の形態４に比べ、不揮発性媒体のサイズを小さくすることができるという効果がある。
【００５２】
実施の形態６．
実施の形態６は実施の形態２に次の４点の変更を加えたものである。
（１）ＣＰＵ占有時間テーブル７７１
（２）測定開始処理７３１
（３）タスク管理手段７２２
（４）測定終了処理７８３
変更点を図１９、２０、２１、２２、２３に基づいて説明する。
【００５３】
図２０はこの実施の形態６で利用するＣＰＵ占有時間テーブル７７１である。これまでの実施の形態の中では予め用意されたテーブルを利用してタスクのＣＰＵ占有時間データを積算記録していた。このテーブル７７１は新たなタスクがＣＰＵを占有した場合にタスクの識別子を新規に追加記録するものである。従って未だ一度も動作していないタスクの情報は記録されていない。
【００５４】
図２１に基づいて測定開始処理７３１を説明する。Ｓｂ０８０１からＳｂ０８０３の処理は前述の実施の形態１乃至５と同様である。この測定処理７３１では、現在ＣＰＵを占有しているタスクの識別子をタスク管理手段７２２に照会してそのタスク識別子をＣＰＵ占有時間テーブル７７１に記録する処理（Ｓｂ０８０４）を追加している。
【００５５】
タスク管理手段７２２によるタスクスイッチング処理を図２２に基づいて説明する。スイッチ要因（Ｓｂ０６０１）が発生し、測定開始＝１と判定した場合、現在時刻から開始時刻を差し引いて現在のタスクのＣＰＵ占有時間を計算する（Ｓｂ０６０６）。
次に、現在ＣＰＵを占有しているタスクのタスク識別子がテーブル７７１に存在する場合は求めたＣＰＵ占有時間をテーブル７７１上のそのタスクのＣＰＵ占有時間積算値に加算し（Ｓｂ０６０９）、存在しない場合はそのタスクの識別子をテーブル７７１に追加（Ｓｂ０６０８）してから積算値を記録する。その他の処理は実施の形態２と同様である。
【００５６】
測定終了処理７８３の動作を図２３に基づいて説明する。
測定終了処理７８３はＮＭＩ例外ハンドラ７１１により呼び出されて処理を開始する（Ｓｂ１６０１）。次に時刻取得手段７４から現在の時刻を取得し、その時刻から開始時刻を引いた値を計算する（Ｓｂ１６０２）。次に現在ＣＰＵを占有しているタスクの識別子をタスク管理手段７２２に照会して（Ｓｂ１６０３）計算結果をＣＰＵ占有時間テーブル７７１の当該タスクのＣＰＵ占有時間積算値に加算する（Ｓｂ１６０４）。
ＣＰＵ占有時間テーブル７７１の内容をＣＰＵ占有時間テーブル４１１にコピーする（Ｓｂ１６０５）。次にリセット手段３に対して電子計算機装置の再起動を指示する（Ｓｂ１６０６）。
【００５７】
上記４点以外の構成については実施の形態２と同様である。
【００５８】
この実施の形態６の電子計算機装置では、実施の形態２に示した効果に加え次の効果がある。
測定開始処理７３１において、現在ＣＰＵを占有しているタスク情報を取得しテーブル７７１に記録するため、万一タスクスイッチングが1度も発生しないで測定終了処理が実行された場合でもＣＰＵを占有していたタスクを特定できる。
また、測定終了処理７８３において、最後にＣＰＵを占有していたタスクのデータを取得してテーブル７７１に記録するので、最初のＮＭＩ発行直後から電子計算機のリセット指示をするまでのすべてのＣＰＵ占有タスクのデータを漏れなく記録できる。従って電子計算機装置が再起動した後の原因解析を容易にできる。
【００５９】
なお、（１）については全ての実施の形態に、（２）から（４）については実施の形態３乃至５の電子計算機装置に対しても適用可能である。その場合、上述した効果を同様に奏する。
【図面の簡単な説明】
【００６０】
【図１】この発明による電子計算機装置の構成図である。
【図２】この発明の実施の形態１を示す構成図である。
【図３】この発明の実施の形態１におけるＣＰＵ占有時間テーブル４１の構造図である。
【図４】この発明の実施の形態１におけるＷＤＴ２のフローチャートである。
【図５】この発明の実施の形態１におけるＷＤＴ再設定タスク７ｔのフローチャートである。
【図６】この発明の実施の形態１におけるＮＭＩ例外ハンドラ７１のフローチャートである。
【図７】この発明の実施の形態１における測定開始処理７３のフローチャートである。
【図８】この発明の実施の形態１におけるタスク管理手段７２のフローチャートである。
【図９】この発明の実施の形態２を示す構成図である。
【図１０】この発明の実施の形態２におけるＷＤＴ２０１のフローチャートである。
【図１１】この発明の実施の形態２におけるＮＭＩ例外ハンドラ７１１のフローチャートである。
【図１２】この発明の実施の形態２における測定終了処理７８のフローチャートである。
【図１３】この発明の実施の形態３を示す構成図である。
【図１４】この発明の実施の形態３におけるＷＤＴ２０２のフローチャートである。
【図１５】この発明の実施の形態４を示す構成図である。
【図１６】この発明の実施の形態４における測定終了処理７８１のフローチャートである。
【図１７】この発明の実施の形態５を示す構成図である。
【図１８】この発明の実施の形態５における測定終了処理７８２のフローチャートである。
【図１９】この発明の実施の形態６を示す構成図である。
【図２０】この発明の実施の形態６におけるＣＰＵ占有時間テーブル７７１の構造図である。
【図２１】この発明の実施の形態６における測定開始処理７３１のフローチャートである。
【図２２】この発明の実施の形態６におけるタスク管理手段７２２のフローチャートである。
【図２３】この発明の実施の形態６における測定終了処理７８３のフローチャートである。
【符号の説明】
【００６１】
１００  電子計算機装置、１  ＣＰＵ、２，２０１，２０２  ＷＤＴ、
２１  カウンタ、２２  回数変数、３  リセット手段、４  不揮発性媒体、
４１，４１１  ＣＰＵ占有時間テーブル、５  ＲＡＭ、６  外部記憶装置、７  ＯＳ、
７１，７１１  ＮＭＩ例外ハンドラ、７２，７２１，７２２  タスク管理手段、
７３，７３１  測定開始処理、７４  時刻取得手段、７５  測定開始変数、
７６  開始時間変数、７ａ〜７ｎ  タスク、７ｔ  ＷＤＴ再設定タスク、
７７，７７１  ＣＰＵ占有時間テーブル、
７８，７８１，７８２，７８３  測定終了処理。
【図１】
2009217760.tif 000003
【図２】
2009217760.tif 000004
【図３】
2009217760.tif 000005
【図４】
2009217760.tif 000006
【図５】
2009217760.tif 000007
【図６】
2009217760.tif 000008
【図７】
2009217760.tif 000009
【図８】
2009217760.tif 000010
【図９】
2009217760.tif 000011
【図１０】
2009217760.tif 000012
【図１１】
2009217760.tif 000013
【図１２】
2009217760.tif 000014
【図１３】
2009217760.tif 000015
【図１４】
2009217760.tif 000016
【図１５】
2009217760.tif 000017
【図１６】
2009217760.tif 000018
【図１７】
2009217760.tif 000019
【図１８】
2009217760.tif 000020
【図１９】
2009217760.tif 000021
【図２０】
2009217760.tif 000022
【図２１】
2009217760.tif 000023
【図２２】
2009217760.tif 000024
【図２３】
2009217760.tif 000025