(57)【特許請求の範囲】
【請求項１】
プログラムの実行で実現された第１の仮想マシンと、第２の仮想マシンと、を動作させる情報処理装置において、
仮想マシンで行われた処理回数を示す処理回数情報を記憶する第１の記憶手段と、
仮想マシンで行われた処理の結果を示す入力情報から、当該処理を当該仮想マシンが実行した回数を示す実行回数情報に変換する変換情報を、記憶する第２の記憶手段と、
前記第２の記憶手段に記憶された前記変換情報を、前記第２の仮想マシンに出力する第１の出力手段と、
前記第１の出力手段により出力された前記変換情報に従って、前記第２の仮想マシン上で、前記入力情報から実行回数情報に変換する変換手段と、
前記変換手段で変換された前記実行回数情報を、前記第１の仮想マシンに出力する第２の出力手段と、
前記第２の出力手段により出力された前記実行回数情報に基づいて、前記第１の仮想マシンから前記第１の記憶手段の前記処理回数情報を書き込む書込手段と、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記第２の仮想マシンで、前記入力情報と、当該入力情報より前の入力情報を前記変換手段で変換した前記実行回数情報と、のうちデータ量の小さい方を判定する判定手段と、
前記第１の仮想マシンに前記入力情報が入力された場合、前記記憶手段に記憶された前記変換情報に従って、当該入力情報を、前記実行回数情報に変換する第２の変換手段と、をさらに備え、
前記第２の出力手段は、前記実行回数情報のデータ量が小さいと判定された場合、前記変換手段に変換された前記実行回数情報を前記第１の仮想マシンに出力し、前記入力情報のデータ量が小さいと判定された場合、前記入力情報を前記第１の仮想マシンに出力すること、
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記変換手段で変換された前記実行回数情報が、前記第２の仮想マシンしかカウントしない処理結果の場合、前記第２の仮想マシンから、前記第１の記憶手段の前記処理回数情報に、前記実行回数情報を書き込む第２の書込手段を、さらに備え、
前記第２の出力手段は、前記第２の仮想マシン以外の仮想マシンもカウントする処理結果の場合に、前記変換手段で変換された前記実行回数情報を、前記第１の仮想マシンに出力すること、
を特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記書込手段が、前記第１の記憶手段に対して書き込みを行う際に、当該書込手段以外で書き込みが行われないようロックするロック手段を、さらに備えることを特徴とする請求項１乃至３のいずれか１つに記載の情報処理装置。
【請求項５】
前記第１の記憶手段は、さらに処理の種類別に、当該処理回数情報を記憶し、
前記ロック手段は、前記実行回数情報を書き込む対象の前記処理回数情報のみをロックすること、
を特徴とする請求項４に記載の情報処理装置。
【請求項６】
書き込み可能な回数が前記第１の記憶手段より多い第３の記憶手段と、
前記第１の記憶手段に記憶された前記処理回数情報を読み出す読出手段と、
前記書込手段が、読み出した前記処理回数情報を前記第３の記憶手段に書き込み、前記変換手段で変換が行われる毎に、変換された前記実行回数情報を用いて前記第３の記憶手段の前記処理回数情報を更新し、前記第３の記憶手段で複数回更新された前記処理回数情報を、まとめて前記第１の記憶手段に書き込むこと、
を特徴とする請求項１に記載の情報処理装置。
【請求項７】
プログラムの実行で実現された第１の仮想マシンと、第２の仮想マシンと、を動作させる情報処理装置で実行される情報処理方法であって、
前記情報処理装置が、仮想マシンで行われた処理回数を示す処理回数情報を記憶する第１の記憶手段と、
仮想マシンで行われた処理の結果を示す入力情報から、当該処理を当該仮想マシンが実行した回数を示す実行回数情報に変換する変換情報を、記憶する第２の記憶手段と、を備え、
第１の出力手段が、前記第２の記憶手段に記憶された前記変換情報を、前記第２の仮想マシンに出力する第１の出力ステップと、
変換手段が、前記第１の出力ステップにより出力された前記変換情報に従って、前記第２の仮想マシン上で、前記入力情報から実行回数情報に変換する変換ステップと、
第２の出力手段が、前記変換ステップで変換された前記実行回数情報を、前記第１の仮想マシンに出力する第２の出力ステップと、
書込手段が、前記第２の出力ステップにより出力された前記実行回数情報に基づいて、前記第１の仮想マシンから前記第１の記憶手段の前記処理回数情報に書き込む書込ステップと、
を含むことを特徴とする情報処理方法。
【請求項８】
第１の仮想マシンと、第２の仮想マシンと、を動作させるコンピュータで実行される情報処理プログラムであって、
前記コンピュータが、仮想マシンで行われた処理回数を示す処理回数情報を記憶する第１の記憶手段と、
仮想マシンで行われた処理の結果を示す入力情報から、当該処理を当該仮想マシンが実行した回数を示す実行回数情報に変換する変換情報を、記憶する第２の記憶手段と、を備え、
前記第２の記憶手段に記憶された前記変換情報を、前記第２の仮想マシンに出力する第１の出力手段と、
前記第１の出力手段により出力された前記変換情報に従って、前記第２の仮想マシン上で、前記入力情報から実行回数情報に変換する変換手段と、
前記変換手段で変換された前記実行回数情報を、前記第１の仮想マシンに出力する第２の出力手段と、
前記第２の出力手段により出力された前記実行回数情報に基づいて、前記第１の仮想マシンから前記第１の記憶手段の前記処理回数情報に書き込む書込手段と、
して機能させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
従来から、顧客ごとに最適なオフィス環境を提供するために、顧客ごとにアプリケーションの追加、又は削除可能なシステムが検討されている。この追加されるアプリケーションには、様々なメーカが開発するものも含まれる。当該追加により、システムの基本機能が損なわれるものであってはならない。
【０００３】
ＵＮＩＸ（登録商標）等のプロセスベースのＯＳでシステムを構築する場合、システムの堅牢性を向上させるために適切な粒度でプロセスを分割するのが一般的である。しかし、開発言語としてＪａｖａ（登録商標）を用いる場合、単一の仮想マシン（ＪＶＭ）上で複数のアプリケーションを動作させることになる。この場合、細かい粒度でプロセスを分割するのは現実的ではないが、各アプリケーションを動作させる仮想マシンを分離することで、システムの堅牢性を向上させることができる。ここで、堅牢性とは、プログラムにおいて、エラーや例外等に強く、簡単には暴走しないことをいう。
【０００４】
そこで、近年、複数のJava（登録商標）仮想マシンを動作させる技術として、マルチＶＭ（ＭＶＭ：Multi  Virtual  Machine）が提案されている。このマルチＶＭの技術を用いて、アプリケーション毎にＶＭを分けることで、あるアプリケーションの影響を他のアプリケーションに及ぼすのを抑止できる。
【０００５】
ところで、現在、複数のアプリケーションが搭載された装置の一種として画像処理装置が存在する。当該画像処理装置では、ＦＡＸアプリケーションや、コピーアプリケーションなど様々なアプリケーションが搭載されているだけでなく、ユーザの要求に応じて様々なアプリケーションが搭載可能となっている。そして、引用文献１に示すように、複数のアプリケーションが実行された処理の回数については、カウンタ用の記録手段で一括管理している。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、引用文献１は、単一の計算機上で複数のアプリケーションのカウントを集計する技術であって、単一の計算機上に複数の仮想マシンを動作させ、仮想マシン毎にアプリケーションを起動させた場合に、各アプリケーションのカウントを集計する技術については記載されていない。
【０００７】
仮に、マルチＶＭで一つのＶＭ上で、全てのＶＭ上で動作するアプリケーションのカウントを集計しようとした場合、カウントを行うために必要な入力データがＶＭ間のデータ転送量が大きくなり、実行速度が低下するという問題がある。
【０００８】
本発明は、上記に鑑みてなされたものであって、実行速度の低下を抑止するために処理の効率化を図る情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明にかかる情報処理装置は、プログラムの実行で実現された第１の仮想マシンと、第２の仮想マシンと、を動作させる情報処理装置において、仮想マシンで行われた処理回数を示す処理回数情報を記憶する第１の記憶手段と、仮想マシンで行われた処理の結果を示す入力情報から、当該処理を当該仮想マシンが実行した回数を示す実行回数情報に変換する変換情報を、記憶する第２の記憶手段と、前記第２の記憶手段に記憶された前記変換情報を、前記第２の仮想マシンに出力する第１の出力手段と、前記第１の出力手段により出力された前記変換情報に従って、前記第２の仮想マシン上で、前記入力情報から実行回数情報に変換する変換手段と、前記変換手段で変換された前記実行回数情報を、前記第１の仮想マシンに出力する第２の出力手段と、前記第２の出力手段により出力された前記実行回数情報に基づいて、前記第１の仮想マシンから前記第１の記憶手段の前記処理回数情報を書き込む書込手段と、を備えたことを特徴とする。
【００１０】
また、本発明にかかる情報処理方法は、プログラムの実行で実現された第１の仮想マシンと、第２の仮想マシンと、を動作させる情報処理装置で実行される情報処理方法であって、前記情報処理装置が、仮想マシンで行われた処理回数を示す処理回数情報を記憶する第１の記憶手段と、仮想マシンで行われた処理の結果を示す入力情報から、当該処理を当該仮想マシンが実行した回数を示す実行回数情報に変換する変換情報を、記憶する第２の記憶手段と、を備え、第１の出力手段が、前記第２の記憶手段に記憶された前記変換情報を、前記第２の仮想マシンに出力する第１の出力ステップと、変換手段が、前記第１の出力ステップにより出力された前記変換情報に従って、前記第２の仮想マシン上で、前記入力情報から実行回数情報に変換する変換ステップと、第２の出力手段が、前記変換ステップで変換された前記実行回数情報を、前記第１の仮想マシンに出力する第２の出力ステップと、書込手段が、前記第２の出力ステップにより出力された前記実行回数情報に基づいて、前記第１の仮想マシンから前記第１の記憶手段の前記処理回数情報に書き込む書込ステップと、を含むことを特徴とする。
【００１１】
また、本発明にかかる情報処理プログラムは、第１の仮想マシンと、第２の仮想マシンと、を動作させるコンピュータで実行される情報処理プログラムであって、前記コンピュータが、仮想マシンで行われた処理回数を示す処理回数情報を記憶する第１の記憶手段と、仮想マシンで行われた処理の結果を示す入力情報から、当該処理を当該仮想マシンが実行した回数を示す実行回数情報に変換する変換情報を、記憶する第２の記憶手段と、を備え、前記第２の記憶手段に記憶された前記変換情報を、前記第２の仮想マシンに出力する第１の出力手段と、前記第１の出力手段により出力された前記変換情報に従って、前記第２の仮想マシン上で、前記入力情報から実行回数情報に変換する変換手段と、前記変換手段で変換された前記実行回数情報を、前記第１の仮想マシンに出力する第２の出力手段と、前記第２の出力手段により出力された前記実行回数情報に基づいて、前記第１の仮想マシンから前記第１の記憶手段の前記処理回数情報に書き込む書込手段と、して機能させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、仮想マシン間で入出力されるデータ量を削減することで、実行速度の低下を抑止できるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、第１の実施の形態にかかる複合機の構成を示すブロック図である。
【図２】図２は、第１の実施の形態にかかる入力データの構造の一例を示した図である。
【図３】図３は、第１の実施の形態にかかる複合機上で動作する仮想マシンの概念を示した説明図である。
【図４】図４は、第１の実施の形態にかかるカウンタデシジョンテーブルのテーブル構造の一例を示した図である。
【図５】図５は、レコード変換制御サービスの変換部で行われる変換を示した説明図である。
【図６】図６は、第１の実施の形態にかかる複合機における、ＨＤＤに対するカウンタに関するデータのインストールを表した説明図である。
【図７】図７は、第１の実施の形態にかかる複合機における、通常起動時に各仮想マシンで行う処理を示した説明図である。
【図８】図８は、第１の実施の形態にかかる複合機における、各仮想マシンで行われた処理に従って、カウントが行われる場合の処理の流れを示した説明図である。
【図９】図９は、第１の実施の形態にかかる複合機における、仮想マシンによるカウントの書き込みまでの処理の手順を示すフローチャートである。
【図１０】図１０は、第１の実施の形態の変形例にかかる複合機における、各仮想マシンで行われた処理に従って、カウントが行われる場合の処理の流れを示した説明図である。
【図１１】図１１は、第１の実施の形態の変形例にかかる複合機における、各仮想マシンで行われた処理に従って、カウントが行われる場合の処理の流れを示した説明図である。
【図１２】図１２は、第２の実施の形態にかかる複合機の構成を示すブロック図である。
【図１３】図１３は、第２の実施の形態にかかる複合機における、スレーブＶＭに対するアプリケーションのインストールを表した説明図である。
【図１４】図１４は、第２の実施の形態にかかる複合機における、通常起動時に各仮想マシンで行う処理を示した説明図である。
【図１５】図１５は、各仮想マシンで行われた処理に従って、カウントが行われる場合の処理の流れを示した説明図である。
【図１６】図１６は、第２の実施の形態の変形例にかかる複合機において、各仮想マシンで行われた処理に従って、カウントが行われる場合の処理の流れを示した説明図である。
【図１７】図１７は、第３の実施の形態にかかる複合機において、各仮想マシンで行われた処理に従って、カウントが行われる場合の処理の流れを示した説明図である。
【図１８】図１８は、第３の実施の形態にかかる複合機上の、第２のスレーブＶＭの判定部による判定手法を示した概念図である。
【図１９】図１９は、判定部が判定を行う手順を示したプログラムコードを示す図である。
【図２０】図２０は、第４の実施の形態にかかる複合機の構成を示すブロック図である。
【図２１】図２１は、ＮＡＮＤフラッシュメモリと、ＮＶＲＡＭと、の関係を示した概念図である。
【図２２】図２２は、本実施の形態にかかる複合機における、処理に基づくカウントの更新からカウントの閲覧処理の手順を示すシーケンス図である。
【図２３】図２３は、本実施の形態にかかる複合機におけるカウントアップ更新時の処理の手順を示すフローチャートである。
【図２４】図２４は、第１〜４の実施の形態及び変形例にかかる複合機のハードウェア構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、この発明にかかる情報処理装置、情報処理方法、及び情報処理プログラムの一実施の形態を詳細に説明する。以下に示す実施の形態においては、情報処理装置、情報処理方法、及び情報処理プログラムを適用した画像形成装置について説明する。
【００１５】
（第１の実施の形態）
図１は、第１の実施の形態にかかる画像形成装置の構成を示すブロック図である。本実施の形態では、画像形成装置を、コピー機能、プリンタ機能、スキャナ機能およびファクシミリ機能のうち少なくとも２つの機能を有する複合機１００に適用した例を挙げて説明するが、複写機、プリンタ、スキャナ装置、ファクシミリ装置等の画像形成装置であればいずれにも適用することができる。
【００１６】
複合機１００は、ソフトウェア構成として、メインＯＳ１０１と、仮想マシン制御部１０２と、共通メカニズム１０３と、サービス群１０４と、アプリケーション群１０５とを備え、エンジンＩ／Ｆを介して様々なハードウェアリソースにアクセス可能としている。
【００１７】
そして、複合機１００は、ハードウェアリソースとして、ＨＤＤ１５１と、タッチパネル１５２と、電話回線Ｉ／Ｆ１５３と、スキャナ１５４と、プロッタ１５５と、その他ハードウェアリソース１５６と、を備えている。
【００１８】
ＨＤＤ１５１は、データの記憶するハードウェアリソースとする。ＨＤＤ１５１は、例えば、データベースに格納されたデータ等を記憶する。電話回線Ｉ／Ｆ１５３は、電話回線に接続するためのインターフェースとする。
【００１９】
次に、複合機１００のソフトウェア構成について説明する。アプリケーション群１０５は、仮想マシン上で動作するプログラム群で構成され、コピーアプリケーション１３１と、プリンタアプリケーション１３２と、ＦＡＸアプリケーション１３３と、ユーザアプリケーション１３４と、ジョブコントローラ１３５とを備えている。このように複合機１００は、アプリケーション群１０５として、ユーザが識別可能な単位の機能を提供する複数のプログラムが格納されている。
【００２０】
コピーアプリケーション１３１は、入力された紙原稿のスキャンから、当該紙原稿を複製した複製紙を生成するまでの処理を統括するアプリケーションとする。プリンタアプリケーション１３２は、複合機１００が保持する又は入力された画像データを、記録紙に対して出力するまでの処理を制御するアプリケーションとする。ＦＡＸアプリケーション１３３は、電話回線Ｉ／Ｆ１５３を介して入力された画像データが入力された場合に、当該画像データが印刷された記録紙を出力するまでの処理を制御するアプリケーションとする。ユーザアプリケーション１３４は、ユーザが生成したアプリケーションであって、プラグイン管理部１１１から入力されたアプリケーションとする。
【００２１】
ジョブコントローラ１３５は、ジョブの実行順や、ジョブ毎の実行／中断／最下位などを制御するコントローラとする。
【００２２】
そして、本実施の形態にかかる複合機１００では、コピーアプリケーション１３１、プリンタアプリケーション１３２、ＦＡＸアプリケーション１３３、及びユーザアプリケーション１３４は、任意の仮想マシンに割り当てられる。また、ジョブコントローラ１３５は、各仮想マシンにそれぞれ割り当てられる。これにより仮想マシンごとにジョブの管理が可能となる。
【００２３】
そして、コピーアプリケーション１３１、プリンタアプリケーション１３２、ＦＡＸアプリケーション１３３、及びユーザアプリケーション１３４は、処理を行う度に、当該処理をカウントするための入力データを、サービス群１０４のレコード変換制御サービス１２１に対して出力する。
【００２４】
図２は、入力データの構造の一例を示した図である。図２に示すように、入力データは、キーと値とが対応付けられたテーブル構造となっている。図２に示す入力データは、プリンタアプリケーション１３２により出力された入力データとして、印刷した印刷用紙一枚分の処理結果を示す情報が格納されている。なお、他のアプリケーションが出力する入力データについても同様にキーと値とが対応付けられたテーブル構造となるものとする。なお、他のアプリケーションの具体的な入力データについては、説明を省略する。
【００２５】
図１に戻り、メインＯＳ１０１は、複合機１００のハードウェアリソースと、ソフトウェアリソースと、を管理するプログラムとする。メインＯＳ１０１は、プログラムの起動、情報の読み込み制御、保存制御等を行うものとする。
【００２６】
共通メカニズム１０３は、仮想マシン上で動作するプログラム群で構成され、プラグイン管理部１１１と、履歴制御部１１２とを、備え、アプリケーション群１０５に格納するアプリケーションを含む、コンポーネントの追加、更新、削除、正当性の確認などを行う。
【００２７】
プラグイン管理部１１１は、アプリケーション群１０５やサービス群１０４に対する、コンポーネントの追加、更新、削除、正当性の確認を制御する。
【００２８】
履歴制御部１１２は、コンポーネントの追加、更新、削除、正当性の確認が行われたことを示す情報を、履歴として保持する制御を行う。
【００２９】
本実施の形態にかかる複合機１００においては、プラグイン管理部１１１を利用することで、当該複合機１００を提供しているメーカ以外であっても、カスタマイズアプリをプラグインとして、インストールすることができる。
【００３０】
仮想マシン制御部１０２は、メインＯＳ１０１上で、複数の仮想マシンを動作させる制御を行う。仮想マシンの例としては、Ｊａｖａ（登録商標）仮想マシンがある。本実施の形態においては、マルチＶＭ技術を適用することで、複数の仮想マシンを動作させることができる。
【００３１】
つまり、本実施の形態にかかる複合機１００では、プラグイン管理部１１１を利用することで、ユーザ等がカスタマイズアプリをインストールできる。これらインストールされたカスタマイズアプリは、複合機１００が管理できないため質の悪いアプリケーションも存在する。このようなアプリケーションは落ちることがあるため、アプリケーション毎にプロセスを割り当てる方が好ましい。
【００３２】
しかしながら、本実施の形態にかかる複合機１００上で動作する仮想マシンは、当該仮想マシンごとに１プロセスで動作する。このため仮想マシン（以下、ＶＭ(Virtual Machine）とも示す)で複数のアプリケーションを動作させた場合、アプリケーション毎にプロセスを割り当てることができないため、一つのアプリケーションが落ちると、仮想マシン全体が落ちることになる。そこで、本実施の形態では、複合機１００では、アプリケーション毎に異なる仮想マシン上で動作させることとする。
【００３３】
図３は、複合機１００上で動作する仮想マシンの概念を示した説明図である。図３に示す例では、複合機１００のメインＯＳ１０１上に、マスタＶＭ３０１Ａと、第１のスレーブＶＭ３０１Ｂと、第２のスレーブＶＭ３０１Ｃと、を動作させる。
【００３４】
仮想マシンとは、複合機１００のＣＰＵやメモリ等のリソースを、物理的構成によらず柔軟に分割したり統合して、仮想化したコンピュータを実行させたプログラムとする。例えば、仮想マシンとして、Ｊａｖａ（登録商標）をプログラミング言語とするＪａｖａ（登録商標）仮想マシンを用いてもよい。なお、このＪａｖａ（登録商標）仮想マシンは、メインＯＳ１０１上に実行ファイルとして存在する仮想マシン制御部１０２を実行し、クラスファイルを読み込み、クラス内のメソッドを呼び出すことで実現される。
【００３５】
そして、マスタＶＭ３０１Ａ、第１のスレーブＶＭ３０１Ｂ、及び第２のスレーブＶＭ３０１Ｃ上にはそれぞれ、共通メカニズム１０３と、サービス群１０４と、ジョブコントローラ１３５と、ＶＭ毎に割り当てられたアプリケーションと、が実行される。
【００３６】
そして、マスタＶＭ３０１Ａには、プリンタアプリケーション１３２が割り当てられる。また、第１のスレーブＶＭ３０１Ｂには、コピーアプリケーション１３１と、ＦＡＸアプリケーション１３３とが、割り当てられる。さらに、また、第２のスレーブＶＭ３０１Ｃには、ユーザアプリケーション１３４が、割り当てられる。このように、仮想マシン毎に割り当てられるアプリケーションは、一つに制限するものではなく、複数割り当てても良い。
【００３７】
そして、マスタＶＭ３０１Ａ、第１のスレーブＶＭ３０１Ｂ、及び第２のスレーブＶＭ３０１Ｃの間のデータ通信は、各仮想マシンが備えたＩＰＣ(Inter  Process  Communication)サービス１２４が制御する。
【００３８】
また、共通メカニズム１０３、サービス群１０４、及びアプリケーション群１０５は、ＶＭ上で動作するクラスの集合であり、そのクラスがクラスライブラリのクラスを呼び出すことにより、上述したアプリケーションなどのソフトウェアの処理が実行される。そして、共通メカニズム１０３、サービス群１０４、及びアプリケーション群１０５の各ソースコードプログラムは、コンパイルして中間コード形式のバイトコードにされ、複合機１００にロードされる。そして各仮想マシンは、そのバイトコードを解釈・実行している。
【００３９】
サービス群１０４は、仮想マシン上で動作するプログラム群で構成され、レコード変換制御サービス１２１と、データベース制御サービス１２２と、ユーザインタフェース１２３と、ＩＰＣサービス１２４と、を備え、アプリケーション群１０５に格納された複数のアプリケーションが共通に使用する部分を集めたプログラム群とする。
【００４０】
データベース制御サービス１２２は、書込部１６１と、読出部１６２と、ロック制御部１６３とを備え、ＨＤＤ１５１に格納されたデータベースに対して、アクセス制御を行う。
【００４１】
書込部１６１は、ＨＤＤ１５１に格納されたデータベースに対してデータの書き込み、又は更新を行う。例えば、マスタＶＭ３０１ＡがスレーブＶＭから実行回数データを受け付けた場合、マスタＶＭ３０１Ａ上で動作している書込部１６１は、当該実行回数データをＨＤＤ１５１に書き込む。
【００４２】
読出部１６２は、ＨＤＤ１５１からデータの読み出しを行う。また、読出部１６２は、ＨＤＤ１５１から、テーブル情報を読み出しても良い。
【００４３】
例えば、マスタＶＭ３０１Ａの読出部１６２は、カウンタデシジョンテーブルを読み出す。カウンタデシジョンテーブルとは、各アプリケーションからの入力データを、当該入力データに含まれている処理結果に基づいて、当該処理の実行された回数が示された実行回数データに変換するテーブルとする。
【００４４】
図４は、本実施の形態にかかるカウンタデシジョンテーブルのテーブル構造の一例を示した図である。図４に示すように、入力データのキー、入力データの値、原稿の印刷、ファイルの印刷等が対応付けられている。
【００４５】
入力データのキーは、各アプリケーションの処理結果の各項目を示すデータとする。入力データの値は、上記キーと対応付けられた値とする。
【００４６】
原稿の印刷は、上記入力データで原稿が印刷された場合に、カウンタテーブルを更新するために必要なカウンタＩＤと幅とを保持している。ファイルの印刷は、上記入力データでファイルの印刷された場合に、カウンタテーブルを更新するために必要なカウンタＩＤとカウント幅とを保持している。
【００４７】
カウンタテーブルは、ＨＤＤ１５１に格納されるテーブルであって、複合機１００で動作している複数の仮想マシンで行われた処理回数を記憶する。
【００４８】
カウンタＩＤは、更新するカウンタを識別するＩＤとする。カウント幅は、カウンタに対して加算する数値を示している。
【００４９】
つまり、カウンタデシジョンテーブルは、アプリケーションから処理した結果を表す入力データが入力された場合、当該入力データに含まれているキーと値とに基づいて、カウンタＩＤとカウント幅とで構成されている実行回数データに変換するために用いられる。
【００５０】
この変換をどの仮想マシンで行うのかが問題となる。例えば、カウント処理を一括してマスタＶＭで行うようにすれば、整合性を図るのが容易である。このため、マスタ仮想マシンが、全ての仮想マシンの処理結果である入力データを受け付け、当該入力データを実行回数データに変換処理を行い、当該実行回数データでカウンタテーブルに書き込むよう制御すると、入力データのデータ量が大きい場合に、仮想マシン間で送受信されるデータ量が大きくなるという問題がある。つまり、仮想マシン間で送受信されるデータ量が大きくなると、速度面で負担が大きくなってしまう。
【００５１】
そこで、本実施の形態においては、各仮想マシンが、カウンタデシジョンテーブルを用いて、入力データを実行回数データに変換してから、カウンタ処理を一括して行うマスタＶＭに当該実行回数データを送信することとした。これにより、仮想マシン間で送受信されるデータ量を削減することが可能となる。なお、詳細な処理については後述する。
【００５２】
ロック制御部１６３は、ＨＤＤ１５１に格納されるデータベースに格納されたテーブルに対するロック制御を行う。
【００５３】
例えば、マスタ仮想マシンが、書込部１６１を介して、ＨＤＤ１５１のデータベースに対して書き込みを行う際に、マスタ仮想マシンの書込部１６１以外で書き込みが行われないよう、書き込み対象であるテーブルをロックする。
【００５４】
ＩＰＣサービス１２４は、出力部１８１を備え、仮想マシン間のデータ転送を簡略する。出力部１８１は、他の仮想マシンに対してデータの出力を行う。
【００５５】
例えば、マスタ仮想マシン上の出力部１８１は、データベース制御サービス１２２の読出部１６２で読み出されたタイムデシジョンテーブルを、他のスレーブ仮想マシンに出力する。
【００５６】
他の例としては、スレーブ仮想マシン上の出力部１８１は、入力データをタイムデシジョンテーブルで変換された実行回数データを、マスタ仮想マシンに対して出力する。
【００５７】
レコード変換制御サービス１２１は、変換部１７１と、レコードデータ記憶領域１７２とを備え、仮想マシンごとに割り当てられたアプリケーションからの要求に従って、当該仮想マシンに応じたデータベースのアクセス制御を行う。
【００５８】
レコードデータ記憶領域１７２は、仮想マシンごとのデータをデータベース構造で記憶する領域とする。そして、レコードデータ記憶領域１７２に格納されたデータは、必要に応じて他の仮想マシンに出力されたり、ＨＤＤ１５１に追加、更新されたりする。
【００５９】
変換部１７１は、カウンタデシジョンテーブルに従って、各仮想マシン上で、各アプリケーションの処理結果である入力データから、実行回数データに変換する。
【００６０】
図５は、レコード変換制御サービス１２１の変換部１７１で行われる変換を示した説明図である。図５に示すように、レコード変換制御サービス１２１が、入力データ５０１の入力を受け付けたものとする。この場合、レコード変換制御サービス１２１の変換部１７１が、レコードデータ記憶領域１７２に格納されたカウンタデシジョンテーブル５０２を用いて、入力データ５０１の変換を行い、実行回数データ５０３を生成する。図５に示すようにカウンタデシジョンテーブル５０２には、入力データと対応して同時に更新すべきカウンタの情報が対応付けられている。図５に示す例は、原稿の印刷を行った場合を示しており、変換部１７１が、原稿の印刷の列に格納されたカウンタのＩＤと幅とを抽出している。
【００６１】
この処理は、仮想マシン毎に行うこととする。そして、生成した実行回数データを、スレーブ仮想マシンからマスタ仮想マシンに出力し、マスタ仮想マシンが入力された実行回数データでカウンタテーブルを更新する。つまり、本実施の形態においては、入力データを仮想マシン間で送受信するのではなく、スレーブ仮想マシンが、カウンタデシジョンテーブルを用いて入力データから、データサイズが小さい実行回数データに変換し、当該実行回数データをマスタ仮想マシンに送信している。これにより、仮想マシン間で送受信されるデータ量を削減することができる。
【００６２】
ユーザインタフェース１２３は、複合機１００が備えるタッチパネル１５２やネットワークを介して接続された外部機器に対して送信する複合機１００用の画面などを制御する。
【００６３】
次に、本実施の形態にかかる複合機１００で行われる具体的な処理について説明する。図６は、本実施の形態にかかる複合機１００における、ＨＤＤ１５１に対するカウンタに関するデータのインストールを表した説明図である。このＨＤＤ１５１に対してインストールを行う前に、予めＨＤＤ１５１を初期化しておくものとする。そして、マスタＶＭ３０１Ａが備える各構成を、レコード変換制御サービス１２１Ａ、レコードデータ記憶領域１７２Ａ、データベース制御サービス１２２Ａとする。また、第１のスレーブＶＭ３０１Ｂが備える各構成を、レコード変換制御サービス１２１Ｂ、レコードデータ記憶領域１７２Ｂとする。さらに、第２のスレーブＶＭ３０１Ｃが備える各構成を、レコード変換制御サービス１２１Ｃ、レコードデータ記憶領域１７２Ｃとする。
【００６４】
そして、ＨＤＤ１５１に対するカウンタの書き込み、読み込み制御は、マスタＶＭ３０１Ａが管理する。具体的には、レコード変換制御サービス１２１Ａは、カウンタデシジョンテーブル、カウンタテーブル等を、レコードデータ記憶領域１７２Ａにインストールする。その後、データベース制御サービス１２２Ａの書込部１６１が、レコードデータ記憶領域１７２Ａに格納されたカウンタデシジョンテーブル、カウンタテーブル等を、ＨＤＤ１５１に書き込む。これにより、各処理をカウントするためのテーブル等が全てインストールされたものとする。
【００６５】
なお、本実施の形態においては、他のスレーブＶＭ３０１Ｂ、３０１Ｃは、ＨＤＤ１５１にアクセスすることを抑止している。このため、通常起動時に、データを変換するためのカウントデシジョンテーブルを、マスタＶＭ３０１Ａから、第１の他のスレーブＶＭ３０１Ｂ、第２のスレーブＶＭ３０１Ｃに出力する必要がある。
【００６６】
図７は、本実施の形態にかかる複合機１００における、通常起動時に各仮想マシンで行う処理を示した説明図である。
【００６７】
当該マスタＶＭ３０１Ａの起動時に、マスタＶＭ３０１Ａのレコード変換制御サービス１２１Ａが、カウンタデシジョンテーブルの読み出しを、レコードデータ記憶領域１７２Ａに対して要求する。起動時、レコードデータ記憶領域１７２Ａにカウンタデシジョンテーブルが格納されていないため、データベース制御サービス１２２Ａが、ＨＤＤ１５１から、カウンタデシジョンテーブルを読み出して、一度レコードデータ記憶領域１７２Ａに格納した後、レコード変換制御サービス１２１Ａに出力する。これにより、レコード変換制御サービス１２１Ａが、カウンタデシジョンテーブルを読み出すことができる。その際、データベース制御サービス１２２Ａは、ＨＤＤ１５１から読み出されたカウンタデシジョンテーブルを、（図示しない）キャッシュに保持させる。
【００６８】
一方、第１のスレーブＶＭ３０１Ｂ及び第２のスレーブＶＭ３０１Ｃの起動時に、第１のスレーブＶＭ３０１Ｂのレコード変換制御サービス１２１Ｂ、及び第２のスレーブＶＭ３０１Ｃのレコード変換制御サービス１２１Ｃは、各ＩＰＣサービス１２４を介して、マスタＶＭ３０１Ａに対して、カウンタデシジョンテーブルの取得要求を行う。これにより、マスタＶＭ３０１Ａのレコード変換制御サービス１２１Ａが、上記の読み出し処理により（図示しない）キャッシュに格納されたカウンタデシジョンテーブルを、ＩＰＣサービス１２４を介して、第１のスレーブＶＭ３０１Ｂ及び第２のスレーブＶＭ３０１Ｃに受け渡す。
【００６９】
なお、本実施の形態においては、各スレーブＶＭは、マスタＶＭの通常起動が完了した後に呼び出されることが保障されている。このため、キャッシュに格納されたカウンタデシジョンテーブルを、各スレーブＶＭに受け渡すことができる。これにより、ＨＤＤ１５１から読み出すよりも早く読み出すことができる。なお、マスタＶＭのキャッシュは、全てのＶＭが起動した後に破棄する。
【００７０】
次に各仮想マシンで行われた処理に従って、カウントが行われる場合について説明する。図８は、各仮想マシンで行われた処理に従って、カウントが行われる場合の処理の流れを示した説明図である。
【００７１】
図８に示すように、マスタＶＭ３０１Ａでは、当該仮想マシン上で行われた処理に従って、入力データと共にカウント要求８０１が行われた場合、レコード変換制御サービス１２１Ａが、当該カウント要求８０１を受け付ける。そして、レコード変換制御サービス１２１Ａが、カウンタデシジョンテーブルを用いて、入力データを実行回数データに変換する。
【００７２】
そして、レコード変換制御サービス１２１Ａが、レコードデータ記憶領域１７２Ａに対して、変換された実行回数データに含まれているカウンタＩＤ、カウント幅でカウントするよう、書き込み要求８０２を行う。その後、データベース制御サービス１２２Ａが、レコードデータ記憶領域１７２Ａに書き込まれたカウンタＩＤ、カウント幅を用いて、ＨＤＤ１５１のカウンタテーブルに書き込み又は更新する。その際、データベース制御サービス１２２Ａのロック制御部１６３が、書き込み対象であるカウンタテーブルを、他から書き込まれないようにロックする。
【００７３】
次に、他のスレーブ仮想マシンの場合について説明する。図８に示す例として、第１のスレーブＶＭ３０１Ｂは、当該仮想マシン上で行われた処理に従って、入力データと共にカウント要求８０３が行われた場合、レコード変換制御サービス１２１Ｂが、当該カウント要求８０３を受け付ける。そして、レコード変換制御サービス１２１Ｂが、カウンタデシジョンテーブルを用いて、入力データを実行回数データに変換する。
【００７４】
そして、レコード変換制御サービス１２１Ｂが、レコードデータ記憶領域１７２Ｂに対して、変換された実行回数データに含まれているカウンタＩＤ、カウント幅でカウントするよう、書き込み要求８０４を行う。そして、第１のスレーブＶＭ３０１ＢのＩＰＣサービス１２４の出力部１８１が、レコードデータ記憶領域１７２Ｂに格納されたカウンタＩＤ、及びカウント幅の書き込み要求８０５を、マスタＶＭ３０１Ａに対して行う。これにより、マスタＶＭ３０１Ａのレコードデータ記憶領域１７２Ａに、当該カウンタＩＤ、及びカウント幅が書き込まれる。その後、データベース制御サービス１２２Ａが、レコードデータ記憶領域１７２Ａに書き込まれたカウンタＩＤ、カウント幅を用いて、ＨＤＤ１５１のカウンタテーブルに書き込み又は更新する。
【００７５】
次に、本実施の形態にかかる複合機１００における、スレーブ仮想マシンによるカウントを書き込むまでの処理について説明する。図９は、本実施の形態にかかる複合機１００における上述した処理の手順を示すフローチャートである。なお、当該フローチャートにおいては、第１のスレーブＶＭ３０１Ｂの通常の起動時からの処理について説明する。第２のスレーブＶＭ３０１Ｃは、第１のスレーブＶＭ３０１Ｂと同様として説明を省略する。
【００７６】
まず、第１のスレーブＶＭ３０１Ｂは、通常起動時に、マスタＶＭ３０１Ａに対して、カウンタデシジョンテーブルの取得要求を、ＩＰＣサービス１２４を介して行う（ステップＳ９５１）。
【００７７】
そして、マスタＶＭ３０１Ａは、第１のスレーブＶＭ３０１Ｂから、カウンタデシジョンテーブルの取得要求を受け付ける（ステップＳ９０１）。
【００７８】
次に、マスタＶＭ３０１ＡのＩＰＣサービス１２４の出力部１８１が、キャッシュに保持されていたカウンタデシジョンテーブル５０２を、第１のスレーブＶＭ３０１Ｂに対して出力する（ステップＳ９０２）。
【００７９】
そして、第１のスレーブＶＭ３０１Ｂのレコード変換制御サービス１２１Ｂが、ＩＰＣサービス１２４を介して、カウンタデシジョンテーブルの入力を受け付ける（ステップＳ９５２）。そして、入力を受け付けたカウンタデシジョンテーブルは、レコード変換制御サービス１２１Ｂ内に保持される。
【００８０】
その後、第１のスレーブＶＭ３０１Ｂ内に割り当てられたアプリケーションが、ユーザ等からの要求に応じて処理を行ったものとする（ステップＳ９５３）。
【００８１】
そして、当該アプリケーションが、処理結果である入力データを出力すると共に、カウントの要求を、レコード変換制御サービス１２１Ｂに対して行う（ステップＳ９５４）。
【００８２】
次に、レコード変換制御サービス１２１Ｂが、カウント要求を受け付けた場合に、変換部１７１が、カウンタデシジョンテーブルを用いて、入力された入力データを、実行回数データに変換する（ステップＳ９５５）。
【００８３】
そして、変換部１７１が、レコードデータ記憶領域１７２Ｂに対して、実行回数データと共に、カウントの書き込み要求を行う（ステップＳ９５６）。これにより、レコードデータ記憶領域１７２Ｂには、カウンタＩＤとカウント幅との対応付けられたレコードが格納される。
【００８４】
その後、第１のスレーブＶＭ３０１ＢのＩＰＣサービス１２４の出力部１８１が、レコードデータ記憶領域１７２Ｂに格納されたカウンタＩＤ及びカウント幅と共に、書き込み要求を、マスタＶＭ３０１Ａに対して出力する（ステップＳ９５７）。
【００８５】
これに伴い、マスタＶＭ３０１ＡのＩＰＣサービス１２４が、カウンタＩＤ及びカウント幅と共に、書き込み要求の入力を受け付ける（ステップＳ９０３）。
【００８６】
そして、マスタＶＭ３０１ＡのＩＰＣサービス１２４が、入力を受け付けたカウンタＩＤ及びカウント幅を、レコードデータ記憶領域１７２Ａに格納する（ステップＳ９０４）。
【００８７】
次に、マスタＶＭ３０１Ａにおける、データベース制御サービス１２２Ａの書込部１６１が、レコードデータ記憶領域１７２Ａに格納されたカウンタＩＤ及びカウント幅に基づいて、ＨＤＤ１５１のカウンタテーブルに書き込み、又は更新する（ステップＳ９０５）。
【００８８】
上述した処理手順により、本実施の形態にかかる複合機１００では、カウンタの更新を行うことができる。
【００８９】
本実施の形態にかかる複合機１００では、カウンタテーブルと、カウンタデシジョンテーブルとをＨＤＤ１５１に記憶することとしたが、それぞれ別の記憶手段に記憶しても良い。
【００９０】
本実施の形態においては、複合機１００において、複数のＶＭのそれぞれにアプリケーションを割り当てることで、各アプリケーションの独立したプロセスで動作させることを可能としている。これにより、各アプリケーションの動作の安定性を向上させることができる。
【００９１】
さらに、本実施の形態にかかる複合機１００においては、カウントに関する制御を、マスタＶＭ３０１Ａが一括して行うため、カウントの整合を図ることができる。
【００９２】
その際、本実施の形態にかかる複合機１００においては、各ＶＭで入力データから更新すべきカウンタ（カウンタＩＤ、カウント幅）の割り出しまで行ったあと、スレーブＶＭからマスタＶＭにカウントの更新に必要な（データサイズが小さい）データだけ送信している。これにより、ＶＭ間で入出力されるデータ量を削減することができる。このように、処理の効率化を図ることで、処理負担を軽減することができるとともに、実行速度の低減を抑止できる。
【００９３】
（第１の実施の形態の変形例１）
上述した第１の実施の形態にかかる複合機１００においては、ＨＤＤ１５１の１個のカウンタテーブルだけで全てのカウントを保持している例について説明した。この場合、書き込み命令が一つ発効されただけで、カウンタテーブルが全てロックされるため、当該書き込みが終了するまで、他の書き込み命令による書き込みを行うことができない。しかしながら、複合機１００は、複数のアプリケーションを同時並行的に動作させることができるため、カウンタテーブル全てをロックさせるのは望ましくない場合も存在する。そこで、第１の実施の形態の変形例として、カウンタテーブルを種類別に分割した場合について説明する。なお、本実施の形態にかかる複合機は、ＨＤＤ１５１内に格納されたテーブル以外、第１の実施の形態の複合機１００と同様の構成を備えているものとして説明を省略する。
【００９４】
図１０は、本変形例にかかる複合機１００における、各仮想マシンで行われた処理に従って、カウントが行われる場合の処理の流れを示した説明図である。
【００９５】
図１０に示すように、ＨＤＤ１５１は、カウンタの種類毎に、カウンタＩＤ、及びカウント幅を書き込むべきカウンタテーブルを保持している。そして、データベース制御サービス１００１のロック制御部１００３は、書き込まれるカウンタＩＤに対応する種類のカウンタテーブルのみをロックする。
【００９６】
そして、図１０に示す例では、第１の実施の形態の図８と同様に、カウントの書き込み要求まで行われる。
【００９７】
その後、本変形例にかかるマスタＶＭ３０１Ａのデータベース制御サービス１００１の書込部１００２が、レコードデータ記憶領域１７２Ａに書き込まれたカウンタＩＤ、カウント幅を、当該カウンタを格納すべき種別のカウンタテーブルに書き込み又は更新する。その際、データベース制御サービス１００１のロック制御部１００３が、当該種別のカウンタテーブルを、他から書き込まれないようにロックする。当該種別のカウンタテーブルのみロックして、他の種別のカウンタテーブルについて書き込み、更新を可能とする。これにより、複数の処理を実行する際に、カウンタテーブルがロックされる確率を低減させ、カウンタの書き込み、更新処理を容易にする。
【００９８】
（第１の実施の形態の変形例２）
上述した第１の実施の形態にかかる複合機１００においては、スレーブＶＭからマスタＶＭに書き込み要求を行う際、カウンタ毎に書き込み要求を行っていた。この場合データ量が大きくなる可能性がある。そこで第１の実施の形態の変形例２では、書き込み要求を行う際に、カウント幅毎にカウントＩＤをまとめて書き込み要求を行う例について説明する。
【００９９】
図１１は、本変形例にかかる複合機１００における、各仮想マシンで行われた処理に従って、カウントが行われる場合の処理の流れを示した説明図である。
【０１００】
図１１に示すように、第１のスレーブＶＭ３０１Ｂから、マスタＶＭ３０１Ａにデータを送信する際に、ＩＰＣサービス１２４の出力部１８１が、カウント幅毎にカウンタＩＤをまとめて書き込み要求を行うこととした。当該処理を行うことで、出力されるデータ量が削減可能となり、処理負担を軽減することができる。
【０１０１】
（第２の実施の形態）
第１の実施の形態では、マスタＶＭ３０１Ａが一括してＨＤＤ１５１に書き込む例について説明した。しかしながら、ＨＤＤにデータを書き込むのをマスタＶＭのみに制限するものではない。そこで、第２の実施の形態では、各ＶＭがＨＤＤにデータを書き込む例について説明する。
【０１０２】
図１２は、第２の実施の形態にかかる複合機１１００の構成を示すブロック図である。本実施の形態にかかる複合機１１００は、上述した第１の実施の形態の複合機１００とは、仮想マシン制御部１０２とは処理が異なる仮想マシン制御部１１０１に変更され、サービス群１０４とは処理が異なるサービス群１１０２に変更された構成を有している点で異なる。以下の説明では、上述した第１の実施の形態と同一の構成要素には同一の符号を付してその説明を省略している。
【０１０３】
仮想マシン制御部１１０１は、マスタＯＳ１０１上で、複数の仮想マシンを動作させる制御を行う。本実施の形態にかかる仮想マシン制御部１１０１により動作した仮想マシンは、マスタ仮想マシンの他に、スレーブ仮想マシンもＨＤＤ１５１に対する読み書きを可能としている。
【０１０４】
サービス群１１０２は、仮想マシン上で動作するプログラム群で構成され、上述した第１の実施の形態のサービス群１０４とは、データベース制御サービス１２２とは処理が異なるデータベース制御サービス１１１１に変更され、レコード変換制御サービス１２１とは処理が異なるレコード変換制御サービス１１１２に変更された構成を有している点で異なる。
【０１０５】
データベース制御サービス１１１１は、ＨＤＤ１５１に格納されたデータベースに対して、アクセス制御を行う。第１の実施の形態のデータベース制御サービス１２２と異なる点としては、マスタＶＭのみならずスレーブＶＭについてもアクセス制御を可能とした点とする。例えば、レコード変換制御サービス１１１２の変換部１７１で変換された実行回数データが、当該スレーブＶＭしかカウントしない処理結果の場合、スレーブＶＭ上のデータベース制御サービス１１１１の書込部１６１は、当該スレーブＶＭから直接、ＨＤＤ１５１に対して、実行回数データを書き込む。つまり、当該スレーブＶＭ以外の仮想マシンもカウントする処理結果を示す、実行回数結果については、出力部１８１から出力される。
【０１０６】
レコード変換制御サービス１１１２は、仮想マシンごとに割り当てられたアプリケーションからの要求に従って、当該仮想マシンに応じたデータベースのアクセス制御を行う。第１の実施の形態においては、スレーブＶＭ上で書き込み要求があった場合に、レコード変換制御サービス１２１が、マスタＶＭに対して書き込み要求を行っていた。これに対し、第２の実施の形態にかかるレコード変換制御サービス１１１２は、スレーブＶＭ上で書き込み要求があった場合、データベース制御サービス１１１１を介して書き込み制御を行うか、マスタＶＭに対して書き込み要求を行うかを判定している。このために、本実施の形態においては、インストールなどの処理についても第１の実施の形態と異なる。
【０１０７】
次に、本実施の形態にかかる複合機１１００で行われる具体的な処理について説明する。図１３は、本実施の形態にかかる複合機１１００における、スレーブＶＭに対するアプリケーションのインストールを表した説明図である。図１３に示す例では、少なくともマスタＶＭ１２０１Ａと、第１のスレーブＶＭ１２０１Ｂと、が複合機１１００上で動作している。
【０１０８】
そして、マスタＶＭ１２０１Ａが備える各構成を、レコード変換制御サービス１１１２Ａ、レコードデータ記憶領域１７２Ａ、データベース制御サービス１１１１Ａとする。また、第１のスレーブＶＭ１２０１Ｂが備える各構成を、レコード変換制御サービス１１１２Ｂ、レコードデータ記憶領域１７２Ｂとする。
【０１０９】
図１３に示す例では、ＦＡＸアプリケーション１３３と、コピーアプリケーション１３１とが、第１のスレーブＶＭ１２０１Ｂに対してインストールされている。当該インストールに伴い、ＦＡＸアプリケーション１３３、及びコピーアプリケーション１３１から、レコード制御サービス１１１２Ｂに対して、ＦＡＸアプリケーションの処理をカウントするためのＦＡＸアプリ用カウンタデシジョンテーブル等と、コピーアプリケーションの処理をカウントするためのコピーアプリ用カウンタデシジョンテーブル等と、のインストールが開始される。また、インストールされる各カウンタデシジョンテーブルの各レコードには、アプリケーション専用であるか否かが宣言されている。
【０１１０】
その際、レコード変換制御サービス１１１２Ｂは、各アプリケーションからインストールが要求された各カウンタデシジョンテーブルを、レコードデータ記憶領域１７２Ｂにインストールする。その際、レコード変換制御サービス１１１２Ｂは、アプリケーション専用と宣言されたレコードを、第１のスレーブＶＭ１２０１Ｂ用のカウンタデシジョンテーブルとして、ＨＤＤ１５１の第１のスレーブＶＭ用カウンタ記憶領域に、データベース制御サービス１１１１Ｂを介して書き込む。なお、各アプリケーションに共通（換言すれば、複数の仮想ＶＭでカウントする）のレコードは、マスタＶＭ１２０１Ａが、データベース制御サービス１１１１Ａを介して、ＨＤＤ１５１の共通カウンタ記憶領域に書き込むものとする。
【０１１１】
図１４は、本実施の形態にかかる複合機１１００における、通常起動時に各仮想マシンで行う処理を示した説明図である。図１４に示す例では、すでに仮想マシン制御部１１０１が、マスタＶＭ１２０１Ａ、第１のスレーブＶＭ１２０１Ｂ、及び第２のスレーブＶＭ１２０１Ｃを起動しているものとする。
【０１１２】
まず、第１の実施の形態と同様に、マスタＶＭ１２０１Ａのレコード変換制御サービス１１１２Ａの読み出し要求に従って、カウンタデシジョンテーブルは、レコード変換制御サービス１１１２Ａにも出力される。その際、ＨＤＤ１５１から読み出されたカウンタデシジョンテーブルが、（図示しない）キャッシュに保持されている。
【０１１３】
一方、起動時に、第１のスレーブＶＭ１２０１Ｂのレコード変換制御サービス１１１２Ｂ、及び第２のスレーブＶＭ１２０１Ｃのレコード変換制御サービス１１１２Ｃは、各ＩＰＣサービス１２４を介して、マスタＶＭ１２０１Ａに対して、カウンタデシジョンテーブルの取得要求を行う。これにより、マスタＶＭ１２０１Ａのレコード変換制御サービス１１１２Ａが、上記の読み出し処理により（図示しない）キャッシュに格納されたカウンタデシジョンテーブルを、ＩＰＣサービス１２４を介して、第１のスレーブＶＭ１２０１Ｂ及び第２のスレーブＶＭ１２０１Ｃに受け渡す。
【０１１４】
一方、第１のスレーブＶＭ１２０１Ｂのように、スレーブＶＭ専用のカウンタ記憶領域がある場合、当該第１のスレーブＶＭ１２０１Ｂ内のレコード変換制御サービス１１１２Ｂは、レコードデータ記憶領域１７２Ｂから、第１のスレーブＶＭ１２０１Ｂ専用のカウンタデシジョンテーブルの読出要求を、レコードデータ記憶領域１７２Ｂに対して行う。当然ながら、起動時にはレコードデータ記憶領域１７２Ｂには、第１のスレーブＶＭ１２０１Ｂ専用のカウンタデシジョンテーブルが格納されていないため、データベース制御サービス１１１１Ｂが、ＨＤＤ１５１から、第１のスレーブＶＭ１２０１Ｂ専用のカウンタデシジョンテーブルを読み出して、一度レコードデータ記憶領域１７２Ｂに格納した後、レコード変換制御サービス１１２１Ｂに出力する。これにより、レコード変換制御サービス１１１２Ｂが、第１のスレーブＶＭ１２０１Ｂ専用のカウンタデシジョンテーブルを読み出すことができる。このように、本実施の形態では、各スレーブＶＭは、必ずマスタＶＭが保持する共通のカウンタデシジョンテーブルと、自ＶＭ専用のカウンタデシジョンテーブルとを読み出すこととする。これにより読み出されたカウンタデシジョンテーブルで、入力データを実行回数データに変換できる。なお、レコードデータ記憶領域１７２Ｃは、レコードデータ記憶領域１７２Ｂと同様に制御が行われるものとして、説明を省略する。
【０１１５】
次に各仮想マシンで行われた処理に従って、カウントが行われる場合について説明する。図１５は、各仮想マシンで行われた処理に従って、カウントが行われる場合の処理の流れを示した説明図である。
【０１１６】
図１５に示すように、マスタＶＭ１２０１Ａでは、当該仮想マシン上で行われた処理に従って、入力データと共にカウント要求１４０１が行われた場合、レコード変換制御サービス１１１２Ａが、当該カウント要求１４０１を受け付ける。そして、レコード変換制御サービス１１１２Ａが、カウンタデシジョンテーブルを用いて、入力データを実行回数データに変換する。
【０１１７】
そして、レコード変換制御サービス１１１２Ａが、レコードデータ記憶領域１７２Ａに対して、変換された実行回数データに含まれているカウンタＩＤ、カウント幅でカウントするよう書き込み要求１４０２を行う。その後、データベース制御サービス１１１１Ａが、レコードデータ記憶領域１７２Ａに書き込み要求が行われたカウンタＩＤ、カウント幅を用いて、ＨＤＤ１５１のカウンタテーブルに書き込み又は更新する。
【０１１８】
一方、第１のスレーブＶＭ１２０１Ｂにおいて、ＦＡＸアプリケーション１３３が、処理結果を含む入力データと共にカウント要求１４０３を行った場合、レコード変換制御サービス１１１２Ｂが、当該カウント要求１４０３を受け付ける。そして、レコード変換制御サービス１１１２Ｂが、カウンタデシジョンテーブルを用いて、入力データを実行回数データに変換する。
【０１１９】
そして、レコード変換制御サービス１１１２Ｂは、変換された実行回数データに含まれているカウンタＩＤ、カウント幅でカウントするよう書き込み要求１４０４を行う。その際、レコード変換制御サービス１１１２Ｂは、読み出された共通のカウンタデシジョンテーブルと、第１のスレーブＶＭ１２０１Ｂ専用のカウンタデシジョンテーブルと、から書き込み先のカウンタテーブルが存在する記憶領域を特定する。つまり、共通のカウンタデシジョンテーブルに存在したカウンタＩＤであれば、マスタＶＭ１２０１Ａに書き込み要求を行うカウンタＩＤであり、第１のスレーブＶＭ３０１Ｂ専用のカウンタデシジョンテーブルに存在したカウンタＩＤであれば、第１のスレーブＶＭ１２０１Ｂ内で書き込みを行うカウンタＩＤであると特定する。
【０１２０】
当該特定に従って、レコード変換制御サービス１１１２Ｂは、ＶＭに共通のカウンタＩＤ、及びカウント幅による第１の書き込み要求を行うと共に、第１のスレーブＶＭ１２０１Ｂ専用のカウンタＩＤ、及びカウント幅による第２の書き込み要求を行う。
【０１２１】
そして、第１のスレーブＶＭ１２０１ＢのＩＰＣサービス１２４の出力部１８１が、第１の書き込み要求に含まれているカウンタＩＤ、及びカウント幅を書き込むよう、マスタＶＭ１２０１Ａに要求する。これにより、データベース制御サービス１１１１Ａが、書き込み要求の対象であるカウンタＩＤ、カウント幅を、ＨＤＤ１５１のカウンタテーブルに書き込み又は更新する。一方、データベース制御サービス１１１１Ｂが、第２の書き込み要求に含まれているカウンタＩＤ、及びカウント幅を、ＨＤＤ１５１の第１のスレーブＶＭ専用カウンタ記憶領域に書き込む。
【０１２２】
本実施の形態にかかる複合機１１００では、第１の実施の形態にかかる複合機１００と同様の効果を得るほか、専用のカウンタについては各ＶＭ内で処理するため、ＶＭ間で入出力されるデータ量のさらなる削減を図ることができる。
【０１２３】
（第２の実施の形態の変形例１）
上述した第２の実施の形態においては、スレーブＶＭ専用のカウンタＩＤであるか否かに応じて、カウンタテーブルの格納領域をスレーブ専用と共通とを分けた例について説明した。しかしながら、スレーブＶＭの処理結果のカウンタを共通であるか否かに拘わらず、スレーブ用のカウンタテーブルで一括管理してもよい。そこで第２の実施の形態の変形例として、ＶＭ間でデータの入出力を行わず、ＶＭ毎にカウンタテーブルを備えている例について説明する。
【０１２４】
図１６は、本変形例にかかる複合機において、各仮想マシンで行われた処理に従って、カウントが行われる場合の処理の流れを示した説明図である。
【０１２５】
図１６に示すように、マスタＶＭ１５０１Ａと第１のスレーブＶＭ１５０１Ｂとが動作している例について説明する。そして、マスタＶＭ１５０１Ａは、レコード変換制御サービス１５１１Ａと、レコードデータ記憶領域１５１２Ａと、データベース制御サービス１５１３Ａとを備え、ＨＤＤ１５２１に対してアクセス制御を行う。また、第１のスレーブＶＭ１５０１Ｂは、レコード変換制御サービス１５１１Ｂと、レコードデータ記憶領域１５１２Ｂと、データベース制御サービス１５１３Ｂとを備え、ＨＤＤ１５２１に対してアクセス制御を行う。
【０１２６】
そして、マスタＶＭ１５０１Ａでは、レコード変換制御サービス１５１１Ａがカウント要求を受け付けた場合に、データベース制御サービス１５１３Ａを介して、ＨＤＤ１５２１の共通カウンタ記憶領域内のカウンタテーブルに書き込み、更新処理を行う。
【０１２７】
これに対し、第１のスレーブＶＭ１５０１Ｂでは、レコード変換制御サービス１５１１Ｂがカウント要求を受け付けた場合に、データベース制御サービス１５１３Ｂを介して、ＨＤＤ１５２１の第１のスレーブＶＭカウンタ記憶領域内のカウンタテーブルに書き込み、更新処理を行う。
【０１２８】
その後、複合機１５００は、ＨＤＤ１５２１内の、第１のスレーブＶＭカウンタ記憶領域内のカウンタテーブルを、共通カウンタ記憶領域内のカウンタテーブルに移動させる。これにより、一つのカウンタテーブルでカウンタを一括管理できる。なお、本変形例では、カウンタの記憶領域が分散しているため、カウンタの整合性をとれるように注意して処理を行う必要がある。当該変形例については、ＶＭ間でデータの入出力がないため、さらなる処理負担の軽減を図ることができる。
【０１２９】
（第３の実施の形態）
第１の実施の形態では、必ず実行回数データに変換してからスレーブＶＭからマスタＶＭにデータを出力していた。しかしながら、入力データのデータ量によっては、変換せずにスレーブＶＭからマスタＶＭに出力した方が良い場合もある。そこで、第３の実施の形態では、データ量に応じて出力するデータを、入力データと実行回数データとに切り替える例について説明する。
【０１３０】
図１７は、本実施の形態にかかる複合機１６００において、各仮想マシンで行われた処理に従って、カウントが行われる場合の処理の流れを示した説明図である。なお、本実施の形態にかかる複合機１６００においては、カウントに関するインストールと、起動時に実行する処理については第１の実施の形態と同様として、説明を省略する。
【０１３１】
図１７に示すように、複合機１６００上で、マスタＶＭ１６０１Ａと、第１のスレーブＶＭ１６０１Ｂと、第２のスレーブＶＭ１６０１Ｃと、が動作している例について説明する。
【０１３２】
そして、マスタＶＭ１６０１Ａは、第１の実施の形態と異なる構成として、レコード変換制御サービス１６１１Ａを備えている。また、第１のスレーブＶＭ１６０１Ｂは、第１の実施の形態と異なる構成として、レコード変換制御サービス１６１１Ｂを備えている。また、第２のスレーブＶＭ１６０１Ｃは、第１の実施の形態と異なる構成として、レコード変換制御サービス１６１１Ｃを備えている。
【０１３３】
そして、第１のスレーブＶＭ１６０１Ｂは、判定部１６２１Ｂと、変換部１６２２Ｂと、を備えている。また、第２のスレーブＶＭ１６０１Ｃは、判定部１６２１Ｃと、変換部１６２２Ｃと、を備えている。
【０１３４】
そして、判定部１６２１Ｂ、及び判定部１６２１Ｃは、入力データを、当該マスタＶＭ１６０１Ａ内又はスレーブＶＭ内のいずれかで変換するかを判定する。具体的には、判定部１６２１Ｂ、及び判定部１６２１Ｃは、今回入力された入力データと、前回の実行回数データと、のうち、どちらのデータ量が小さいかを判定する。そして、判定部（１６２１Ｂ、１６２１Ｃ）は、入力データのデータ量が小さい場合に、当該入力データをマスタＶＭ１６０１Ａで変換するよう、マスタＶＭ１６０１Ａに出力部（１８１Ｂ、１８１Ｃ）が出力すると判定する。一方、判定部（１６２１Ｂ、１６２１Ｃ）は、実行回数データのデータ量が小さい場合に、スレーブＶＭで変換された実行回数データを出力部（１８１Ｂ、１８１Ｃ）が出力すると判定する。
【０１３５】
図１８は、第２のスレーブＶＭ１６０１Ｃの判定部１６２１Ｃによる判定手法を示した概念図である。図１８に示す例では、判定部１６２１Ｃは、前回の実行回数データに基づいて、今回の入力データをマスタＶＭ１６０１Ａで変換するか否かを判定している。
【０１３６】
本実施の形態にかかる判定部１６２１Ｃは、図１９に示すように、今回の入力データに含まれているデータ数に、１データ辺りの代表的なデータ量を乗じたデータ量と、前回の実行回数データに含まれているカウンタの数（Ｘ）に、１カウンタ辺りの平均データ量を乗じたデータ量を、比較して、データ量の小さい方をＶＭ間で入出力するよう、どちらのＶＭで処理を行うべきか判定している。なお、Ｘ以外のパラメータを固定値としても良い。これは、各パラメータを固定値とすることで算出の処理負担を小さくするためである。
【０１３７】
図１８に戻り、今回の入力データのデータ数が７個であり、代表的なデータ量が２０Ｂｙｔｅで、前回の実行回数データのカウント数（Ｘ）が２０であり、平均データ量が８Ｂｙｔｅの場合、判定部１６２１Ｃは、７＊２０＜２０＊８から、マスタＶＭで変換を行うことに決定する。
【０１３８】
つまり、本実施の形態にかかる複合機１６００では、ページ単位でカウント処理を行うため、今回と前回とでは、同等のカウンタ処理が行われる可能性が高い。換言すると、今回の入力データを変換すると、前回の実行回数データと同等のデータ量になるものと考えられる。そこで、本実施の形態にかかる判定部１６２１は、今回の入力データのデータ量と、前回の実行回数データのデータ量とを比較することした。
【０１３９】
そして、今回の入力データのデータ量の方が小さい場合には、入力データを出力し、マスタＶＭ１６０１Ａの変換部１６２２Ａで変換処理を行う。一方、前回の実行回数データのデータ量の方が小さい場合には、第２のスレーブＶＭ１６０１Ｃの変換部１６２２Ｃで変換処理を行った後、実行回数データを出力する。このように処理を行うことで、入力データと実行回数データのうち、データ量が小さい方がＶＭ間で入出力されるため、処理負担を軽減することができる。
【０１４０】
なお、本実施の形態では、前回の実行回数データに含まれているカウンタの数（Ｘ）を変数としたが、予め定められた固定値としても良い。
【０１４１】
（第４の実施の形態）
上述した実施の形態では、ＨＤＤにカウンタテーブルを格納する場合について説明した。しかしながら、カウンタテーブルの格納先をＨＤＤに制限するものではなく、例えばフラッシュメモリに格納しても良い。そこで第４の実施の形態では、ＮＡＮＤフラッシュメモリにカウンタテーブルを格納する例について説明する。
【０１４２】
図２０は、第４の実施の形態にかかる複合機２０００の構成を示すブロック図である。複合機２０００は、上述した第１の実施の形態にかかる複合機１００とは、ＨＤＤ１５１が削除されていること、ＮＡＮＤフラッシュメモリ２００１とＮＶＲＡＭ２００２が追加されていること、そしてサービス群１０４とは処理が異なるサービス群２００３に変更された構成を有している点で異なる。以下の説明では、上述した第１の実施の形態と同一の構成要素には同一の符号を付してその説明を省略している。なお、ＶＭ等による処理は、上述した実施の形態で行われている処理と同様として説明を省略する。
【０１４３】
本実施の形態にかかる複合機２０００においては、書き込み回数の制限あるＮＡＮＤフラッシュメモリ２００１と、書き込み回数の制限数の多いＮＶＲＡＭ２００２と、を組み合わせることで、更新が多いカウント数を、書き込み回数の制限があるＮＡＮＤフラッシュメモリ２００１で保持することを可能としている。
【０１４４】
上述した実施の形態では、ＨＤＤを搭載している例について説明したが、低価格帯の複合機では、ＨＤＤを搭載していない場合もある。このような場合、複合機に搭載されたＮＶＲＡＭでカウンタテーブルを保持する必要がある。しかしながら、近年、複合機に登録できるユーザ数や、ユーザごとにカウントする項目が増加しており、書き込み回数が多いが高価なＮＶＲＡＭでこれらの情報を管理することが困難になっている。
【０１４５】
そこで、本実施の形態にかかる複合機２０００では、ＮＡＮＤフラッシュメモリ２００１と、ＮＶＲＡＭ２００２と、を組み合わせることとした。
【０１４６】
ＮＡＮＤフラッシュメモリ２００１は、ユーザ別カウンタテーブルを全て保持するメモリとする。なお、本実施の形態にかかる複合機２０００では、カウンタテーブルにおいて、ユーザ別にカウントを管理しているものとする。
【０１４７】
ＮＶＲＡＭ２００２は、ＮＡＮＤフラッシュメモリ２００１上に永続化したカウンタテーブルから、ユーザ別カウンタの一部を展開するための作業領域となる。そして、データベース制御サービス２０１１は、ＮＶＲＡＭ２００２上に展開されたカウンタに対して、読み出し、書き込み等を行う。
【０１４８】
図２１は、ＮＡＮＤフラッシュメモリ２００１と、ＮＶＲＡＭ２００２と、の関係を示した概念図である。図２１に示すように、ＮＡＮＤフラッシュメモリ２００１に格納されたユーザ別カウンタを、ＮＶＲＡＭ２００２に読み出される。そして、ＮＶＲＡＭ２００２に対してカウンタの更新等が行われる。最後に、データベース制御サービス２０１１が、ＮＶＲＡＭ２００２で行われた更新内容を、ＮＡＮＤフラッシュメモリ２００１に反映させる。
【０１４９】
そして、データベース制御サービス２０１１は、書込部２０２１と、読出部２０２２と、ロック制御部１６３と、を備え、ＮＶＲＡＭ２００２、及びＮＡＮＤフラッシュメモリ２００１に対するアクセス制御を行う。また、本実施の形態にかかるデータベース制御サービス２０１１では、書き込み回数制限のあるＮＶＲＡＭ２００２に記録するタイミングを、ユーザ別カウンタに特化している。
【０１５０】
読出部２０２２は、ＮＡＮＤフラッシュメモリ２００１からＮＶＲＡＭ２００２へのユーザ別カウンタの読み出しを行う。また、読出部２０２２は、ＮＶＲＡＭ２００２から、ユーザ別カウンタの読み出しも行う。
【０１５１】
書込部２０２１は、ＮＶＲＡＭ２００２に対する、ユーザ別カウンタの書き込み、更新を行う。また、書込部２０２１は、ＮＶＲＡＭ２００２から読み出されたユーザ別カウンタを、ＮＡＮＤフラッシュメモリ２００１に書き込み、更新を行う。
【０１５２】
なお、書込部２０２１は、ＮＶＲＡＭ２００２から読み出されたユーザ別カウンタの、ＮＡＮＤフラッシュメモリ２００１への書き込みは、カウントアップ毎に行うのではなく、複数のカウント分まとめて行うものとする。これにより、書き込み回数を削減することが可能となる。
【０１５３】
次に、本実施の形態にかかる複合機２０００における、処理に基づくカウントの更新からカウントの閲覧処理について説明する。図２２は、本実施の形態にかかる複合機２０００における上述した処理の手順を示すシーケンス図である。なお、本シーケンスでは、複数枚ページのコピーをまとめて処理する例であるが、例えば１又は複数枚のＦＡＸ印刷や、記憶媒体に格納された１又は複数枚の画像データの出力する例にも適用できる。
【０１５４】
本シーケンスでは、複数枚の記録用紙を複写する場合のカウント更新処理について説明する。さらに、複合機２０００上において、プリンタアプリケーション１３２が動作しているＶＭ上の処理とする。また、図２２に示す例では、すでにユーザＡのログイン処理は終了しているものとする。
【０１５５】
まず、プロッタ１５５が、記録紙の読み取り処理を終了させた後、データベース制御サービス２０１１に対して、ユーザＡが要求したページの入力が完了したことを通知する（ステップＳ２２０１）。
【０１５６】
当該通知を受けて、データベース制御サービス２０１１は、ＮＶＲＡＭ２００２にユーザＡのカウンタが展開されているか否か確認する（ステップＳ２２０２）。本シーケンスでは、カウンタが展開されていない場合について説明する。カウンタが展開されている場合には、Ｓ２２０９の処理から行われる。
【０１５７】
その後、データベース制御サービス２０１１は、ＮＶＲＡＭ２００２にユーザＡのカウンタを展開するための領域があるか否かを確認する（ステップＳ２２０３）。本シーケンスでは、領域がない場合について説明する。
【０１５８】
そして、データベース制御サービス２０１１が、ＮＶＲＡＭ２００２に展開するための領域がないと判定した場合、読出部２０２２が、ＮＶＲＡＭ２００２に既に展開されている全ユーザのカウンタを読み出す（ステップＳ２２０４）。その後、データベース制御サービス２０１１の書込部２０２１が、読み取った全ユーザのカウントを、ＮＡＮＤフラッシュメモリ２００１に記録する（ステップＳ２２０５）。
【０１５９】
その後、データベース制御サービス２０１１が、ＮＶＲＡＭ２００２に格納されていたユーザのカウンタを消去して、ユーザＡのカウントを展開する領域を確保する（ステップＳ２２０６）。
【０１６０】
次に、読出部２０２２が、ＮＡＮＤフラッシュメモリ２００１から、ユーザＡのカウンタを読み出す（ステップＳ２２０７）。その後、書込部２０２１が、読み出したユーザＡのカウントを、ＮＶＲＡＭ２００２に書き込む（ステップＳ２２０８）。
【０１６１】
その後、書込部２０２１が、入力完了したページに関するカウントアップ更新を、ＮＶＲＡＭ２００２のユーザＡのカウンタに対して行う（ステップＳ２２０９）。なお、カウントアップの対象となるカウンタＩＤ及びカウント幅の特定は、第１の実施の形態と同様の処理を行うものとして説明を省略する。
【０１６２】
次に、スキャナ１５４が、記録紙に対する印刷処理を終了させた後、データベース制御サービス２０１１に対して、ページの出力が完了したことを通知する（ステップＳ２２１０）。
【０１６３】
当該通知を受けて、データベース制御サービス２０１１は、ＮＶＲＡＭ２００２にユーザＡのカウンタが展開されているか否か確認する（ステップＳ２２１１）。本シーケンスでは、データベース制御サービス２０１１は、ステップＳ２２０２〜Ｓ２２０８の処理により、カウンタが展開されていると判別できる。
【０１６４】
そこで、書込部２０２１が、出力完了したページに関するカウントアップ更新を、ＮＶＲＡＭ２００２のユーザＡのカウンタに対して行う（ステップＳ２２１２）。
【０１６５】
複合機２０００では、このステップＳ２２０１〜Ｓ２２１２までの処理を、２ページ目以降についても行う（ステップＳ２２１３）。
【０１６６】
そして、ユーザインタフェース１２３が、データベース制御サービス２０１１に対してカウンタの閲覧要求を行う（ステップＳ２２１４）。その際、データベース制御サービス２０１１の読出部２０２２は、ＮＶＲＡＭ２００２上の全ユーザのカウンタを読み出す（ステップＳ２２１５）。その後、書込部２０２１が、読み出した全ユーザのカウンタを、ＮＡＮＤフラッシュメモリ２００１に書き込む（ステップＳ２２１６）。
【０１６７】
その後、データベース制御サービス２０１１が、ＮＶＲＡＭ２００２のカウンタを消去する（ステップＳ２２１７）。そして、読出部２０２２が、ＮＡＮＤフラッシュメモリ２００１から、ユーザのカウンタを読み出す（ステップＳ２２１８）。そして、データベース制御サービス２０１１が、ユーザインタフェース１２３に対して、読み出したユーザのカウントを出力する（ステップＳ２２１９）。
【０１６８】
上述した処理手順により、複合機２０００では、処理に応じたカウント制御を行うと共に、カウンタの閲覧を行うことができる。
【０１６９】
次に、本実施の形態にかかる複合機２０００におけるカウントアップ更新時の処理について説明する。図２３は、本実施の形態にかかる複合機２０００における上述した処理の手順を示すフローチャートである。なお、本フローチャートは図２２のステップＳ２２０２からＳ２２０９までの処理に相当する。
【０１７０】
まず、データベース制御サービス２０１１が、ＮＶＲＡＭ２００２に、更新対象となるユーザのカウンタが展開されているか否かを判定する（ステップＳ２３０１）。そして、データベース制御サービス２０１１が、カウンタが展開されていると判定した場合（ステップＳ２３０１：Ｙｅｓ）、ステップＳ２３０６に進む。
【０１７１】
一方、データベース制御サービス２０１１が、カウンタが展開されていないと判定した場合（ステップＳ２３０１：Ｎｏ）、データベース制御サービス２０１１が、ＮＶＲＡＭ２００２上に、ユーザのカウンタを展開するための空き領域が存在するか否かを判定する（ステップＳ２３０２）。存在すると判定した場合（ステップＳ２３０２：Ｙｅｓ）、ステップＳ２３０５の処理に進む。
【０１７２】
一方、データベース制御サービス２０１１が、空き領域が存在しないと判定した場合（ステップＳ２３０２：Ｎｏ）、読出部２０２２がＮＶＲＡＭ２００２上に展開されているカウンタを読み込んだ後、書込部２０２１が、読み込んだカウンタを全てＮＡＮＤフラッシュメモリ２００１上に書き込む（ステップＳ２３０３）。その後、データベース制御サービス２０１１が、ＮＶＲＡＭ２００２上のカウンタを消去する（ステップＳ２３０４）。
【０１７３】
その後、読出部２０２２が、ＮＡＮＤフラッシュメモリ２００１から更新対象となるユーザのカウンタを読み出した後、書込部２０２１が、読み出したカウンタをＮＶＲＡＭ２００２上に書き込むことで、カウンタの展開を行う（ステップＳ２３０５）。
【０１７４】
その後、書込部２０２１が、ＮＶＲＡＭ２００２上に展開された更新対象とユーザのカウントをカウントアップさせる更新をする（ステップＳ２３０６）。
【０１７５】
上述した処理手順により、ユーザのカウンタの更新が行われる。本実施の形態にかかる複合機２０００では、上述した構成を備え、ユーザ別のカウンタテーブルをＮＡＮＤフラッシュメモリ２００１に格納するとともに、ユーザ別のカウンタテーブルカウンタを上述した更新タイミングで更新することで、より書き込み回数を減らし、ＮＡＮＤフラッシュメモリ２００１の寿命を延ばすことができる。
【０１７６】
このように、本実施の形態にかかる複合機２０００においては、書き込み可能な回数の多い記憶媒体と、書き込み可能な回数の少ない記憶媒体を併用することで、書き込み可能な回数の少ない記憶媒体の寿命を延ばすことができる。
【０１７７】
（第４の実施の形態の変形例）
また、ＮＡＮＤフラッシュメモリ２００１とＮＶＲＡＭ２００２とを組み合わせた複合機２０００において、各メモリの更新タイミングは、第４の実施の形態に限定されるものではない。そこで、第４の実施の形態と、更新のタイミングが異なる第４の実施の形態の変形例について説明する。
【０１７８】
本変形例にかかる複合機２０００では、ＮＶＲＡＭ２００２上に、同時にログインできる最大ユーザ数のカウンタ分の空き領域を予めＮＶＲＡＭ２００２上に確保する。
【０１７９】
そして、スキャナ１５４から、ページの読み込み完了の通知を受け付けた場合に、データベース制御サービス２０１１が、当該ユーザのカウントがＮＶＲＡＭ２００２上に展開されているか否か判定する。そして、展開されていない場合に、第４の実施の形態と同様にに、ＮＡＮＤフラッシュメモリ２００１に格納されていたユーザのカウンタを読み込んで、ＮＶＲＡＭ２００２上に展開する。
【０１８０】
そして、プロッタ１５５からページの出力が完了した通知を受け付けた場合も、ユーザのカウンタが展開されているか否かの判定から行う。以降の処理については、上述した処理と同様として説明を省略する。
【０１８１】
そして、データベース制御サービス２０１１は、ユーザインタフェース１２３から、ログアウト通知を受け付けると、読出部２０２２が、ＮＶＲＡＭ２００２上のログアウトしたユーザのカウンタを全件読み出した後、書込部２０２１が、ＮＡＮＤフラッシュメモリ２００１上に、読み出したカウンタ全件を書き戻す。その後、データベース制御サービス２０１１が、ＮＶＲＡＭ２００２上からログアウトしたユーザのカウンタを消去し、ＮＡＮＤフラッシュメモリ２００１上に記録したカウンタ値を、ユーザインタフェース１２３に出力する。
【０１８２】
本変形例にかかる複合機２０００においては、上述した処理を行うことで、第４の実施の形態と同様の効果を得ることができる。
【０１８３】
図２４は、第１〜４の実施の形態及び変形例にかかる複合機のハードウェア構成を示すブロック図である。本図に示すように、これら複合機１００、１１００、１５００、１６００、及び２０００は、コントローラ１０とエンジン部（Ｅｎｇｉｎｅ）６０とをＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｆａｃｅ）バスで接続した構成となる。コントローラ１０は、複合機１００、１１００、１５００、１６００、及び２０００全体の制御と描画、通信、図示しない操作部からの入力を制御するコントローラである。エンジン部６０は、ＰＣＩバスに接続可能なプリンタエンジンなどであり、たとえば白黒プロッタ、１ドラムカラープロッタ、４ドラムカラープロッタ、スキャナまたはファックスユニットなどである。なお、このエンジン部６０には、プロッタなどのいわゆるエンジン部分に加えて、誤差拡散やガンマ変換などの画像処理部分が含まれる。
【０１８４】
コントローラ１０は、ＣＰＵ１１と、ノースブリッジ（ＮＢ）１３と、システムメモリ（ＭＥＭ−Ｐ）１２と、サウスブリッジ（ＳＢ）１４と、ローカルメモリ（ＭＥＭ−Ｃ）１７と、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１６と、ハードディスクドライブ（ＨＤＤ）１８とを有し、ノースブリッジ（ＮＢ）１３とＡＳＩＣ１６との間をＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）バス１５で接続した構成となる。また、ＭＥＭ−Ｐ１２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２ａと、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ)１２ｂと、をさらに有する。
【０１８５】
ＣＰＵ１１は、複合機１００、１１００、１５００、１６００、及び２０００の全体制御をおこなうものであり、ＮＢ１３、ＭＥＭ−Ｐ１２およびＳＢ１４からなるチップセットを有し、このチップセットを介して他の機器と接続される。
【０１８６】
ＮＢ１３は、ＣＰＵ１１とＭＥＭ−Ｐ１２、ＳＢ１４、ＡＧＰ１５とを接続するためのブリッジであり、ＭＥＭ−Ｐ１２に対する読み書きなどを制御するメモリコントローラと、ＰＣＩマスタおよびＡＧＰターゲットとを有する。
【０１８７】
ＭＥＭ−Ｐ１２は、プログラムやデータの格納用メモリ、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いるシステムメモリであり、ＲＯＭ１２ａとＲＡＭ１２ｂとからなる。ＲＯＭ１２ａは、プログラムやデータの格納用メモリとして用いる読み出し専用のメモリであり、ＲＡＭ１２ｂは、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いる書き込みおよび読み出し可能なメモリである。
【０１８８】
ＳＢ１４は、ＮＢ１３とＰＣＩデバイス、周辺デバイスとを接続するためのブリッジである。このＳＢ１４は、ＰＣＩバスを介してＮＢ１３と接続されており、このＰＣＩバスには、ネットワークインターフェース（Ｉ／Ｆ）部なども接続される。
【０１８９】
ＡＳＩＣ１６は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）であり、ＡＧＰ１５、ＰＣＩバス、ＨＤＤ１８およびＭＥＭ−Ｃ１７をそれぞれ接続するブリッジの役割を有する。このＡＳＩＣ１６は、ＰＣＩターゲットおよびＡＧＰマスタと、ＡＳＩＣ１６の中核をなすアービタ（ＡＲＢ）と、ＭＥＭ−Ｃ１７を制御するメモリコントローラと、ハードウェアロジックなどにより画像データの回転などをおこなう複数のＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）と、エンジン部６０との間でＰＣＩバスを介したデータ転送をおこなうＰＣＩユニットとからなる。このＡＳＩＣ１６には、ＰＣＩバスを介してＦＣＵ（Ｆａｃｓｉｍｉｌｅ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）３０、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）４０、ＩＥＥＥ１３９４（ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ  １３９４）インターフェース５０が接続される。操作表示部２０はＡＳＩＣ１６に直接接続されている。
【０１９０】
ＭＥＭ−Ｃ１７は、コピー用画像バッファ、符号バッファとして用いるローカルメモリであり、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１８は、画像データの蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積を行うためのストレージである。
【０１９１】
ＡＧＰ１５は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレーターカード用のバスインターフェースであり、ＭＥＭ−Ｐ１２に高スループットで直接アクセスすることにより、グラフィックスアクセラレーターカードを高速にするものである。
【０１９２】
また、上述した実施の形態及び変形例はそれぞれの特徴的構成を組み合わせた実施形態を実現しても良い。例えば、第２の実施の形態〜第４の実施の形態においても、第１の実施の形態の変形例のように処理の種類毎にカウンタテーブルを保持するよう構成しても良い。
【符号の説明】
【０１９３】
１００、１１００、１５００、１６００、２０００   複合機
１０１ メインＯＳ
１０２、１１０１     仮想マシン制御部
１０３ 共通メカニズム
１０４、１１０２     サービス群
１０５ アプリケーション群
１１１ プラグイン管理部
１１２ 履歴制御部
１２１、１１１２、１５１１、１６１１      レコード変換制御サービス
１２２、１００１、１１１１、１５１３、２０１１   データベース制御サービス
１２３ ユーザインタフェース
１２４ ＩＰＣサービス
１３１ コピーアプリケーション
１３２ プリンタアプリケーション
１３３ ＦＡＸアプリケーション
１３４ ユーザアプリケーション
１３５ ジョブコントローラ
１５１ ＨＤＤ
１５２ タッチパネル
１５３ 電話回線Ｉ／Ｆ
１５４ スキャナ
１５５ プロッタ
１５６ その他ハードウェアリソース
１６１、１００２、２０２１  書込部
１６２、２０２２     読出部
１６３、１００３     ロック制御部
１７１、１６２２     変換部
１７２、１５１２     レコードデータ記憶領域
１８１ 出力部
３０１Ａ、１２０１Ａ、１５０１Ａ、１６０１Ａ     マスタＶＭ
３０１Ｂ、１２０１Ｂ、１５０１Ｂ、１６０１Ｂ     第１のスレーブＶＭ
３０１Ｃ、１２０１Ｃ、１６０１Ｃ   第２のスレーブＶＭ
１６２１      判定部
２００１      ＮＡＮＤフラッシュメモリ
２００３      サービス群
【先行技術文献】
【特許文献】
【０１９４】
【特許文献１】特開２００５−２２９５９２号公報
【図１】
0005407783.tif 000002
【図２】
0005407783.tif 000003
【図３】
0005407783.tif 000004
【図４】
0005407783.tif 000005
【図５】
0005407783.tif 000006
【図６】
0005407783.tif 000007
【図７】
0005407783.tif 000008
【図８】
0005407783.tif 000009
【図９】
0005407783.tif 000010
【図１０】
0005407783.tif 000011
【図１１】
0005407783.tif 000012
【図１２】
0005407783.tif 000013
【図１３】
0005407783.tif 000014
【図１４】
0005407783.tif 000015
【図１５】
0005407783.tif 000016
【図１６】
0005407783.tif 000017
【図１７】
0005407783.tif 000018
【図１８】
0005407783.tif 000019
【図１９】
0005407783.tif 000020
【図２０】
0005407783.tif 000021
【図２１】
0005407783.tif 000022
【図２２】
0005407783.tif 000023
【図２３】
0005407783.tif 000024
【図２４】
0005407783.tif 000025