(57)【特許請求の範囲】
【請求項１】
仮想メモリー空間において確保された各仮想領域に対して、その仮想領域の使用が終了したか否かを示すフラグをセットし、第１仮想領域の移動または拡張によって前記第１仮想領域の一部または全部が別の第２仮想領域に重複する場合に、前記第２仮想領域についての前記フラグが前記第２仮想領域の使用が終了したことを示しているときには、前記第２仮想領域への重複を伴う前記第１仮想領域の移動または拡張を許可し、前記第２仮想領域についての前記フラグが前記第２仮想領域の使用が終了したことを示していないときには、前記第２仮想領域への重複を伴う前記第１仮想領域の移動または拡張を許可しないメモリー領域管理部と、
前記メモリー領域管理部により前記第２仮想領域への重複を伴う前記第１仮想領域の移動または拡張が許可された場合、前記第１仮想領域と前記第２仮想領域との重複部分に対応する物理メモリー空間における物理領域を、別の仮想領域に対してマッピングするためにプールするメモリープール管理部と、
を備えることを特徴とするメモリー管理装置。
【請求項２】
前記メモリー領域管理部は、プールされている前記物理領域のうち、前記別の仮想領域のサイズより大きいサイズを有する物理領域を選択し、選択した前記物理領域の一部を前記別の仮想領域に対してマッピングし、
前記メモリープール管理部は、選択した前記物理領域のうちの、前記別の仮想領域へのマッピング後の残存部分をプールすること、
を特徴とする請求項１記載のメモリー管理装置。
【請求項３】
前記メモリー領域管理部は、プールされている前記物理領域の、先頭物理アドレスおよびサイズ、あるいは先頭物理アドレスおよび終端物理アドレスを保持し、前記先頭物理アドレスおよびサイズ、あるいは前記先頭物理アドレスおよび終端物理アドレスに基づいて、前記別の仮想領域のサイズより大きいサイズを有する前記プールした物理領域を選択することを特徴とする請求項２記載のメモリー管理装置。
【請求項４】
前記メモリー領域管理部は、物理領域にマッピングされていない仮想領域に対するデータ書込が検出されたときに、プールされている前記物理領域を、その仮想領域に対してマッピングすることを特徴とする請求項１から請求項３のうちのいずれか１項記載のメモリー管理装置。
【請求項５】
前記メモリー領域管理部は、ページング方式で前記仮想メモリー空間および前記物理メモリー空間を管理し、ページングにおけるページごとに前記フラグをセットすることを特徴とする請求項１から請求項４のうちのいずれか１項記載のメモリー管理装置。
【請求項６】
請求項１から請求項５のうちのいずれか１項記載のメモリー管理装置と、
前記メモリー管理装置により管理されるメモリーと、
前記メモリーに画像データを記憶させつつ画像処理を行うアプリケーションと、
を備えることを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリー管理装置および画像処理装置に関するものである。
【背景技術】
【０００２】
近年、プリンター、複合機などの画像形成装置には、オペレーティングシステムが実装されており、オペレーティングシステムによる仮想記憶方式のメモリー管理が実現されている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−２１３０１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
仮想メモリー空間のサイズは、オペレーティングシステムで設定可能であるが、仮想メモリー空間のサイズを大きくすると、オペレーティングシステムによる管理領域のサイズが大きくなってしまうため、仮想メモリー空間のサイズは小さいほうが好ましい。
【０００５】
仮想メモリー空間において、ある確保済み仮想領域の拡張や移動に伴って、別の確保済み仮想領域の位置に別の仮想領域を確保したいときには、その別の確保済み仮想領域を別の位置に退避させる必要がある。その場合、その別の確保済み仮想領域の、物理領域へのマッピングを再度行わなければならない。また、そのとき、その仮想領域に対応する物理領域も物理メモリー空間において移動する場合には、その別の確保済み仮想領域の、移動先へのメモリーコピーを行う必要がある。これは、仮想メモリー空間における空き領域が少ないときに多く発生する。
【０００６】
本発明は、上記の問題に鑑みてなされたものであり、ある確保済み仮想領域の拡張や移動に伴う、再マッピング（あるいは、再マッピングおよびメモリーコピー）の頻度を減らすことができるメモリー管理装置、および画像処理装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、本発明では以下のようにした。
【０００８】
本発明に係るメモリー管理装置は、メモリー領域管理部と、メモリープール管理部とを備える。メモリー領域管理部は、（ａ）仮想メモリー空間において確保された各仮想領域に対して、その仮想領域の使用が終了したか否かを示すフラグをセットし、（ｂ）第１仮想領域の移動または拡張によって第１仮想領域の一部または全部が別の第２仮想領域に重複する場合に、第２仮想領域についてのフラグが第２仮想領域の使用が終了したことを示しているときには、第２仮想領域への重複を伴う第１仮想領域の移動または拡張を許可し、第２仮想領域についてのフラグが第２仮想領域の使用が終了したことを示していないときには、第２仮想領域への重複を伴う第１仮想領域の移動または拡張を許可しない。また、メモリープール管理部は、メモリー領域管理部により第２仮想領域への重複を伴う第１仮想領域の移動または拡張が許可された場合、第１仮想領域と第２仮想領域との重複部分に対応する物理メモリー空間における物理領域を、別の仮想領域に対してマッピングするためにプールする。
【０００９】
これにより、ある確保済み仮想領域の拡張や移動に伴う、再マッピング（あるいは、再マッピングおよびメモリーコピー）の頻度を減らすことができる。また、物理メモリー空間の利用効率が高くなる。
【００１０】
また、本発明に係るメモリー管理装置は、上記のメモリー管理装置に加え、次のようにしてもよい。この場合、メモリー領域管理部は、プールされている物理領域のうち、上述の別の仮想領域のサイズより大きいサイズを有する物理領域を選択し、選択した物理領域の一部を別の仮想領域に対してマッピングする。そして、メモリープール管理部は、選択した物理領域のうちの、別の仮想領域へのマッピング後の残存部分をプールする。
【００１１】
これにより、物理メモリー空間の利用効率がさらに高くなる。
【００１２】
また、本発明に係るメモリー管理装置は、上記のメモリー管理装置のいずれかに加え、次のようにしてもよい。この場合、メモリー領域管理部は、プールされている物理領域の、先頭物理アドレスおよびサイズ、あるいは先頭物理アドレスおよび終端物理アドレスを保持し、先頭物理アドレスおよびサイズ、あるいは先頭物理アドレスおよび終端物理アドレスに基づいて、上述の別の仮想領域のサイズより大きいサイズを有する物理領域を選択する。
【００１３】
また、本発明に係るメモリー管理装置は、上記のメモリー管理装置のいずれかに加え、次のようにしてもよい。この場合、メモリー領域管理部は、物理領域にマッピングされていない仮想領域に対するデータ書込が検出されたときに、プールされている物理領域を、その仮想領域（つまり、上述の別の仮想領域）に対してマッピングする。
【００１４】
また、本発明に係るメモリー管理装置は、上記のメモリー管理装置のいずれかに加え、次のようにしてもよい。この場合、メモリー領域管理部は、ページング方式で仮想メモリー空間および物理メモリー空間を管理し、ページングにおけるページごとにフラグをセットする。
【００１５】
本発明に係る画像処理装置は、上記のメモリー管理装置のいずれかと、そのメモリー管理装置により管理されるメモリーと、そのメモリーに画像データを記憶させつつ画像処理を行うアプリケーションとを備える。
【００１６】
これにより、画像処理に使用するメモリーにおいてある確保済み仮想領域の拡張や移動に伴う、再マッピング（あるいは、再マッピングおよびメモリーコピー）の頻度を減らすことができる。また、物理メモリー空間の利用効率が高くなる。
【発明の効果】
【００１７】
本発明によれば、メモリー管理装置などにおいて、ある確保済み仮想領域の拡張や移動に伴う、再マッピング（あるいは、再マッピングおよびメモリーコピー）の頻度を減らすことができる。
【図面の簡単な説明】
【００１８】
【図１】図１は、本発明の実施の形態に係る画像処理装置を含む画像形成装置の構成を示すブロック図である。
【図２】図２は、ある仮想領域を移動または拡張する際に別の仮想領域に重複する場合の、画像処理装置の動作について説明するフローチャートである。
【図３】図３は、図１に示すＲＡＭにおいて確保されている仮想領域のうちのある仮想領域の移動の一例を説明する図である。
【図４】図４は、図１におけるメモリープール管理部により管理されるメモリープールテーブルの一例を示す図である。
【図５】図５は、物理領域にマッピングされていない仮想領域へのデータ書込が発生した場合の、画像処理装置の動作について説明するフローチャートである。
【図６】図６は、図１に示すＲＡＭにおいて物理領域にマッピングされている仮想領域から外れた位置へのデータ書込の一例を説明する図である。
【発明を実施するための形態】
【００１９】
以下、図に基づいて本発明の実施の形態を説明する。
【００２０】
図１は、本発明の実施の形態に係る画像処理装置を含む画像形成装置の構成を示すブロック図である。図１に示す画像形成装置は、プリンター、複合機などであって、画像処理装置１、ネットワークインターフェイス２、および印刷装置３を備える。
【００２１】
画像処理装置１は、ネットワークインターフェイス２、印刷装置３などに接続されており、印刷要求に基づき印刷ジョブを実行する。画像処理装置１は、コンピューター、ＡＳＩＣ（Application Specific Integrated Circuit）などで構成されている。ネットワークインターフェイス２は、図示せぬホスト装置などとネットワークを介して通信を行う通信装置である。ネットワークインターフェイス２は、例えば、図示せぬホスト装置から、ページ記述言語で記述された印刷データを印刷要求として受信する。印刷装置３は、画像処理装置１から印刷用画像データを供給され、その印刷用画像データに対する各種処理（ハーフトーニングなど）を行い、処理後のデータに基づいて印刷を実行する。
【００２２】
この画像処理装置１は、演算処理装置１１、ＲＡＭ（Random Access Memory）１２、および補助記憶装置１３を有する。
【００２３】
演算処理装置１１は、ＣＰＵ（Central Processing Unit）、ＡＳＩＣなどを有し、各種処理を実行する処理部を実現する。例えば、演算処理装置１１は、補助記憶装置１３に記憶されているオペレーティングシステム、アプリケーションのプログラムをＲＡＭ１２にロードして実行する。ＲＡＭ１２は、演算処理装置１１による処理に関連する各種データを一時的に記憶する揮発性の記憶装置である。補助記憶装置１３は、演算処理装置１１のＣＰＵにより実行されるプログラムや、各種データを記憶している不揮発性の記憶装置である。補助記憶装置１３としては、ＲＯＭ（Read Only Memory）、フラッシュメモリー、ハードディスクドライブなどが使用される。
【００２４】
この画像処理装置１では、オペレーティングシステムにより仮想記憶方式のメモリー管理が行われる。そして、演算処理装置１１において、アプリケーション２１、メモリー領域管理部２２、およびメモリープール管理部２３が実現される。つまり、演算処理装置１１は、ＲＡＭ１２を管理するメモリー管理装置として機能する。
【００２５】
アプリケーション２１は、印刷すべき書類の画像データに対する画像処理を実行する処理部である。アプリケーション２１は、その画像処理に必要な記憶領域（つまり、仮想メモリー空間における記憶領域、以下、仮想領域という）をＲＡＭ１２において確保し、その仮想領域を使用して画像処理を実行する。
【００２６】
メモリー領域管理部２２は、アプリケーション２１からの要求に応じて、仮想領域の確保（物理領域へのマッピングを含む）、変更などを行う。また、メモリー領域管理部２２は、アプリケーション２１から仮想アドレスによるデータ読み書きの要求があると、仮想アドレスから物理アドレスへの変換を行う。
【００２７】
また、メモリー領域管理部２２は、仮想メモリー空間において確保された各仮想領域に対して、その仮想領域の使用が終了したか否かを示すプロテクトフラグをセットする。また、メモリー領域管理部２２は、ある第１仮想領域の移動または拡張によって第１仮想領域の一部または全部が別の第２仮想領域に重複する場合に、第２仮想領域についてのプロテクトフラグが第２仮想領域の使用が終了したことを示しているときには、第２仮想領域への重複を伴う第１仮想領域の移動または拡張を許可する。
【００２８】
第１仮想領域の移動または拡張によって第１仮想領域の一部または全部が別の第２仮想領域に重複する場合に、第２仮想領域についてのフラグが第２仮想領域の使用が終了したことを示していないときには、メモリー領域管理部２２は、第２仮想領域への重複を伴う第１仮想領域の移動または拡張を許可しない。
【００２９】
なお、メモリー領域管理部２２は、メモリー管理単位ごとにプロテクトフラグをセットする。例えば、メモリー領域管理部２２は、ページング方式で仮想メモリー空間および物理メモリー空間を管理し、ページングにおけるページごとにプロテクトフラグをセットする。その場合、１ブロックとして確保された１つの仮想領域が複数のページで構成される場合には、１つの仮想領域について複数のプロテクトフラグが存在するが、仮想領域を構成するすべてのページのプロテクトフラグが同一の値を有するので、いずれのプロテクトフラグを参照しても、その仮想領域が使用終了しているか否かを判断することができる。
【００３０】
メモリープール管理部２３は、メモリー領域管理部２２により第２仮想領域への重複を伴う第１仮想領域の移動または拡張が許可された場合、第１仮想領域と第２仮想領域との重複部分に対応する物理メモリー空間における物理領域を、別の仮想領域に対してマッピングするためにプールする。
【００３１】
この実施の形態では、メモリー領域管理部２２は、プールされている物理領域のうち、上述の別の仮想領域のサイズと同一サイズの物理領域、あるいはそれより大きいサイズの物理領域を選択し、選択した物理領域の一部または全部を別の仮想領域にマッピングする。このとき、その別の仮想領域のサイズより大きいサイズの物理領域を選択した場合には、メモリープール管理部２３は、選択した物理領域のうち、その別の仮想領域へのマッピング後に残った物理領域をプールする。
【００３２】
また、この実施の形態では、メモリープール管理部２３は、プールされている物理領域の、先頭物理アドレスおよびサイズ、あるいは先頭物理アドレスおよび終端物理アドレスを保持し、先頭物理アドレスおよびサイズ、あるいは先頭物理アドレスおよび終端物理アドレスに基づいて、別の仮想領域のサイズと同一サイズの物理領域、あるいはそれより大きいサイズの物理領域を選択する。
【００３３】
次に、上記画像処理装置の動作について説明する。ここでは、ある仮想領域を移動または拡張する際に別の仮想領域に重複する場合の処理、および物理領域にマッピングされていない仮想領域への書き込みが発生した場合の処理について説明する。
【００３４】
（ａ）ある仮想領域を移動または拡張する際に別の仮想領域に重複する場合
【００３５】
図２は、ある仮想領域を移動または拡張する際に別の仮想領域に重複する場合の、画像処理装置の動作について説明するフローチャートである。図３は、図１に示すＲＡＭ１２において確保されている仮想領域５１，５２のうちの仮想領域５１の移動の一例を説明する図である。図３（Ａ）は、仮想領域５１が移動される前の状態を示しており、図３（Ｂ）は、仮想領域５１が移動された後の状態を示している。
【００３６】
メモリー領域管理部２２は、アプリケーション２１からの要求に応じて、仮想領域５１，５２を確保した際にプロテクトフラグをセットする。プロテクトフラグは、初期値として、使用終了していないことを示す値（例えば１）を有する。メモリー領域管理部２２は、例えばアプリケーション２１による明示的な通知に基づき、その仮想領域５１，５２を確保したアプリケーション２１による使用が終了したことを検出すると、その仮想領域５１，５２のプロテクトフラグの値を、使用終了したことを示す値（例えば０）に変更する。
【００３７】
また、メモリー領域管理部２２は、アプリケーション２１からの要求に応じて、仮想領域５１を移動または拡張する際に別の仮想領域５２に重複するか否かを判定する。
【００３８】
メモリー領域管理部２２は、仮想領域５１が移動または拡張により別の仮想領域５２に重複すると判定した場合（ステップＳ１）、重複される仮想領域５２のプロテクトフラグの値がその仮想領域５２の使用終了を示しているか否かを判定する（ステップＳ２）。
【００３９】
重複される仮想領域５２のプロテクトフラグの値がその仮想領域５２の使用終了を示している場合、メモリー領域管理部２２は、図３（Ｂ）に示すように、仮想領域５１の移動または拡張を許可し、仮想領域５１の移動または拡張を行う（ステップＳ３）。
【００４０】
仮想領域５１の移動または拡張の後、メモリープール管理部２３は、仮想領域５１と仮想領域５２との重複部分７１に対応する物理領域８１を、別の仮想領域の一部または全部に対してマッピングするためにプールする（ステップＳ４）。つまり、仮想領域５１の移動または拡張後、この物理領域８１は、対応する仮想領域がないためプールされ、再利用される。
【００４１】
図４は、図１におけるメモリープール管理部２３により管理されるメモリープールテーブルの一例を示す図である。メモリープール管理部２３は、プールした各物理領域８１の、先頭物理アドレスおよびサイズ（あるいは、先頭物理アドレスおよび終端物理アドレス）をメモリープールテーブルに登録して保持する。なお、メモリープールテーブルは、ＲＡＭ１２の所定の物理領域に記憶される。
【００４２】
一方、ステップＳ２において、重複される仮想領域５２のプロテクトフラグの値がその仮想領域５２の使用終了を示していない場合には、メモリー領域管理部２２は、仮想領域５２を、空き領域に移動させ、移動後の仮想領域５２を物理領域６２に再マッピングする（ステップＳ５）。その後、メモリー領域管理部２２は、仮想領域５１の移動または拡張を許可し、仮想領域５１の移動または拡張を行う（ステップＳ６）。
【００４３】
このように、仮想領域５１を移動または拡張する際に別の仮想領域５２に重複する場合、仮想領域５２の使用が終了していれば、ただちに仮想領域５１が移動または拡張され、重複部分７１に対応する物理領域８１がプールされる。
【００４４】
（ｂ）物理領域にマッピングされていない仮想領域へのデータ書込が発生した場合
【００４５】
図５は、物理領域にマッピングされていない仮想領域へのデータ書込が発生した場合の、画像処理装置の動作について説明するフローチャートである。図６は、図１に示すＲＡＭ１２において物理領域にマッピングされている仮想領域９１から外れた位置へのデータ書込の一例を説明する図である。図６（Ａ）は、物理領域にマッピングされている仮想領域９１とデータ書込領域９２との位置関係を示し、図６（Ｂ）および図６（Ｃ）は、データ書込領域９２のうちの仮想領域９１から外れた部分に対する物理領域のマッピングを示している。
【００４６】
メモリー領域管理部２２は、例えば図６（Ａ）に示すように、アプリケーション２１によるデータ書込が、物理領域にマッピングされていない仮想領域へのデータ書込であることを検出すると（ステップＳ１１）、データ書込に必要な物理領域のサイズ（つまり不足サイズ）を特定し、メモリープールテーブルを参照して、不足サイズ以上のサイズを有する物理領域がプールされているか否かを判定する（ステップＳ１２）。
【００４７】
不足サイズ以上のサイズを有する物理領域がプールされている場合、メモリー領域管理部２２は、不足サイズ以上のサイズを有する物理領域を１つ選択する（ステップＳ１３）。
【００４８】
このとき、例えば、メモリー領域管理部２２は、不足サイズと同一のサイズを有する物理領域があれば、その物理領域を選択する。不足サイズと同一のサイズを有する物理領域がなければ、メモリー領域管理部２２は、不足サイズ以上であって不足サイズに最も近いサイズを有する物理領域を選択する。
【００４９】
メモリー領域管理部２２は、図６（Ｂ）に示すように、選択した物理領域１０１のサイズが不足サイズと同一である場合（ステップＳ１４）、選択した物理領域１０１全体を、データ書込領域９２のうち、マッピングされていない仮想領域９３にマッピングする（ステップＳ１５）。そして、メモリープール管理部２３は、マッピングされた物理領域１０１を、メモリープールテーブルから削除する。
【００５０】
一方、メモリー領域管理部２２は、図６（Ｃ）に示すように、選択した物理領域１０２のサイズが不足サイズより大きい場合（ステップＳ１４）、選択した物理領域１０１の一部を、データ書込領域９２のうち、マッピングされていない仮想領域９３にマッピングし（ステップＳ１６）、その残存部分の物理領域１０３をプールする（ステップＳ１７）。そして、メモリープール管理部２３は、マッピングされた物理領域１０２を、メモリープールテーブルから削除し、残存部分の物理領域１０３を、メモリープールテーブルに登録する。
【００５１】
なお、ステップＳ１２において、不足サイズ以上のサイズを有する物理領域がプールされていない場合、メモリー領域管理部２２は、マッピングされていない仮想領域９３に対して新たな物理領域をマッピングする（ステップＳ１８）。
【００５２】
このように、物理領域にマッピングされていない仮想領域へのデータ書込が発生した場合、上述のようにプールされている物理領域があれば再利用される。
【００５３】
以上のように、上記実施の形態によれば、メモリー領域管理部２２は、（ａ）仮想メモリー空間において確保された各仮想領域５１，５２に対して、その仮想領域の使用が終了したか否かを示すプロテクトフラグをセットし、（ｂ）ある仮想領域５１の移動または拡張によって仮想領域５１の一部または全部が別の仮想領域５２に重複する場合に、仮想領域５２についてのプロテクトフラグが仮想領域５２の使用が終了したことを示しているときには、仮想領域５２への重複を伴う仮想領域５１の移動または拡張を許可する。また、メモリープール管理部２３は、メモリー領域管理部２２により仮想領域５２への重複を伴う仮想領域５１の移動または拡張が許可された場合、仮想領域５１と仮想領域５２との重複部分に対応する物理メモリー空間における物理領域８１を、別の仮想領域に対してマッピングするためにプールする。
【００５４】
これにより、仮想メモリー空間が狭くても、ある確保済み仮想領域の拡張や移動に伴う、再マッピング（あるいは、再マッピングおよびメモリーコピー）の頻度を減らすことができる。また、物理メモリー空間の利用効率が高くなる。
【００５５】
なお、上述の実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
【産業上の利用可能性】
【００５６】
本発明は、例えば、プリンター、複合機などの画像形成装置に適用可能である。
【符号の説明】
【００５７】
１  画像処理装置
１２  ＲＡＭ（メモリーの一例）
２１  アプリケーション
２２  メモリー領域管理部
２３  メモリープール管理部
５１  仮想領域（第１仮想領域の一例）
５２  仮想領域（第２仮想領域の一例）
【図１】
0005393813.tif 000002
【図２】
0005393813.tif 000003
【図３】
0005393813.tif 000004
【図４】
0005393813.tif 000005
【図５】
0005393813.tif 000006
【図６】
0005393813.tif 000007