以下、本発明の実施形態を図面を参照して説明する。
(第1の実施形態)
図1は、本発明の情報処理装置の第1の実施形態である画像形成装置を備えるネットワークシステムの構成例を示すブロック図である。
図1に示すように、LAN等のネットワーク401には、本実施形態の画像形成装置402、検索サーバ403、及びユーザPC404〜406が互いに通信可能に接続されている。
画像形成装置402は、ファイルサーバの機能を有し、検索サーバ403及びユーザPC404,405は、検索のためのインデックス作成機能を有する。そのため、ファイルサーバ機能を持つ画像形成装置402に対して、検索サーバ403及びPC404、405からインデックス作成のためのアクセスを行うことがが可能である。
図2は、本実施形態の画像形成装置402の構成例を説明するためのブロック図である。
図2に示すように、画像形成装置402のコントローラユニット100には、操作部106、スキャナ108及びプリンタ109が接続される。
コントローラユニット100は、システムバス111に、CPU101、RAM102、ROM103、HDD104、操作部I/F105、デバイスI/F107、ネットワークI/F110が接続される。
CPU101は、システムバス111に接続された各ユニットを統括的に制御する。RAM102は、CPU101が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリである。また、RAM102には、オペレーティングシステムやシステムソフトウェア、アプリケーショソフトウェアなどのプログラムも格納される。
ROM103は、システムのブートプログラムが格納される。また、ROM103には、システムプログラムやアプリケーションプログラムが格納されたり、フォントなどの画像形成装置402に必要な情報が格納される場合もある。
HDD104は、オペレーティングシステム、システムソフトウェア、アプリケーションソフトウェア、画像データ等を格納する。RAM102に格納されたプログラムは、CPU101によって実行され、RAM102、ROM103及びHDD104に格納された画像データやその以外のデータを処理する。なお、ソフトウェアや画像データをHDD104に代えて、ROM103やSSD(Solid State Disk)等に格納するようにしてもよい。
操作部I/F105には、操作部106が接続される。操作部106には、画像形成装置402の状態を表示するタッチパネルなどの表示装置や、画像形成装置402に指示を与えるための操作ボタンなどが配置される。
デバイスI/F107には、画像データの入出力デバイスであるスキャナ108やプリンタ109が接続される。スキャナ108からデバイスI/F107を介して入力された画像データは、RAM102やHDD104に格納され、格納された画像データは、必要に応じてRAM102に格納されたアプリケーションプログラムにより画像処理等が実行される。画像処理等が施された画像データは、デバイスI/F107を介してプリンタ109へ出力される。
ネットワークI/F110には、LAN等のネットワーク401が接続され、画像データ、あるいは画像形成装置402を制御する情報の入出力を行う。
なお、FAX機能を持つ画像形成装置の場合には、不図示のモデムI/Fを介して公衆回線と接続して、FAX伝送を可能としてもよい。また、例えば、フラッシュメモリカードなどに格納されたデータを読み出してプリントすることを可能とするために、不図示のUSBI/Fを具備してもよい。
図3は、本実施形態の画像形成装置402におけるデータアクセス処理部の構成例を説明するためのブロック図である。図3において各ブロックはソフトウェアであり、図3におけるデータとは、画像データ或いは画像形成装置402がファイルサーバとして機能するときに格納されるデータをいう。
図3において、アプリケーション201及びデータアクセス処理部200は、HDD104又はROM103に格納される。アプリケーション201及びデータアクセス処理部200は、RAM102にロードされて、CPU101により実行されるプログラムモジュールである。
ここで、アプリケーション201とは、画像形成装置402の機能を実行するものである。アプリケーション201には、例えば、外部PCなどから送信されたデータをプリンタ109で印刷するプリント機能のアプリケーション、スキャナ108で読み取ったデータを複写するコピー機能のアプリケーション等、機能毎に様々なアプリケーションがある。
アプリケーション201は、データアクセスが必要になった場合には、データアクセス処理部200を呼び出す。
データアクセス処理部200は、アプリケーション201から要求されたデータの所在を確認して、物理データ格納部209からデータを読み出したり、あるいはデータを書込んだりする。また、データアクセス処理部200は、データの読書きだけでなく、データの属性取得なども行う。
図3において、物理データ格納部209は、一つしか記載していないが、アプリケーション201から要求されたデータの所在によって、複数の物理データ格納部209を切り替えられる。物理データ格納部209は、例えば、データを自身の画像形成装置に保存したい場合は、HDD104が対象となるが、ネットワーク401に接続された外部装置にデータを保存したい場合は、ネットワークI/F110を介した外部装置が対象なる。
負荷状況管理部208は、画像形成装置の負荷状況を管理する。本実施形態では負荷状況は負荷の状況を示す値で示されるものとする。本実施形態における画像形成装置の負荷の具体例としては、次に示すものとする。例えばプログラムを実行することによるCPU101に対する負荷、或いはディスクアクセスによるHDD104に対する負荷、或いは、LAN401とのデータの送受信によるネットワークI/F110に対する負荷の何れか1つ、或いは複数を示すものとする。
アプリケーション201が処理を行っているときは、アプリケーション201から負荷状況管理部208に負荷の追加が通知され、負荷状況管理部208での負荷状況が高くなる。アプリケーションの種類にかかわらず、アプリケーション201から負荷追加の通知あるごとに、負荷状況管理部208での負荷状況は高くなる。アプリケーション201の処理が終了すると、アプリケーション201から負荷状況管理部208に負荷削除の通知がされ、負荷状況管理部208での負荷状況は低くなる。
具体的な例を挙げて説明する。まず、アプリケーション201が処理を行うときに、負荷状況管理部208での負荷状況の値を+1、アプリケーション201が処理を終了したときに、負荷状況管理部208での負荷状況の値を−1する。
アプリケーション201が処理を行っていない状態で、アプリケーションAが処理を開始すると、アプリケーション201は、負荷状況管理部208に負荷追加を通知して、負荷状況管理部208での負荷状況の値が+1となる。また、アプリケーションBが処理を開始すると、アプリケーション201は、負荷状況管理部208に負荷追加を通知して、負荷状況管理部208での負荷状況の値が+2となる。
その後、アプリケーションAが処理を終了すると、アプリケーション201は、負荷状況管理部208に負荷削除を通知して、負荷状況管理部208での負荷状況の値が+1となる。このように、アプリケーション201で同時に実行されるアプリケーションが多い場合には、負荷状況管理部208での負荷状況の値が高くなる。なお、上記の例では、全てのアプリケーションで同じ値を用いて負荷状況管理部208での負荷状況を変化させたが、より詳細に重み付けを行うようにしてもよい。
例えば、負荷状況の追加/削除される値は、アプリケーション201毎に大小を決めてもよいし、あるいは、アプリケーション201の内部処理単位で大小を決めてもよい。例えば、プリント処理のアプリケーションは、PDL(PageDescriptionLanguage)の解析処理が実行されるので、負荷状況を高めに設定するようにしてもよい。
また、本実施形態は、システム内の各アプリケーションが負荷状況管理部208に負荷追加/削除の通知することで負荷状況を判断しているが、他の方法で負荷状況を管理しても構わない。
例えば、負荷状況管理部208が、CPU101の稼働率を取得して、稼働率が一定の値以上であれば、負荷状況の値を増減するようにしてもよい。この場合は、CPU101の稼働率は、逐次変動するものであるので、一定時間毎に随時取得して、負荷状況を更新する。
また、負荷状況管理部208が、不図示のI/Oキューなどを確認することで、HDD104に対するアクセス状況から負荷状況の値を変更してもよい。また、負荷状況管理部208が、ネットワークI/F110におけるトラフィックを検出して、負荷状況を更新してもよい。HDD104に対するアクセス状況、ネットワークI/F110におけるトラフィックも、逐次変動するものであるので、一定時間毎に随時取得して、負荷状況を更新する。
つまり、負荷状況管理部208が各種システムの負荷に基づいて負荷状況を更新してもよい。また、アプリケーション201からの負荷状況管理部208への通知と、負荷状況管理部208が1つ以上のシステムの負荷状況を組合わせて、負荷状況を更新するようにしても構わない。
なお、負荷が掛かっているか否かの判断は、負荷状況の値が、予め定められた高負荷と判断される値を超えているか否かで判断される。予め定められた高負荷と判断される値は、前述したように負荷状況の値の設定によって変わるものであり、例えば、遅延無く処理が完了できる動作を実行して、予め決定しておく。
データアクセス処理部200は、画像データ或いは画像形成装置402がファイルサーバとして機能するときに格納されるデータに対するデータアクセスの制御を行う。データアクセス処理部200は、データアクセスの要求を受け付ける要求受付部202、データアクセスのための認証処理や権限確認などを行うログイン処理部203、ログイン中のセッションを管理するセッション管理部204を備える。また、データアクセス処理部200は、セッションにおける処理の優先度を設定する優先度管理部205、論理的なデータアクセスを実行する論理データアクセス部206、物理的なデータアクセスを実行する物理データアクセス部207を備える。
優先度管理部205で管理される優先度は、Low、Middle、Highの3つからなり、セッション毎に定義される。セッションの初期設定では、優先度は、Middleに設定される。インデックス作成などの外部からの機械的なアクセスのセッションには、優先度は、Lowに設定される。ユーザが画像形成装置402を操作していると想定されるセッションについては、優先度は、Highに設定される。
優先度が変更されることによって、各セッションで実行される処理の順番を制御することが可能となる。詳細は図4で後述するが、優先度がHighのセッションで実行される処理は、最優先で実行される。優先度がLowのセッションで実行される処理は、他に優先度が高いセッションで実行される処理がある場合はウェイト処理を行って、他の優先度のセッションの処理を優先する。優先度は、図6に示すセッション管理テーブルに記憶される。セッション管理テーブルについては、後述する。
なお、本実施形態では、優先度をLow、Middle、Highの3つとしているが、これに限らず、2段階の優先度であったり4段階以上の優先度であっても構わない。
ここで、図1に示す検索サーバ403及びユーザPC404,405から画像形成装置402に対してインデックス作成のためのアクセスが発生しているとする。このとき、前記インデックス作成のアクセスと同時に、ユーザPC406が、インデックス作成では無い通常のデータアクセスを画像形成装置402に要求したときには、画像形成装置402は、ユーザPC406からの要求を優先して処理する必要がある。また、画像形成装置402に対してコピー機能などを操作部106から指示された場合にも、画像形成装置402は、操作部106から指示された機能を優先して処理する必要がある。
次に、図4を参照して、画像形成装置402のデータアクセス処理部200における優先度の設定処理について説明する。図4での各処理は、画像形成装置402のHDD104或いはROM103に記憶されたデータアクセス処理プログラムがRAM102にロードされて、CPU101によって実行される。
まず、アプリケーション201からデータアクセス処理のための指示を受け付けると、CPU101は、データアクセス処理部200を呼び出し、ステップS301の処理を開始する。
ステップS301では、CPU101は、要求受付部202がアプリケーション201からの要求を受け付けると、ステップS302に進む。ここで、要求とは、HDD104等に格納されているデータの操作やデータの属性の操作、或いはデータにアクセスするための認証、権限操作等のデータアクセスに関するものである。
図5に、アプリケーション201からの要求の一例を示す。図5の左側の列が要求の種別であり、右側の列がアプリケーションが呼び出すデータアクセス処理部200のAPI(Application Interface)の名称である。アプリケーション201は、APIを呼び出すことにより、データアクセス処理部200へ要求を行う。
要求の種別には、それぞれデータにアクセスするための認証、認証の解除を行う「ログイン」要求、「ログアウト」要求、データを生成するための「ファイル作成」要求、データを削除する「ファイル削除」要求がある。
また、要求の種別には、データの内容を読み込んだり、書込むための「ファイルオープン」要求、「ファイルクローズ」要求、「ファイル読み込み」要求、「ファイル書込み」要求、「ファイルシーク」要求がある。例えば、データを読み込む場合は、「ファイルオープン」を実行して、「ファイルシーク」によってファイル内の所望の場所に移動して、「ファイル読み込み」を実行してデータの内容を読み込む。読込みが完了したら、「ファイルクローズ」によってデータの内容の読み込みを終了する。
また、要求の種別には、ディレクトリを操作する要求として「ディレクトリ作成」要求、「ディレクトリ削除」要求、「ディレクトリ変更」要求がある。更に、要求の種別には、ディレクトリの一覧を取得するために、「ディレクトリオープン」、「ディレクトリクローズ」、「ディレクトリ読み込み」の各要求がある。
更に、要求の種別には、ファイルやディレクトリの属性を変更する「権限変更」、「所有者変更」、「属性取得」、「属性設定」、「名称変更」要求、データの複製を実行するための「コピー」要求もある。なお、要求受付部202で処理可能な要求は、図5に示す要求に限定されるものではない。
ステップS302では、CPU101は、要求受付部202で受け付けた要求がログイン要求であるか否かを判断し、ログイン要求である場合は、ステップS303に進み、ログイン要求でない場合は、ステップS310に進む。
ステップS303では、CPU101は、ログイン処理部203によりログイン処理を実行して、データアクセスを行うユーザを特定し、ステップS304に進む。このとき、アプリケーション201からのログイン要求には、ユーザ名やパスワードなどのログイン処理に必要な情報が含まれている。また、アプリケーション201や不図示のモジュールですでにログインが実行されている場合は、そのセキュリティトークンがログイン要求に含められていてもよい。この場合は、ログイン処理部203は、セキュリティトークンを確認して、データアクセスを行うユーザを特定する。なお、データアクセスを行うユーザを特定する方法は、特に限定されない。
ステップS304では、CPU101は、セッション管理部204により、ステップS302で特定したユーザを基に、セッションを生成し、ステップS305に進む。セッションとは、ログアウト処理が実行されるまで、データアクセス要求を実行できるようにするための情報である。
ステップS305では、CPU101は、セッション管理部204により、初期値として、n及びtに0を設定するとともに、返答時刻をクリアし、ステップS306に進む。ここで、nとは、前の要求と次の要求との時間間隔が、規定時間以下であった場合の回数を表す。
つまり、nは、人が操作できないと思われる時間間隔で要求が連続した場合に、検索サーバ403からのインデックス作成のためと想定されたアクセスの回数を表す。検索サーバ403からのインデックス作成のアクセス以外にも、スクリプト処理などで、機械的に処理が行われるものもこのnの回数に含まれる。後述するが、ユーザが画像形成装置402の操作部106を操作していても、偶然、高速に要求が連続してしまう可能性もあるため、nが規定回数以上の場合のときに、インデックス作成のように機械的にアクセスされていると判断する。
一方、tは、nとは逆に、前の要求と次の要求との時間間隔が、規定時間を超える場合の回数を表す。すなわち、tは、機械的に操作したと思われる時間間隔を超える時間で要求が連続した場合に、ユーザが実際に画像形成装置402の操作部106やPCのファイルサーバにアクセスするアプリケーションを操作していると想定したアクセスの回数を表す。後述するが、検索サーバなどがインデックス作成を実行している場合であっても、ネットワークのトラフィックなどにより、想定した時間以上で要求が連続する可能性もあるため、tが規定回数以上の場合のときに、ユーザが操作していると判断する。
また、返答時刻とは、受付けた要求の結果を要求元に返答した時間を表す。前回の要求に対する返答から次の要求までの間隔を求めることによって、機械的なアクセスであるか否かを判定する。
ここで、機械的なアクセスであるか否かを判定する具体例について説明する。
例えば、返答時間を1970年1月1日からの経過秒数で表し、800ミリ秒以内に前回の要求の返答から次の要求があった場合に、機械的なアクセスと判定する。要求元に結果を返答した時間が、2009年7月31日15時44分6.937秒だとすると、1249022646953が返答時刻になる。当該セッションからの次の要求が、2009年7月31日15時44分7.179秒だとすると、1970年1月1日からの経過秒数は、1249022647205になる。前回の要求に対する返答から次の要求までの間隔は、差を求めることで、252ミリ秒となる。この値が一定値(800ミリ秒)以内か否かで機械的なアクセスであるか否かを判定し、この例では、機械的なアクセスと判定される。
なお、上記の例では、時間単位をミリ秒としているが、より精度が高いマイクロ秒など機械的なアクセスと判断するために十分な精度で、アプリケーション201へ返答する時刻を記録してもよい。ステップS305の初期値設定でのn,t及び返答時刻は、セッション毎に保持されて、セッション管理部204によって管理される。
図6は、セッション管理部204が管理するセッション管理テーブルの一例を示す図である。
セッション管理部204は、セッションに関する情報をセッション管理テーブルで管理する。セッション管理テーブルは、セッションを識別するためのセッションID、当該セッションを利用しているユーザ名、当該セッションの優先度、及び前述したtの値、nの値、返答時刻が記録されている。
図6に示すセッション管理テーブルにおいて、例えば、セッションIDが1の場合は、ユーザ名が「tanaka」、優先度が「Middle」、tの値が6、nの値が0であり、返答時刻が、1246872464.90336200となる。また、セッションIDが5の場合は、ユーザ名が「yamada」、優先度が「High」、tの値が10、nの値が1であり、優先度がHighで設定されているので、返答時刻は記録されていない。セッションIDが8の場合は、ユーザ名が「suzuki」、優先度が「Low」、tの値が2、nの値が10であり、優先度がLowで設定されているので、返答時刻は記録されていない。なお、図6に示すセッション管理テーブルの例における返答時刻は、1970年1月1日0時0分00秒からの経過秒数をマイクロ秒単位としている。
ステップS306では、CPU101は、優先度管理部205により、セッション管理部204が管理しているセッション管理テーブルの当該セッションの優先度を「Middle」に設定して、ステップS307へ進む。
一方、ステップS310では、CPU101は、セッション管理部204により、自身に保持されたセッション情報を確認して、アプリケーション201からの要求に含まれるセッションが有効なセッションかどうかを確認する。そして、CPU101は、セッション管理部204により、有効なセッションであると判断すると、ステップS311へ進み、有効なセッションで無いと判断すると、ステップS312へ進む。
ステップS312では、セッションが無効であるため、CPU101は、セッション管理部204により、エラー処理を実行する。このエラー処理では、セッション管理部204がセッションのクリアなどの後処理を行う。エラー処理を実行後、CPU101は、ステップS326へ進み、要求受付部202により、エラーであった旨の結果を要求元のアプリケーション201に返答し、処理を終了する。
ステップS311では、CPU101は、要求受付部202により、アプリケーション201からの要求がログアウト要求か否かを判断し、ログアウト要求である場合は、ステップS313に進み、ログアウト要求でない場合は、ステップS307に進む。
ステップS313では、CPU101は、セッション管理部204により、当該セッションを破棄し、ステップS326に進む。ステップS326では、CPU101は、要求受付部202により、ログアウトの処理実行結果を要求元のアプリケーション201に返答し、処理を終了する。
ステップS307では、CPU101は、優先度管理部205により、セッション管理部204が管理しているセッション管理テーブルの当該セッションの優先度を確認する。
そして、CPU101は、当該セッションの優先度が「High」の場合は、ステップS308に進み、優先度が「Middle」の場合は、ステップS314に進み、優先度が「Low」の場合は、ステップS322に進む。
ステップS308では、優先度が「High」で、当該セッションは、ユーザが操作していると判断されるため、CPU101は、要求された処理を実行する。ここでは、CPU101は、物理データアクセス部207へ制御を移し、物理データアクセス部207により、要求されたデータを操作して、ステップS309へ進む。
ステップS309では、CPU101は、アプリケーション201からの要求に対する返答時刻を記録し、ステップS326へ進む。なお、ステップS309では、全ての場合に返答時刻を記録するのでなく、優先度が「High」でない場合にのみ返答時刻を記録するようにしてもよい。
ステップS326では、CPU101は、要求受付部202により、アプリケーション201から要求された処理の実行結果をアプリケーション201に返答し、処理を終了する。
ステップS322以降では、優先度が「Low」で、当該セッションは、インデックス作成など機械的にアクセスされていると判断されているので、負荷が掛かっていないと判断されたときにのみ、要求された処理を実行することになる。
ステップS322では、CPU101は、優先度設定部205により、負荷状況管理部208へ問い合わせを行い、現在の負荷状況を取得して、負荷が掛かっていないかどうかを判断する。
そして、CPU101は、負荷が掛かっていなければ、アプリケーション201からの要求を実行してもよいので、ステップS308へ進み、前述した優先度が「High」の場合と同様にステップS308、S309、S326の処理を実行し、処理を終了する。
一方、CPU101は、負荷かが掛かっていると判断した場合は、ステップS323に進む。
ステップS323では、CPU101は、優先度処理部205により、処理の実行を一定時間ウェイト(延期)して、ステップS324へ進む。これにより、当該処理の実行は遅延されることになり、並行して実行しているより優先度の高い他の処理が存在する場合には、当該他の処理の実行が優先される。
ステップS324では、CPU101は、優先度処理部205により、要求があってから一定時間以上経過したかどうか判断し、一定時間以上経過した場合は、ステップS302に進み、一定時間以上経過していない場合は、ステップS322に戻る。
ステップS325では、CPU101は、優先度処理部205により、タイムアウトエラーの処理を行う。具体的には、CPU101は、優先度処理部205により、次の要求までの間隔を無効にするために、セッション管理部204を介して返答時刻を0に設定し、ステップS326に進む。
ステップS326では、CPU101は、要求受付部202により、タイムアウトエラーとして要求を実行した処理結果をアプリケーション201に返答し、処理を終了する。
ステップS314以降は、優先度が「Middle」と判断されているので、当該セッションは、インデックス作成などの機械的なアクセスか、ユーザが操作しているのかが判定されていない状態である。
ステップS314では、CPU101は、論理データアクセス部205により、アプリケーション201からの要求がインデックス作成に関する要求であるか否かを判断する。
そして、CPU101は、インデックス作成に関する要求である場合は、ステップS316に進み、インデックス作成に関する要求でない場合は、ステップS315に進む。
一般に、検索サーバ403やユーザPC404,405などの機器におけるインデックス作成の処理は、次のように実行される。
インデックス作成処理を実行する機器は、ファイルサーバに格納されているフォルダ構成を検索しながら、データの属性情報、データの内容取得を行う。
すなわち、インデックス作成処理を実行する機器がインデックス作成のために用いる要求は、フォルダ以下のデータの一覧取得、データ属性取得、データの読み込みに関するものに限定され、データの内容を書き換える編集に関する要求は行わない。
したがって、ステップS314では、このようなインデックス作成に関わる要求かどうかが判断される。なお、本実施形態では、一般的なインデックス作成処理から上述のようなものをインデックス作成に関わる要求としたが、これに限定されない。実際に利用される検索サーバが要求するインデックス作成の要求を解析して、その要求をインデックス作成に関する要求としても構わない。
例えば、全文検索を行わず、ファイル名や属性だけの検索しか行わない検索サーバがあるとする。ネットワーク401に接続されている検索サーバがこのような全文検索の無い検索サーバしかないとする。このような場合は、この検索サーバからは、フォルダ以下のデータ一覧取得、データ属性取得の要求だけが行われる。この場合は、データの内容を読み込む要求は、検索サーバからの要求でないと判断できる。つまり、本実施形態でのステップS314における判断は、一般的な検索サーバの要求に関するものであるが、これに限定されず、特殊な検索サーバからのインデックス作成の要求に適用することも可能である。
ここで、ステップS314における判定処理について具体的に説明する。
例えば、アプリケーション201が、ファイル共有のプロトコルであるCIFS(Common Internet File System)を処理するアプリケーションであるとする。
図1を参照して、ユーザPC404,405などのクライアントは、CIFSプロトコルによって、画像形成装置402へデータの取得などの各種アクセスを行う。クライアントから送信されるプロトコルには、コマンドが含まれる。コマンドの一例としては、ファイルの新規作成を依頼する「SMB_COM_CREATE_NEW」やデータの読出しを依頼する「SMB_COM_READ_ANDX」などがある。
画像形成装置402は、ネットワークI/F110を介して当該プロトコルを受信し、受信した当該プロトコルは、アプリケーション201に渡される。アプリケーション201では、受信したプロトコルの解析を行い、コマンドを抽出して、データアクセス処理部200に対する要求に変換する。例えば、クライアントがデータの作成の画像形成装置402に依頼をすると、アプリケーション201は、次の処理を行う。
アプリケーション201は、プロトコルを解析した際に、CIFSのコマンド「SMB_COM_CREATE_NEW」が含まれているため、図5におけるFileCreateのAPIに変換する。
また、アプリケーション201は、データの作成日などの属性を取得する場合は、CIFSのコマンド「TRANS2_QUERY_FILE_INFORMATION」が含まれるため、GetAttributeのAPIに変換する。つまり、アプリケーション201は、外部通信プロトコルからデータアクセス処理部200が解釈できる要求への変換を行う。
ここで、インデックス作成に関する要求では、データの内容を書き換える編集に関する要求が為されない。従って、図5の「ファイル削除」「ファイル書込み」「ディレクトリ作成」「ディレクトリ削除」「権限変更」「所有者変更」「属性設定」「名称変更」「コピー」の要求の場合は、インデックス作成に関する要求でないと判断できる。
すなわち、ステップS301で受付けた要求がこれらの要求のいずれかであれば、論理データアクセス部205は、アプリケーション201からの要求がインデックス作成に関する要求でないと判断する。このため、CPU101は、ステップS314でNoと判定して、ステップS315に進む。逆に、ステップS301で受け付けた要求が、これらの要求のいずれでもなければ、アプリケーション201からの要求がインデックス作成に関する要求でないとは断定できず、インデックス作成に関する要求の可能性がある。この場合は、論理データアクセス部205は、アプリケーション201からの要求がインデックス作成に関する要求であると判断し、CPU101は、ステップS314でYesと判定して、ステップS316に進む。
ステップS315では、CPU101は、インデックス作成以外の要求があるので、ユーザが操作しているものと判断し、セッション管理部204が管理しているセッション管理テーブルの当該セッションの優先度を「High」として、ステップS308へ進む。ステップS308、S309、S326の処理は、前述した優先度が「High」の場合と同様である。
一方、ステップS316では、CPU101は、優先度設定部205により、前回の要求に対する返答時刻から今回の要求(現在時刻)まで経過時間を算出し、算出した経過時間が一定時間以内であるか否かを判断する。このとき、優先度設定部205が経過時間を算出するための前回の要求に対する返答時刻は、セッション管理部204に記録され、優先度設定部205は、セッション管理部204から当該セッションに対する返答時刻を取得する。
そして、CPU101は、算出した経過時間が一定時間を超える場合は、機械的なアクセスでなく、ユーザが操作している可能性があるものとして、ステップS317へ進む。また、CPU101は、算出した経過時間が一定時間以内の場合は、機械的なアクセスの可能性があるものとして、ステップS319へ進む。
ステップS317では、CPU101は、優先度管理部205により、セッション管理部204のセッション管理テーブルで管理しているtを1だけインクリメントし、ステップS318に進む。
ステップS318では、CPU101は、優先度管理部205により、tの値が規定値以上であるか否かを判定する。tの値が規定値以上の場合、即ち、ステップS316で算出した経過時間が一定時間を超えるものが規定回数以上あった場合は、ユーザが操作していると判断される。そこで、CPU101は、tの値が規定値以上と判定した場合は、ステップS315へ進む。
ステップS315では、CPU101は、セッション管理部204が管理しているセッション管理テーブルの当該セッションの優先度を「High」として、ステップS308へ進み、要求を実行する。ステップS308、S309、S326の処理は、前述した優先度が「High」の場合と同様である。
一方、tの値が規定値未満の場合は、ステップS316で算出した経過時間は、ユーザが操作している可能性があるが、規定の回数に満たないので、ユーザが操作していると断定できない状態と見做される。従って、CPU101は、セッションの優先度の変更を行うことなく、ステップS308へ進む。ステップS308、S309、S326の処理は、前述した優先度が「High」の場合と同様である。
ステップS319では、CPU101は、優先度管理部205により、セッション管理部204のセッション管理テーブルで管理しているnを1だけインクリメントし、ステップS320に進む。
ステップS320では、CPU101は、優先度管理部205により、nの値が規定の値以上であるか否かを判定する。tが規定の値以上と判断される場合、即ち、ステップS316で算出した経過時間が一定時間以内であったものが規定回数以上あった場合は、機械的なアクセスであると判定される。そこで、CPU101は、nの値が規定値以上と判定した場合は、ステップS321へ進む。
ステップS321では、CPU101は、セッション管理部204が管理しているセッション管理テーブルの当該セッションの優先度を「Low」として、ステップS322へ進み、負荷が掛かっていない状況でのみ要求を実行する。ステップS322以降の処理は、前述したステップS307での優先度「Low」の場合と同様である。
一方、nの値が規定値未満と判断した場合は、ステップS316で算出した経過時間は、機械的なアクセスの可能性があるが、規定の回数に満たないので、機械的なアクセスであると断定できない状態と見做される。従って、CPU101は、セッションの優先度の変更は行うことなく、ステップS308へ進む。ステップS308、S309、S326の処理は、前述した優先度が「High」の場合と同様である。
なお、図4での処理においては、インデックス作成の要求の判定(S314)と前回の返答から今回の要求までの経過時間の判定(S316)の両方から機械的なアクセスであるか否かの判定を行っているが、いずれか一方で判定しても構わない。また、前回の返答から今回の要求までの経過時間に対するtやnの回数を記録して、tやnが規定の回数以上の場合のみを機械的なアクセスか或いはユーザの操作かを判断しているが、tやnに対する規定値を0にして、優先度を設定しても構わない。
以上説明したように、本実施形態では、外部機器からのインデックス作成のための機械的なアクセスと、ユーザが操作部106等を操作している通常のアクセスとが混在した場合でも、インデックス作成のための機械的なアクセスを検出することが可能になる。また、前回の返答から今回の要求までの経過時間が一定時間以内である場合の回数及び一定時間を超える場合の回数を記録することにより、一度だけ前記経過時間が一定時間以内の場合や一定時間を超える場合に優先度が変更されてしまうことが回避することができる。
これにより、外部機器からのインデックス作成のためのアクセスと、ユーザが操作部106等を操作している通常のアクセスとが混在した場合でも、通常のアクセスを優先して処理することが可能となる。この結果、画像形成装置402がファイルサーバ機能を有する場合に、画像形成装置402にインデックス作成の負荷が掛かっても、画像形成装置402の本来の機能である、コピー機能やプリント機能を優先して処理することが可能となる。
なお、本実施形態では、情報処理装置として画像形成装置を例示したが、これに限定されず、一般的なファイルサーバ機能を持つPCなどの情報処理装置にも適用することが可能である。
(第2の実施形態)
次に、図7〜図9を参照して、本発明の情報処理装置の第2の実施形態である画像形成装置について説明する。なお、上記第1の実施形態に対して重複又は相当する部分については、符号を流用して説明する。
上記第1の実施形態では、当該セッションに対する現時点でのアプリケーション201からの要求がインデックス作成に関する要求であるか否かのみを判断している(図4のステップS314)。このとき、アプリケーション201からの要求がインデックス作成のために検索サーバ403がアクセスしてくるパターンと異なる場合でも、機械的なアクセスかどうかの判定までに複数の処理を要することになる。
そこで、本実施形態では、インデックス作成のためにサーバがアクセスしてくるパターンが判明している場合に、判明しているパターンと異なるアクセスの場合には、直ちにユーザが操作していると判断して優先度を設定する。
図7に、本実施形態におけるセッション管理テーブルの一例を示す。図7に示すセッション管理テーブルは、上記第1の実施形態におけるセッション管理テーブル(図6)に「前回要求」の項目が追加されている。
図7において、セッションIDが1のものは、前回要求が「GetList(/share/folder)」であり、/share/folderなるフォルダの一覧取得の要求があったことを示す。セッションIDが5のものは、前回要求が「WriteData(/user/yamada/abc/foo.txt)」であり、/user/yamada/abc/foo.txtなるデータに対する書込みの要求があったことを示す。
また、セッションIDが8のものは、前回要求が「ReadData(/share/folder/xyz/pqr.doc)[ERROR]」である。これは、/share/folder/xyz/pqr.docなるデータに対する読み込みの要求があったが、エラーで失敗したことを示している。
図示は省略するが、他の要求を表すものとしては、フォルダ作成「CreateFolder」、属性取得「GetAttr」、属性設定「SetAttr」、対象削除「Delete」などがある。また、それぞれには、対象となるフォルダやデータのパスも指定され、エラーが発生した場合には、「[ERROR]」が付与される。
図8は、インデックス作成等の機械的なアクセスを示すパターンリストの一例を示す図である。
図8に示すパターンリストに一致しないアクセスは、ユーザが操作しているものと判断される。なお、パターンリストに一致したアクセスを機械的なアクセスと断定しないのは、ユーザが操作している場合でも、機械的なアクセスと同じパターンでアクセスされることがあるためである。アクセスがパターンリストにマッチした場合は、上記第1の実施形態で説明したように、前回の要求に対する返答から今回の要求までの経過時間を判断することで、機械的なアクセスであるかどうかを決定する。
パターンリストは、優先度管理部205によって管理される。例えば、図8のパターンリストにおいて、矢印(→)は、前回の要求と今回の要求の組合せパターンを示し、コロン(:)は、条件パターンを示す。
組合せパターン801〜804では、矢印(→)の前が前回の要求、後ろが今回の要求を表す。組合せパターン801は、前回の要求がフォルダ一覧取得「GetList」で、今回の要求がデータ読込み「ReadData」であって、かつGetListで取得対象のフォルダ(/P)の直下のデータ(/P/D)が、データ読込みの対象であることを示す。ここで、/P は、GetListで取得対象のフォルダのパスを表し、Dは、データを表す。
即ち、/P/D は、GetListで取得対象のフォルダのパスの直下のデータを表す。なお、直下ではないが、あるフォルダ以下のデータの場合は、../D と表す。図8では図示は省略するが、/P/../D であれば、GetListで取得対象のフォルダのパス以下に存在するデータを表す。
同様に、組合せパターン802は、前回の要求がフォルダ一覧取得「GetList」であり、今回の要求が属性取得「GetAttr」であって、かつGetListで取得対象のフォルダ(/P)の直下のデータ(/P/D)が、属性取得の対象であることを示す。組合せパターン803は、前回の要求がフォルダ一覧取得「GetList」であり、今回の要求がフォルダ一覧取得「GetList」であって、かつGetListで取得対象のフォルダ(/P)の直下のフォルダ(/P/F)が、属性取得の対象であることを示す。ここで、F とは、フォルダを表すものである。
組合せパターン804は、前回の要求の欄が、「ANY」であり、前回の要求が任意であることを示し、今回の要求がフォルダ一覧取得「GetList」であって、フォルダ一覧取得対象のフォルダがルートフォルダ(/)である。
また、条件パターン805は、コロンの前が条件、後ろが条件を適用される要求である。具体的には、条件パターン805は、条件が「RECENT_UPDATETIME」であり、最近の更新されたデータを示す。この条件が適用される要求が、「ReadData」であるので、最近更新されたデータをアクセスするときにパターンに当てはまる。ここで、いつまでを最近とするかは、予め定義しておいても構わないし、アクセスするデータの更新日付から動的に決めるようにしてもよい。つまり、ある日時以後に更新されたものだけをアクセスしたかどうかを判定するパターンとなる。
パターンリストは、予め画像形成装置402の所定の記憶領域に保持しておいても構わないし、画像形成装置402の管理者が使用されるインデックス作成のサーバのアクセスを解析してパターンを定義しても構わない。また、本実施形態のパターンリストは、前回の要求と今回の要求の2回の組合せであるが、2回以上の組合せでも構わないし、また、任意の時点の要求の組合せでも構わない。
次に、図9を参照して、本実施形態の画像形成装置402のデータアクセス処理部200における処理について説明する。図9での各処理は、画像形成装置402のHDD104或いはROM103に記憶されたデータアクセス処理プログラムがRAM102にロードされて、CPU101によって実行される。なお、図9において、上記第1の実施形態の処理(図4)と重複する部分については、図に同一のステップ番号を付与してその説明を省略する。
ステップS601では、セッション管理テーブルに前回要求が追加されたため、CPU101は、セッション管理部204により、初期値として、n及びtに0を設定し、返答時刻、前回要求をクリアして、ステップS306に進む。
ステップS602では、同様に、セッション管理テーブルに前回要求が追加されたため、CPU101は、アプリケーション201からの要求に対する返答時刻とその要求を記録して、ステップS326へ進む。
ステップS603では、ステップS314において、優先度管理部205が優先度が「Middle」であると判断し、論理データアクセス部206がインデックス作成に関する要求であると判断した場合に、処理が実行される。
ステップS603では、CPU101は、優先度管理部205により、前回の要求と今回の要求との組合せが図8に示すパターンリストに含まれているか否かを判定する。具体的には、優先度管理部205が、セッション管理部204が管理するセッション管理テーブルから前回要求を取得し、取得した前回要求と今回の要求との組合せが、優先度管理部205が管理するパターンリストのパターンと一致するか否かを判定する。
そして、CPU101は、取得した前回要求と今回の要求との組合せがパターンリストのパターンと一致した場合は、機械的なアクセスの可能性があるため、ステップS316へ進む。また、CPU101は、取得した前回要求と今回の要求との組合せがパターンリストのパターンと一致しない場合は、機械的なアクセスでない、すなわちユーザが操作していると判断して、ステップS315へ進み、優先度の変更を行う。
以上説明したように、本実施形態では、インデックス作成のための検索サーバ403等のアクセスが、判明しているパターンと異なるアクセスの場合には、所定の処理を行わずに直ちにユーザが操作していると判断して優先度を高く設定することが可能となる。その他の構成及び作用効果は、上記第1の実施形態と同様である。
(第3の実施形態)
次に、図10及び図11を参照して、本発明の情報処理装置の第3の実施形態である画像形成装置について説明する。なお、上記第1の実施形態に対して重複又は相当する部分については、符号を流用して説明する。
上記第1の実施形態では、当該セッションに対する現時点の要求がインデックスに関する要求であった場合に、前回の要求の返答からの経過時間が一定時間以内であるか否かを判断している(ステップS316)。
一方、インデックス作成を行う検索サーバ403等は、要求の返答によって取得した情報毎に処理が異なる。例えば、データの属性取得の場合では、名称や作成日、更新日、所有者などの情報をサーバ内のデータベースに取り込むだけである。ところが、データの内容を取得する場合は、全文検索のために形態素解析やN-Gram法などで取得した内容を解析して、インデックスを作成する。そのため、取得したデータの内容の量に依存して処理時間が掛かるため、次の要求までの間隔が長くなる。
また、フォルダの一覧取得の場合には、一覧取得した数によって、次の要求までの間隔が変わる。例えば、フォルダの下に一つしかデータがない場合は、一覧取得した後に、直ちにそのデータの取得が行える。しかし、フォルダの下に10000個のデータやフォルダがある場合には、取得した10000個の一覧を管理した上で、データ取得や更に配下のフォルダの一覧取得を実施する必要がある。そのため、一覧取得した数によって、次の要求までの間隔が変わる。
また、インデックス作成を行う検索サーバ403等からの要求に要する時間、及び要求の返答に要する時間は、ネットワークのトラフィック量にも依存する。ネットワークのトラフィック量が多くネットワークが混雑している状況では、前回の要求の返答に対して、検索サーバ403等が素早く要求しても、画像形成装置402までに要求が到達するのに時間が掛かる。
そこで、本実施形態では、要求の結果に応じて、機械的なアクセスと判断される時間の調整を行い、また、ネットワークのトラフィックの状況も確認して、機械的なアクセスと判断される時間の調整を行う。
図10は、本実施形態におけるセッション管理テーブルの一例を示す図である。図10に示すセッション管理テーブルは、上記第1の実施形態のセッション管理テーブル(図6)に「前回要求」及び「返答サイズ」の項目を追加したものである。
図10において、セッションIDが1のものは、前回要求が「GetList(/share/folder)」であり、/share/folderなるフォルダの一覧取得の要求があったことは前述した通りであり、GetListによって取得された一覧の数が返答サイズに18と記載されている。セッションIDが5のものは、前回要求が「WriteData(/user/yamada/abc/foo.txt)」であり、/user/yamada/abc/foo.txtなるデータに対する書込みの要求である。この返答サイズは、200byteであり、200バイトのデータが返答されたことを示す。
また、セッションIDが8のものは、前回要求が「ReadData(/share/folder/xyz/pqr.doc)[ERROR]」であり、エラーで失敗したため、返答サイズは0である。図示は省略するが、フォルダ作成「CreateFolder」などのように、サイズを返答する必要がないものは、0が設定される。
また、データの読出しの場合は、アプリケーション201からの要求が分割して行われる場合がある。例えば、500バイトのデータを100バイトずつ読み出されることがある。この場合、データのオープン、複数回のデータの読出し、データのクローズという手順で要求が行われ、セッション管理テーブルの前回要求に、データの読出し開始(OpenData)、データの読出し終了(CloseData)という項目が記載される。
/foo/xxx.txtという300バイトのデータを100バイトずつ読み出す場合を例にとって説明する。この場合、アプリケーション201は、OpenData(/foo/xxx.txt)、ReadData(/foo/xxx.txt) [返答サイズ=100byte]、ReadData(/foo/xxx.txt) [返答サイズ=100byte]、ReadData(/foo/xxx.txt) [返答サイズ=100byte]、CloseData(/foo/xxx.txt)の順に要求を出す。
次に、図11を参照して、本実施形態の画像形成装置402のデータアクセス処理部200における処理について説明する。図11での各処理は、画像形成装置402のHDD104或いはROM103に記憶されたデータアクセス処理プログラムがRAM102にロードされて、CPU101によって実行される。なお、図11において、上記第1の実施形態の処理(図4)と重複する部分については、図に同一のステップ番号を付与してその説明を省略する。
ステップS901では、セッション管理テーブルに前回要求及び返答サイズが追加されたため、CPU101は、セッション管理部204により、初期値として、n及びtにゼロを設定し、返答時刻、前回要求、返答サイズをクリアし、ステップS306に進む。
ステップS902では、CPU101は、論理データアクセス部206により、要求に応じた返答サイズを求め、ステップS903に進む。返答サイズは、例えば、フォルダの一覧取得であれば、一覧取得した数であり、データの読み出しであれば、読み出したサイズである。ここで、図10のセッション管理テーブルの説明したように、分割してデータが読み出される場合がある。優先度管理部205は、セッション管理テーブルの前回の要求がReadDataであり、かつ今回の要求もReadDataである場合には、前回の要求の返答サイズと今回の要求での返答サイズを加算したものをセッション管理テーブルに記載する返答サイズとする。即ち、読出し終了までに合計のサイズが求められることになる。
ステップS903では、CPU101は、セッション管理部204により、アプリケーション201からの要求に対する返答時刻とその要求、及びステップS902で算出した返答サイズをセッション管理テーブルに記録し、ステップS326へ進む。
ステップS904では、ステップS314において、優先度管理部205が優先度が「Middle」である判断した場合に、処理が実行される。
ステップS904では、CPU101は、優先度管理205により、セッション管理部204から取得した前回要求の種別と返答サイズに基づき、ステップS316での判断のための機械的なアクセスと判断される一定時間の調整を行い、ステップS905に進む。
例えば、前回要求がフォルダの一覧取得であり、m件取得されたとする。ステップS316での判断のための機械的なアクセスと判断する基準となる時間がs秒だとすると、例えば、m/1000を加えたs+m/1000が調整された機械的なアクセスと判断される時間となる。
また、データの取得の場合は、図10及びステップS902で説明したように、分割してデータが読み込まれるため、データの読出し終了のタイミングで判断する。
即ち、前回要求がデータの読出し終了であり、読み出されたデータの合計サイズが、xバイトとすると、例えば、x/100を加えたs+x/100が調整された機械的なアクセスと判断される時間となる。なお、本実施形態では、データ取得の終了のタイミングで機械的なアクセスと判断される時間の調整を行っているが、毎回のデータ読出しのタイミングで調整を行ってもよい。ここで、ステップS904での一定時間の調整処理は、本発明の第1の調整手段の一例に相当する。
ステップS905では、CPU101は、ネットワークのトラフィックから負荷状況を確認して、ステップS904と同様に、優先度管理205により、機械的なアクセスと判断される一定時間の調整を行い、ステップS316へ進む。
例えば、優先度管理部205がネットワークI/F110を介してパケットをLAN上の機器に送信して、ネットワークの負荷状況を確認する。この判断の結果、ネットワークの負荷が高いと判断すれば、優先度管理部205が機械的なアクセスと判断される時間にネットワークの負荷に応じた値を加算する。ここで、ステップS905での一定時間の調整処理は、本発明の第2の調整手段の一例に相当する。
ステップS316では、前回の要求に対する返答からの経過時間をステップS904及びステップS905で調整した値が、機械的なアクセスと判断される一定時間以内であるか否かが判断される。以降は、上記第1の実施形態と同様である。
以上説明したように、本実施形態では、要求の結果及びネットワークのトラフィック状況に応じて、機械的なアクセスと判断される時間の調整を行うことで、より詳細に機械的なアクセスであるか否かの判定を行うことが可能となる。なお、本実施形態では、要求の結果及びネットワークのトラフィック状況の2つから機械的なアクセスと判断される時間の調整を行ったが、いずれか一方であってもよい。その他の構成及び作用効果は、上記第1の実施形態と同様である。
(第4の実施形態)
次に、図12を参照して、本発明の情報処理装置の第4の実施形態である画像形成装置について説明する。なお、上記第1の実施形態に対して重複又は相当する部分については、符号を流用して説明する。
画像形成装置402に対するネットワークを介しての外部機器のアクセスではなく、画像形成装置402の操作部106をユーザが利用しているときは、画像形成装置402の本来の機能であるコピー機能などを使用していると考えられる。この場合は、画像形成装置402の負荷が高いものとして、優先度が低い処理は実行しないようし、操作部106を利用しているユーザにCPU101の処理能力を割当てるのが好ましい。
また、画像形成装置402では、どのような処理をいつ実行したのかをログで記録している。このログ情報から負荷が予想される時間帯には、予め画像形成装置402の負荷が高いものと設定することにより、インデックス作成のために検索サーバ403等からのアクセスと考えられる優先度がLowのアクセスをブロックすることができる。
図12は、本実施形態の画像形成装置402におけるデータアクセス処理を説明するためのブロック図である。なお、既に説明した図3と重複する部分については、図に同一符号を付して、その説明を省略する。
図12に示すように、本実施形態では、複数のアプリケーション1101〜1103が存在し、そのうちのアプリケーション1101のみがデータアクセス処理部200を利用する。
操作部処理部1107は、操作部I/F105を介してユーザにより操作部106が操作されたイベントなどをアプリケーション1101〜1103に通知する。アプリケーション1101〜1103は、操作部処理部1107を介して操作部106が利用されていることを検知したら、該検知結果を負荷状況管理部208に対して通知する。
また、アプリケーション1101〜1103は、操作部106の利用が終了したことを検知したら、負荷状況管理部208に対して操作部106の利用が終了したことを通知する。操作部106の利用が終了したかどうかの判断は、例えば、画像形成装置402を使用時にログインによって認証が必要な場合には、ログアウトのタイミングを操作部106の利用が終了したタイミングとすることができる。あるいは、一定時間、操作部106が操作されていない場合に、操作部106の利用が終了したと判断してもよい。
負荷状況管理部208は、操作部106が利用されている通知があるときは、図4のステップS322において、優先度設定部205から負荷状況の問い合わせがあったときに、負荷が掛かっていると返答する。
なお、本実施形態では、操作部106が操作されている場合について説明したが、これに限定されない。例えば、デバイスI/F107を介してスキャナ108が操作されている場合であったり、不図示の人感センサ等によって、人が画像形成装置の近くにいることを検知するような場合であってもよい。
アプリケーション1101〜1103は、それぞれの処理を行ったときにログ管理部1104へ処理を行った日時と処理内容を通知する。ログ管理部1104は、通知された内容を利用ログ情報として、ログ保管部1105に記録する。ログには、いつどのような処理を行ったかという内容が保存される。
ログ解析部1106は、ログ保管部1105に保管されたログを解析してどの時間帯で負荷が掛かるのかを判断する。例えば、ログ解析部1106は、9時から10時までは、ログが多く記録されており負荷が高いとか、12時から13時は、ログの記録が少なく負荷が低いなどを解析する。なお、ログ解析部1106で解析するのは時間帯だけでなく、日付や曜日による違いを解析してもよい。
図4のステップS322において、負荷状況管理部208に優先度設定部205から負荷状況の問い合わせがあったときに、負荷状況の判定と共に、ログ解析部1106に対して現在時刻前後において負荷が高くなることが予想されるかの問い合わせを行う。ログ解析部1106では、解析結果から負荷状況を予測して、負荷状況管理部208に結果を返答する。負荷状況管理部208は、現時点では負荷が掛かっていなくても、負荷が高くなることが予想される場合には、優先度管理部205に負荷が高いものとして返答する。
以上説明したように、本実施形態では、操作部106を利用しているような明らかにユーザが画像形成装置402を使用している場合に、インデックス作成を行う検索サーバ403からのアクセス等の優先度が低い処理をブロックすることが可能となる。また、操作部106が操作されたログを保持、解析することにより、負荷を予測して、負荷が高くなると予想されるときに、事前にインデックス作成を行う検索サーバ403からのアクセス等の優先度が低い処理をブロックすることが可能となる。その他の構成及び作用効果は、上記第1の実施形態と同様である。
(第5の実施形態)
次に、図13及び図14を参照して、本発明の情報処理装置の第5の実施形態である画像形成装置について説明する。なお、上記第1の実施形態に対して重複又は相当する部分については、符号を流用して説明する。
上記第1の実施形態では、インデックス作成を行う検索サーバ403等からのアクセスは、データアクセス処理部200にログインした状態で連続して行われる場合を想定している。つまり、一旦データアクセス処理部200にログインすると、インデックス作成を行う検索サーバ403等は、インデックス作成が終了するまでログアウトせずに画像形成装置402にアクセスする。しかし、検索サーバ等によっては、1つの処理、あるいはいくつかの処理毎にログイン、ログアウトを繰り返してアクセスする可能性がある。
この場合、上記第1の実施形態におけるセッション管理では、セッション管理テーブルに管理されている情報がログアウトの時点で破棄されるので、機械的なアクセスであるかどうか判断できなくなる。そこで、本実施形態では、仮想的なセッションによってデータアクセス処理を行う。
図13は、本実施形態におけるセッション管理テーブルの一例を示す図である。このセッション管理テーブルは、図6のセッション管理テーブルに「アドレス」「ログアウト」の項目を追加したものである。ただし、図13のセッション管理テーブルは、仮想セッションを扱うもので、セッションIDが1のものは、IPアドレスが「192.168.3.42」であり、このアドレスの機器からアクセスがあったことを示す。また、ログアウト欄は、「No」であり、ログアウトの要求は行われていない。
セッションIDが5のものは、IPアドレスが「192.169.2.186」、セッションIDが8のものは、IPアドレスが「192.168.74.93」の機器からアクセスがあったことを示す。このように、アクセスのあった機器のIPアドレスを記録することによって、同一機器からのアクセスを仮想的なセッションと見做す。なお、セッション管理テーブルに記録される情報は、アドレスに限定されるものではなく、他の情報によって機器を特定しても構わない。
また、セッションIDが5のものはログアウト欄が「Yes」であり、ログアウトの要求があり、ログアウトされている。また、セッション管理テーブルには、ログアウトされているか否かを記録しておき、ログアウトされたセッションも記録したままにしておく。上記第1の実施形態では、ログアウトの要求の場合は、返答時間について記録していなかったが、本実施形態では、返答時間についてもセッション管理テーブルに記録する。そして、セッション管理部204が一定時間ごとにセッション管理テーブルを確認して、ログアウト欄が「Yes」であり、その返答時間から一定時間を経過したものをセッション管理テーブルから削除する。これにより、ログアウト後に無駄なセッション情報がセッション管理テーブルに残ることを防ぐことができる。
次に、図14を参照して、本実施形態の画像形成装置402のデータアクセス処理部200における処理について説明する。図14での各処理は、画像形成装置402のHDD104或いはROM103に記憶されたデータアクセス処理プログラムがRAM102にロードされて、CPU101によって実行される。なお、図14において、上記第1の実施形態の処理(図4)と重複する部分については、図に同一のステップ番号を付与してその説明を省略する。
ステップS1301では、CPU101は、要求受付部202により、ステップS301で受付けた要求がログアウト要求であるか否かを判断し、ログアウト要求であれば、図1302に進み、ログアウト要求でなければ、ステップS1303に進む。
ステップS1302では、CPU101は、セッション管理部204により、セッション管理テーブルの当該セッションに対するログアウト欄をYesにし、ステップS309に進む。本実施形態では、ステップS309でログアウトの返答時間もセッション管理テーブルに記録し、ステップS326へ進む。
ステップS1303では、CPU101は、セッション管理部204により、セッション管理テーブルを探索し、以前に同一のアドレス、ユーザでアクセスがあったか確認する。そして、CPU101は、以前に同一のアドレス、ユーザによるアクセスが無い場合は、ステップS1304へ進み、アクセスがある場合は、ステップS1309へ進む。
ステップS1304では、CPU101は、要求受付部202により、ステップS301で受付けた要求がログイン要求であるか否かを判断する。そして、CPU101は、ログイン要求で無いと判断した場合は、ログイン無しにデータへのアクセスが行われているので、ステップS1305へ進み、セッション管理部204によりエラー処理を行ってステップS326へ進む。また、CPU101は、ログイン要求と判断した場合は、ステップS1306へ進む。
ステップS1306では、CPU101は、ログイン処理部203により、ログイン処理を実行するが、これは、図4のステップS303の処理と同等であり、ログイン処理を実行後に、ステップS1307へ進む。
ステップS1307では、CPU101は、セッション管理部204により、前述したアドレス、ユーザ名を基に、セッションをセッション管理テーブル内に生成し、ステップS1308に進む。
ステップS1308では、CPU101は、セッション管理部204により、初期値として、n及びtにゼロを設定し、返答時刻をクリアし、ログアウト欄をNoにして、ステップS306へ進む。
一方、ステップS1309では、CPU101は、要求受付部202により、ステップS301で受付けた要求がログイン要求であるか否かを判断する。そして、CPU101は、ログイン要求であると判断した場合は、ステップS1310へ進み、ログイン要求でないと判断した場合は、ステップS1314へ進む。
ステップS1310では、CPU101は、セッション管理部204により、セッションテーブル内の当該アドレス、当該ユーザのセッションのログアウト欄がYesであるかどうか判断する。そして、CPU101は、ログアウト欄がYesでなければ、ログアウトしていないのに再度ログインを実行しているため、ステップS1311でセッション管理部204によりエラー処理を実行して、ステップS326へ進む。また、CPU101は、ログアウト欄がYesであれば、ステップS1312へ進む。
ステップS1312では、CPU101は、ログイン処理部203により、ログイン処理を実行するが、これは、図4のステップS303の処理と同等であり、ログイン処理を実行後に、ステップS1313へ進む。
ステップS1313では、CPU101は、セッション管理部204により、新たなセッションを生成せずに、当該アドレス、当該ユーザのセッションに対するログアウト欄をNoに変更し、ステップS1314に進む。
ステップS1314では、CPU101は、当該アドレス、当該ユーザのセッション情報を読み出して、ステップS304に進む。
以上説明したように、本実施形態では、同一アドレス、同一ユーザからの一定時間内のアクセスは、ログイン、ログアウトを繰り返されるような場合でも、同一セッションと見做すことが可能となる。したがって、そのようなアクセスを行う検索サーバ403等であっても機械的なアクセスか否かを判断できるようになる。その他の構成及び作用効果は、上記第1の実施形態と同様である。
なお、本発明は、上記各実施形態に例示したものに限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。ネットワーク又は各種記憶媒体を介して取得したソフトウェア(プログラム)をパーソナルコンピュータ(CPU,プロセッサ)にて実行することでも実現できる。