(57)【要約】【課題】各タスクが出力するログ情報を効率よく保存することができるログ情報管理方法および情報機器を提供すること目的とする。【解決手段】機器を制御しているソフトウェアの各タスクが作成したログ情報を保存するログ情報管理方法において、前記機器は、第１のログ記憶領域を構成する第１の記憶手段と、必要に応じて設けられる第２のログ記憶領域を構成する第２の記憶手段を備え、初期化時に前記第２の記憶手段を検出すると、それ以降は、前記第２の記憶領域に前記ログ情報を保存するようにしたものである。【選択図】        図１
2008176465.tif 000002
【特許請求の範囲】
【請求項１】
機器を制御しているソフトウェアの各タスクが作成したログ情報を保存するログ情報管理方法において、
前記機器は、第１のログ記憶領域を構成する第１の記憶手段と、
必要に応じて設けられる第２のログ記憶領域を構成する第２の記憶手段を備え、
初期化時に前記第２の記憶手段を検出すると、それ以降は、前記第２の記憶領域に前記ログ情報を保存するようにしたことを特徴とするログ情報管理方法。
【請求項２】
前記ログ情報を記憶するログ記憶領域は、所定データ長のブロック単位に記憶管理され、
おのおののタスクに割り当てられるタスク別ログ領域は、
前記タスクより指示される指定ブロック数からなる保証領域と、前記保証領域を超えたログ情報を記憶するための拡張領域からなり、
前記保証領域は、最新のログ情報を記憶しているブロックであって、前記指定ブロック数の数に相当するブロック領域に逐次更新されることを特徴とする請求項１記載のログ情報管理方法。
【請求項３】
前記拡張領域に割り当てるブロックは、
前記第２のログ記憶領域に空きブロックがある場合は、当該空きブロックを割り当て、
前記第２のログ記憶領域に空きブロックがない場合には、
前記拡張領域のブロック数が最も多いいずれかのタスク別ログ領域を選択し、当該選択されたタスク別ログ領域から、最も古いログを記憶しているブロックを当該タスク別ログ領域から登録解除し、当該登録解除したブロックを割り当てるようにしたことを特徴とする請求項２記載のログ情報管理方法。
【請求項４】
制御ソフトウェアの各タスクが作成したログ情報を保存するログ情報管理手段を備えた情報機器であって、
第１のログ記憶領域を構成する第１の記憶手段と、
必要に応じて設けられる第２のログ記憶領域を構成する第２の記憶手段を備え、
前記ログ情報管理手段は、初期化時に前記第２の記憶手段を検出すると、それ以降は、前記第２の記憶領域に前記ログ情報を保存するようにしたことを特徴とする情報機器。
【請求項５】
前記ログ情報を記憶するログ記憶領域は、所定データ長のブロック単位に記憶管理され、
おのおののタスクに割り当てられるタスク別ログ領域は、
前記タスクより指示される指定ブロック数からなる保証領域と、前記保証領域を超えたログ情報を記憶するための拡張領域からなり、
前記保証領域は、最新のログ情報を記憶しているブロックであって、前記指定ブロック数の数に相当するブロック領域に逐次更新されることを特徴とする請求項４記載の情報機器。
【請求項６】
前記拡張領域に割り当てるブロックは、前記第２のログ記憶領域に空きブロックがある場合は、当該空きブロックを割り当て、
前記第２のログ記憶領域に空きブロックがない場合には、
前記拡張領域のブロック数が最も多いいずれかのタスク別ログ領域を選択し、当該選択されたタスク別ログ領域から、最も古いログを記憶しているブロックを当該タスク別ログ領域から登録解除し、当該登録解除したブロックを割り当てるようにしたことを特徴とする請求項５記載の情報機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機器を制御しているソフトウェアの各タスクが作成したログ情報を保存するログ情報管理方法、および、制御ソフトウェアの各タスクが作成したログ情報を保存するログ情報管理手段を備えた情報機器に関する。
【背景技術】
【０００２】
従来、マルチタスク・オペレーティングシステムで各部の動作が制御される情報機器においては、各タスクから出力されるログ情報を記憶するタスク別のログ領域を設け、おのおののタスクから非同期に出力されるログ情報をおのおののログ領域に保存している。
【０００３】
このようにすることで、各タスクは、他のタスクの影響を受けずに適切にログ情報を保存することができるので、非常に有効である。
【特許文献１】特開平７−２４８９４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、このようなログ情報の記憶管理方法では、例えば、ログ領域を固定サイズとした場合、当該固定サイズを超えた部分のログ情報を記憶しようとすると、既に記憶している古いログ情報を上書きするということとなる。通常の動作では、このようなログ情報の管理方法で問題は生じないが、動作解析時や動作テスト時など、大量のログ情報を取得したい場合には、簡単には対処することができない。
【０００５】
かかる事態に対処するには、例えば、最初からログ領域として大きなメモリ領域を用意することが考えられるが、情報機器に組み込むソフトウェアシステムは、コスト等の理由で使用できるリソースが限られるため、ログ領域として確保できるメモリ領域がそもそも少なく、現実的ではない。
【０００６】
本発明は、かかる実情に鑑みてなされたものであり、各タスクが出力するログ情報を効率よく保存することができるログ情報管理方法および情報機器を提供すること目的とする。
【課題を解決するための手段】
【０００７】
本発明は、機器を制御しているソフトウェアの各タスクが作成したログ情報を保存するログ情報管理方法において、前記機器は、第１のログ記憶領域を構成する第１の記憶手段と、必要に応じて設けられる第２のログ記憶領域を構成する第２の記憶手段を備え、初期化時に前記第２の記憶手段を検出すると、それ以降は、前記第２の記憶領域に前記ログ情報を保存するようにしたものである。
また、前記ログ情報を記憶するログ記憶領域は、所定データ長のブロック単位に記憶管理され、おのおののタスクに割り当てられるタスク別ログ領域は、前記タスクより指示される指定ブロック数からなる保証領域と、前記保証領域を超えたログ情報を記憶するための拡張領域からなり、前記保証領域は、最新のログ情報を記憶しているブロックであって、前記指定ブロック数の数に相当するブロック領域に逐次更新されるものである。
また、前記拡張領域に割り当てるブロックは、前記第２のログ記憶領域に空きブロックがある場合は、当該空きブロックを割り当て、前記第２のログ記憶領域に空きブロックがない場合には、前記拡張領域のブロック数が最も多いいずれかのタスク別ログ領域を選択し、当該選択されたタスク別ログ領域から、最も古いログを記憶しているブロックを当該タスク別ログ領域から登録解除し、当該登録解除したブロックを割り当てるようにしたものである。
【０００８】
また、制御ソフトウェアの各タスクが作成したログ情報を保存するログ情報管理手段を備えた情報機器であって、第１のログ記憶領域を構成する第１の記憶手段と、必要に応じて設けられる第２のログ記憶領域を構成する第２の記憶手段を備え、前記ログ情報管理手段は、初期化時に前記第２の記憶手段を検出すると、それ以降は、前記第２の記憶領域に前記ログ情報を保存するようにしたものである。
また、前記ログ情報を記憶するログ記憶領域は、所定データ長のブロック単位に記憶管理され、おのおののタスクに割り当てられるタスク別ログ領域は、前記タスクより指示される指定ブロック数からなる保証領域と、前記保証領域を超えたログ情報を記憶するための拡張領域からなり、前記保証領域は、最新のログ情報を記憶しているブロックであって、前記指定ブロック数の数に相当するブロック領域に逐次更新されるものである。
また、前記拡張領域に割り当てるブロックは、前記第２のログ記憶領域に空きブロックがある場合は、当該空きブロックを割り当て、前記第２のログ記憶領域に空きブロックがない場合には、前記拡張領域のブロック数が最も多いいずれかのタスク別ログ領域を選択し、当該選択されたタスク別ログ領域から、最も古いログを記憶しているブロックを当該タスク別ログ領域から登録解除し、当該登録解除したブロックを割り当てるようにしたものである。
【発明の効果】
【０００９】
したがって、本発明によれば、動作解析時や動作テスト時など、大量のログ情報を取得したい場合、大容量の第２の記憶手段を装着することで、適切に取得することができ、非常に便利であるという効果を得る。
【００１０】
また、おのおののタスク毎に割り当てるタスク別ログ領域は、おのおののタスクが指示した指定ブロック数の保証領域が最低限確保されるとともに、おのおののタスクが出力するログ情報の量に応じて、保証領域を超えたログ情報を拡張領域に適切に保存することができるので、大量のログ情報を適切に取得することができるという効果も得る。
【発明を実施するための最良の形態】
【００１１】
以下、添付図面を参照しながら、本発明の実施の形態を詳細に説明する。
【００１２】
図１は、本発明の一実施例にかかる情報機器としてのネットワーク対応複合機の構成の一例を示している。
【００１３】
同図において、ＣＰＵ（中央処理装置）１は、このネットワーク対応複合機の各部の制御処理（マルチタスク・オペレーティングシステムの処理など）、および、ファクシミリ伝送制御手順処理などの各種制御処理を行うものであり、ＲＯＭ（リード・オンリ・メモリ）２は、ＣＰＵ１が実行する制御処理プログラム、および、処理プログラムを実行するときに必要な各種データなどを記憶するものであり、ＲＡＭ（ランダム・アクセス・メモリ）３は、ＣＰＵ１のワークエリア（例えば、ログ記憶領域（後述））を構成するとともに、このネットワーク対応複合機に固有な各種の情報を記憶するためのものであり、時計回路４は、現在時刻情報を出力するものである。
【００１４】
スキャナ５は、所定の解像度で原稿画像を読み取るためのものであり、プロッタ６は、所定の解像度で画像を記録出力するためのものであり、操作表示部７は、このネットワーク対応複合機を操作するためのもので、各種の操作キー、および、各種の表示器からなる。
【００１５】
符号化復号化部８は、画信号を符号化圧縮するとともに、符号化圧縮されている画情報を元の画信号に復号化するためのものであり、画像蓄積装置９は、符号化圧縮された状態の画情報を多数記憶するためのものである。
【００１６】
グループ３ファクシミリモデム１０は、グループ３ファクシミリのモデム機能を実現するためのものであり、伝送手順信号をやりとりするための低速モデム機能（Ｖ．２１モデム）、および、おもに画情報をやりとりするための高速モデム機能（Ｖ．１７モデム、Ｖ．３４モデム、Ｖ．２９モデム、Ｖ．２７ｔｅｒモデムなど）を備えている。
【００１７】
網制御装置１１は、このネットワーク対応複合機をアナログ公衆回線網ＰＳＴＮに接続するためのものであり、自動発着信機能を備えている。
【００１８】
ローカルエリアネットワークインターフェース回路１２は、このネットワーク対応複合機をローカルエリアネットワークＬＡＮに接続するためのものであり、ローカルエリアネットワーク伝送制御部１３は、ローカルエリアネットワークＬＡＮを介して、他のデータ端末装置との間で種々のデータをやりとりするための各種所定のプロトコルスイートの通信制御処理を実行するためのものである。
【００１９】
外部記憶媒体１４は、大容量の記憶装置、例えば、磁気ディスク装置やメモリカード装置などからなり、このネットワーク対応複合機の動作解析時やテスト動作時に装着されるものであり、大量のログ情報（後述）を記憶するためのものであり、外部記憶媒体インタフェース回路１５は、このネットワーク対応複合機に外部記憶媒体１４を着脱するためのものである。
【００２０】
これらの、ＣＰＵ１、ＲＯＭ２、ＲＡＭ３、時計回路４、スキャナ５、プロッタ６、操作表示部７、符号化復号化部８、画像蓄積装置９、グループ３ファクシミリモデム１０、網制御装置１１、ローカルエリアネットワーク伝送制御部１３、および、外部記憶媒体インタフェース回路１５は、内部バス１６に接続されており、これらの各要素間でのデータのやりとりは、主としてこの内部バス１６を介して行われている。
【００２１】
また、網制御装置１１とグループ３ファクシミリモデム１０との間のデータのやりとりは、直接行なわれている。
【００２２】
図２は、図１に示したネットワーク対応複合機について、ログ情報を記憶するためのソフトウェア構成の一例を示したものである。
【００２３】
同図において、システムＳＭは、マルチタスク・オペレーティングシステムであるオペレーティングシステムＯＳと、その上で動作する複数のタスクＴＳ１〜ＴＳｎから構成されており、おのおののタスクＴＳ１〜ＴＳｎは、ネットワーク対応複合機の各種制御動作を行うためのものであり、適宜なタイミングで、ログ情報を出力する。
【００２４】
システム制御部ＳＣは、オペレーティングシステムＯＳ上でシステム全体のリソースを把握するとともに管理するためのものであり、ログ書込制御部ＬＣは、タスクＴＳ１〜ＴＳｎからのログ書込要求を受け付けるためのものであり、ログ記憶領域ＳＴに対してログ情報を書き込む動作を行う。
【００２５】
また、ログ領域管理制御部ＬＬは、代替記憶領域（後述）にログ情報を書き込む際に、書込先領域の管理を行うためのものである。
【００２６】
また、この場合、ログ記憶領域としては、ＲＡＭ３に構築される標準記憶領域ＳＴａ、または、外部記憶媒体１４に構築される代替記憶領域ＳＴｂが用いられる。
【００２７】
以上の構成で、外部記憶媒体１４が装着されていない場合で、ログ記憶領域ＳＴに標準記憶領域ＳＴａのみが設けられている場合の動作の一例を図３に示す。
【００２８】
まず、システム制御部ＳＣは、標準記憶領域ＳＴａを初期化した後、外部記憶媒体１４が装着されているかどうかをデバイス検出する。この場合、外部記憶媒体１４が装着されていないので、デバイス検出の結果は「デバイス無し」となるので、それ以降は、標準記憶領域ＳＴａについて、ログ情報を記憶する。
【００２９】
すなわち、システム制御部ＳＣは、ログ書込制御部ＬＣに対して、書込先として標準記憶領域ＳＴａを通知し、その後、タスクＴＳ１〜ＴＳｎを適宜に起動する。
【００３０】
起動されたタスクＴＳ１〜ＴＳｎは、それぞれに設定されているログ領域サイズを、ログ書込制御部ＬＣに対して通知する。それにより、ログ書込制御部ＬＣは、おのおののタスクＴＳ１〜ＴＳｎより通知されたサイズのログ領域を、標準記憶領域ＳＴａに確保する。
【００３１】
これ以降は、タスクＴＳ１〜ＴＳｎは、適宜なタイミングでログ情報を発生すると、その都度、ログ書込制御部ＬＣに対してログ書込要求を行って発生したログ情報を転送し、それにより、ログ書込制御部ＬＣは、タスクＴＳ１〜ＴＳｎより受け取ったログ情報を、それぞれのタスクに対して確保したログ領域に書き込む。
【００３２】
次に、ネットワーク対応複合機の動作解析時やテスト動作時に大量のログ情報を記憶するために、外部記憶媒体１４を装着した場合で、ログ記憶領域ＳＴに標準記憶領域ＳＴａと代替記憶領域ＳＴｂのみが設けられている場合の動作の一例を図４に示す。
【００３３】
まず、システム制御部ＳＣは、標準記憶領域ＳＴａを初期化した後、外部記憶媒体１４が装着されているかどうかをデバイス検出する。この場合、外部記憶媒体１４が装着されているので、デバイス検出の結果は「デバイス有り」となるので、それ以降は、代替記憶領域ＳＴｂについて、ログ情報を記憶する。
【００３４】
すなわち、システム制御部ＳＣは、ログ書込制御部ＬＣに対して、書込先として代替記憶領域ＳＴｂを通知し、その後、タスクＴＳ１〜ＴＳｎを適宜に起動する。
【００３５】
起動されたタスクＴＳ１〜ＴＳｎは、それぞれに設定されているログ領域サイズを、ログ書込制御部ＬＣに対して通知する。それにより、ログ書込制御部ＬＣは、ログ領域管理制御部ＬＬに対して、タスクＴＳ１〜ＴＳｎより通知されたログ領域サイズを指定した状態で、ログ領域確保要求（ＫＫ１）を行う。
【００３６】
それにより、ログ領域管理制御部ＬＬは、通知されたログ領域サイズを保証領域（後述）とするログ領域を、おのおののタスクＴＳ１〜ＴＳｎについて、代替記憶領域ＳＴｂに確保し、それぞれログ書込制御部ＬＣへ通知する。
【００３７】
これ以降は、タスクＴＳ１〜ＴＳｎは、適宜なタイミングでログ情報を発生すると、その都度、ログ書込制御部ＬＣに対してログ書込要求を行って発生したログ情報を転送し、それにより、ログ書込制御部ＬＣは、タスクＴＳ１〜ＴＳｎより受け取ったログ情報を、それぞれのタスクに対して確保したログ領域に書き込む。
【００３８】
また、例えば、タスクＴＳｎからログ書込要求を受けた際、ログ情報の情報量が現在確保されているログ領域を超えた情報量になった場合には、ログ書込制御部ＬＣは、再度、ログ領域管理制御部ＬＬに対して、ログ領域確保要求（ＫＫ２）を発行する。
【００３９】
これにより、ログ領域管理制御部ＬＬは、当該タスクＴＳｎについて新たにログ領域を確保して、その旨をログ書込制御部ＬＣへ通知する。それにより、ログ書込制御部ＬＣは、新たに確保されたログ領域に対して、ログ情報を書き込む。
【００４０】
さて、本実施例では、ログ記憶領域（標準記憶領域ＳＴａ、および、代替記憶領域ＳＴｂ）ＳＴは、初期状態では、図５（ａ）に示すように、各タスクＴＳ１〜ＴＳｎについて、それぞれの領域を確保する。それぞれのタスク用領域は、おのおののタスクが指定したサイズ（ブロックサイズ）の大きさである。
【００４１】
そして、稼働中に各タスクＴＳ１〜ＴＳｎから出力されるログ情報の量に応じて、同図（ｂ）に示すように、それぞれのタスク用領域の大きさが変動する。例えば、タスクＴＳ１（タスク＃１）はあまりログ情報を出力しないので、初期状態の大きさのままであるが、タスクＴＳ２（タスク＃２），ＴＳｎ（タスク＃ｎ）は、ログ情報を多く出力するので初期状態よりもタスク用領域の大きさが大きくなっている。特に、タスクＴＳ２は大量のログ情報を出力するので、確保されているタスク用領域の大きさも大きくなる。
【００４２】
ここで、タスク用領域のサイズを可変にするために、本実施例では、所定データ長のブロック単位でタスク用領域のサイズを増減している。
【００４３】
また、おのおののタスク用領域は、同図（ｃ）に示すように、それぞれのタスクで使用が保証される保証領域と、それを超えた部分で、解放される可能性のある拡張領域からなる。
【００４４】
この保証領域を構成するブロック数は、最初にタスクＴＳ１〜ＴＳｎから指定されたログ領域サイズのブロック数（指定ブロック数）となり、後述するように、常に最新のログ情報を記憶したブロックから構成される。
【００４５】
また、拡張領域は、指定ブロック数を超えたログ情報を保存するための領域として確保されるものである。拡張領域を構成するブロックは、「過使用ブロック」と呼ばれ、そのブロック数は、可変長ブロック数であり、場合によっては、システムによりタスク用領域から解放（登録解除）され、タスクＴＳ１〜ＴＳｎから使用できなくなる。
【００４６】
この様子を、図６（ａ）〜（ｃ）、および、図７（ａ），（ｂ）に示す。
【００４７】
例えば、ログ記憶領域ＳＴのブロック数が８であり（図６（ａ）参照）、そこへタスクＡが保証領域を２ブロック確保すると、同図（ｂ）のように、ブロック１，２がタスクＡ用に確保される。次いで、タスクＣが保証領域を１ブロック確保すると、同図（ｃ）のように、ブロック３がタスクＣ用に確保される。
【００４８】
この後、タスクＣが大量のログ情報を書き込んだので、ブロック４〜８がタスクＣ用に確保されてしまった状態が、図７（ａ）に示す状態となる。この状態では、タスクＡの保証領域が２ブロックで拡張領域が０ブロックであり、タスクＣの保証領域が１ブロックで拡張領域が５ブロックである。
【００４９】
この状態から、タスクＢが保証領域を１ブロック確保要求すると、同図（ｂ）に示すように、拡張領域のブロック数が最も多いタスクＣのタスク用領域から、最も古いログ情報を記憶しているブロック、この場合は、ブロック３が解放されて、タスクＢの保証領域に割り当てられる。
【００５０】
それぞれのブロックのデータ構造の一例を図８（ａ）に示す。この場合のブロックデータ構造は、基本的には、任意に連結したデータ列を構築することができる双方向リストの構造を備える。
【００５１】
ブロックは、それぞれを識別するためのブロック番号（アドレスで代替可能）、当該ブロックを使用しているタスクをあらわす使用タスクＩＤ、当該ブロックの次に連結されるブロックのブロック番号をあらわす次ブロック番号、当該ブロックが保証領域であるかどうかをあらわす保証ブロックフラグ、および、ログ情報を格納するためのログ書込領域からなる。
【００５２】
また、ログ書込制御部ＬＣが各タスク用領域を管理するために作成するログ制御部データ構造の一例を同図（ｂ）に示す。
【００５３】
このログ制御部データ構造は、当該ログ制御部データ構造が対応するタスクを識別するためのタスクＩＤ、使用されているブロック数をあらわす使用ブロック数、保証領域のブロック数をあらわす保証ブロック数、タスク用領域の先頭ブロックをあらわすスタートブロック番号、保証領域の先頭ブロックをあらわす保証スタートブロック番号、および、タスク用領域の最終ブロックをあらわす最新ブロック番号からなる。
【００５４】
図示したタスクＩＤが「１」、「２」のタスク用領域についてのログ制御部データ構造体（すなわち、ログ記憶領域）の一例を図９に示し、それをリスト表記した図を図１０に示す。
【００５５】
図１１は、タスクＴＳ１〜ＴＳｎからログ領域サイズが指定された場合に、ログ書込制御部ＬＣおよびログ領域管理制御部ＬＬが行う処理の一例を示している。
【００５６】
まず、ログ領域サイズが指定されたタスクＴＳ１〜ＴＳｎについて、図８（ｂ）に示した当該タスク用のデータ構造を作成する（処理１０１；図１２（ａ）参照）。次いで、確保ブロック数を指定して、ログ領域確保要求ＫＫ１を、ログ領域管理制御部ＬＬへ発行する（処理１０２）。
【００５７】
これにより、ログ領域管理制御部ＬＬは、指定されたブロック数のブロックを、ログ記憶領域ＳＴから確保する。この状態を図１２（ｂ）に示す。この場合は、指定されたブロック数が「３」の場合である。
【００５８】
ここで、ログ領域管理制御部ＬＬから指定したブロック数のブロックが確保されたことが通知され、ブロックの確保が成功すると（判断１０３の結果がＹＥＳ）、タスク用データ構造に確保したブロックを割り当て、タスク用データ構造を初期化する（処理１０４）。
【００５９】
これにより、タスク用データ構造の保証領域の設定を行って、ブロックの初期化を行う（処理１０５）。その結果、図１２（ｃ）に示すようなログ記憶領域が構築される。
【００６０】
図１３は、必要なブロック数のブロックを確保する場合にログ書込制御部ＬＣおよびログ領域管理制御部ＬＬが行う処理の一例を示している。
【００６１】
まず、ログ記憶領域ＳＴに、未使用のブロックがあるかどうかを調べ（判断２０１）、判断２０１の結果がＹＥＳになるときには、未使用ブロックの１つを確保し（処理２０２）、当該確保したブロックをリストに追加する（処理２０３）。
【００６２】
ここで、必要なブロック数のブロックを確保したかどうかを調べ（判断２０４）、判断２０４の結果がＮＯになるときには、判断２０１に戻って、次のブロックの確保を行う。また、判断２０４の結果がＹＥＳになるときには、確保したブロックを連結する（処理２０５）。
【００６３】
また、未使用ブロックがない場合で、判断２０１の結果がＮＯになるときには、他のタスクから拡張ブロックを１つ確保する処理（処理２０６）を行う。この処理２０６で、ブロックを確保できたかどうかを調べ（判断２０７）、判断２０７の結果がＹＥＳになるときには、処理２０３へ進み、そのときに確保したブロックをリストに追加する。
【００６４】
また、処理２０６でブロックを確保できなかった場合で、判断２０７の結果がＮＯになるときには、このときの動作を終了する。
【００６５】
すなわち、、判断２０１〜判断２０４，処理２０６，判断２０７の処理ループを繰り返す度に、図１４（ａ）〜（ｃ）に示すように１つずつブロックが確保され、処理２０５により、確保されたブロックが連結されて、同図（ｄ）に示すようなデータ構造が構築される。
【００６６】
図１５は、処理２０６で行う他のタスクから拡張ブロックを１つ確保する処理の一例を示している。
【００６７】
まず、内部処理用のデータを初期化する（処理３０１）。すなわち、「対象タスク」として「ＮＵＬＬ（なし）」をセットし、「過使用ブロック数」に「０」を代入する。
【００６８】
次いで、全タスク用データ構造についての処理を終了したかどうかを調べ（判断３０２）、判断３０２の結果がＮＯになるときには、１つのタスク用データ構造を選択し、そのデータ構造のスタートブロックの「保証ブロックフラグ」が「○（セット；保証領域を構成する旨をあらわす）」されているかどうかを調べる（判断３０３）。
【００６９】
判断３０３の結果がＮＯになるときには、そのスタートブロックは保証領域ではないので、拡張領域が含まれている。そこで、「使用ブロック数」から「保証ブロック数」を減じた値、すなわち、当該タスク用データ構造における拡張領域のブロック数が、「過使用ブロック数」よりも大きいかどうかを調べる（判断３０４）。
【００７０】
判断３０４の結果がＹＥＳになるときには、そのタスクを、拡張ブロックを確保する対象のタスクとして設定する（処理３０５）。すなわち、「対象ブロック数」に当該タスクのタスクＩＤをセットするとともに、「過使用ブロック数」に「使用ブロック数」から「保証ブロック数」を減じた値をセットする。
【００７１】
そして、判断３０２へ戻り、次のタスク用データ構造についての処理を行う。
【００７２】
また、全てのタスク用データ構造についての処理が終了し、判断３０２の結果がＹＥＳになるときには、「対象タスク」の値が「ＮＵＬＬ」になっているかどうかを調べる（判断３０６）。判断３０６の結果がＹＥＳになるときには、拡張ブロックを確保する対象のタスクが見つからなかったので、その時点で終了（エラー終了）する。
【００７３】
また、判断３０６の結果がＮＯになるときには、「対象タスク」のタスクについて、タスク用データ構造を更新する（処理３０７）。すなわち、「スタートブロック番号」を、その時点での「スタートブロック番号」のブロックの次に連結されているブロックのブロック番号に更新し、使用ブロック数の値を１つ減じる。
【００７４】
この図１５の処理では、その時点で拡張領域のブロック数が最も多いタスク用データ構造が選択され、そのタスク用データ構造から最も古いログ情報を記憶しているブロック、すなわち、先頭ブロックが、リストからはずされて、当該タスク用データ構造が更新される。
【００７５】
例えば、図１６（ａ）〜（ｄ）のように、４つのタスクＴＳ１，ＴＳ２，ＴＳ３，ＴＳ４のデータ構造があった場合には、拡張領域のブロック数が２つのタスクＴＳ１，ＴＳ４のうち、最初に見つかるタスクＴＳ１が、対象タスクとなる。
【００７６】
なお、この場合には、拡張領域のブロック数が最も多くて、最初に見つかったタスクのデータ構造が対象として選択されているが、この選択条件は、これに限ることはない。例えば、拡張領域のブロック数が最も多くて、かつ、保証領域のブロック数がより小さいものを選択するようにすることができる。この条件では、図１６（ａ）〜（ｄ）の場合には、拡張領域のブロック数が「２」で、かつ、保証領域のブロック数が「１」のタスクＴＳ４が対象タスクとなる。
【００７７】
また、先頭ブロックを解放するように更新した場合のタスク用データ構造の更新例を図１７（ａ），（ｂ）に示す。
【００７８】
図１８は、ログ情報を書き込むときのログ書込制御部ＬＣおよびログ領域管理制御部ＬＬの処理の一例を示している。
【００７９】
まず、ログ情報を書き込むタスク用データ構造の最新ブロック番号のブロックへログ情報を書き込む（処理４０１）。この書込の結果、ブロックが一杯になったかどうかを調べる（判断４０２）。ブロックが一杯にならず、判断４０２の結果がＮＯになるときには、このときの処理を終了する。
【００８０】
また、ブロックが一杯になって判断４０２の結果がＹＥＳになるとき、保証領域に次のブロックがあるかどうかを調べる（判断４０３）。すなわち、最新ブロック番号のブロックの次ブロック番号のブロックを調べて、保証ブロックフラグがセットされているかどうかを調べる。
【００８１】
判断４０３の結果がＹＥＳになるときには、最新ブロック番号を１つ大きくする（処理４０４）。このように、保証領域内でブロックを更新する場合の一例を図７（ａ），（ｂ）に示す。
【００８２】
また、保証領域内に空きブロックがない場合で、判断４０３の結果がＮＯになるときには、拡張領域のブロックを１つ確保する（処理４０５）。この処理４０５では、まず、ログ記憶領域ＳＴに空きブロックがあるかどうかを調べ、見つかった場合には、ログ記憶領域ＳＴの空きブロックを確保する。また、ログ記憶領域ＳＴの空きブロックが見つからなかった場合には、図１５に示した他のタスクから拡張ブロックを１つ確保する処理を実行する。
【００８３】
処理４０５により、ブロックが確保できたどうかを調べる（判断４０６）。判断４０６の結果がＹＥＳになるときには、確保したブロックをブロックリストに追加する（処理４０７）。すなわち、最新ブロック番号のブロックについては、そのブロックデータ構造の次ブロック番号に、新たに確保したブロックのブロック番号をセットする。また、新たに確保したブロックについては、そのブロックデータ構造の使用タスクＩＤに当該タスクのタスクＩＤの値をセットし、次ブロック番号には最新ブロックであることをあらわす「０」をセットし、保証ブロックフラグは「×（リセット；「保証領域でない」、すなわち、「拡張領域」をあらわす）」をセットする。
【００８４】
そして、タスク用データ構造を更新する（処理４０８）。すなわち、使用ブロック数の値を１つ増やす。
【００８５】
次に、使用ブロック数が保証ブロック数に１を加えた値よりも大きくなっているかどうかを調べる（判断４０９）。判断４０９の結果がＹＥＳになるときには、保証領域の位置を１つずらすようにタスク用データ構造を更新する（処理４１０）。すなわち、まず、保証スタートブロック番号のブロックのブロックデータ構造の保証ブロックフラグを「×（リセット）」にセットする。そして、保証スタートブロック番号として、そのときの保証スタートブロック番号のブロックのブロックデータ構造における次ブロック番号の値をセットする。また、更新後の保証スタートブロック番号のブロックと、それに連結する順次「保証ブロック数−１」個のブロックについて、保証ブロックフラグの値を「○（セット）」にセットして、保証領域を１ブロック移動した態様に更新する。
【００８６】
そして、処理４０４へ進み、最新ブロック番号を１つ進める。
【００８７】
一方、処理４０５で新しいブロックを確保できなかった場合には、その時点で確保しているタスク用領域のうち、最も古いログ情報を記憶しているスタートブロックを、新たな書込領域として設定するために、ログの書込位置をブロックリストの最初のブロックへ戻す（処理４１１）。
【００８８】
次いで、判断４０９へ進み、それ以降の処理を実行する。これにより、この場合のブロックデータ構造は、図２０（ａ）〜（ｃ）に示すように更新される。すなわち、同図（ａ）のように、ブロック１，２，３，４の順番であったリストを、ブロック２，３，４，１の順番に組み替えて、さらに、保証領域をブロック３，４からブロック４，１に変更する。
【００８９】
以上のように、本実施例では、保証領域内のブロックへの書込が終了すると、拡張領域のブロック（過使用ブロック）を順次確保して、ログ情報を書き込むようにしている。したがって、例えば、動作解析時や動作テスト時など、大量のログ情報が発生する場合には、大容量の外部記憶媒体１４を装着することで、この外部記憶媒体１４に対して確実にログ情報を収集することができて、非常に便利である。
【００９０】
また、このようにしてログ情報を大量に記憶した外部記憶媒体１４を、別のログ解析用の装置へセットすると、そのログ解析用装置でネットワーク対応複合機の動作解析を行うことができるので、ネットワーク対応複合機でログ解析を行う場合に比べて、作業性が大幅に向上する。
【００９１】
なお、上述した実施例では、ネットワーク対応複合機に本発明を適用した場合について説明したが、本発明は、マルチタスク・オペレーティングシステムにより制御される情報機器であれば、いかなる用途のものについても、同様にして適用することができる。
【図面の簡単な説明】
【００９２】
【図１】本発明の一実施例にかかる情報機器としてのネットワーク対応複合機の構成の一例を示したブロック図。
【図２】図１に示したネットワーク対応複合機について、ログ情報を記憶するためのソフトウェア構成の一例を示したブロック図。
【図３】外部記憶媒体１４が装着されていない場合で、ログ記憶領域ＳＴに標準記憶領域ＳＴａのみが設けられている場合の動作の一例を説明するためのシーケンス図。
【図４】外部記憶媒体１４が装着されている場合で、ログ記憶領域ＳＴに代替記憶領域ＳＴｂが設けられている場合の動作の一例を説明するためのシーケンス図。
【図５】ログ記憶領域の構成について説明するための概略図。
【図６】ログ記憶領域の内容の変化について説明するための概略図（図７へ続く）。
【図７】ログ記憶領域の内容の変化について説明するための概略図（図６からの続き）。
【図８】ブロックデータ構造およびログ制御部データ構造の一例を示した概略図。
【図９】ログ記憶領域の一例（データ構造表記）を示した概略図。
【図１０】ログ記憶領域の一例（リスト表記）を示した概略図。
【図１１】タスクＴＳ１〜ＴＳｎからログ領域サイズが指定された場合に、ログ書込制御部ＬＣおよびログ領域管理制御部ＬＬが行う処理の一例を示したフローチャート。
【図１２】図１１の処理により形成されるデータ構造の一例を示した概略図。
【図１３】必要なブロック数のブロックを確保する場合にログ書込制御部ＬＣおよびログ領域管理制御部ＬＬが行う処理の一例を示したフローチャート。
【図１４】ブロックの確保時の動作を例示した概略図。
【図１５】他のタスクから拡張ブロックを１つ確保する処理の一例を示したフローチャート。
【図１６】他のタスクから拡張ブロックを１つ確保する際の動作を説明するための概略図。
【図１７】ブロックを１つ解放する際の動作を説明するための概略図。
【図１８】ログ情報を書き込むときのログ書込制御部ＬＣおよびログ領域管理制御部ＬＬの処理の一例を示したフローチャート。
【図１９】保証領域内で書込ブロックを更新する際の動作を説明するための概略図。
【図２０】拡張領域のためのブロックをあらたに確保できなかった場合の動作を説明するための概略図。
【符号の説明】
【００９３】
ＴＳ１〜ＴＳｎ  タスク
ＬＣ  ログ書込制御部
ＬＬ  ログ領域管理制御部
ＳＴ  ログ記憶領域
ＳＴａ  標準記憶領域
ＳＴｂ  代替記憶領域
【図１】
2008176465.tif 000003
【図２】
2008176465.tif 000004
【図３】
2008176465.tif 000005
【図４】
2008176465.tif 000006
【図５】
2008176465.tif 000007
【図６】
2008176465.tif 000008
【図７】
2008176465.tif 000009
【図８】
2008176465.tif 000010
【図９】
2008176465.tif 000011
【図１０】
2008176465.tif 000012
【図１１】
2008176465.tif 000013
【図１２】
2008176465.tif 000014
【図１３】
2008176465.tif 000015
【図１４】
2008176465.tif 000016
【図１５】
2008176465.tif 000017
【図１６】
2008176465.tif 000018
【図１７】
2008176465.tif 000019
【図１８】
2008176465.tif 000020
【図１９】
2008176465.tif 000021
【図２０】
2008176465.tif 000022