(57)【要約】【課題】ＣＰＵに過大な負荷がかかるのを抑制しつつ、全体的な処理速度を高める。【解決手段】メモリ管理部１０２は、優先度テーブル１０３を参照して、メモリ領域の獲得要求元のプロセス１０１がユーティリティプロセスである場合は、それが関連優先プロセスを持つか否かを判別する。関連優先プロセスを持たない場合は、獲得要求元のプロセス１０１に低速メモリを割り当てる。獲得要求元のプロセス１０１が関連優先プロセスを持つ場合は、関連優先プロセスに関わるＣＰＵ３３の負荷を確認し、ＣＰＵ負荷が、優先度テーブル１０３で規定されている関連優先プロセスの負荷閾値を超えているときに限り、獲得要求元のプロセス１０１に高速メモリを割り当て、それ以外のときは、低速メモリを割り当てる。【選択図】図６
2010198304.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセスを実行可能なプロセッサと１次記憶装置と２次記憶装置とを備える情報処理装置であって、
前記プロセッサが実行するプロセスから前記１次記憶装置のメモリ領域の獲得要求を受け付ける受付手段と、
前記受付手段が受け付けた獲得要求を行ったプロセスが、他のプロセスと連携して実行可能なユーティリティプロセスであるか否かを判定する判定手段と、
前記判定手段が、前記受付手段が受け付けた獲得要求を行ったプロセスが、他のプロセスと連携して実行可能なユーティリティプロセスであると判定し、かつ、前記プロセッサが実行している前記ユーティリティプロセスと連携したプロセスが、スワップアウトを制限する優先プロセスであり、当該優先プロセスのプロセッサ使用率が所定の値よりも大きい場合、前記ユーティリティプロセスのスワップアウトを制限するように制御する制御手段と、を備えることを特徴とする情報処理装置。
【請求項２】
前記判定手段は、前記プロセッサが実行可能なプロセスが、前記ユーティリティプロセスであるか、前記優先プロセスであるか、スワップアウトを制限しない通常プロセスであるかを規定する属性情報に基づいて、前記受付手段が受け付けた獲得要求を行ったプロセスがユーティリティプロセスであるか否かを判定することを特徴とする、請求項１に記載の情報処理装置。
【請求項３】
前記１次記憶装置は、スワップアウトが制限されている制限領域と、スワップアウトが制限されていない通常領域とを含み、前記制御手段は、前記優先プロセスと、前記スワップアウトを制限すべきユーティリティプロセスとに対して前記１次記憶装置の前記制限領域に含まれるメモリ領域を割り当てることを特徴とする、請求項１に記載の情報処理装置。
【請求項４】
前記制御手段は、前記判定手段が、前記受付手段が受け付けた獲得要求を行ったプロセスが、他のプロセスと連携して実行可能なユーティリティプロセスであると判定し、かつ、前記プロセッサが実行している前記ユーティリティプロセスと連携したプロセスが、スワップアウトを制限する優先プロセスではない場合、前記ユーティリティプロセスのスワップアウトを制限しないように制御することを特徴とする、請求項１に記載の情報処理装置。
【請求項５】
前記１次記憶装置は、スワップアウトが制限されている制限領域と、スワップアウトが制限されていない通常領域とを含み、前記制御手段は、前記優先プロセスと、前記スワップアウトを制限しないユーティリティプロセスとに対して前記１次記憶装置の前記通常領域に含まれるメモリ領域を割り当てることを特徴とする、請求項１に記載の情報処理装置。
【請求項６】
複数のプロセスを実行可能なプロセッサと１次記憶装置と２次記憶装置とを備える情報処理装置における仮想記憶管理方法であって、
前記プロセッサが実行するプロセスから前記１次記憶装置のメモリ領域の獲得要求を受け付ける受付工程と、
前記受付工程で受け付けた獲得要求を行ったプロセスが、他のプロセスと連携して実行可能なユーティリティプロセスであるか否かを判定する判定工程と、
前記受付工程にて受け付けた獲得要求を行ったプロセスが、他のプロセスと連携して実行可能なユーティリティプロセスであると前記判定工程で判定され、かつ、前記プロセッサが実行している前記ユーティリティプロセスと連携したプロセスが、スワップアウトを制限する優先プロセスであり、当該優先プロセスのプロセッサ使用率が所定の値よりも大きい場合、前記ユーティリティプロセスのスワップアウトを制限するように制御する制御工程と、を備えることを特徴とする仮想記憶管理方法。
【請求項７】
請求項６記載の仮想記憶管理方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置において１次記憶装置と２次記憶装置とを用いてプロセスの仮想記憶を行う技術に関する。
【背景技術】
【０００２】
従来、コピー、プリント、ファクシミリ等、多様な機能を有する画像処理装置等の複合機や計算機システム等の情報処理装置において、仮想記憶方式を採用し、メモリ領域のスワップを制御する仮想記憶管理手法が知られている。
【０００３】
仮想記憶方式を採用する手法においては、２次記憶装置を利用して、１次記憶装置における実メモリの容量以上のメモリ領域を管理することができる。実メモリ容量以上のメモリ領域を使用する場合は、メモリ領域の内容を一時的に２次記憶装置であるＨＤＤ（ハードディスク）等の記憶領域へ待避（スワップアウト）するスワップ処理を行う。
【０００４】
プロセスの実行に際し、該プロセスをスワップアウトしたメモリ領域を再び使用する場合は、２次記憶装置の記憶領域から実メモリのメモリ領域へプロセスを再度転送する。そのため、スワップアウトしたメモリ領域を使用するプロセスについては、転送オーバーヘッドによって動作開始が遅くなる。
【０００５】
装置全体のスループットを改善するために、既に一部のメモリ領域の内容がスワップアウトされているプロセスのメモリ領域を優先的にスワップアウトの対象とすることで、動作の遅いプロセスを減らす技術が知られている（下記特許文献１）。
【０００６】
ところで、特定のメモリ領域をスワップ対象にしない機能が、Ｌｉｎｕｘ（登録商標）等の汎用ＯＳで採用されている。メモリ容量の少ないシステムにおいても、優先的に動かす必要のあるプロセスが使用するメモリ領域をスワップアウト禁止対象にすることで、緊急プロセスの動作保証や重要機能の優先実行を実現することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−２２７１８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
デジタル複写機等のような情報処理装置においては、機能が年々多様化しているため、搭載されるプログラム（プロセス）の量も増加し続けている。全てのプロセスを同時に実行してもスワップが発生しないような大容量のメモリ領域を確保するデバイス構成は、コストの観点から現実的でない。従って、いずれかのプロセスの使用するメモリ領域の内容をスワップアウトして動作させる必要がある。
【０００９】
高頻度に実行されるプロセスをスワップアウトしないようにして優先的に実行可能にすることで、システム全体のスループットを向上させることができる。
【００１０】
ここで、プロセスの種類によって、スワップアウトの対象とされない度合い（実メモリに優先的に残される度合い）である「メモリ優先度」を属性として付すとする。すなわち、通常プロセスと、通常プロセスに比し優先的にスワップアウトの対象とされることがない優先プロセスとに、属性を分けるとする。また、他のプロセスと連携して実行されることがあるプロセスをユーティリティプロセスとする。ユーティリティプロセスのうち、通常プロセス、優先プロセスのいずれとも連携して実行され得るものについては、メモリ優先度を一律に決めることができない。
【００１１】
すなわち、ユーティリティプロセスのメモリ優先度を一律に下げ過ぎると、それと関連する優先プロセスについて、ユーティリティプロセスと連携する部分がスワップアウトされた状態が多くなる。そのため、スワップ処理が発生することが多くなって、結果的に、優先プロセスの処理が遅くなることが多くなってしまう。
【００１２】
一方、ユーティリティプロセスの優先度を一律に上げ過ぎると、それと関連する通常プロセスについて、ユーティリティプロセスと連携する部分が実メモリに置かれた状態となることが多くなる。そのため、通常プロセス処理の優先度が不必要に上がってしまう。
【００１３】
ＣＰＵ（プロセッサ）が単位時間あたりに実行可能な処理数には限界があるため、多数の処理を優先的に実行しようとすると、優先的に実行したい処理が実行可能な処理数の限界を超えてしまう。すなわち、ＣＰＵが過大な負荷を負って、いわゆるＣＰＵ資源の枯渇状態になる。ＣＰＵ資源が枯渇すると、処理の待合せ時間等が長くなるため、システム全体の処理が遅くなり、結果的に真に優先すべきプロセスの処理まで遅くなってしまう。
【００１４】
このように、ユーティリティプロセスの優先度を一律に定めるだけでは、装置の全体的な処理速度が、状況によって低くなる場合があるという問題があった。
【００１５】
本発明の目的は、プロセッサに過大な負荷がかかるのを抑制しつつ、全体的な処理速度を高めることができる仮想記憶管理方法、装置及びプログラムを提供することにある。
【課題を解決するための手段】
【００１６】
上記目的を達成するために本発明の情報処理装置は、複数のプロセスを実行可能なプロセッサと１次記憶装置と２次記憶装置とを備える情報処理装置であって、前記プロセッサが実行するプロセスから前記１次記憶装置のメモリ領域の獲得要求を受け付ける受付手段と、前記受付手段が受け付けた獲得要求を行ったプロセスが、他のプロセスと連携して実行可能なユーティリティプロセスであるか否かを判定する判定手段と、前記判定手段が、前記受付手段が受け付けた獲得要求を行ったプロセスが、他のプロセスと連携して実行可能なユーティリティプロセスであると判定し、かつ、前記プロセッサが実行している前記ユーティリティプロセスと連携したプロセスが、スワップアウトを制限する優先プロセスであり、当該優先プロセスのプロセッサ使用率が所定の値よりも大きい場合、前記ユーティリティプロセスのスワップアウトを制限するように制御する制御手段と、を備えることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、プロセッサに過大な負荷がかかるのを抑制しつつ、全体的な処理速度を高めることができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施の形態に係る仮想記憶管理方法が適用される情報処理装置である画像入出力装置の構成を示すブロック図である。
【図２】コントローラ部の詳細構成を示すブロック図である。
【図３】コントローラ部がメモリ管理を行うために必要なモジュールの構成を示すブロック図である。
【図４】優先度テーブルの内容を示す図である。
【図５】プロセス構成を例示した概念図である。
【図６】メモリ領域の提供処理のフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態を図面を参照して説明する。
【００２０】
以下では、情報処理装置として画像処理装置を例にとって説明するが、これは一例であって、計算機システム全般に本発明の仮想記憶管理方法を適用可能である。すなわち、ＣＰＵ（プロセッサ）によって制御されプロセスが実行される情報処理装置であって、１次記憶装置と２次記憶装置とを用いてプロセスの仮想記憶が行われる情報処理装置であれば、本発明を適用可能である。従って、情報処理装置が備える機能は問わない。
【００２１】
図１は、本発明の一実施の形態に係る仮想記憶管理方法が適用される情報処理装置である画像入出力装置の構成を示すブロック図である。
【００２２】
この画像入出力装置１は、イーサネット（登録商標）等のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）４００にてホストコンピュータ（ＰＣ）３、４に接続されている。画像入出力装置１は、画像データの読み取り処理を行うリーダ部２と、画像データの出力処理を行うプリンタ部６と、コントローラ部１１０とを有する。さらに、画像データや各種機能の表示等を行う液晶パネルを備えた操作部７と、制御プログラムや画像データ等が予め書き込まれたハードディスクドライブ（ＨＤＤ）８、９とを備える。上記各構成要素はコントローラ部１１０に接続され、コントローラ部１１０によって制御される。
【００２３】
リーダ部２は、原稿用紙を搬送する原稿給紙ユニット１０と、原稿画像を光学的に読み取って電気信号としての画像データに変換するスキャナユニット１１とを有する。プリンタ部６は、記録用紙を収容する複数段の給紙カセットを備えた給紙ユニット１２と、画像データを記録用紙に転写、定着するマーキングユニット１３とを備える。プリンタ部６はさらに、印字された記録用紙にソート処理やステイプル処理を施して外部に排出する排紙ユニット１４を備える。
【００２４】
図２は、コントローラ部１１０の詳細構成を示すブロック図である。
【００２５】
コントローラ部１１０は、メインコントローラ３２を備える。メインコントローラ３２は、ＣＰＵ（プロセッサ）３３と、バスコントローラ３４と、後述する各種コントローラ回路を含む機能ブロックとを内蔵する。
【００２６】
コントローラ部１１０には、ＲＯＭＩ／Ｆ（インターフェイス）３５を介してＲＯＭ３６が接続されると共に、ＤＲＡＭＩ／Ｆ３７を介してＤＲＡＭ３８が接続される。コントローラ部１１０にはさらに、コーデックＩ／Ｆ３９を介してコーデック４０が接続され、また、ネットワークＩ／Ｆ４１を介してネットワークコントローラ４２が接続されている。
【００２７】
ＲＯＭ３６には、メインコントローラ３２のＣＰＵ３３で実行される各種制御プログラムや演算データが格納されている。ＤＲＡＭ３８は、ＣＰＵ３３が動作するための作業領域や画像データを蓄積するための領域として使用される。ＤＲＡＭ３８には、各種のテーブルも記憶される。コーデック４０は、ＤＲＡＭ３８に蓄積されたラスタイメージデータをＭＨ／ＭＲ／ＭＭＲ／ＪＢＩＧ等の周知の圧縮方式で圧縮し、また圧縮されたデータをラスタイメージに伸長する。
【００２８】
コーデック４０にはＳＲＡＭ４３が接続されており、該ＳＲＡＭ４３はコーデック４０の一時的な作業領域として使用される。ネットワークコントローラ４２は、ネットワークコネクタ４４を介してＬＡＮ４００との間で所定の制御動作を行う。また、メインコントローラ３２は、スキャナバス４５を介してスキャナＩ／Ｆ４６に接続されると共に、プリンタバス４７を介してプリンタＩ／Ｆ４８に接続される。
【００２９】
メインコントローラ３２はさらに、ＰＣＩバス等の汎用高速バス４９を介して、拡張ボードを接続するための拡張コネクタ５０及び入出力制御部（Ｉ／Ｏ制御部）５１に接続されている。Ｉ／Ｏ制御部５１には、リーダ部２やプリンタ部６との間で制御コマンドを送受信するための調歩同期式のシリアル通信コントローラ５２が２チャンネル装備されている。該シリアル通信コントローラ５２には、Ｉ／Ｏバス５３を介してスキャナＩ／Ｆ４６及びプリンタＩ／Ｆ４８が接続されている。
【００３０】
スキャナＩ／Ｆ４６は、第１の調歩同期シリアルＩ／Ｆ５４及び第１のビデオＩ／Ｆ５５を介してスキャナコネクタ５６に接続され、さらに該スキャナコネクタ５６はリーダ部２のスキャナユニット１１（図１）に接続されている。そして、スキャナＩ／Ｆ４６は、スキャナユニット１１から受信した画像データに対し、所望の２値化処理や、主走査方向及び／または副走査方向の変倍処理を行う。また、スキャナユニット１１から送られてきたビデオ信号に基づいて制御信号を生成し、それを、スキャナバス４５を介してメインコントローラ３２に転送する。
【００３１】
プリンタＩ／Ｆ４８は、第２の調歩同期シリアルＩ／Ｆ５７及び第２のビデオＩ／Ｆ５８を介してプリンタコネクタ５９に接続され、さらに該プリンタコネクタ５９はプリンタ部６のマーキングユニット１３（図１）に接続されている。
【００３２】
そして、プリンタＩ／Ｆ４８は、メインコントローラ３２から出力された画像データにスムージング処理を施して該画像データをマーキングユニット１３に出力する。さらに、マーキングユニット１３から送られたビデオ信号に基づいて、生成された制御信号をプリンタバス４７に出力する。
【００３３】
メインコントローラ３２のＣＰＵ３３は、ＲＯＭ３６からＲＯＭＩ／Ｆ３５を介して読み込まれた制御プログラムに基づいて動作する。例えば、ホストコンピュータ３、４（図１）から受信したＰＤＬ（ページ記述言語）データを解釈し、ラスタイメージデータに展開処理を行う。
【００３４】
また、バスコントローラ３４は、スキャナＩ／Ｆ４６、プリンタＩ／Ｆ４８、その他拡張コネクタ５０等に接続された外部機器から入出力されるデータ転送を制御するものであり、バス競合時のアービトレーション（調停）やＤＭＡデータ転送の制御を行う。例えば、上述したＤＲＡＭ３８とコーデック４０との間のデータ転送や、スキャナユニット１１からＤＲＡＭ３８へのデータ転送、ＤＲＡＭ３８からマーキングユニット１３へのデータ転送等は、バスコントローラ３４によって制御され、ＤＭＡ転送される。
【００３５】
また、Ｉ／Ｏ制御部５１には、ＬＣＤコントローラ６０及びキー入力Ｉ／Ｆ６１を介してパネルＩ／Ｆ６２が接続され、パネルＩ／Ｆ６２には操作部７（図１）が接続されている。Ｉ／Ｏ制御部５１は、不揮発性メモリ領域としての不図示のＥＥＰＲＯＭに接続されている。Ｉ／Ｏ制御部５１はまた、Ｅ−ＩＤＥコネクタ６３を介してハードディスクドライブ（ＨＤＤ）８、９に接続されている。Ｉ／Ｏ制御部５１はさらに、機器内で管理する日付と時刻を更新／保存するリアルタイムクロックモジュール６４に接続されている。リアルタイムクロックモジュール６４は、バックアップ用電池６５に接続されて該バックアップ用電池６５によりバックアップされている。
【００３６】
本実施の形態において、コントローラ部１１０が、仮想記憶管理方法を実現する仮想記憶管理装置としての機能を果たす。ＤＲＡＭ３８は、１次記憶装置としての機能を果たす。ハードディスクドライブ（ＨＤＤ）８、９は、２次記憶装置としての機能を果たす。また、メモリ管理部１０２は、受付手段、判定手段、制御手段としての機能を果たす。
【００３７】
図３は、コントローラ部１１０がメモリ管理を行うために必要なモジュールの構成を示すブロック図である。このモジュールには、プロセス１０１、メモリ管理部１０２、優先度テーブル１０３、ＣＰＵ負荷監視部１０４、ログ管理部１０５、ログ解析部１０６、ログファイル１０７が含まれる。
【００３８】
プロセス１０１、メモリ管理部１０２、ＣＰＵ負荷監視部１０４は、ＲＯＭ３６またはハードディスク８、９（図２参照）に予め格納されたプログラムである。これらのプログラムの実行時には、ＣＰＵ３３がそれらをプロセスの単位でＤＲＡＭ３８に読み込んでから実行する。ログ管理部１０５、ログ解析部１０６は、ＲＯＭ３６またはハードディスク８、９に予め格納されたプログラムである。
【００３９】
プロセス１０１は、自身の動作時に作業用のメモリ領域が必要になると、ＤＲＡＭ３８上の一部の領域を獲得して動作する。このＤＲＡＭ３８が枯渇した場合にメモリの内容をハードディスク８、９に一時待避することでスワップ機能を実現する。以降、メモリ領域を獲得するということは、実際にはＤＲＡＭ３８上に記憶領域を割り当てさせることを指し、単純に「メモリ」と記した場合はＤＲＡＭ３８のことを指す。
【００４０】
また、仮想メモリ管理システムを持つＯＳとして、本実施の形態ではＬｉｎｕｘ（登録商標）を用いるが、仮想記憶方式を採用する他のマルチタスクＯＳであってもよい。
【００４１】
プロセス１０１は、実際には複数存在して、複数のプロセスの組合せで印刷等のジョブが実現される。多数の機能を有するシステムでは、モジュール間の境界としてプロセスを分けることで、モジュールの堅牢性や再利用性を実現する構成が一般的である。プロセス分割を適切に行ったシステムでは、複合機が持つ多様な機能毎に対応したプロセスがあり、ある機能を使用するジョブを実行する場合には、その機能に対応したプロセスを実行する必要がある。プロセスの粒度は、機能をさらに細分化した構成である場合、複数のプロセスを組み合わせて単一の機能を実現する構成となる。
【００４２】
プロセス１０１は、実行に必要なメモリ領域を、必ずメモリ管理部１０２から獲得する。メモリ管理部１０２はプロセス１０１にＤＲＡＭ３８のメモリ領域を提供する。
【００４３】
メモリ管理部１０２が提供するメモリ領域には、スワップアウトが制限されているメモリ領域である制限領域と、スワップアウトが制限されていない通常のメモリ領域である通常領域の２種類がある。便宜上、本実施の形態では、上記制限領域を「高速メモリ」、上記通常領域を「低速メモリ」と呼称する。
【００４４】
メモリ管理部１０２は、ＯＳが管理するメモリ領域をプロセスが獲得する汎用機能であるｍａｌｌｏｃシステムコール等により、低速メモリを作成する。メモリ管理部１０２は、通常に作成した低速メモリに対して、ＯＳにスワップ禁止の領域であることを通知するための機能であるｍｌｏｃｋシステムコールでスワップ禁止属性を付加することで、スワップアウト禁止の高速メモリを作成する。
【００４５】
ＯＳは、メモリ枯渇を検知すると、スワップ対象のメモリ領域の中からスワップアウトを実施するのに適したメモリ領域を検索する。スワップアウト禁止属性が設定された高速メモリは、ＯＳがスワップ対象のメモリ領域を検索するときに対象から除外されるため、スワップアウトが実行されることはない。一方、スワップアウト禁止属性が設定されない通常の低速メモリは、ＯＳがスワップ対象を検索するときに対象になるため、ＯＳの判断でスワップアウトが実行される場合がある。
【００４６】
高速メモリと低速メモリのサイズ配分は、システム設計段階で一意に定めることができないため、メモリ管理部１０２は、要求に応じて高速メモリの領域を確保し、プロセス１０１に提供する。
【００４７】
ＣＰＵ負荷監視部１０４は、システム（画像入出力装置１）全体のＣＰＵ３３の負荷率とプロセス１０１毎のＣＰＵ３３の負荷の占有率の内訳を監視し管理する。ＣＰＵ３３の負荷率とは、例えば、実行中のソフトウェアがＣＰＵ３３を占有している時間の割合であり、プロセッサ使用率とも言う。そして、メモリ管理部１０２からの問い合わせに対してプロセス１０１毎のＣＰＵ３３の負荷率（ＣＰＵ負荷）を通知する機能を有する。Ｌｉｎｕｘのような汎用ＵＮＩＸ(登録商標)系ＯＳでは、ｐｒｏｃファイルシステム上の特定のファイルを読み込むことで、上記ＣＰＵ占有率に関するデータを取得することができる。
【００４８】
図４は、優先度テーブル１０３の内容を示す図である。
【００４９】
優先度テーブル１０３は、ＲＯＭ３６またはハードディスク８、９に記憶される。優先度テーブル１０３において、各プロセスは、システム内で一意のプロセス名の文字列データとしてリスト形式で表現される。各プロセスについては、属性情報が記述され、各プロセスは、「通常」、「優先」、「ユーティリティ」のいずれかの属性を持つ。
【００５０】
「ユーティリティ」の属性を持つユーティリティプロセスには、関連優先プロセス情報としての「関連優先プロセス」の文字列データ、及び「負荷閾値」の数値データの情報が対応付けられている。対応付けられている「関連優先プロセス」は、当該ユーティリティプロセスがどの優先プロセスに連携して実行されるのかを示す情報である。「関連優先プロセス」によって、連携して実行される優先プロセスが特定される。
【００５１】
すなわち、ユーティリティプロセスは、他のプロセスに依頼されて処理を動作することがある、つまり、他のプロセスと連携して実行可能なプロセスである。そのため、複数プロセスで共通に実行される処理がある場合に、その処理を独立したプロセスにくくりだす場合に用いられる。その際の、「他のプロセス」のうち、「優先」属性を有するものが「関連優先プロセス」である。
【００５２】
また、「負荷閾値」は、関連優先プロセスに関わるＣＰＵ３３の負荷が高負荷であるか否かを判断するための所定の値であり、ＣＰＵ負荷監視部１０４から確認されるＣＰＵ負荷と比較することで、関連優先プロセスが高負荷か否かが判断される。
【００５３】
図４の例では、ｐｒｉｎｔプロセスがユーティリティプロセスである。ｆａｘプロセス受信、ｃｏｐｙプロセスが、それぞれ通常、優先プロセスとなっている。また、ｐｒｉｎｔプロセスに対応する関連優先プロセスは、ｃｏｐｙプロセスであり、負荷閾値は８０％である。
【００５４】
優先度テーブル１０３に記述される項目の内、属性である「優先」、「通常」以外の項目は、設計時にプロセス構成によって一意に定まる値である。ユーティリティプロセスであるか否かは設計時に一意に定まっている。ユーティリティプロセスでないプロセスの属性（「優先」または「通常」）は、画像入出力装置１の工場出荷時にはデフォルトで定められる。
【００５５】
なお、図４に示す優先度テーブル１０３において、プロセス名の数は３個に限定されない。また、属性が「優先」、「通常」または「ユーティリティ」であるプロセスの数も各１つに限られない。また、「負荷閾値」は例示では８０％であるが、この値もこの例示に限られない。また、１つのユーティリティプロセスに対する関連優先プロセスの数も１つに限られない。
【００５６】
図３のメモリ管理部１０２は、上記した２種類の「高速メモリ」、「低速メモリ」を、優先度テーブル１０３を確認することで選択的に提供する。メモリ管理部１０２は、メモリ領域獲得要求元のプロセス１０１のプロセス名を確認し、当該プロセス１０１が優先プロセスか否かを判断する。実際には、メモリ管理部１０２は、ライブラリプログラムとしてプロセス１０１に内包された形で動作する。そのため、メモリ管理部１０２は、自身のプロセス名をＯＳに問い合わせることでメモリ領域獲得要求元のプロセス名を特定する。
【００５７】
図５は、本実施の形態におけるプロセス構成を例示した概念図である。同図に例示する構成において、ｐｒｉｎｔプロセス７１は、画像データを入力として実際にデバイスを制御して、印刷物を出力するための処理を行うプロセスである。ｆａｘプロセス受信７２は、ｆａｘを受信して出力する機能を持つが、画像データを形成したら、その後の実際の出力処理はｐｒｉｎｔプロセスへ依頼する。ｃｏｐｙプロセス７３は、原稿をスキャンして出力する機能を持つが、スキャンにより画像データを形成したら、その後の実際の出力処理はｐｒｉｎｔプロセス７１へ依頼する。
【００５８】
すなわち、ｐｒｉｎｔプロセス７１は、ｆａｘプロセス受信７２、ｃｏｐｙプロセス７３がそれぞれ動作する際に連携して動作するプロセスである。従って、ｐｒｉｎｔプロセス７１は、ｆａｘプロセス受信７２、ｃｏｐｙプロセス７３の双方に印刷出力という機能を提供するユーティリティプロセスとなる。
【００５９】
プロセス構成は図５に示す数や形態に限られない。例えば、ｆａｘ送信プロセス、ｃｏｐｙプロセス、及びｓｃａｎプロセスの組み合わせを考える。この場合、ｓｃａｎプロセスは、ｆａｘ送信プロセス及びｃｏｐｙプロセスの双方と連携して動作するユーティリティプロセスとなる。
【００６０】
図６は、メモリ領域の提供処理のフローチャートである。本処理を経て、プロセス１０１が、ジョブ実行時にメモリ領域をメモリ管理部１０２から獲得する。
【００６１】
まず、ステップＳ２０１で、メモリ管理部１０２は、プロセス１０１からのメモリ領域の獲得要求を受け付け、獲得要求があると、処理をステップＳ２０２に移行させる。図６の処理フローは、システム起動中に常に実行されている。メモリ領域の獲得要求は、プロセスやジョブが動作する任意のタイミングで起こり得る。
【００６２】
次に、ステップＳ２０２では、メモリ管理部１０２は、ＯＳに問い合わせる等によって、メモリ領域の獲得要求元のプロセス１０１のプロセス名を取得する。その際、プロセス名は文字列データとして取得される。次に、ステップＳ２０３では、メモリ管理部１０２は、優先度テーブル１０３（図４）をＲＯＭ３６またはハードディスク８、９からＤＲＡＭ３８に読み込む（読み込み工程）。優先度テーブル１０３は文字列データの配列として取得される。
【００６３】
次に、ステップＳ２０４では、メモリ管理部１０２は、優先度テーブル１０３を参照して、メモリ領域の獲得要求元のプロセス１０１が優先プロセスであるか否かを判別する。すなわち、前記ステップＳ２０２で得られた文字列データにおいて、獲得要求元のプロセス１０１を示すプロセス名に、前記ステップＳ２０３で得られた文字列データ配列上で「優先」の属性が対応付けられているかどうかを確認する。
【００６４】
その判別の結果、獲得要求元が優先プロセスである場合は、ステップＳ２０５に進む。ステップＳ２０５では、メモリ管理部１０２は、獲得要求元のプロセス１０１に高速メモリを割り当てることを決定し（割り当て工程）、ステップＳ２０６に進む。ステップＳ２０６では、メモリ管理部１０２は、獲得要求元のプロセス１０１に、上記割り当て決定したメモリ領域を提供し、本処理を終了する。
【００６５】
前記ステップＳ２０４の判別の結果、獲得要求元が優先プロセスでない場合は、ステップＳ２０７に進む。ステップＳ２０７では、メモリ管理部１０２は、優先度テーブル１０３を参照して、獲得要求元のプロセス１０１がユーティリティプロセスであるか否かを判別する。すなわち、獲得要求元のプロセス１０１を示すプロセス名に、「ユーティリティ」の属性が対応付けられているかどうかを確認する。
【００６６】
その判別の結果、獲得要求元がユーティリティプロセスである場合は、ステップＳ２０８に進む。一方、獲得要求元がユーティリティプロセスでない場合は、獲得要求元が通常プロセスであると判断できるので、ステップＳ２１１に進む。ステップＳ２１１では、メモリ管理部１０２は、獲得要求元のプロセス１０１に低速メモリを割り当てることを決定し（割り当て工程）、ステップＳ２０６に進む。ステップＳ２０６では、メモリ管理部１０２は、獲得要求元のプロセス１０１に、上記割り当て決定したメモリ領域を提供し、本処理を終了する。
【００６７】
ステップＳ２０８では、メモリ管理部１０２は、獲得要求元であるユーティリティプロセスが関連優先プロセスを持つ（関連優先プロセスが存在する）か否かを判別する。その判別の結果、ユーティリティプロセスが関連優先プロセスを持たない場合は、ＣＰＵ３３の負荷（ＣＰＵ負荷）を確認する必要もないので、前記ステップＳ２１１以降の処理を実行する。従って、関連優先プロセスを持たないユーティリティプロセスには、低速メモリが提供される（ステップＳ２０６）。一方、獲得要求元のユーティリティプロセスが関連優先プロセスを持つ場合はステップＳ２０９に進む。
【００６８】
ステップＳ２０９では、メモリ管理部１０２は、当該ユーティリティプロセスが持つ関連優先プロセスに関わるＣＰＵ負荷を、ＣＰＵ負荷監視部１０４（図３）へ問い合わせて確認する（確認工程）。そして、続くステップＳ２１０では、メモリ管理部１０２は、上記関連優先プロセスに関わるＣＰＵ負荷が高負荷であるか否かを判断する。すなわち、前記ステップＳ２０９で得られたＣＰＵ負荷が、優先度テーブル１０３で規定されている関連優先プロセスの負荷閾値（例えば８０％）を超えているかどうかを判別する。
【００６９】
その判別の結果、関連優先プロセスに関わるＣＰＵ負荷が負荷閾値を超えている高負荷の場合は、前記ステップＳ２０５以降を実行する。従って、ＣＰＵ３３を高負荷にしている関連優先プロセスを持つユーティリティプロセスには、高速メモリが提供される（ステップＳ２０６）。一方、ＣＰＵ負荷が負荷閾値を超えていない場合は、ユーティリティプロセスを低優先で動かす必要があるため、前記ステップＳ２１１以降を実行する。従って、ＣＰＵ３３を高負荷にしていない関連優先プロセスを持つユーティリティプロセスには、低速メモリが提供される（ステップＳ２０６）。
【００７０】
獲得要求元のプロセス１０１は、前記ステップＳ２０６においてメモリ管理部１０２から提供されるメモリ領域を獲得する。そして、メモリ領域獲得に成功したことを条件に、メモリ領域獲得のための処理を終了する。プロセス１０１は、獲得するメモリ領域がスワップアウト禁止か否かにより処理を切り替える必要がなく、状況に応じて自動的に提供されるメモリ領域を使用することができる。
【００７１】
効果を考察してみると、次のようになる。例えば図５に示すプロセス構成において、ｃｏｐｙプロセス７３を優先的に使用し、ｆａｘプロセス受信７２を非優先的に使用する場合を想定する。図４に例示したのとは異なり、ｐｒｉｎｔプロセス７１を通常プロセスとした場合は、ｐｒｉｎｔプロセス７１には常に低速メモリが割り当てられる。従って、優先的に使用されるｃｏｐｙプロセス７３の動作時に連携してｐｒｉｎｔプロセス７１が動作する上で、出力動作が低速に実行されるため、ｃｏｐｙ機能としては処理が遅くなってしまう。
【００７２】
一方、図４に例示したのとは異なり、ｐｒｉｎｔプロセス７１を優先プロセスとした場合は、ｐｒｉｎｔプロセス７１には常に高速メモリが割り当てられる。従って、非優先的に使用されるｆａｘプロセス受信７２の動作時に連携してｐｒｉｎｔプロセス７１が動作する上で、出力動作も高速に実行してしまう。そのため、必要以上にＣＰＵ３３の資源を占有し、システム全体のパフォーマンスを劣化させてしまう。
【００７３】
ところが、図４に示すような優先度設定で、ｐｒｉｎｔプロセス７１をユーティリティプロセスとすると、関連優先プロセスであるｃｏｐｙプロセス７３がＣＰＵ３３の資源を占有している時にはｐｒｉｎｔプロセス７１に高速メモリが割り当てられる。従って、ｐｒｉｎｔプロセス７１は、ｃｏｐｙプロセス７３から依頼された出力処理を優先的に実行することができる。一方、関連優先プロセスでないｆａｘプロセス受信７２が動作する際には、ｐｒｉｎｔプロセス７１に低速メモリが割り当てられる。従って、ｆａｘプロセス受信７２から依頼された出力処理は非優先的に実行されることとなる。
【００７４】
これらにより、ｃｏｐｙ機能の処理が速く、それでいて、ｆａｘプロセス受信７２の動作時には必要以上にＣＰＵ３３の資源が占有されず、システム全体のスループットが向上する。
【００７５】
ところで、優先度テーブル１０３（図４）は、工場出荷時の初期設定のまま使用してもよいが、ユーティリティプロセスでないプロセスの優先、通常の属性については、以下に説明するように、動的に設定されるようにしてもよい。
【００７６】
すなわち、優先的に使用したいプロセス１０１は、厳密にはユーザ毎に異なるため、ユーザ毎に動的に切り替えるのが好ましい。例えば、ユーザの使用履歴やログから、高頻度に使用されるプロセス１０１を優先プロセスとして設定すると、頻繁に使う機能が迅速に実行され、あまり使われない機能が低速に実行されるため、全体のスループットとしては向上する。
【００７７】
図３に示すように、プロセス１０１は、ジョブを実行するたびにログ管理部１０５へそれを通知する。ログ管理部１０５は、プロセス毎のジョブ実行履歴を、各プロセスの実行実績としてログファイル１０７に記録する。ところで、ログファイル１０７は、ＤＲＡＭ３８（図２）に記憶され、随時更新され、システム終了時にはハードディスク８、９に記憶される。そして、次回以降のシステム開始時にはハードディスク８、９からＤＲＡＭ３８に読み出され、上記と同様に更新される。
【００７８】
ログ解析部１０６は、任意のタイミングでログファイル１０７を解析し、高頻度に実行されたプロセス１０１を特定する。ログ解析部１０６は、特定した高頻度に実行されたプロセス１０１の優先度テーブル１０３上の属性が「通常」であれば、それを「優先」へ書き替え、それ以外のプロセスが「優先」であればそれらを「通常」へ書き替える。この例では、優先プロセス数を１つに限定した動作であるが、ＣＰＵ３３の性能、メモリ容量等が豊富であれば、複数の優先プロセスを設定するように構成してもよい。このような書き替え工程の処理は、図６のフローチャートとは別個に並行して実行される。
【００７９】
ところで、上述したように、工場出荷時には、標準的な優先プロセスが優先度テーブル１０３へ記載されているので、ユーザは、初回使用時から、ある程度最適化されたメモリ優先度で機器を使用することができる。
【００８０】
本実施の形態によれば、メモリ領域の獲得要求元が関連優先プロセスを持つユーティリティプロセスである場合においては、該ユーティリティプロセスに対して、関連優先プロセスに関わるＣＰＵ負荷が負荷閾値を超えるときにのみ高速メモリが割り当てられる。それ以外のときは、低速メモリが割り当てられる。これにより、ＣＰＵ３３の高負荷時におけるユーティリティプロセスの処理遅延を抑制することができると共に、通常プロセスの優先度が不必要に上がるのを防止することができる。従って、ＣＰＵ３３に過大な負荷がかかるのを抑制しつつ、全体的な処理速度を高めることができる。
【００８１】
また、優先度テーブル１０３（図４）におけるユーティリティプロセスでないプロセスの優先、通常の属性が、プロセスの使用実績に応じて書き替えられる。これにより、メモリ領域の割り当て優先度を効率的に決定し、使用状況に応じた最適なメモリ割り当てを行うことができる。従って、ユーザは、使用状況に応じて最適化されたメモリ管理により、最適なスループットで各機能を使用することができる。
【００８２】
なお、優先度テーブル１０３（図４）は、属性情報、関連優先プロセス情報及び負荷閾値の情報が含まれるが、これらの各情報は、各プロセス名に対応付けられていればよく、テーブルの形式で一体に記憶される必要はない。
【００８３】
また、本実施の形態では、ＤＲＡＭ３８を高速メモリと低速メモリの２つの領域に分けて管理し、メモリ管理部１０２は、プロセス１０１からの要求に対していずれかの領域を割り当てるようにしたが、これ以外の方法でもよい。すなわち、メモリ管理部１０２は、ＤＲＡＭ３８を高速メモリと低速メモリの領域に分けることなくプロセス１０１からの要求に対してＤＲＡＭ３８内の領域を割り当て、割り当てた領域をスワップアウト禁止領域としたり、スワップアウト非禁止領域としたりする。
【００８４】
また、本発明の目的は、以下の処理を実行することによって達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出す処理である。
【００８５】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【００８６】
１  画像入出力装置
８、９  ハードディスクドライブ（ＨＤＤ）
３３  ＣＰＵ
３８  ＤＲＡＭ
１０２  メモリ管理部
１０３  優先度テーブル
１０４  ＣＰＵ負荷監視部
１０５  ログ管理部
１０６  ログ解析部
１０７  ログファイル
１１０  コントローラ部
【図１】
2010198304.tif 000003
【図２】
2010198304.tif 000004
【図３】
2010198304.tif 000005
【図４】
2010198304.tif 000006
【図５】
2010198304.tif 000007
【図６】
2010198304.tif 000008