説明

画像処理装置及び画像処理装置のメモリ管理方法

【課題】 画像処理装置で動作するプロセスのうち、スワップアウトを禁止するプロセスを動的に変更することで、複合機のスループットの低下を防止することを目的とする。
【解決手段】 メモリ管理1002は、ジョブログ1006を参照して実行頻度の高いジョブの種類を特定し、特定されたジョブの種類とジョブプロセステーブル1007とに基づいて実行頻度の高いプロセスを特定し、当該プロセスをスワップアウトを禁止するプロセスとして管理する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は仮想記憶方式を採用する画像処理装置におけるメモリ管理技術に関するものである。
【背景技術】
【0002】
仮想記憶方式を採用する計算機システムでは実メモリ(物理メモリ)容量以上のメモリ領域(アドレス空間)を管理する事ができる。
【0003】
実メモリ容量以上のメモリ領域を使用する場合は、メモリに記憶されたデータやプログラムの一部を一時的にハードディスク(HDD)などの記憶装置へ待避するスワップ処理を行う。スワップ処理は大きく分けて以下の2つの処理を含む。1つは、実メモリの容量をあけるために当面の間必要無い内容をハードディスクなどに書き出すこと、即ちスワップアウトである。もう1つは、ハードディスクなどに書き出して退避した内容がプログラム処理の都合上必要となったときにメモリに書き戻すこと、即ちスワップインである。
【0004】
スワップアウトした内容を使用する場合は、退避した内容を記憶領域から実メモリ領域へ再度転送してから使用するため、スワップしたメモリを使用するプロセスは転送オーバーヘッドが発生しプログラムの動作が遅くなる。
【0005】
スワップアウトするメモリ領域は一般にLeastRecentlyUsedアルゴリズム(最も使われていないデータから破棄するというキャッシュの管理方法)により、最後にアクセスされてからの時間が長いものが選択される。
【0006】
しかし、メモリ容量の少ないシステムでは実メモリ領域全体が頻繁にアクセスされ、全プロセスの動作が遅くなるスラッシング状態に陥る問題がある。
【0007】
計算機システム全体のスループットを改善するために、既に一部のメモリ領域がスワップされているプロセスのメモリ領域を優先的にスワップする事で動作の遅いプロセスを減らす技術が知られている(たとえば特許文献1)。
【0008】
一方、特定のメモリ領域をスワップ対象にしない機能がLinux(登録商標)等の汎用OSでは提供されている。
【0009】
メモリ容量の少ないシステムでも優先的に動かす必要があるプロセスの使用するメモリ領域をスワップアウト禁止にする事で、緊急プロセスの動作保証や重要機能の優先実行を実施することができる。
【特許文献1】特開2004−227188号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
コピー、プリント、スキャン、ファクシミリなどの複数の機能を備える複合機などの画像処理装置の機能は年々多様化しているため、これら複数の機能を実現するために複合機に搭載されるプログラム(プロセス)の量も増加し続けている。複合機が処理を実行するために必要なプロセスを同時に実行してもスワップが発生しない容量のメモリ領域を確保する実メモリを搭載することはコストの観点から現実的ではない。従って、いずれかのプロセスが使用するメモリをスワップアウトして動作する必要がある。
【0011】
優先的に実行するプロセスをスワップアウトしないことでスワップアウトしないプロセスの動作が遅くなることを防止して、システムのスループットを向上させる事ができる。従って、使用環境に関わらずに用途が特定できるシステムでは、設計時に高頻度機能を特定し、高頻度機能に必要な高頻度プロセスを特定して、高頻度プロセスにはスワップアウトしないメモリを割り当てる事ができる。
【0012】
しかし、スキャン、プリント、コピー、ファクシミリなどの多様な機能を持つ複合機では、使用環境によって優先的に実行するプロセスが必ずしも固定的ではない。
【0013】
例えば、プリント機能に特化した設計を行い、プリント機能に関わるメモリ領域をスワップ禁止にしても、スキャン機能を主に用いるユーザの使用環境であれば、スキャン機能を制御するためのプログラムの動作が遅くなり、スキャン機能のスループットが低下する。また、ファクシミリ送信機能を主に用いる使用環境においてもスループットの向上は見込めない。
【0014】
従って、機能の豊富なシステムでは優先機能を画一的に決めてスループットを向上させる事ができない。
【0015】
さらに、複合機を用いるユーザの使用環境においても、業務プロセスが変化する可能性があるため、それにより高頻度に用いられる複合機の機能も変換することがある。したがって、複合機の導入時に優先機能を特定し、それを固定して運用し続けてもスループットが向上できないこともある。
【0016】
本発明は、上述の課題を鑑みてなされたものであり、スワップアウトを禁止するプロセスを動的に変更することで、複合機のスループットの低下を防止することを目的とする。
【課題を解決するための手段】
【0017】
上述の課題を解決するために、本発明の画像処理装置は、複数種類の機能を備え、前記複数種類の機能いずれかに関するジョブを実行可能な画像処理装置であって、前記画像処理装置がジョブを実行するためのプログラムを実行可能なプログラム実行手段と、前記プログラム実行手段がプログラムを実行するための記憶領域を第1記憶装置中に確保するメモリ管理手段と、前記メモリ管理手段が前記主記憶装置中に確保した記憶領域に記憶された情報を、第2記憶装置へ退避する退避手段と、ジョブを実行する毎にジョブの実行に関する履歴を記録する履歴記録手段と、前記複数種類の機能のうち前記履歴記録手段に記録されたジョブの履歴に基づいて特定される機能に関するジョブの実行のために前記メモリ管理手段が前記第1記憶装置に確保した記憶領域を、前記第2記憶装置へ退避しない記憶領域とする退避制限手段と、を備えることを特徴とする。
【0018】
また、本発明のメモリ管理方法は、複数種類の機能を備え、前記複数種類の機能いずれかに関するジョブを実行可能であり、ジョブを実行するためのプログラムを実行可能なプログラム実行手段を備える画像処理装置のメモリ管理方法であって、前記プログラム実行手段がプログラムを実行するための記憶領域を第1記憶装置中に確保するメモリ管理工程と、前記メモリ管理工程において前記第1記憶装置中に確保された記憶領域に記憶された情報を、第2記憶装置へ退避する退避工程と、ジョブを実行する毎にジョブの実行に関する履歴を記録する履歴記録工程と、前記複数種類の機能のうち前記履歴記録工程で記録されたジョブの履歴に基づいて特定される機能に関するジョブの実行のために前記メモリ管理工程で前記主記憶装置に確保された記憶領域を、前記第2記憶装置へ退避しない記憶領域とする退避制限工程と、を備えることを特徴とする。
【発明の効果】
【0019】
本発明によれば、複合機はユーザの使用頻度に応じて最適化されたスワップ制御のもとで機能を実行することができるため、スループットの低下を防止することができる。
【発明を実施するための最良の形態】
【0020】
<第1の実施形態>
以下、本発明の実施の形態を図面に基づいて説明する。
【0021】
ここでは画像処理装置を例に説明するが、本発明は計算機システム全般に適用可能である。
【0022】
図1は本実施形態における画像処理装置の概略構成の一例を示す図である。
【0023】
本実施形態において画像処理装置1は、例えば、コピー、スキャン、ファクシミリ、プリントといった複数種類の機能を備えた複合機である。
【0024】
画像処理装置1は、イーサネット(登録商標)等のLAN(Local Area Network)400を介してパーソナルコンピュータ(PC)3、4に接続されている。
【0025】
画像処理装置1は、原稿画像の読取処理を行うリーダ部2と、画像データの印刷出力を行うプリンタ部6を有する。また、画像データや操作画面の表示などを行う液晶パネルを備えた操作部7を備える。
【0026】
コントローラ110は、上述の各構成要素を接続し、これら構成要素を制御し、画像処理装置1全体の制御を統括する。
【0027】
リーダ部2は原稿用紙を搬送する原稿給紙ユニット(部)10と、原稿画像を光学的に読み取って電気信号としての画像データに変換するスキャナユニット(部)11とを有する。
【0028】
プリンタ部6は記録用紙を収容する複数段の給紙カセットを備えた給紙ユニット(部)12と画像データを記録用紙に転写、定着するマーキングユニット(部)13を有する。プリンタ部6はさらに、印字された記録用紙にソート処理やステイプル処理を施して、外部に排出する排紙ユニット(部)14とを有している。
【0029】
図2はコントローラ110のハードウェアブロックの一例を示す図である。
【0030】
メインコントローラ32は、CPU33とバスコントローラ34と後述する各種コントローラ回路を含む機能ブロックとを内蔵する。
【0031】
メインコントローラ32は、ROMI/F35を介してROM36と接続し、DRAMI/F37を介してDRAM38と接続する。
【0032】
メインコントローラ32はさらに、コーデックI/F39を介してコーデック40と接続し、ネットワークI/F41を介してネットワークコントローラ42と接続する。
【0033】
ROM36は、メインコントローラ32のCPU33で実行される各種制御プログラムや演算データを格納する。第1記憶装置の一例であり、主記憶装置であるDRAM38は、CPU33が動作するための作業領域や画像データを蓄積するための領域として使用される。コーデック40はDRAM38に記憶されたラスターイメージデータをMH/MR/MMR/JBIGなどの周知の圧縮方式で圧縮したり、圧縮されたデータをラスターイメージに伸長する。また、コーデック40にはSRAM43が接続されており、SRAM43は前記コーデック40の一時的な作業領域として使用される。
【0034】
ネットワークコントローラ42は、ネットワークコネクタ44を介してLAN400と接続する。
【0035】
また、メインコントローラ32はスキャナバス45を介してスキャナI/F46に接続し、プリンタバス47を介してプリンタI/F48に接続する。さらに、メインコントローラ32は、PCIバス等の汎用高速バス49を介して拡張ボードを接続するための拡張コネクタ50及び入出力制御部(I/O制御部)51に接続する。
【0036】
I/O制御部51はリーダ部2やプリンタ部6との間で制御コマンドを送受信するための調歩同期式のシリアル通信コントローラ52を2チャンネル装備している。
【0037】
シリアル通信コントローラ52はI/Oバス53を介してスキャナI/F46及びプリンタI/F48に接続する。
【0038】
スキャナI/F48は、第一の調歩同期シリアルI/F54及び第一のビデオI/F55を介してスキャナコネクタ56に接続され、さらにスキャナコネクタ56はリーダ部2のスキャナユニット11(図1)に接続されている。そして、スキャナI/F46はスキャナ部11から受信した画像データに対し所望の2値化処理や、主走査方向及び/又は副走査方向の変倍処理を行う。またスキャナ部11から送られてきたビデオ信号に基づいて制御信号を生成し、スキャナバス45を介してメインコントローラ32に転送する。
【0039】
プリンタI/F48は、第2の調歩同期シリアルI/F57及び第2のビデオI/F58を介してプリンタコネクタ59に接続され、さらに該プリンタコネクタ59はプリンタ部6のマーキングユニット13(図1)に接続されている。そして、プリンタI/F48はメインコントローラ32から出力された画像データにスムージング処理などの画像処理を施して画像データをマーキングユニット13に出力する。さらにマーキングユニット13から送られたビデオ信号に基づいて、生成された制御信号をプリンタバス47に出力する。
【0040】
CPU33は、ROM36からROMI/F35を介して読み込んだプログラムを実行する。また、或いは、CPU33は、ハードディスク8または9に格納され、DRAM38にロードされたプログラムを実行する。CPU33は後述するフローチャートを処理するためのプログラム実行の主体となる。例えば、CPUは、ホストコンピュータ3、4から受信したPDL(ページ記述言語)データを解釈し、ラスターイメージデータに展開処理を行う。
【0041】
バスコントローラ34は、スキャナI/F46プリンタI/F48、その他拡張コネクタ50等に接続された外部機器から入出力されるデータの転送を制御するものであり、バス競合時のアービトレーション(調停)やDMAデータ転送の制御を行う。即ち、例えば、DRAM38とコーデック40との間のデータ転送や、スキャナユニット11からDRAM38へのデータ転送、DRAM38からマーキングユニット13へのデータ転送等は、バスコントローラ34によって制御される。
【0042】
I/O制御部51は、LCDコントローラ60及びキー入力I/F61を介してパネルI/F62と接続する。パネルI/F62は操作部7(図1)に接続する。
【0043】
また、I/O制御部51は不揮発性メモリ領域としてのフラッシュメモリ66に接続されている。またI/O制御部51はE−IDEコネクタ63を介して第2記憶装置の一例であるハードディスクドライブ(HDD)8及び9に接続する。HDD8、9には、CPU33が実行するプログラムや、画像データが記憶される二次記憶装置である。HDD8、9に記憶されたプログラムはDRAM38にロードさ、CPU33はDRAM38にロードされたプログラムを実行する。本実施形態ではHDD8、9という2台のハードディスクドライブを備える構成をとっているが、この台数に限る必要は無い。また、複数台のハードディスクドライブによってRAID(Redundant Arrays of Inexpensive Disks)を構成するようにしても良い。また、HDD8または9を、他の不揮発性記憶装置に置き換えてもよい。例えばSSD(Solid State Disk)などを用いてもよい。なお、本実施形態では、HDD8或いは9よりも、DRAM38の方がデータの読み出し、書き込みに必要な時間は短いものとする。
【0044】
さらに、I/O制御部51は、機器内で管理する日付と時刻を更新/保存するリアルタイムクロックモジュール64に接続する。
【0045】
尚、リアルタイムクロックモジュール64はバックアップ用電池65に接続し、バックアップ用電池65によりバックアップされている。
【0046】
次に図3を用いてメモリ制御に関わるプログラムのモジュール構成について説明する。
【0047】
図3は、画像処理装置のメモリ制御に関するプログラムモジュールの一例を示す図である。
【0048】
プロセス1001、メモリ管理1002、ログ解析1004、ログ管理1005はROM36もしくはHDD8、9にあらかじめ格納されたプログラムである。CPU33は、ROM36、或いはHDD8、9からプロセスの単位でDRAM38に読み込んだプログラムを実行する。
【0049】
プロセス1001は、画像処理装置を制御するために実行するプログラムの処理の単位である。プロセス1001は実際には複数存在して、CPU33が複数のプロセスを実行することで、画像処理装置1が備える様々な機能(コピー、プリント、FAX、スキャン、等)のジョブを制御することができる。
【0050】
CPU33がプロセス1001を実行するために作業用のメモリ領域が必要になるとDRAM38上の一部の領域を獲得する。以下、特に断りの無い限り、「メモリ領域」とはDRAM38上の記憶領域のことを指すものとする。CPU33は複数のプロセスを実行することができる。複数のプロセスがDRAM38上のメモリ領域を獲得することで、DRAM38の空き領域が不足した場合、あるプロセスがDRAM38上に確保した領域内のデータをハードディスク8、9に一時待避することでDRAM38の空き領域を確保する。このように、実メモリ(DRAM38)の容量を空けるためにあるメモリ領域のデータをハードディスクなどに書き出すことをスワップアウトという。一方、ハードディスクなどに書き出して退避したデータがプログラム処理の都合上必要となったときにDRAM38に書き戻すことをスワップインという。スワップアウト、スワップインによりDRAM38からHDDへ退避したりHDDからDRAM38へ書き戻すデータとしては、プログラムや、プログラムで用いられるデータが含まれる。
【0051】
なお、本実施形態ではこれらプログラムが動作するためのオペレーティングシステム(OS)としてLinux(登録商標)を用いるものとするが、仮想メモリ管理システムを持つ他のマルチタスクOSでもよい。
【0052】
本実施形態の画像処理装置のように多数の機能を有するシステムでは、モジュール間の境界としてプロセスを分ける事で、モジュールの堅牢性や再利用性を実現することが一般的に行われている。画像処理装置1は、プロセス分割を適切に行うことで、画像処理装置が持つ機能毎に対応したプロセスが存在することになる。ある機能を使用するジョブを実行する場合には、CPU33はその機能に対応したプロセスを実行する。プロセスの粒度を細分化した場合、複数のプロセスを組み合わせて単一の機能を実現する。
【0053】
プロセス1001はジョブを実行するたびにログ管理1005へ通知する。
【0054】
メモリ管理1002はプロセス1001へDRAM38上に確保可能なメモリ領域を提供する。
【0055】
プロセス1001は実行に必要なメモリ領域をメモリ管理1002から獲得する。
【0056】
メモリ管理1002が提供するDRAM38上のメモリ領域は、スワップアウト禁止のメモリ領域と通常のメモリ領域との2種類がある。
【0057】
本実施形態では、便宜上、スワップアウトを禁止したメモリ領域を高速メモリ領域、スワップアウトを禁止していない通常のメモリ領域を低速メモリ領域とする。高速メモリ領域はHDD8または9への退避制限がなされた領域となる。
【0058】
メモリ管理1002はOSが管理するメモリ領域を、プロセスがメモリ領域を獲得するためにOS(Linux)が用意したmmapシステムコールなどにより低速メモリ領域を作成する。
【0059】
メモリ管理1002は通常に獲得したメモリ領域である低速メモリに対して、OSにスワップ禁止領域であることを通知するための機能であるmlockシステムコールを用いて当該領域にスワップ禁止属性を付加すると、スワップアウト禁止の高速メモリを作成する。
【0060】
OSはDRAM38に空き領域が無い(メモリ枯渇)を検知すると、メモリ領域の中からスワップアウトを実施するのに適したメモリ領域を検索する。スワップアウト禁止属性が設定された高速メモリはOSがスワップ対象メモリ領域を検索する時にスワップ対象から除外されるため、スワップアウトされることはない。一方、スワップアウト禁止属性を設定しない通常の低速メモリは、OSがスワップ対象を検索する時に対象になるため、OSの判断でスワップアウトされる場合がある。高速メモリと低速メモリのサイズ配分はシステム設計段階で一意に定める事ができないため、メモリ管理1002は要求に応じて高速メモリを作り出しプロセス1001に提供する。
【0061】
メモリ管理1002は前記2種類のメモリ領域を、高頻度プロセスリスト1003に基づいて動的に設定する。
【0062】
メモリ管理1002は獲得元のプロセス名を確認する事で高頻度プロセスか否かを判断する。実際には、メモリ管理1002は、ライブラリプログラムとしてプロセス1001に内包された形で動作するため、メモリ管理1002は自分のプロセス名をOSに問い合わせる事でメモリ領域要求元のプロセス名を特定する。
【0063】
高頻度プロセスリスト1003はログ解析1004により高頻度に実行されるプロセスであると特定されたプロセスを登録するリストであり、具体例を図7に示す。高頻度プロセスリスト1003は画像処理装置1のHDD8または9、或いはフラッシュメモリ66のいずれかに記憶される。
【0064】
図7の高頻度プロセスリストには、高頻度に実行されるプロセス名がリストされる。実際にはプロセス名の文字列の配列として表現される。高頻度プロセスリスト1003の管理方法としては更新のたびに古いものを破棄する方法と、更新の時に古い高頻度プロセスを残す方法が有り、ユーザや管理者が指定可能である。
【0065】
古いものを破棄する構成ではログの解析を実施するたびに、その時点での高頻度プロセスで高頻度プロセスリスト1003を上書きする。この場合は、ユーザの使用状況の変動に即座に対応してメモリ管理を実現できる反面、変則的な突発作業があった場合に一時的に効率の悪いメモリ管理をしてしまう可能性がある。一方、古いものを残す構成では高頻度プロセスリスト1003への登録を世代管理しておいて、登録の処理では新規の高頻度プロセスと1世代前の登録分を合わせたものを高頻度プロセスリスト1003へ登録する。
【0066】
ログ解析1004はジョブログ1006の解析とジョブプロセステーブル1007の確認をする事で高頻度プロセスを特定し、高頻度プロセスリスト1003へ登録する。
【0067】
使用状況を反映した高頻度プロセスはユーザの使用状況に応じて構成されるが、未使用のシステムに対しては使用履歴が存在しない。この時点での使用に備えて、設計時に選択されたプロセスを高頻度プロセスリストとして作成しておくようにしてもよい。ログ解析1004は予め定められたタイミング、或いは画像処理装置のユーザや管理者が任意に設定したタイミングで実施される。設定としては毎ジョブ実行後、指定時刻が選択可能である。
【0068】
毎ジョブ実行後に解析を実施すると、ユーザは常に最新の使用状況を反映したメモリ制御が実施された環境で動作できる。
【0069】
一方で、別の通常ジョブの実行と同時に解析が行われる可能性が高いため、通常ジョブの実行速度が低下してしまうことがある。
【0070】
指定時刻に解析を実施すると、ユーザは通常ジョブの実行の妨げにならない時間帯を指定する事ができるため、通常ジョブの実行速度を低下させる事なく機能を使用する事ができる。
【0071】
一方で、例えば解析を夜間実行した場合などでは、ユーザが使用状況に最適化されたメモリ制御が実施された環境で動作できるのは、翌日以降となる。例えば、日単位で業務プロセスが変動する環境では適切にスループットを改善できない可能性がある。
【0072】
ログ管理1005はプロセス1001からの通知によりジョブが実行された事をジョブログ1006に記録する。
【0073】
ジョブログ1006はログ管理1005から登録されたジョブ実行履歴を記録する図8に示すようなリストである。ジョブログ1006は画像処理装置1のHDD8または9、或いはフラッシュメモリ66のいずれかに記憶される。実際にはジョブ名の文字列の配列として表現される。
【0074】
ジョブログ1006は、一般的なジョブ履歴としての機能を果たすための付加的な情報を含んでいてもかまわないが、本実施形態では使用しないものとする。付加的な情報は例えば、ジョブ実行時刻などが含まれる。
【0075】
ジョブプロセステーブル1007はジョブの種類(画像処理装置1の備える機能の種類)とプロセスの対応関係を保持する図9に示すようなテーブルである。ジョブプロセステーブル1007は画像処理装置1のHDD8または9、或いはフラッシュメモリ66のいずれかに記憶される。ジョブプロセステーブルは、画像処理装置1の持つ機能とプロセスとを対応付けたジョブプロセス情報の一例である。1つのジョブは複数のプロセスが連携し合うことにより実行される。ジョブプロセステーブル1007はシステムのモジュール構造を設計する際に一意に求まるため、設計時に作成してシステム内に静的な情報として保持される。
【0076】
ログ解析1004はジョブログ1006を参照して、高頻度に実行されるジョブの種類を特定することができる。そして、ジョブプロセステーブル1007を参照して高頻度に実行されるジョブの実行に必要なプロセスを特定することができ、これを高頻度に実行されるプロセスとして特定し、高頻度プロセスリスト1003へ登録する。高頻度プロセスリスト1003はプロセスの実行頻度を示す情報となる。
【0077】
次に、画像処理装置がジョブを実行するために起動されたプロセス1001がメモリ領域を獲得する処理について説明する。
【0078】
図4は、画像処理装置1のCPU33が実行するプロセスのメモリ領域獲得処理の一例を示すフローチャートである。本フローチャートは画像処理装置1のCPU33が実行する。
【0079】
ステップ2001で本フローチャートを開始する。メモリ領域の獲得はプロセスやジョブが動作する任意のタイミングで起こりえるため、本フローチャートはプロセスが起動している任意のタイミングで開始する。
【0080】
プロセス1001がメモリ管理1002にメモリ領域を要求する(ステップ2002)。
【0081】
ステップ2003で、メモリ領域を要求されたメモリ管理1002は、要求元プロセスのプロセス名を取得する。プロセス名は文字列形式のデータとして取得する。
【0082】
ステップ2004で、メモリ管理1002は高頻度プロセスリスト1003を読み込む。高頻度プロセスリスト1003は文字列データの配列である。
【0083】
ステップ2005で、メモリ管理1002は、ステップ2002でメモリ領域を要求したプロセス1001が高頻度プロセスであるか否かを判断する。具体的には、ステップ2002でメモリ領域を要求したプロセス1001がステップ2003で取得した高頻度プロセスリストに登録されていれば当該プロセスは高頻度プロセスであると判断し、そうでなければ高頻度プロセスではないと判断する。実際にはステップ2003で得られた文字列と一致するものが、ステップ2004で得られた配列に存在するか確認する処理となる。
【0084】
ステップ2005で、ステップ2002でメモリ領域を要求したプロセス1001が高頻度プロセスであると判断した場合はステップ2006へ進む。
【0085】
ステップ2006で、メモリ管理1002は高速メモリを割り当て、メモリ領域を要求したプロセス1001へ割り当てたメモリ領域を提供する。
【0086】
一方、ステップ2005で、ステップ2002でメモリ領域を要求したプロセス1001が高頻度プロセスでないと判断した場合はステップ2009へ進む。
【0087】
ステップ2009、メモリ管理1002は低速メモリを割り当て、メモリ領域を要求したプロセス1001へ割り当てたメモリ領域を提供する。
【0088】
ステップ2007で、プロセス1001はメモリ管理1002から提供されたメモリ領域を獲得する。
【0089】
ステップ2008でプロセス1001はメモリ領域獲得に成功している事を条件にメモリ領域獲得フローを終了する。
【0090】
これでプロセス1001はDRAM38上に領域を確保することができ、CPU33はプロセス1001を実行することができる。
【0091】
そして、プロセス1001は獲得するメモリ領域がスワップ禁止か否かにより処理を切り替える必要はなく、状況に応じて自動的に設定されたメモリ領域を使用する事ができる。
【0092】
次に、画像処理装置のジョブの実行に伴いCPU33が実行したプロセス1001がジョブログを作成する処理について説明する。
【0093】
図5は、画像処理装置1のCPU33が実行するプロセスがログを作成する処理の一例を示すフローチャートである。本フローチャートはCPU33が実行する。
ステップ3001で本フローチャートを実行開始する。ジョブの実行は任意のタイミングで起こりえるため、ジョブの実行に伴い起動するプロセスも任意のタイミングで実行することになり、ログ作成処理のフローも任意のタイミングで実行することになる。
【0094】
ステップ3002でプロセス1001はジョブの実行を終了する。
【0095】
ステップ3003でプロセス1001はジョブの終了をログ管理1005へ通知する。実際にはジョブの処理の最後でログ管理1005へ通知する処理を実施することで、どのジョブが実行されたかを識別して通知する事ができる。
【0096】
ステップ3004で、ログ管理1005はプロセス1001から通知されたジョブ終了の通知に基づいて、画像処理装置1が実行したジョブのログ(履歴)をジョブログ1006へ履歴記録する。ジョブログ1006が記録するジョブログは図8に示すような情報であり、ジョブログはHDD8または9に記録される。
【0097】
ステップ3005でジョブのログを記録できていることを条件に本フローを終了する。
【0098】
次に、ログ解析1004が高頻度プロセスリストを作成する処理であるログ解析処理について説明する。
【0099】
図6は、本実施形態の画像処理装置における高頻度プロセスリスト作成処理の一例を示すフローチャートである。本フローチャートはCPU33が実行する。
【0100】
ステップ4001で本フローチャートを開始する。本フローチャートは予め設定されたタイミングで開始する。例えば、所定時間おきや、所定回数ジョブを実行した後などが考えられる。これらタイミングは画像処理装置1のユーザや管理者が設定するものとし、設定内容はHDD8または9、或いはフラッシュメモリ66に記憶されているものとする。或いは、予め設定されたタイミング以外に、操作部7を介してユーザや管理者から受け付けた指示に基づいて本フローチャートを実行開始するようにしてもよい。
【0101】
ステップ4002でログ解析1004はジョブログ1006の解析処理を開始する。
【0102】
ステップ4003でログ解析1004はジョブログ1006を読み込む。
【0103】
ステップ4004でログ解析1004は読み込んだジョブログ1006を集計して、実行の頻度が高いジョブの種類を特定する。実際にはジョブログ1006にはジョブの種類を示すジョブ名名の文字列が格納されていて、全てのジョブ名のジョブログ1006での出現回数を数える事でジョブログの集計を行う。そして、ジョブログの集計結果から高頻度ジョブを特定する。高頻度ジョブの特定の仕方としては、例えば、ジョブログの集計結果のうち、所定数以上の出現回数であるジョブを高頻度ジョブとする。また、或いはジョブログの集計結果のうち、最上位、あるいは所定順位以上のジョブを高頻度ジョブとする。
【0104】
そして、ステップ4005で、ログ解析1004はジョブプロセステーブル1007を読み込む。そして、ステップ4006に進み、ログ解析1004は高頻度ジョブに対応するプロセスを特定して高頻度プロセスと判断する。実際にはステップ4004で特定した高頻度ジョブのジョブ名をステップ4005で読み込んだジョブプロセステーブル1007の中から探し、対応する一つ以上のプロセス名を取得する処理を行う。そして、ステップ4007へ進み、ログ解析1004はステップ4006で特定した高頻度プロセスを高頻度プロセスリスト1003へ登録する。実際にはステップ4006で特定した一つ以上のプロセス名で高頻度プロセスリスト1003を上書きする。
【0105】
図7は高頻度プロセスリスト1003の一例を示したものである。高頻度プロセスリスト1003ではシステム内で一意なプロセス名が文字列データとしてリスト形式で表現される。
【0106】
図8は本実施形態におけるジョブログの一例を示したものである。
【0107】
ジョブログ1006には、画像処理装置1内でジョブの種類を一意に特定するジョブ名と、該当ジョブが実行された時刻がそれぞれ文字列としてリスト形式で表現される。図8の例では、コピージョブ(copy)802、808と、ファクシミリ送信ジョブ(fax_tx)804と、プリントジョブ(pdl)806とがジョブログとして記録されている。もちろん、画像処理装置1が他の種類のジョブを実行すれば、図8に示した以外の種類のジョブ名がジョブログ1006に記録される。
【0108】
図9は本実施形態におけるジョブプロセステーブルの一例を示したものである。
【0109】
ジョブプロセステーブル1007には、画像処理装置1内でジョブの種類を一意に特定するジョブ名と、ジョブ名で特定されるジョブを実行するために必要となる、画像処理装置1内で一意なプロセス名の対応関係がそれぞれ文字列として表形式で表現される。図9の例では、ジョブ名としてコピージョブ(copy)、プリントジョブ(pdl)が登録されており、例えば、コピージョブに対応するプロセス名としては、scan process、print process、imaging processの3つのプロセスが記録されている。なお、図9では図示していないが、ジョブプロセステーブル1007には、コピージョブ、プリントジョブ以外にも、画像処理装置1が実行可能な種類のジョブの各々について、ジョブとプロセスとの対応関係を記録している。
【0110】
以上、本実施形態によれば、画像処理装置1が実行したジョブの種類毎の頻度によって、高頻度に実行するプロセスを特定し、該特定したプロセスに対しては高速メモリ領域を提供する。これにより、当該プロセスがスワップアウトすることを防止することができるので画像処理装置1のスループットの低下を防止することができる。そして、画像処理装置1の使用状況によって実行するジョブの種類毎の頻度に変化が生じた場合でも、それに応じて高頻度プロセスを適宜特定することができ、高速メモリ領域を提供する対象となるプロセスを動的に変更することができる。これにより、ユーザは使用状況に応じて最適化されたメモリ管理機能のもと、最適なスループットで画像処理装置1の機能を使用する事ができる。
【0111】
<第2の実施形態>
第1の実施形態では画像処理装置が実行したジョブの種類毎の実行頻度によって高頻度プロセスを特定する構成を説明した。
【0112】
オフィス内において、画像処理装置は複数のユーザによって共同で使用されることが多い。しかし、画像処理装置が提供する複数の機能(ジョブの種類)のうち、どの機能が頻繁に用いられるかはユーザによって異なることが多い。それは、担当する業務の内容がユーザ毎に異なるので、ユーザが画像処理装置に対して求める機能もユーザ毎に異なるからである。
【0113】
第2の実施形態では、画像処理装置を共有使用する複数のユーザ間で業務が異なる場合にユーザ毎に高頻度プロセスを最適化する構成を説明する。
【0114】
第2の実施形態において、画像処理装置1のハード構成、メモリ管理に関するプログラム構成は、少なくとも図1、図2に示したものと同一の構成を備えているものとする。図1、図2に無い構成を第2の実施形態の画像処理装置1が備えている場合にはその都度説明する。
【0115】
ユーザは、操作部7を操作してユーザ情報(例えば、ユーザIDとパスワード)を入力する。画像処理装置1は、パネルI/F62を介してユーザ情報を受け付け、CPU33がユーザ情報をチェックするログイン処理(ユーザ認証処理)を実行した上で、複合機の機能を使用する。なお、画像処理装置1がログイン処理を行う場合には、画像処理装置1の外部のディレクトリサーバ(不図示)へ問い合わせを行い、ディレクトリサーバでの認証結果を受信するようにしてもよい。また、ユーザがユーザ情報を操作部7を用いて入力する代わりに、I/O制御部51に接続されるICカードリーダ(不図示)にユーザ情報が記録されたICカードを読み取らせるようにしてもよい。
【0116】
ログイン情報はジョブを表現するデータに含まれるため、ログイン後は処理の任意のステップでログイン情報を参照する事ができる。
【0117】
プロセス1001は実行するジョブがどのユーザにより実行されたのか、ログイン情報を参照する事で識別できる。
【0118】
図10は第2の実施形態における画像処理装置のメモリ制御に関するプログラムモジュールの一例を示す図である。なお、図10において、図3と同一の構成については図3と同一の符号を付し、説明を省略する。
【0119】
図10において、図3と異なる部分は、ジョブログ1006の代わりにユーザ毎ジョブログ1102を備えている点である。ユーザ毎ジョブログ1102は、画像処理装置1にログインしたユーザ毎にジョブログを管理している。
【0120】
そして、図10において、図3の高頻度プロセスリスト1003の代わりにユーザ毎高頻度プロセスリスト1100を備えている。ユーザ毎高頻度プロセスリスト1100は、ログ解析1004がユーザ毎ジョブログ1102を解析した結果として、高い頻度で実行するプロセスである高頻度プロセスを、ユーザ毎に管理している。
【0121】
画像処理装置1に新たにユーザがログインすると、当該ユーザ用のジョブログがユーザ毎ジョブログ1102に新規に追加され、当該ユーザ用の高頻度プロセスリストがユーザ毎高頻度プロセスリスト1100に新規に追加される。
【0122】
ログインによりCPU33によりユーザ情報が識別されたジョブの実行履歴(ログ)がユーザ毎に管理されたユーザ毎ジョブログ1102に記録され、ユーザ毎ジョブログ1102を解析した結果がユーザ毎高頻度プロセスリスト1100に記録される。
【0123】
プロセス起動時のメモリ領域の割り当てを行う際に使われる高頻度プロセスリストは、ユーザ毎高頻度プロセスリスト1100のうち、そのプロセスを起動するタイミングでログインしているユーザの高頻度プロセスリストであり、これを有効高頻度プロセスリストとする。
【0124】
第2の実施形態における、画像処理装置のCPUが実行するプロセスのメモリ領域獲得処理について説明する。
【0125】
第2の実施形態におけるメモリ領域獲得処理は、第1の実施形態における図4のフローチャートの処理とほぼ同様であるが、図4のフローチャートとの違いを説明する。
【0126】
即ち、第2の実施形態では、ステップ2004でメモリ管理1002はプロセスを起動してメモリ領域を獲得する際にログインしているユーザに対応した高頻度プロセスリストである有効高頻度プロセスリストを読み込む。これにより、ログインしているユーザ特有の画像処理装置1の使用スタイルに適合した高頻度プロセスを特定することができ、当該プロセスに対してメモリ管理1002は高速メモリを割り当てることができる。
【0127】
次に、第2の実施形態における、画像処理装置のジョブログ作成処理について説明する。
【0128】
第2の実施形態におけるジョブログ作成処理は、第1の実施形態における図5のフローチャートの処理とほぼ同様であるが、図5のフローチャートとの違いを説明する。
【0129】
第2の実施形態では、ステップ3003でプロセス1001はログ管理1005へジョブの終了を通知するとともに、どのユーザが実行したジョブであったのか、即ち、ジョブを実行した時点で画像処理装置1にログインしていたユーザのユーザ情報を通知する。
【0130】
そして、ステップ3004でログ管理1005は通知されたジョブの終了ログを、ユーザ毎ジョブログ1102中の通知されたユーザ情報に対応するユーザのジョブログへ記録する。
【0131】
次に図11のフローチャートを用いて、ユーザがログインした時に有効高頻度プロセスリストを更新するフローを説明する。図11のフローチャートの各ステップは画像処理装置1のCPU33が実行する。
【0132】
ステップ5001で処理が開始する。
【0133】
ステップ5002において、ユーザからのログインのための操作を受け付け、ユーザ情報を特定し、ログイン処理を行う。ログイン処理は画像処理装置1が稼働中の任意のタイミングで実行する。
【0134】
ステップ5003でユーザ毎高頻度プロセスリスト1100のうち、ログインしたユーザに対応した高頻度プロセスリストを特定する。
【0135】
ステップ5004で、ステップ5003で特定された高頻度プロセスリストを有効高頻度プロセスリストとして定義する。
【0136】
ステップ5005で、有効高頻度プロセスリストを更新した事を条件に有効高頻度プロセスリストを更新するフローは終了する。
【0137】
図11のフローチャートを実行することによって、ログインしたユーザに適した有効高頻度プロセスリストを特定することができる。そして、メモリ管理1002が有効高頻度プロセスリストを参照して高頻度プロセスを特定し、当該高頻度プロセスをスワップアウトさせないメモリ領域(高速メモリ領域)に割り当てることができる。これにより、画像処理装置1はログインしたユーザに最適化したメモリ管理機能のもと、最適なスループットでジョブを実行することができる。
【0138】
<他の実施形態>
本発明は、前述した実施形態の各機能を実現するための制御プログラムを、システム若しくは装置に対して直接または遠隔から供給し、そのシステム等に含まれるコンピュータや画像処理装置が該供給されたプログラムコードを読み出して実行することによっても達成される。
【0139】
従って、本発明の機能・処理をコンピュータや上述の装置で実現するために、該コンピュータや上述の装置にインストールされる制御プログラムのプログラムコード自体も本発明を実現するものである。つまり、上記機能・処理を実現するための制御プログラム自体も本発明の一つである。
【0140】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
【0141】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、記録媒体としては、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM、DVD−R)、USBメモリなどもある。
【0142】
また、プログラムは、クライアントコンピュータのブラウザを用いてインターネット/イントラネットのウェブサイトからダウンロードしてもよい。すなわち、該ウェブサイトから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードしてもよいのである。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるウェブサイトからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるサーバも、本発明の構成要件となる場合がある。
【0143】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布してもよい。この場合、所定条件をクリアしたユーザにのみ、インターネット/イントラネットを介してウェブサイトから暗号化を解く鍵情報をダウンロードさせ、その鍵情報で暗号化されたプログラムを復号して実行し、プログラムをコンピュータにインストールしてもよい。
【0144】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現されてもよい。なお、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ってもよい。もちろん、この場合も、前述した実施形態の機能が実現され得る。
【0145】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ってもよい。このようにして、前述した実施形態の機能が実現されることもある。
【図面の簡単な説明】
【0146】
【図1】画像処理装置の概略構成の一例を示す図である。
【図2】画像処理装置のコントローラ部のハードウェアブロックの一例を示す図である。
【図3】画像処理装置のメモリ制御に関するプログラムモジュールの一例を示す図である。
【図4】画像処理装置のCPUが実行するプロセスのメモリ領域獲得処理の一例を示すフローチャートである。
【図5】画像処理装置のCPUが実行するプロセスがログを作成する処理の一例を示すフローチャートである。
【図6】画像処理装置における高頻度プロセスリスト作成処理の一例を示すフローチャートである。
【図7】高頻度プロセスリストの一例を示す図である。
【図8】ジョブログの一例を示す図である。
【図9】ジョブプロセステーブルの一例を示す図である。
【図10】第2の実施形態における画像処理装置のメモリ制御に関するプログラムモジュールの一例を示す図である。
【図11】有効高頻度プロセスリストを更新する処理を示すフローチャートである。
【符号の説明】
【0147】
1 画像処理装置
8 HDD
9 HDD
33 CPU
38 DRAM
1001 プロセス
1002 メモリ管理モジュール
1003 高頻度プロセスリスト
1004 ログ解析モジュール
1005 ログ管理モジュール
1006 ジョブログ
1007 ジョブプロセステーブル

