(57)【特許請求の範囲】
【請求項１】
複数の画像処理プロセスが動作する画像処理装置において、
前記複数の画像処理プロセスで必要とする最低限の画像メモリ量をあらかじめ算出する画像メモリ量算出手段と、
該画像メモリ量算出手段によってシステム起動時に算出した必要量の画像メモリをリザーブする画像メモリリザーブ手段と、
リザーブされていないメモリのメモリ使用量が動的に変化した場合にその旨を前記複数の画像処理プロセスに通知する通知手段とを設け、
前記リザーブされていないメモリのメモリ使用量が動的に変化した旨の通知を受けた前記画像処理プロセスは、その通知を保存しておき、動作モードが要求されたとき、その動作モードが動作可能か否かを、自己が使用可能な画像メモリ量の最大値を算出し、その算出結果に応じて判断することを特徴とする画像処理装置。
【請求項２】
前記通知手段に代えて、リザーブされていないメモリのメモリ使用量が動的に変化した場合において、その旨を特定の画像処理プロセスに通知する通知手段を設けたことを特徴とする請求項１記載の画像処理装置。
【請求項３】
複数の画像処理プロセスが動作する画像処理装置において、
前記複数の画像処理プロセスで必要とする最低限の画像メモリ量をあらかじめ算出する画像メモリ量算出手段と、
該画像メモリ量算出手段によってシステム起動時に算出した必要量の画像メモリをリザーブする画像メモリリザーブ手段と、
異常時に不必要になったリザーブされたメモリを開放するメモリ開放手段と、
前記メモリ開放手段によってメモリ開放された旨を前記複数の画像処理プロセスに通知する通知手段とを設け、
前記メモリ開放された旨の通知を受けた前記画像処理プロセスは、自己が使用可能な画像メモリ量の最大値を算出し、その算出結果に応じて、動作可能な動作モードを判断することを特徴とする画像処理装置。
【請求項４】
複数の画像処理プロセスが動作する画像処理装置における画像処理方法であって、
前記複数の画像処理プロセスで必要とする最低限の画像メモリ量をあらかじめ算出する画像メモリ量算出工程と、
該画像メモリ量算出工程によってシステム起動時に算出した必要量の画像メモリをリザーブする画像メモリリザーブ工程と、
リザーブされていないメモリのメモリ使用量が動的に変化した場合にその旨を前記複数の画像処理プロセスに通知する通知工程と、
前記リザーブされていないメモリのメモリ使用量が動的に変化した旨の通知を受けた前記画像処理プロセスにより、その通知を保存しておき、動作モードが要求されたとき、その動作モードが動作可能か否かを、自己が使用可能な画像メモリ量の最大値を算出し、その算出結果に応じて判断する工程とを有することを特徴とする画像処理方法。
【請求項５】
前記通知工程に代えて、リザーブされていないメモリのメモリ使用量が動的に変化した場合において、その旨を特定の画像処理プロセスに通知する通知工程を有することを特徴とする請求項４記載の画像処理方法。
【請求項６】
複数の画像処理プロセスが動作する画像処理装置における画像処理方法であって、
前記複数の画像処理プロセスで必要とする最低限の画像メモリ量をあらかじめ算出する画像メモリ量算出工程と、
該画像メモリ量算出工程によってシステム起動時に算出した必要量の画像メモリをリザーブする画像メモリリザーブ工程と、
異常時に不必要になったリザーブされたメモリを開放するメモリ開放工程と、
該メモリ開放工程によってメモリ開放された旨を前記複数の画像処理プロセスに通知する通知工程と、
前記メモリ開放された旨の通知を受けた前記画像処理プロセスにより、自己が使用可能な画像メモリ量の最大値を算出し、その算出結果に応じて、動作可能な動作モードを判断する工程とを有することを特徴とする画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、スキャナやプロッタといった画像入出力エンジンを装備する画像処理装置に関し、さらに詳しくは、例えばＭＦＰ（Multi Function Peripher ）機等の画像処理装置のシステムコントローラにおける特にコピープロセスやプリントプロセスといった画像入出力処理プロセスを、複数同時に動作させるプロセス実行環境を管理する技術に関する。
【０００２】
【従来の技術】
一般にＭＦＰ機と呼ばれる画像処理装置には、複数の画像処理機能が搭載されている。例えばプリント機能、スキャン機能、画像蓄積機能、ファックス機能、ネットワークを介した蓄積画像抽出機能などがその代表的な機能である。これらの機能は各々独立して動作できるようになっている。
【０００３】
また、この装置は、パフォーマンスアップのために、複数のプロセスが同時に実行可能である。例えばプリントプロセスとスキャンプロセスは、お互いのプロセスがプロッタやスキャナといった画像処理装置のリソースを同時に奪い合うことがないので、コントローラにおいて両プロセスの並列動作を管理することによって、並列動作が可能になりパフォーマンスアップが図れるようになる。
【０００４】
また、コピープロセスとファックス受信プロセスの並列動作の例でも、コピープロセスがスキャナおよびプロッタリソースを消費するのに対し、ファックス受信による画像保存プロセスではこれらのリソースを使用しないのでリソースの奪い合いが無く、プロセスの並列動作が可能となる。
【０００５】
一方、このような画像処理装置には画像を展開するための画像メモリが用意されており、各プロセスは動作時に自身のプロセスの動作のために画像メモリをリザーブし、この画像メモリを使用することによって画像処理を行なっている。
しかしながら、ＭＦＰ機では複数のプロセスが並列動作するため、各プロセスが同時に画像メモリをリザーブすることがあり、あるプロセスが大量の画像メモリをリザーブしていた場合には、他のプロセスが必要とする画像メモリを獲得することができず、動作を中断しなければならないことがある。これによりプロセスが即時に動作できなくなり、例えばこれが緊急を要するプロセスである場合にはシステムが破綻するといったことがある。
【０００６】
この問題を解決するために、例えば特開平８−３３９３２４号公報に開示された情報処理装置では、特定ソフトウェアが使用するための専用メモリプールと、その他のソフトウェアが使用する汎用メモリプールを備える技術的手段を提案している。
【０００７】
【発明が解決しようとする課題】
しかしながら、複数のプロセスが同時に発生し、大量の汎用メモリプールを消費していた場合には、専用メモリプールだけでは特定ソフトウェアが動作できないといった問題がある。
また、プロセスの動作が可能であった場合でも、各プロセスが必要とするメモリ量は、そのプロセスの動作モードによって変化することがあり、その時点の空きメモリ量によっては動作できないモードが存在する。
この時各プロセスはあらかじめメモリの消費量を知ることができず、実際には動作できないモードであっても動作を開始し、不必要な動作を行なってしまうことになる。
【０００８】
そこで、本発明では、複数のプロセスが並列動作している場合にも、各プロセスが中断することなく確実に動作し、なおかつ効率的なメモリ割り当てが行なえる画像処理装置を提供することを目的とする。
また、他の目的として、空きメモリ量を各プロセスが知るようにし、現状のメモリ使用状態で動作可能な動作モードを特定することができるようにし、各プロセスが不必要な動作を行なって無駄に時間とメモリを消費してしまうことを防ぐことを目的とする。
【０００９】
【課題を解決するための手段】
上記課題を達成するため、請求項１の画像処理装置は、複数の画像処理プロセスが動作する画像処理装置において、上記複数の画像処理プロセスで必要とする最低限の画像メモリ量をあらかじめ算出する画像メモリ量算出手段と、該画像メモリ量算出手段によってシステム起動時に算出した必要量の画像メモリをリザーブする画像メモリリザーブ手段と、リザーブされていないメモリのメモリ使用量が動的に変化した場合にその旨を上記複数の画像処理プロセスに通知する通知手段とを設け、上記リザーブされていないメモリのメモリ使用量が動的に変化した旨の通知を受けた上記画像処理プロセスが、その通知を保存しておき、動作モードが要求されたとき、その動作モードが動作可能か否かを、自己が使用可能な画像メモリ量の最大値を算出し、その算出結果に応じて判断するものである。
【００１０】
上記発明によれば、複数の画像処理プロセスが動作する画像処理装置において、上記複数の画像処理プロセスで必要とする最低限の画像メモリ量をあらかじめ算出し、システム起動時に算出した必要量の画像メモリをリザーブし、リザーブされていないメモリのメモリ使用量が動的に変化した時、その旨を上記複数の画像処理プロセスに通知する。その通知を受けた画像処理プロセスは、その通知を保存しておき、動作モードが要求されたとき、その動作モードが動作可能か否かを、自己が使用可能な画像メモリ量の最大値を算出し、その算出結果に応じて判断する。
【００１１】
請求項２の画像処理装置は、請求項１において、前記通知手段に代えて、リザーブされていないメモリのメモリ使用量が動的に変化した場合において、その旨を特定の画像処理プロセスに通知する通知手段を設けたものである。
【００１２】
上記発明によれば、複数の画像処理プロセスが動作する画像処理装置において、上記複数の画像処理プロセスで必要とする最低限の画像メモリ量をあらかじめ算出し、システム起動時に算出した必要量の画像メモリをリザーブし、リザーブされていないメモリのメモリ使用量が動的に変化した時、その旨を特定の画像処理プロセスに通知する。その通知を受けた特定の画像処理プロセスは、その通知を保存しておき、動作モードが要求されたとき、その動作モードが動作可能か否かを、自己が使用可能な画像メモリ量の最大値を算出し、その算出結果に応じて判断する。
【００１３】
請求項３の画像処理装置は、複数の画像処理プロセスが動作する画像処理装置において、上記複数の画像処理プロセスで必要とする最低限の画像メモリ量をあらかじめ算出する画像メモリ量算出手段と、該画像メモリ量算出手段によってシステム起動時に算出した必要量の画像メモリをリザーブする画像メモリリザーブ手段と、異常時に不必要になったリザーブされたメモリを開放するメモリ開放手段と、前記メモリ開放手段によってメモリ開放された旨を上記複数の画像処理プロセスに通知する通知手段とを設け、上記メモリ開放された旨の通知を受けた上記画像処理プロセスが、自己が使用可能な画像メモリ量の最大値を算出し、その算出結果に応じて、動作可能な動作モードを判断するものである。
【００１４】
上記発明によれば、複数の画像処理プロセスが動作する画像処理装置において、上記複数の画像処理プロセスで必要とする最低限の画像メモリ量をあらかじめ算出し、システム起動時に算出した必要量の画像メモリをリザーブし、異常時に不必要になったリザーブされたメモリを開放し、その旨を上記複数の画像処理プロセスに通知する。その通知を受けた画像処理プロセスは、自己が使用可能な画像メモリ量の最大値を算出し、その算出結果に応じて、動作可能な動作モードを判断する。
【００１５】
請求項４の画像処理方法は、複数の画像処理プロセスが動作する画像処理装置における画像処理方法であって、上記複数の画像処理プロセスで必要とする最低限の画像メモリ量をあらかじめ算出する画像メモリ量算出工程と、該画像メモリ量算出工程によってシステム起動時に算出した必要量の画像メモリをリザーブする画像メモリリザーブ工程と、リザーブされていないメモリのメモリ使用量が動的に変化した場合にその旨を上記複数の画像処理プロセスに通知する通知工程と、上記リザーブされていないメモリのメモリ使用量が動的に変化した旨の通知を受けた上記画像処理プロセスにより、その通知を保存しておき、動作モードが要求されたとき、その動作モードが動作可能か否かを、自己が使用可能な画像メモリ量の最大値を算出し、その算出結果に応じて判断する工程とを有するものである。
【００１６】
請求項５の画像処理法方法は、請求項４において、前記通知工程に代えて、リザーブされていないメモリのメモリ使用量が動的に変化した場合において、その旨を特定の画像処理プロセスに通知する通知工程を有するものである。
【００１７】
請求項６の画像処理方法は、複数の画像処理プロセスが動作する画像処理装置における画像処理方法であって、上記複数の画像処理プロセスで必要とする最低限の画像メモリ量をあらかじめ算出する画像メモリ量算出工程と、該画像メモリ量算出工程によってシステム起動時に算出した必要量の画像メモリをリザーブする画像メモリリザーブ工程と、異常時に不必要になったリザーブされたメモリを開放するメモリ開放工程と、該メモリ開放工程によってメモリ開放された旨を上記複数の画像処理プロセスに通知する通知工程と、上記メモリ開放された旨の通知を受けた上記画像処理プロセスにより、自己が使用可能な画像メモリ量の最大値を算出し、その算出結果に応じて、動作可能な動作モードを判断する工程とを有するものである。
【００１８】
【発明の実施の形態】
次に本発明に係る画像処理装置の実施形態を図１〜図９を用いて説明する。
（実施形態１）
実施形態１における画像処理装置は、図１に示すように、ＣＰＵバス１と主に画像データを転送する画像転送用バス２とがブリッジ１２を介して連絡されている。ＣＰＵバス１には、ＣＰＵ３と、ＲＯＭ４と、ＲＡＭ５、とが夫々接続され、画像転送用バス２には、ＤＭＡＣ６と、画像メモリ７と、ＮＩＣ８と、スキャナバッファ９と、プロッタバッファ１０と、ハードディスク１１とが夫々接続されている。
画像転送用バス２は、画像データを高速に転送しなければならないバスであり、汎用の高速なバスを流用しても、画像データを効率良く転送するように設計した専用のバスを使用してもいずれでも良いものである。
【００１９】
ブリッジ１２は、ＣＰＵバス１と画像転送用バス２を仲介しており、２つのバスの速度差やバス幅の違いを吸収するとともに、エンディアンの変換などを行なっている。例えば、ＣＰＵ３が画像メモリ７をアクセスする場合は、ＣＰＵ３によるＣＰＵバスアクセスサイクルを、ブリッジ１２が画像転送用バスアクセスに変換することによって画像メモリ７へのアクセスを実現している。
【００２０】
画像メモリ７は、画像データを保存する領域である。スキャナなどの画像入力部から入力された画像データや、ＮＩＣ８を通じてネットワークから送られてきた画像データを保存する。この画像データはどのような種類の画像でも良く、例えば、白黒／カラー、二値／多値、圧縮／非圧縮、低解像度／高解像度など各種多様なフォーマットの画像が挙げられる。
【００２１】
また画像メモリ７上に保存した画像データは、プロッタに転送してプリントする、ＮＩＣ８を通じてネットワーク上に送信する、ハードディスク１１へ保存するなどの処理が行なわれる。
【００２２】
ＤＭＡＣ(DMA Controller)６は、画像転送用バス２上を流れる画像データを高速に転送するコントローラであり、例えばスキャン時にはスキャナＩ／Ｆから送られてくるデータを画像転送用バスを通じてフレームメモリの指定された領域に書き込むなど、まとめて大量のデータを転送するような処理を行なう。フレームメモリ上のアドレスや転送サイズはあらかじめＣＰＵ３からＤＭＡＣ６に指定しておく。
【００２３】
ＮＩＣ(Network Interface Controller)８は、ネットワークとのＩ／Ｆを制御するモジュールで、ネットワークから送られてきた画像データおよびその他のデータを受け取り、バスの要求に従って画像転送用バスにデータを流す処理を行なう。また、データをネットワークへ送信する処理も行なう。
ネットワークは汎用なネットワークでも、画像処理装置に特化したネットワークでもいずれでもよい。汎用的なネットワークとしては例えばイーサネット（登録商標）があるが、IEEE1394などのシリアルＩ／Ｆなどでもよい。
【００２４】
スキャナＩ／Ｆを介してスキャナバッファ９と接続されたスキャナエンジン１３は、画像を入力するモジュールで、入力した画像データをスキャナＩ／Ｆを通じてスキャナバッファ９に転送する。
スキャナバッファ９は、スキャナエンジン１３から送られてきた画像データを一時的に保存し、画像転送用バス２のバスサイクルに合わせてデータを出力する。
【００２５】
プロッタＩ／Ｆを介してプロッタバッファ１０と接続されたプロッタエンジン１４は、画像を出力するモジュールで、プロッタバッファ１０より送られてきた画像データをプロッタＩ／Ｆを通じて取り込みプリントする。
プロッタバッファ１０は、画像転送用バス２から送られてきた画像データを一時的に保存し、プロッタＩ／Ｆの速度に応じてデータを出力する。
ハードディスク１１は、画像を保存する記憶装置である。
【００２６】
次に、例えば、スキャナエンジン１３で取り込んだ画像を画像メモリ７に蓄積し、画像メモリ７上のデータをプロッタエンジン１４に出力する、いわゆるコピーアプリケーションについて図２を参照しながら説明する。
まず、スキャナエンジン１３にスキャン開始を要求し（ステップ１１）、画像データをスキャナバッファ９にため込んでいく。続いてＤＭＡＣ６にＤＭＡ転送開始を要求し（ステップ１２）、あらかじめＤＭＡＣ６に設定されていたサイズ分だけ、スキャナバッファ９から画像メモリ７へ画像データが転送される。この転送は画像転送用バス２を使用して行なわれる（ステップ１３）。
【００２７】
スキャナで全ての画像を読み込み、画像メモリに全ての画像データが保存されるまで画像データの転送は行なわれる（ステップ１４）。全ての画像データの転送が終了したら（ステップ１４：Ｙｅｓ）、スキャナエンジンにスキャン終了を要求（ステップ１５）し、続いてＤＭＡＣ６にＤＭＡ転送終了を要求する（ステップ１６）。
以上によりスキャナエンジンから画像メモリ７への画像転送が行なわれる。
【００２８】
次にＤＭＡＣ６にＤＭＡ転送開始を要求（ステップ１７）し、続いてプロッタエンジンにプリント開始を要求する（ステップ１８）。これにより、画像メモリ７からプロッタバッファへ画像データが転送される（ステップ１９）。この転送は画像転送用バスを使用して行なわれる。
【００２９】
画像メモリ上の画像データが全て転送され、全ての画像データがプロッタに出力されるされるまで画像データの転送が行なわれる（ステップ２０）。全ての画像データの転送が終了したら（ステップ２０：Ｙｅｓ）、ＤＭＡＣ６にＤＭＡ転送終了を要求し（ステップ２１）、続いてプロッタエンジンにプリント終了を要求する（ステップ２２）。
以上により画像メモリ７からプロッタエンジンへの画像転送が行なわれる。
【００３０】
次に画像メモリ７のリザーブについて説明する。
例えば本画像処理装置でプロセスＡ、プロセスＢ、プロセスＣが動作するものとする。
まず、本実施形態における画像処理装置の起動時において、各プロセスが最低限必要とする画像メモリ量を算出する。各プロセスが必要とする画像メモリ７の大きさは、プロセスの種類や扱う画像データの種類によって異なる。
【００３１】
例えば、バンド単位で画像を展開して出力するプリントプロセスでは、最低限１バンド分の画像を展開できるだけの画像メモリ７を必要とする。同様にページ単位で画像を展開して出力するプロセスでは、最低限１ページ分の画像メモリ７を必要とする。これらは最低限必要であるメモリ容量であり、通常の動作で快適にプロセスが動作するためには、例えばプロセスＡが数バンド分、プロセスＢが数ページ分の画像メモリ７を必要とする。
【００３２】
また、圧縮した画像を画像メモリ７に展開し、出力時にハードウェアの伸長機能を利用してプリントするようなプロセスでは、圧縮状態の画像が保持できるだけの画像メモリ７を必要とする。
扱う画像がモノクロ画像だけのプロセスなら１プレーン分の画像メモリ７だけを必要とするが、カラー画像も扱うようなプロセスでは４プレーン分の画像メモリ７が必要となる場合もある。
【００３３】
高精細な画像も扱うプロセスでは、通常の画像よりも多くの画像メモリ７を必要とする。
このように、プロセスの種類やそのプロセスで扱う画像の種類などによって、必要とする画像メモリ７の大きさは異なってくる。
例えばプロセスＡ、プロセスＢ、プロセスＣが最低限以下に示す画像メモリ容量を必要としているものとする。
【００３４】
プロセスＡは１バンド毎に画像を展開して出力するプリントプロセスであり、最低限１バンド分の画像メモリ７を必要としている。またプロセスＢは１ページ毎に画像を展開して出力するプリントプロセスであり、最低限１ページ分の画像メモリ７を必要としている。プロセスＣは１ページ毎に圧縮されたファックス文書を受信して画像メモリ７に保存するファックス受信プロセスであり、最低限１ページ分の画像メモリ７を必要としているものとする。
【００３５】
このようにして得られた最低限必要な画像メモリ量が、図３に示すように、例えばプロセスＡでは８ＭＢ、プロセスＢでは１２ＭＢ、プロセスＣでは４ＭＢであったとする。
次に、システム起動時に各プロセスで最低限必要とする画像メモリ７を、それぞれ各プロセス専用の画像メモリとしてリザーブする。また残った画像メモリ７を、全てのプロセスで使用可能であるフリー画像メモリとして割り当てる。
【００３６】
これにより、システム起動時には、図３で示すようにプロセスＡ用画像メモリ、プロセスＢ用画像メモリ、プロセスＣ用画像メモリ、フリー画像メモリがそれぞれ割り当てられることなる。各プロセスに割り当てられた画像メモリはそのプロセス専用の画像メモリであり、例えばプロセスＡ用画像メモリは他のプロセスからのアクセスが禁止されている。
【００３７】
プロセスＡが実行されると、プロセスＡが必要とする容量だけ画像メモリ７がリザーブされる。プロセスＡが通常１２ＭＢの画像メモリ７を使用するなら、図４に示すように８ＭＢのプロセスＡ用画像メモリとフリー画像メモリから４ＭＢの画像メモリがリザーブされる。
【００３８】
次に、プロセスＡの実行中にプロセスＢが実行されると、プロセスＢが必要とする容量だけ画像メモリ７がリザーブされる。プロセスＢが通常３２ＭＢの画像メモリを使用するなら、１２ＭＢのプロセスＢ用画像メモリとフリー画像メモリから２０ＭＢの画像メモリがリザーブされる。この時、フリー画像メモリの未使用領域が２０ＭＢに満たなかった場合は、現在フリー画像メモリにある未使用領域の分だけ、プロセスＢの画像メモリとしてリザーブする。例えば、図５に示したように未使用領域が４ＭＢなら、１２ＭＢのプロセスＢ用画像メモリと４ＭＢのフリー画像メモリの合わせて１６ＭＢをプロセスＢに割り当てる。
この場合プロセスＢは最適な容量の画像メモリを得てないが、プロセスが動作する上で最低限必要とするメモリ容量は確保できているので、動作可能である。
【００３９】
また更にプロセスＣが同時に実行されると、プロセスＣが必要とする画像メモリ７をリザーブする。現在フリー画像メモリはプロセスＡおよびプロセスＢに全てリザーブされているので、フリー画像メモリからプロセスＣに割り当てる領域はない。そのため、図６に示したように、プロセスＣ用画像メモリのみを割り当てる。
この場合プロセスＣは最適な容量の画像メモリ７を得てないが、プロセスが動作する上で最低限必要とするメモリ容量は確保できているので、動作可能である。
このように、プロセスＡ、プロセスＢ、プロセスＣが同時に動作する状況において、それぞれが最低限必要とする画像メモリ７が確保されているので、同時動作が可能となる。
【００４０】
またプロセスＡの優先度が高くなりシステム中最速で動作する必要がある場合、フリー画像メモリ全領域をプロセスＡで使用する場合もある。この時プロセスＡに割り当てられる画像メモリ７は、図７で示すように、８ＭＢのプロセスＡ用画像メモリとフリー画像メモリ全領域である。
この時プロセスＢ用画像メモリ、プロセスＣ用画像メモリは、それぞれが実行可能になる最低限のメモリ容量であり、プロセスＡが使用できるフリー画像メモリは最大となり、効率の良いメモリ割り当てが可能となる。
また、この状態でプロセスＢやプロセスＣが実行された場合でも、それぞれのプロセスが実行されるのに必要な最低限の画像メモリ７が確保されているので、それぞれのプロセスは実行可能である。
【００４１】
このように、それぞれのプロセスが動作するために必要な最低限の画像メモリ量を算出しておき、システム起動時に算出した必要量の画像メモリ７をリザーブしておくことにより、各プロセスが中断することなく確実に動作することができるとともに、効率的なメモリ割り当てが行なえる。
【００４２】
次に、フリー画像メモリの空きメモリ量が動的に変化した時の動作について説明する。
図３に示したように各プロセス用画像メモリがリザーブされている場合に、１２ＭＢの画像メモリ７を必要とする動作モードでプロセスＡが実行状態になると、図４に示すように、フリー画像メモリから４ＭＢの画像メモリ７がリザーブされる。
フリー画像メモリが８ＭＢであった場合は、フリー画像メモリの未使用領域は４ＭＢとなる。このように、あるプロセスがフリー画像メモリを新たにリザーブした場合、またはあるプロセスがリザーブ済みのフリー画像メモリを開放した場合には、フリー画像メモリの未使用領域が変化する。この時その旨を各プロセスに通知する。
【００４３】
通知手段は、プロセス間通信でも、共有メモリによる通信でも何でもよい。この通知を受信したプロセス、例えばプロセスＢは現在のフリー画像メモリ領域の未使用領域が４ＭＢであることを知る。そして、現時点での画像メモリ７の最大使用量が、プロセスＢ用画像メモリ１２ＭＢとフリー画像メモリの４ＭＢの合計である１６ＭＢであることを知ることができる。
【００４４】
また、プロセスＢが動作するとき、その動作モードによって最低限必要とする画像メモリ量が異なるとする。例えば、通常の画像を扱う場合は１０ＭＢの画像メモリを必要とし、高解像度の画像を扱う場合は２０ＭＢの画像メモリ７を必要とするものとする。
図４の状態では、プロセスＢが使用可能な画像メモリ７の最大値が１６ＭＢであるため通常画像モードの動作は可能であるが、高解像度モードの動作が不可能である。
【００４５】
そこで、プロセスＢはフリー画像メモリの未使用領域の動的な変化量の通知を受けて、その値を保存しておき、要求される動作モードに応じてその処理が可能であるかどうかを判断し、動作可能である場合はそのまま動作を開始し、動作不可能である場合はその時点でメモリ不足エラー処理などを行なう。
これにより、前もってメモリ不足による動作不能を検知することができ、無駄な処理を行なうことがなくなり、速度の低下や、不必要なメモリ消費を抑えることができる。
【００４６】
（実施形態２）
次に、前記した通知手段に替えて、リザーブされていないメモリのメモリ使用量が動的に変化した場合において、その旨を特定の画像処理プロセスに通知する通知手段について説明する。なお、電気的な構成は実施形態１で例示したものと同一ため説明は省略する。
プロセスによっては、必要とする画像メモリ量が動作モードにかかわらず均一であるものと、動作モードによって大きく変わるものがある。
ここで、必要とする画像メモリ量が均一であるプロセスはフリー画像メモリの未使用領域の動的な変化によって、動作モードの制御を変える必要がないので、この情報が必要ない。
【００４７】
そこで、システムであらかじめメモリ残量の通知が必要であるプロセスを登録しておき、未使用領域の動的変化時に、登録されているプロセスのみにその旨を通知する。
例えば、プロセスＡ、プロセスＢのみ変化の通知が必要であると登録されていた場合、プロセスＡ、プロセスＢのみ通知を行ない、他のプロセスには通知を行なわない。
【００４８】
これにより、前もってメモリ不足による動作不能を検知することができ、無駄な処理を行なうことがなくなり、速度の低下や、不必要なメモリ消費を抑えることができるとともに、メモリ残量の変化通知が必要なプロセスのみに、その情報を通知するので、不必要な通知の動作がなくなる。
【００４９】
（実施形態３）
次に、システム起動時に算出した必要量の画像メモリ７をリザーブし、異常時に不必要になったリザーブされたメモリを開放し、メモリ開放された旨を各画像処理プロセスに通知する手段を具備した場合について説明する。なお、電気的な構成は実施形態１で例示したものと同一ため説明は省略する。
【００５０】
まず、システムが正常に動作し、周辺機器が正常に機能している場合には、その周辺機器を使用するプロセスは動作可能である。例えばスキャナ、プロッタが接続されている機器では、コピープロセス、スキャンプロセス、プリントプロセスなどが動作可能となり、各プロセスが必要とする最低限の画像メモリ量をそれぞれの専用画像メモリとしてリザーブする。
【００５１】
次に、周辺機器が故障などで動作不能になってしまった場合には、その周辺機器を使用するプロセスが動作不能となる。例えばスキャナが故障した場合には、コピープロセス、スキャンプロセスが動作不能となる。ただし、スキャナを使用しないプロセスであるプリントプロセスなどは動作可能である。
この場合は動作不能になったプロセス用の画像メモリが不必要になる。
【００５２】
例えば図８のように、プロセスＡ、プロセスＢ、プロセスＣがそれぞれのプロセス用画像メモリをリザーブしているときに、プロセスＡが使用している周辺機器が故障した場合、プロセスＡが動作不能となる。そのためプロセスＡ用画像メモリを開放し、図９のようにプロセスＢ、プロセスＣのみをリザーブする。
このように各プロセス用画像メモリのリザーブ状態が変化した場合には、その旨を各プロセスに通知する。
【００５３】
通知を受信したプロセスは、その時点でそのプロセスが使用できる最大メモリ量を知ることができるので、実際に動作可能な動作モードを判断することができ、無駄な処理を行なうことがなくなり、速度の低下や、不必要なメモリ消費を抑えることができる。
【００５４】
また、このようなメモリ割り当てにすることによって、動作することのないプロセスに画像メモリを割り当てることがないので、フリー画像メモリを大きく取ることができ効率的にメモリを割り当てることができる。
【００５５】
以上、本実施形態における画像処理装置を説明したが、同様の工程手順を持つ画像処理方法でも良いものである。
【００５６】
【発明の効果】
本発明は以上のように構成したことにより、同時に複数のプロセスが動作している場合においても、上記複数の画像処理プロセスが必要としている最低限のメモリを確保しているので、プロセスが動作不能になることがない。また、前もってメモリ不足による動作不能を検知することができ、無駄な処理を行なうことがなくなり、速度の低下や、不必要なメモリ消費を抑えることができるといった有利な効果を奏するものである。
【００５７】
すなわち、請求項１にかかる画像処理装置によれば、複数の画像処理プロセスが動作する画像処理装置において、上記複数の画像処理プロセスで必要とする最低限の画像メモリ量をあらかじめ算出し、システム起動時に算出した必要量の画像メモリをリザーブし、リザーブされていないメモリのメモリ使用量が動的に変化した時、その旨を上記複数の画像処理プロセスに通知し、その通知を受けた画像処理プロセスが、その通知を保存しておき、動作モードが要求されたとき、その動作モードが動作可能か否かを、自己が使用可能な画像メモリ量の最大値を算出し、その算出結果に応じて判断するから、上記複数の画像処理プロセスが中断することなく確実に動作することを保証するとともに、上記複数の画像処理プロセスが不必要な動作を行なわないようにすることができる。
【００５８】
請求項２にかかる画像処理装置によれば、複数の画像処理プロセスが動作する画像処理装置において、上記複数の画像処理プロセスで必要とする最低限の画像メモリ量をあらかじめ算出し、システム起動時に算出した必要量の画像メモリをリザーブし、リザーブされていないメモリのメモリ使用量が動的に変化した時、その旨を特定の画像処理プロセスに通知し、その通知を受けた特定の画像処理プロセスが、その通知を保存しておき、動作モードが要求されたとき、その動作モードが動作可能か否かを、自己が使用可能な画像メモリ量の最大値を算出し、その算出結果に応じて判断するから、上記特定の画像処理プロセスが中断することなく確実に動作することを保証するとともに、上記特定の画像処理プロセスが不必要な動作を行なわないようにすることができる。
【００５９】
請求項３にかかる画像処理装置によれば、複数の画像処理プロセスが動作する画像処理装置において、上記複数の画像処理プロセスで必要とする最低限の画像メモリ量をあらかじめ算出し、システム起動時に算出した必要量の画像メモリをリザーブし、異常時に不必要になったリザーブされたメモリを開放し、その旨を上記複数の画像処理プロセスに通知し、その通知を受けた画像処理プロセスが、自己が使用可能な画像メモリ量の最大値を算出し、その算出結果に応じて、動作可能な動作モードを判断するから、上記複数の画像処理プロセスが中断することなく確実に動作することを保証するとともに、効率的なメモリ割り当てを行うことができる。
【図面の簡単な説明】
【図１】本実施形態における画像処理装置の電気的構成図である。
【図２】コピーアプリケーションの一連動作を示すフローチャートである。
【図３】システム起動時におけるメモリ割り当てを示した画像メモリマップである。
【図４】プロセスＡリザーブ状態における画像メモリマップである。
【図５】プロセスＡ、プロセスＢリザーブ状態における画像メモリマップである。
【図６】プロセスＡ、プロセスＢ、プロセスＣ、リザーブ状態における画像メモリマップその１である。
【図７】プロセスＡ、プロセスＢ、プロセスＣ、リザーブ状態における画像メモリマップその２である。
【図８】プロセスＡ、プロセスＢ、プロセスＣのメモリ割り当てを示した画像メモリマップである。
【図９】プロセスＢ、プロセスＣのメモリ割り当てを示した画像メモリマップである。
【符号の説明】
１  ＣＰＵバス１
２  画像転送用バス
３  ＣＰＵ
４  ＲＯＭ
５  ＲＡＭ
６  ＤＭＡＣ
７  画像メモリ
８  ＮＩＣ
９  スキャナバッファ
１０  プロッタバッファ
１１  ハードディスク
１２  ブリッジ
【図１】
0003974762.tif 000002
【図２】
0003974762.tif 000003
【図３】
0003974762.tif 000004
【図４】
0003974762.tif 000005
【図５】
0003974762.tif 000006
【図６】
0003974762.tif 000007
【図７】
0003974762.tif 000008
【図８】
0003974762.tif 000009
【図９】
0003974762.tif 000010