(57)【要約】【課題】トレースデータの保存方法及び装置に関し、障害発生時等にトレースデータを不揮発メモリに保存する際に、障害解析等における有用なトレースデータの欠損が発生する可能性を減少させる。【解決手段】主記憶装置（ＲＡＭ）２０に記憶されたトレースデータを、障害発生時に不揮発メモリ３０に退避させる際に、ログ管理部１１において、主記憶装置（ＲＡＭ）２０に記憶されたトレースデータを、所定サイズのブロックに分割し、障害発生による退避命令を受信した時点の直前の部位のトレースデータのブロック（VI）から過去の時点の部位のブロックに順に遡って、即ち、V→IV→III→II→Iの順でブロック単位にトレースデータを不揮発メモリ３０へ書き込む。【選択図】図１
2010061364.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に記憶されたトレースデータを、障害発生時に不揮発メモリに退避させるトレースデータの保存方法において、
前記記憶装置に記憶されたトレースデータを、所定サイズのブロックに分割し、
障害発生による退避命令を受信した時点の直前の部位のトレースデータのブロックから過去の時点の部位のブロックに順に遡って、前記ブロック単位にトレースデータを前記不揮発メモリへ書き込みを行うことを特徴とするトレースデータの保存方法。
【請求項２】
前記不揮発メモリに書き込むブロック数の上限値である指定ブロック数を予め定めておき、前記不揮発メモリに書き込んだブロック数をカウントするカウンタの値と前記指定ブロック数とを比較照合し、
前記カウンタの値が前記指定ブロック数を超えない場合に、ブロック単位のトレースデータを前記不揮発メモリに書き込み、
前記カウンタの値が前記指定ブロック数を超えた場合に、ブロック単位のトレースデータの前記不揮発メモリへの書き込みを行わないことを特徴とする請求項１に記載のトレースデータの保存方法。
【請求項３】
前記不揮発メモリへの書き込みを行う時間の上限値である指定時間を予め定めておき、前記障害発生による退避命令を受信したときに、前記指定時間までの経過時間を計測するタイマを起動し、
前記不揮発メモリへの書き込みが終了する前に前記指定時間のタイマがタイムアウトしたとき、前記不揮発メモリへの書き込みを停止させることを特徴とする請求項１に記載のトレースデータの保存方法。
【請求項４】
記憶装置に記憶されたトレースデータを、障害発生時に不揮発メモリに退避させるトレースデータの保存装置において、
前記記憶装置に記憶されたトレースデータを、所定サイズのブロックに分割し、障害発生による退避命令を受信した時点の直前の部位のトレースデータのブロックから過去の時点の部位のブロックに順に遡って、前記ブロック単位にトレースデータを前記不揮発メモリへ書き込む命令を送出するログ管理部と、
前記ログ管理部から送出される命令に従って、前記記憶装置に記憶されたトレースデータを、前記ブロック単位で前記不揮発メモリに書き込むデータ転送部と、
を備えたことを特徴とするトレースデータの保存装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トレースデータの保存方法及び装置に関する。本発明は例えば、障害発生時のトレースデータを不揮発メモリに保存する保存方法及び装置に係る。
【背景技術】
【０００２】
ＷｉＭＡＸ（Worldwide Interoperability for Microwave Access）のアクセスポイントやＳ３Ｇ（Ｓｕｐｅｒ  ３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）携帯電話方式のベースバンド（ＢＢ：Ｂａｓｅｂａｎｄ）カードカードなど、書換え回数に制限が有る不揮発性メモリ（フラッシュメモリ等）を外部記憶装置（ストレージ）として使用する装置では、プログラムの実行履歴や無効処理履歴など、書換え頻度の多いトレースデータを、通常、揮発性のメモリである主記憶装置（ＲＡＭ）にファイル形式で保存する。
【０００３】
図６はトレースデータの出力及びその取得の態様を示す。中央処理装置（ＣＰＵ）１０は、各種処理を行うタスクＡ、タスクＢ、タスクＣ・・・と、監視タスクと、ログ管理部１１とを備え、各タスクＡ、タスクＢ、タスクＣ・・・は、タスク実行時、ログ管理部１１にトレースデータの出力を依頼する（６−１）。
【０００４】
組み込みＬｉｎｕｘ（登録商標）等では、主記憶装置（ＲＡＭ）２０の一部をトレースログ使用領域として扱い、ログ管理部１１は、トレースデータを主記憶装置（ＲＡＭ）２０のトレースログ使用領域に出力する依頼を行う（６−２）。
【０００５】
トレースデータの取得は、随時、開発者／オペレータが外部制御装置２００からネットワークを介してログ管理部１１に対して取得依頼（６−３）を行うと、ログ管理部１１は、トレースデータを主記憶装置（ＲＡＭ）２０のトレースログ使用領域からのトレースデータの取得を依頼し（６−４）、該トレースデータを外部制御装置２００に応答データとして返送する。開発者／オペレータは、該トレースデータをプログラムの問題解析等に使用する。
【０００６】
装置１００内でシステムプログラム等に障害が発生し、システムの再起動を行う場合、主記憶装置（ＲＡＭ）２０の記憶領域は初期化されるため、再起動を行う前にトレースデータを不揮発メモリ３０へ退避（コピー）する動作が必要となる。
【０００７】
これを図７で説明すると、例えばタスクＡの実施時に障害が発生し（７−１）、監視タスクで異常を検知し、再起動の要否判定で再起動要と判定した場合（７−２）、監視タスクは、ログ管理部１１に対してトレースデータの退避（コピー）命令を送出する（７−３）。
【０００８】
ログ管理部１１は、該退避（コピー）命令に対して、主記憶装置（ＲＡＭ）２０からトレースデータを不揮発メモリ３０に退避（コピー）する指示をデータ転送部４０に送出する（７−４）。データ転送部４０は、該指示により、主記憶装置（ＲＡＭ）２０に保存されたトレースデータを不揮発メモリ３０に転送する。
【０００９】
トレースデータの格納管理については、例えば下記の特許文献１等によって知られている。
【特許文献１】特開平５−１３４８９５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
障害発生時に、トレースデータを不揮発メモリ３０に退避（コピー）することにより、トレースデータは障害発生によって消失することなく保存されるが、不揮発メモリ３０の動作速度は遅く、不揮発メモリ３０へのトレースデータの書込みには長い時間を要する。従って、障害時に実行される障害タスクの影響や、サービス停止時間の短縮化のために、トレースデータの退避（コピー）の全てが完了しないうちに、システムの初期化・再起動を開始してしまう場合がある。即ち、データ転送部４０による転送処理が途中で停止してしまう場合がある。
【００１１】
このような場合、不揮発メモリ３０のトレースデータ保存領域の内部データやファイル構成情報等に欠損が発生し、トレースデータの読出しを正常に行うことができなくなる。また、一部のトレースデータを保存することができたとしても、トレースデータのファイル保存は、トレースデータ先頭部から行われるため、障害発生に関係する特徴的な部位や、障害の解析に必要な部位のデータの保存が失敗する可能性がある。
【００１２】
図８は再起動前のトレースデータ保存処理の従来のシーケンス例を示す。同図の（ａ）は正常時のトレースデータ保存を示している。即ち、タスクＡで障害が発生し、該障害が監視タスクに通知されると（８−１）、監視タスクはトレースデータの退避（コピー）命令をログ管理部に送出し（８−２）、ガードタイマを起動する。
【００１３】
ログ管理部は、上記退避（コピー）命令を受けると、データ転送部にトレースデータの退避（コピー）指示を送出する（８−３）。データ転送部は、主記憶装置から不揮発メモリへのトレースデータの転送を開始し（８−４）、全てのトレースデータの退避（コピー）が終了すると、ログ管理部に退避（コピー）の終了を通知する（８−５）。
【００１４】
ログ管理部は該退避（コピー）の終了の通知を受けると、監視タスクに退避（コピー）の終了を通知する（８−６）。監視タスクは、ガードタイマを停止し（８−７）、タスクＡ及びログ管理部に停止命令を送出する（８−８，８−９）。その後、再起動処理が行われる（８−１０）。
【００１５】
一方、同図（ｂ）に示すように、データ転送部が主記憶装置から不揮発メモリへトレースデータを転送している最中に、監視タスクのガードタイマがタイムアウトした場合、監視タスクは、タスクＡ及びログ管理部に停止命令を送出する（８−１１，８−１２）ため、ログ管理部はデータ転送部に停止命令を送出して強制終了させる（８−１３）。従って、退避（コピー）が途中で中断し、トレースデータのファイル全体が破損又はデータ欠損となる。
【００１６】
また、同図（ｃ）に示すように、データ転送部が主記憶装置から不揮発メモリへトレースデータを転送している最中に、タスク異常等により異常終了した場合、再起動処理が実行される。従って、再起動によりログ管理部及びデータ転送部も初期化され、トレースデータのファイル全体が破損又はデータ欠損となる。
【００１７】
ここで、トレースデータの特徴について説明する。トレースデータは、図９に示すようにトレースログとして時間の経過に従って主記憶装置（ＲＡＭ）上に順番に格納される。装置が障害を検知して不揮発メモリへのトレースデータの退避（コピー）を開始するとき、障害を示すトレースデータ９−３は、退避（コピー）命令９−４の契機より早い時期（トレースログの上方）に出現する。また、障害の兆候を示すトレースデータ９−１，９−２も取得されている可能性が有り、それは障害を示すトレースデータ９−３より早い時期（トレースログの上方）に出現する。
【００１８】
トレースログは、障害とは関連の無いトレースデータも含めて保存されるため、退避（コピー）命令９−４の発生時に、プログラムにより障害発生位置を特定することはできない。しかし、退避（コピー）命令９−４の契機より早期（トレースログの上方）に出現し、かつ、退避（コピー）命令９−４の発生時により近い部位のトレースデータほど、障害に係るトレースデータが含まれている可能性が高い。但し、トレースログの保存領域は有限であり、古いトレースデータは、随時、主記憶装置（ＲＡＭ）上に別ファイルとして保存されるか、又は消去されるため、既に削除されている可能性もある。
【００１９】
トレースデータの不揮発メモリへの退避（コピー）は、通常、主記憶装置（ＲＡＭ）に先に（早く）保存されたトレースデータ（保存領域の上方）から行われる。そのため、トレースデータの退避（コピー）が途中までしか行われない場合は、障害発生部位のトレースデータが退避（コピー）されずに、障害発生前のトレースデータしか保存されない可能性が高くなる。
【００２０】
本発明は、障害に係る可能性の高いトレースデータをより確実に保存することを目的とする。
【課題を解決するための手段】
【００２１】
第１の案では、トレースデータの保存方法は、主記憶装置に記憶されたトレースデータを、障害発生時に不揮発メモリに退避させるトレースデータの保存方法において、前記主記憶装置に記憶されたトレースデータを、所定サイズのブロックに分割し、障害発生による退避命令を受信した時点の直前の部位のトレースデータのブロックから過去の時点の部位のブロックに順に遡って、前記ブロック単位にトレースデータを前記不揮発メモリへ書き込みを行うものである。
【００２２】
また、第２の案では、トレースデータの保存装置は、主記憶装置に記憶されたトレースデータを、障害発生時に不揮発メモリに退避させるトレースデータの保存装置において、前記主記憶装置に記憶されたトレースデータを、所定サイズのブロックに分割し、障害発生による退避命令を受信した時点の直前の部位のトレースデータのブロックから過去の時点の部位のブロックに順に遡って、前記ブロック単位にトレースデータを前記不揮発メモリへ書き込む命令を送出するログ管理部と、前記ログ管理部から送出される命令に従って、前記主記憶装置に記憶されたトレースデータを、前記ブロック単位で前記不揮発メモリに書き込むデータ転送部と、を備えたものである。
【発明の効果】
【００２３】
障害解析等における有用なトレースデータの欠損が発生する可能性を減少させることができる。
【発明を実施するための最良の形態】
【００２４】
図１は開示のトレースデータ保存処理の一例を示す。同図において、主記憶装置（ＲＡＭ）２０は、トレースデータをトレースログとして記憶するメモリで、高速の揮発性メモリである。不揮発メモリ３０は、主記憶装置（ＲＡＭ）２０に記憶されたトレースデータを、障害発生時に退避させて保存するメモリである。
【００２５】
主記憶装置（ＲＡＭ）２０に記憶されたトレースデータを不揮発メモリ３０に保存する際に、ログ管理部１１において、トレースデータを所定サイズのブロック単位に分割して不揮発メモリ３０に保存する。そして、装置の再起動後、又は外部制御装置によるトレースデータの閲覧要求の入力時に、分割されたトレースデータを元のトレースデータに再構築する。
【００２６】
ログ管理部１１は、監視タスクから退避（コピー）命令を受信すると、トレースデータのデータサイズを基に、退避（コピー）に必要なブロック数及びブロック情報を生成する。図示の例では、ブロック数６、ブロック情報Ｉ〜VIを生成する。但し、この時点では、退避（コピー）命令後のブロック情報VIIのトレースデータは存在しない。
【００２７】
ブロック情報は、分割した何番目のブロックであるかを示す分割番号（Ｎｏ）、各ブロック内に保存するトレースデータのサイズ、各ブロック内に保存するデータの先頭位置の、トレースデータファイルにおけるアドレス位置を含む。更に、ブロック情報として、不揮発メモリ３０への退避（コピー）が完了したか否かを示す書込みフラグを含む。該書込みフラグは、図示の例では、不揮発メモリ３０への退避（コピー）が完了したブロックについては“ＯＮ”、未完了のブロックについては“ＯＦＦ”で示している。
【００２８】
不揮発メモリ３０には、各々のブロック毎にそれぞれのブロック情報（分割番号、データサイズ）と分割トレースデータとを保存する。１ブロック当たりのデータサイズは、不揮発メモリ３０への記録に適した一まとまりのサイズ（例えば、一括動作で書込むことができるサイズ、媒体にもよるが通常１セクタ等）を最大値とする。
【００２９】
ログ管理部１１は、トレースの退避（コピー）命令の発生を契機として、その時点の直前の部位のブロックから過去の時点に遡って、即ち、トレースデータファイル先頭方向に向かって、順番にブロック単位で不揮発メモリ３０へトレースデータの書込みを行う。具体例では、ブロックVI→ブロックＶ→ブロックIV→ブロックIII→ブロックII→ブロックＩの順番で書込みを行う。
【００３０】
トレースデータファイルの先頭までの退避（コピー）が完了すると、退避（コピー）命令の発生以降にトレースデータが追加保存されていないかチェックし、追加保存されている場合は、同様にブロック情報（分割番号、データサイズ）を付与して、退避（コピー）命令の発生直後の部位から末尾までのトレースデータの退避（コピー）を行う。具体例では、ブロック情報VIIがこの時点で生成され、フロック数を加算して７とし、ブロックVIIのトレースデータが退避（コピー）される。
【００３１】
不揮発メモリ３０に保存されたブロック単位のトレースデータの再構築は、再起動後又は開発者／オペレータがトレースデータの閲覧を行う契機で実施する。トレースデータの再構築は、ブロック情報を基に、再構築可能な部分についてのトレースデータの構築を行い、欠損部分が有る場合は、その旨の通知を出力する。
【００３２】
図２に再起動前のトレースデータの分割保存処理のシーケンス例を示す。同図の（ａ）は正常時のトレースデータの分割保存の例を示している。タスクＡで障害が発生し、該障害が監視タスクに通知されると（２−１）、監視タスクはトレースデータの退避（コピー）命令をログ管理部に送出し（２−２）、ガードタイマを起動する。
【００３３】
ログ管理部は、上記退避（コピー）命令を受けると、トレースデータをブロック単位に分割し（２−３）、データ転送部にトレースデータのブロック単位（例えば１セクタ）の退避（コピー）命令を送出する（２−４）。データ転送部は、主記憶装置から不揮発メモリ３０へ１ブロックのトレースデータの退避（コピー）処理を行い（２−５）、該退避（コピー）が終了するとログ管理部に退避（コピー）の終了を通知する（２−６）。
【００３４】
ログ管理部は、データ転送部からブロック単位の退避（コピー）の終了の通知を受けると、次のブロックの退避（コピー）命令を送出し、以下同様に、最後のブロックまでの退避（コピー）命令を送出し（２−７）、データ転送部は最後のブロックの退避（コピー）処理を行い（２−８）、終了するとログ管理部に退避（コピー）の終了を通知する（２−９）。
【００３５】
ログ管理部は最後のブロックの退避（コピー）の終了の通知を受けると、監視タスクに退避（コピー）の終了を通知する（２−１０）。監視タスクは、ガードタイマを停止し、タスクＡ及びログ管理部に停止命令を送出する（２−１１，２−１２）。その後、再起動処理が行われる（２−１３）。
【００３６】
一方、同図（ｂ）に示すように、ブロック単位で主記憶装置から不揮発メモリへトレースデータを転送している最中に、監視タスクのガードタイマがタイムアウトした場合、監視タスクは、タスクＡ及びログ管理部に停止命令を送出する（２−１４，２−１５）ため、ログ管理部はデータ転送部に停止命令を送出して強制終了させる（２−１６）。
【００３７】
従って、退避（コピー）処理が途中で中断し、タイムアウトした時点に退避（コピー）していたブロック（セクタ）及びそれ以降のブロック（セクタ）のトレースデータは欠損となるが、その直前から過去に遡ったトレースデータは、正常に不揮発メモリに保存される。
【００３８】
また、同図（ｃ）に示すように、主記憶装置から不揮発メモリへ、ブロック単位でトレースデータを転送している最中に、タスク異常等により異常終了した場合、再起動処理が実行され、再起動によりログ管理部及びデータ転送部も初期化される。しかし、再起動の時点に退避（コピー）していたブロック（セクタ）及びそれ以降のブロック（セクタ）のトレースデータは欠損となるが、その直前から過去に遡ったトレースデータは、正常に不揮発メモリに保存される。
【００３９】
なお、保存対象とするトレースデータとしては、以下のようにすることができる。
（１）障害発生部位の可能性が高いトレースデータから保存を開始し、全てのトレースデータを保存する。
（２）障害発生部位の可能性が高いトレースデータから保存を開始し、指定ブロック数分のトレースデータを保存する。
（３）障害発生部位の可能性が高いトレースデータから保存を開始し、指定時間内で保存し得るブロック数分のトレースデータを保存する。但し、この指定時間は、監視タスクのガードタイマ以下の時間とする。
【００４０】
上記（１）の全てのトレースデータを保存する処理のフロー例を図３に示す。ログ管理部の退避（コピー）処理部は、監視タスクから退避（コピー）命令を受信すると（３−１）、トレースデータのサイズを測定して変数ＬｏｇＳｚ１に代入する（３−２）。そして、不揮発メモリ書き込み処理（サブルーチン）を起動する（３−３）。
【００４１】
不揮発メモリ書き込み処理（サブルーチン）の起動の際に、引数として追加ログサイズをトレースデータのサイズＬｏｇＳｚ１、退避（コピー）開始位置をトレースデータファイルの先頭、処理順序を降順として渡す。
【００４２】
不揮発メモリ書き込み処理（サブルーチン）は、トレースデータのサイズＬｏｇＳｚ１を基に追加ブロック数を以下の算出式により算出する（３−４）。
ＢｌｋＮＵｍ＝（ＬｏｇＳｚ１＋ＳＺ−１）／ＳＺ（小数点以下は切り捨て）  （式１）
ここで、ＢｌｋＮＵｍは、追加書き込みを行うブロック数、ＳＺは、１ブロックに保存可能なデータサイズ（ブロック情報は除く）である。
【００４３】
追加ブロック数ＢｌｋＮＵｍについて具体的な数値を挙げて説明すると、例えば、ＳＺ＝１００のとき、ＬｏｇＳｚ１が７００であれば、ＢｌｋＮＵｍは７であればよい。このとき、
ＢｌｋＮＵｍ＝（７００＋１００−１）／１００＝７９９／１００＝７（少数以下切捨て）となる。
【００４４】
また、ＬｏｇＳｚ１が７０１〜７９９であれば、ＢｌｋＮＵｍは８となる。ＬｏｇＳｚ１＝７０１のとき、
ＢｌｋＮＵｍ＝（７０１＋１００−１）／１００＝８００／１００＝８となる。
また、ＬｏｇＳｚ１＝７９９のとき、
ＢｌｋＮＵｍ＝（７９９＋１００−１）／１００＝８９８／１００＝８（少数以下切捨て）となる。
従って、上記（式１）の演算により、追加ブロック数ＢｌｋＮＵｍが算出される。
【００４５】
次に、ブロック情報の生成を行う。ブロック情報の生成は、追加ブロック数ＢｌｋＮＵｍ分、ブロック情報を生成・保存する処理（３−５）を繰り返し実行する。ここで、ブロック情報は、ログ管理部内の処理領域のブロック情報テーブルの空き領域から上詰めで保存するものとする。
【００４６】
次に、退避（コピー）命令発生後のトレースデータを含めた保存データ全体のブロック数を算出するために、全ブロック数ＴｏｔａｌＢｌｋＮｕｍとして追加ブロック数ＢｌｋＮｕｍを追加加算する（３−６）。
【００４７】
次に、不揮発メモリの書き込みを行う。不揮発メモリの書き込みは、以下の処理（３−７〜３−１１）を追加ブロック数ＢｌｋＮＵｍ分、繰り返し実行する。まず、書き込みフラグをチェックし（３−７）、書き込みフラグに“ＯＦＦ”が設定されていれば、ブロック書き込み用データ編集を行う（３−８）。
【００４８】
そして、ログ転送部に退避（コピー）命令を送信し（３−９）、ログ転送部から退避（コピー）終了を受信すると（３−１０）、ブロック情報テーブルの書き込みフラグを“ＯＮ”に設定する（３−１１）。
【００４９】
以上の不揮発メモリ書き込み処理（サブルーチン）が終了すると、元のメインルーチン処理に戻る。そして、再びトレースデータのサイズを測定し、該サイズを変数ＬｏｇＳｚ２に代入する（３−１２）。この変数ＬｏｇＳｚ２は、ログ管理部が監視タスクから退避（コピー）命令を受信した後に主記憶装置に記憶されたトレースデータを含むデータサイズを表している。
【００５０】
次に、変数ＬｏｇＳｚ２と変数ＬｏｇＳｚ１との大小比較を行う（３−１３）。ここで、変数ＬｏｇＳｚ２が変数ＬｏｇＳｚ１より大であれば、ログ管理部が監視タスクから退避（コピー）命令を受信した後に主記憶装置に記憶されたトレースデータが存在することになるので、そのトレースデータを退避（コピー）するために、再度、不揮発メモリ書き込み処理（サブルーチン）を起動する（３−１４）。
【００５１】
このとき、不揮発メモリ書き込み処理（サブルーチン）に引き渡す引数としては、追加ログサイズを、追加分の（ＬｏｇＳｚ２−ＬｏｇＳｚ１）、退避（コピー）開始位置を（ＬｏｇＳｚ１＋１）、処理順序を昇順として渡す。不揮発メモリ書き込み処理（サブルーチン）は、該引数を受けて前述した処理フロー３−４〜３−１１を同様に実行する。
【００５２】
変数ＬｏｇＳｚ２が変数ＬｏｇＳｚ１より大でなければ、ログ管理部が監視タスクから退避（コピー）命令を受信した後に主記憶装置に記憶されたトレースデータが存在しないことになるので、この場合は何も処理しない。そして、監視タスクに退避（コピー）終了を通知する（３−１５）。
【００５３】
次に、前述した（２）の指定ブロック数分のトレースデータを保存する処理のフロー例を図４に示す。この処理は、障害発生部位の可能性が高いトレースデータから保存を開始し、予め定められた指定ブロック数分のデータを保存するものである。
【００５４】
この処理の実施においては、ログ管理部内に書込みカウンタ（Ｗｒｉｔｅ＿Ｃｏｕｎｔｅｒ）を設け、監視タスクから退避（コピー）命令を受信したとき、書込みカウンタ（Ｗｒｉｔｅ＿Ｃｏｕｎｔｅｒ）の値を０に設定し（４−１）、不揮発メモリへの書込み処理を行う前に、カウンタ（Ｗｒｉｔｅ＿Ｃｏｕｎｔｅｒ）の値と指定ブロック数（ＭＡＸ＿ＢＬＫ）との比較を行う（４−２）。
【００５５】
カウンタ（Ｗｒｉｔｅ＿Ｃｏｕｎｔｅｒ）の値が指定ブロック数（ＭＡＸ＿ＢＬＫ）を超えていなければ、不揮発メモリへの書込み処理を行った後、書込みカウンタ（Ｗｒｉｔｅ＿Ｃｏｕｎｔｅｒ）に１加算する（４−３）。超えていれば書込み処理を行わない。その他の処理フローは、図３で説明した処理フローと同様である。
【００５６】
次に、前述した（３）の指定時間内で保存し得るブロック数分のトレースデータを保存する処理のシーケンス例を図５に示す。この処理は、障害発生部位の可能性が高いトレースデータから保存を開始し、予め定められた指定時間内で保存し得るブロック数分のデータを保存するものである。但し、該指定時間は、監視タスクのガードタイマ以下の時間である。
【００５７】
図５に示すように、例えばタスクＡで障害が発生し、該障害が監視タスクに通知されると（２−１）、監視タスクはトレースデータの退避（コピー）命令をログ管理部に送出し（２−２）、ガードタイマを起動する。ここまでは図２で説明した動作と同様である。
【００５８】
ログ管理部は、上記退避（コピー）命令を受けると、指定時間分のタイマを起動し、子タスクを生成（５−１）する。子タスクは前述した処理と同様に、トレースデータをブロック単位に分割し（２−３）、データ転送部にトレースデータのブロック単位の退避（コピー）命令を送出する（２−４）。
【００５９】
データ転送部は、主記憶装置から不揮発メモリへ１ブロックのトレースデータの退避（コピー）処理を行い（２−５）、該退避（コピー）が終了するとログ管理部の子タスクに退避（コピー）の終了を通知する（２−６）。
【００６０】
ログ管理部の子タスクは、データ転送部からブロック単位の退避（コピー）の終了の通知を受けると、次のブロックの退避（コピー）命令を順々に送出し（２−７）、データ転送部は退避（コピー）処理を行い（２−８）、終了するとログ管理部の子タスクに退避（コピー）の終了を通知する（２−９）。
【００６１】
ログ管理部は、その間、指定時間分のタイマの監視を行い、該タイマの完了までに全てのトレースデータの退避（コピー）が完了した場合は、退避（コピー）終了の通知を監視タスクに送信して処理を終了する。この場合は、前述の（１）の全てのトレースデータを保存する処理のフローと同等である。
【００６２】
指定時間分のタイマのタイムアウトが発生した場合は、ログ管理部は子タスクに対して割込み処理を行い（５−２）、退避（コピー）処理を停止させる。子タスクは、該割込み処理により停止命令をデータ転送部に送信する（５−３）。また、子タスクは、データ転送部に対して書き込み途中の部位の初期化などのリカバリ処理を行う（５−４）。
【００６３】
子タスクによる停止処理は、再起動処理を行うための監視タスクのガードタイマのタイムアウトによるものではなく、自タスクによる停止処理であるため、書き込み途中の部位にデータ破壊等が起きている可能性がある場合は、クリア処理のようなリカバリを行った後に、ログ管理部に退避（コピー）終了の通知を送信することが可能である。
【００６４】
なお、前述した（２）の指定ブロック数分のトレースデータを保存する形態においても、監視タスクのガードタイマのタイムアウトによる停止ではなく、自タスクによる停止処理であるため、書き込み途中によるデータ破壊等が起こる可能性が少なく、より信頼性の高い保存を行うことが可能となる。
【００６５】
ログ管理部は子タスクから退避（コピー）の終了の通知を受けると、監視タスクに退避（コピー）の終了を通知する（２−１０）。監視タスクは図２の場合と同様に、ガードタイマを停止し、タスクＡ及びログ管理部に停止命令を送出する（２−１１，２−１２）。その後、再起動処理が行われる（２−１３）。
【図面の簡単な説明】
【００６６】
【図１】開示のトレースデータ保存処理の一例を示す図である。
【図２】再起動前のトレースデータの分割保存処理のシーケンス例を示す図である。
【図３】全てのトレースデータを保存する処理のフロー例を示す図である。
【図４】指定ブロック数分のトレースデータを保存する処理のフロー例を示す図である。
【図５】指定時間内で保存し得るブロック数分のトレースデータを保存する処理のシーケンス例を示す図である。
【図６】トレースデータの出力及びその取得の説明図である。
【図７】再起動前にトレースデータを不揮発メモリへ退避する動作の説明図である。
【図８】再起動前のトレースデータ保存処理の従来のシーケンス例を示す図である。
【図９】トレースデータの特徴についての説明図である。
【符号の説明】
【００６７】
１０  中央処理装置（ＣＰＵ）
１１  ログ管理部
２０  主記憶装置（ＲＡＭ）
３０  不揮発メモリ
１００  装置
２００  開発者／オペレータが外部制御装置
【図１】
2010061364.tif 000003
【図２】
2010061364.tif 000004
【図３】
2010061364.tif 000005
【図４】
2010061364.tif 000006
【図５】
2010061364.tif 000007
【図６】
2010061364.tif 000008
【図７】
2010061364.tif 000009
【図８】
2010061364.tif 000010
【図９】
2010061364.tif 000011