【特許請求の範囲】
【請求項1】
複数種類の機能を備え、前記複数種類の機能いずれかに関するジョブを実行可能な画像処理装置であって、
前記画像処理装置がジョブを実行するためのプログラムを実行可能なプログラム実行手段と、
前記プログラム実行手段がプログラムを実行するための記憶領域を第1記憶装置中に確保するメモリ管理手段と、
前記メモリ管理手段が前記主記憶装置中に確保した記憶領域に記憶された情報を、第2記憶装置へ退避する退避手段と、
ジョブを実行する毎にジョブの実行に関する履歴を記録する履歴記録手段と、
前記複数種類の機能のうち前記履歴記録手段に記録されたジョブの履歴に基づいて特定される機能に関するジョブの実行のために前記メモリ管理手段が前記第1記憶装置に確保した記憶領域を、前記第2記憶装置へ退避しない記憶領域とする退避制限手段と、を備えることを特徴とする画像処理装置。
【請求項2】
前記プログラム実行手段は複数のプログラムを実行可能であり、
前記メモリ管理手段は前記プログラム実行手段が実行する複数のプログラムの各々に対応して前記第1記憶装置中に複数の記憶領域を確保し、
前記退避制限手段は前記複数の記憶領域のうち、前記特定された機能に関するジョブを実行するために確保した記憶領域を、前記第2記憶装置へ退避しない記憶領域とすることを特徴とする、請求項1に記載の画像処理装置。
【請求項3】
前記複数種類の機能の各々に対して機能に関するジョブを実行するために前記プログラム実行手段が実行するプログラムを対応付けた情報である対応付け情報を記憶する対応付け情報記憶手段を更に備え、
前記退避制限手段は、前記対応付け情報記憶手段を参照して、前記履歴記録手段に記録されたジョブ履歴から得られるジョブの実行頻度に基づいて特定された種類の機能に対応付けられたプログラムの実行のために確保された前記第1記憶装置中の記憶領域を、前記第2記憶装置へ退避しない記憶領域とすることを特徴とする、請求項1に記載の画像処理装置。
【請求項4】
前記履歴記録手段が記録したジョブの履歴と、前記対応付け情報記憶手段が記憶する対応付け情報とに基づいてプログラムの実行頻度を示すプログラム実行頻度情報を生成するプログラム頻度情報生成手段を更に備え、
前記退避制限手段は、前記プログラム実行頻度情報に基づいて特定されたプログラムのために確保された前記第1記憶装置中の記憶領域を、前記第2記憶装置へ退避しない記憶領域とすることを特徴とする、請求項3に記載の画像処理装置。
【請求項5】
前記プログラム頻度情報生成手段は、予め定められたタイミングで前記プログラム実行頻度情報を更新することを特徴とする、請求項4に記載の画像処理装置。
【請求項6】
前記画像処理装置にログインするユーザを認証するユーザ認証手段を更に備え、
前記履歴記録手段はジョブの実行に関する履歴として前記ユーザ認証手段が認証しジョブの実行を指示したユーザを特定する情報を記録し、
前記プログラム頻度情報生成手段は、ユーザ認証手段がユーザを認証するごとに認証されたユーザに関するジョブの履歴と前記対応付け情報とに基づいて前記プログラム実行頻度情報を更新することを特徴とする、請求項5に記載の画像処理装置。
【請求項7】
前記第1記憶装置は主記憶装置であり、前記第2記憶装置は二次記憶装置であることを特徴とする、請求項1乃至請求項6のいずれか1項に記載の画像処理装置。
【請求項8】
複数種類の機能を備え、前記複数種類の機能いずれかに関するジョブを実行可能であり、ジョブを実行するためのプログラムを実行可能なプログラム実行手段を備える画像処理装置のメモリ管理方法であって、
前記プログラム実行手段がプログラムを実行するための記憶領域を第1記憶装置中に確保するメモリ管理工程と、
前記メモリ管理工程において前記第1記憶装置中に確保された記憶領域に記憶された情報を、第2記憶装置へ退避する退避工程と、
ジョブを実行する毎にジョブの実行に関する履歴を記録する履歴記録工程と、
前記複数種類の機能のうち前記履歴記録工程で記録されたジョブの履歴に基づいて特定される機能に関するジョブの実行のために前記メモリ管理工程で前記主記憶装置に確保された記憶領域を、前記第2記憶装置へ退避しない記憶領域とする退避制限工程と、を備えることを特徴とする画像処理装置のメモリ管理。
【請求項9】
複数種類の機能を備え、前記複数種類の機能いずれかに関するジョブを実行可能であり、ジョブを実行するためのプログラムを実行可能なプログラム実行手段を備える画像処理装置にメモリ管理方法を実行させるための制御プログラムであって、前記メモリ管理方法は、
前記プログラム実行手段がプログラムを実行するための記憶領域を第1記憶装置中に確保するメモリ管理工程と、
前記メモリ管理工程において前記第1記憶装置中に確保された記憶領域に記憶された情報を、第2記憶装置へ退避する退避工程と、
ジョブを実行する毎にジョブの実行に関する履歴を記録する履歴記録工程と、
前記複数種類の機能のうち前記履歴記録工程で記録されたジョブの履歴に基づいて特定される機能に関するジョブの実行のために前記メモリ管理工程で前記第1記憶装置に確保された記憶領域を、前記第2記憶装置へ退避しない記憶領域とする退避制限工程と、を備えることを特徴とする制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2010−3076(P2010−3076A)
【公開日】平成22年1月7日(2010.1.7)
【国際特許分類】
【出願番号】特願2008−160769(P2008−160769)
【出願日】平成20年6月19日(2008.6.19)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】