(57)【特許請求の範囲】
【請求項１】
第１の画像処理を行う第１の機能部と、前記第１の画像処理とは種類の異なる第２の画像処理を行う第２の機能部とを備え、処理中の前記第１の画像処理に先んじて前記第２の画像処理を割り込み処理させる複合装置において、
処理中の前記第１の画像処理で使用されるデータを記憶する第１の記憶部と、
前記第１の記憶部に記憶されたデータを待避させるための第２の記憶部と、
前記第１の記憶部の空き容量を算出する算出部と、
前記算出部で算出された前記空き容量と、割り込み処理される前記第２の画像処理が前記第１の記憶部で必要とするデータ量とを比較する比較部と、
を備え、
前記第２の画像処理の優先度が前記第１の画像処理の優先度よりも高い場合において、処理中の前記第１の画像処理に先んじて前記第２の画像処理を割り込み処理させる場合に、前記比較部が、前記空き容量が前記第２の画像処理に必要とされるデータ量未満であると判断したときには、前記第１の記憶部に記憶されたデータを前記第２の記憶部に待避させて前記第２の画像処理の割り込み処理を行い、前記空き容量が前記第２の画像処理に必要とされるデータ量以上であると判断したときには、前記第１の記憶部に記憶されたデータを前記第２の記憶部に待避させることなく、前記第１の画像処理と前記第２の画像処理とを並列に処理することを特徴とする複合装置。
【請求項２】
前記第１の記憶部に記憶されたデータを前記第２の記憶部に待避させて前記第２の画像処理の割り込み処理を行う際に、前記第２の記憶部に待避されるデータは前記第２の画像処理の割り込み処理に必要なデータサイズ分に限り待避させられることを特徴とする請求項１記載の複合装置。
【請求項３】
前記算出部で算出された前記空き容量と、割り込み処理される前記第２の画像処理が前記第１の記憶部で必要とするデータ量との差分を算出する差分算出部を備え、
前記第２の画像処理の割り込み処理に必要なデータサイズ分は前記差分算出部からの差分を基に決定されることを特徴とする請求項２記載の複合装置。
【請求項４】
前記第１の記憶部は、揮発性メモリであり、前記第２の記憶部は不揮発性メモリであることを特徴とする請求項１記載の複合装置。
【請求項５】
前記第１の記憶部には処理にかかる前記第１の機能部、又は前記第２の機能部ごとにメモリブロックが設定され、各メモリブロックには当該メモリブロックが空き領域か否かを示す情報と当該メモリブロックのサイズが格納されることを特徴とする請求項１記載の複合装置。
【請求項６】
設定されるメモリブロックに応じて前記第１の機能部、又は前記第２の機能部が行なう処理に対応したジョブ情報が格納されることを特徴とする請求項５記載の複合装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内蔵のメモリにデータを格納しながら複数の機能を発揮する複合装置及び複合装置におけるメモリ管理方法に関する。
【背景技術】
【０００２】
一般に複合機或いは複合装置は、電子写真方式の印刷装置に加えてスキャナ機能やファクシミリ機能を備え、例えば画像読み取り装置やファクシミリ装置、複写機として機能できるように構成された装置であり、家庭やオフィスなどに広く普及している。
【０００３】
ところで、所定の画像データによる画像の出力処理を行なう際にプリンタエンジン部でデータの展開が必要な場合があり、このため例えば複数のホストコンピュータから印刷データが送られてきた場合では、受け取った印刷データを一旦バッファとして機能するハードディスク装置に格納し、格納した印刷データを順次フレームメモリ上で展開することが行われている。
【０００４】
従来の画像処理装置の一例（例えば、特許文献１参照。）では、印刷機能を実行するためにフレームメモリと呼ばれる画像展開用のメモリを使用しているが、印刷ジョブがエラーにより中断されたときに、このジョブが使用するフレームメモリ上のデータを待避しフレームメモリを解放することで、別の印刷ジョブがフレームメモリを使用して印刷処理を行えるようにしている。
【０００５】
【特許文献１】特開平０９−０７１０１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、複合装置の場合には、さらに多様な機能を装置上発揮させるように動作することから、単にフレームメモリを解放するだけでは、未だ動作上メモリ容量が不足していることがある。すなわち、画像データを処理するためには大きな容量のメモリ領域が必要になるが、このメモリ領域の容量は、画像データの画素数や色数により異なり、画素数や色数が大きいほど使用するメモリの容量も大きくなる。印刷やスキャニング、ファクシミリ通信といった複数の機能をもつ複合装置では、印刷やスキャンの各機能を実行するときに画像データを処理するため、それぞれの機能が大きな容量のメモリをそれぞれ必要とする。各機能が共通のメモリを使用する場合、印刷中にスキャンするといったように、ある機能の実行中に後から別の機能を実行しようとすると、それぞれの機能が使用するメモリ容量の合計が装置に搭載されているメモリ量を超えてしまうことがある。この場合、前の機能の実行が終了するまで後から実行した機能を実行できないという問題が発生する。
【０００７】
そこで、本発明は、上述の技術的な課題に鑑み、印刷機能だけでなくスキャニングやファクシミリ通信といった多数の機能がある複合装置においても、異なる機能同士でメモリが共有されている状態である機能でメモリが占有された場合でも他の機能を発揮させることが可能な複合装置と、そのような複合装置におけるメモリ管理方法を提供する。
【課題を解決するための手段】
【０００８】
上述の技術的な課題を解決するため、本発明の複合装置は、第１の画像処理を行う第１の機能部と、前記第１の画像処理とは種類の異なる第２の画像処理を行う第２の機能部とを備え、処理中の前記第１の画像処理に先んじて前記第２の画像処理を割り込み処理させる複合装置において、処理中の前記第１の画像処理で使用されるデータを記憶する第１の記憶部と、前記第１の記憶部に記憶されたデータを待避させるための第２の記憶部と、前記第１の記憶部の空き容量を算出する算出部と、前記算出部で算出された前記空き容量と、割り込み処理される前記第２の画像処理が前記第１の記憶部で必要とするデータ量とを比較する比較部と、を備え、前記第２の画像処理の優先度が前記第１の画像処理の優先度よりも高い場合において、処理中の前記第１の画像処理に先んじて前記第２の画像処理を割り込み処理させる場合に、前記比較部が、前記空き容量が前記第２の画像処理に必要とされるデータ量未満であると判断したときには、前記第１の記憶部に記憶されたデータを前記第２の記憶部に待避させて前記第２の画像処理の割り込み処理を行い、前記空き容量が前記第２の画像処理に必要とされるデータ量以上であると判断したときには、前記第１の記憶部に記憶されたデータを前記第２の記憶部に待避させることなく、前記第１の画像処理と前記第２の画像処理とを並列に処理することを特徴とする。
【０００９】
本発明の複合装置の好適な実施形態によれば、前記算出部で算出された前記空き容量と、割り込み動作する前記機能部が前記第１の記憶部で処理を行うために必要とされるデータ量の差分を算出する差分算出部を備え、前記待避を行うデータ量を前記差分算出部からの差分を基に決定するように制御することもできる。また、前記第１の記憶部を揮発性メモリとし、前記第２の記憶部を不揮発性メモリとすることもできる。更に本発明の複合装置を、前記第１の記憶部には動作にかかる機能部ごとにメモリブロックを設定すると共に、各メモリブロックには当該メモリブロックが空き領域か否かを示す情報と当該メモリブロックのサイズとを格納するように構成することも可能である。設定されるメモリブロックに応じて前記機能部が行なう処理に対応したジョブ情報が格納しても良い。
【００１０】
また、上述の技術的な課題を解決するため、本発明の複合装置におけるメモリ管理方法は、第１の記憶部に動作中の機能部で使用するデータを記憶する工程と、前記機能部が動作している状態における前記第１の記憶部の空き容量を計算する工程と、割り込み動作を行う機能部で使用されるデータ量と前記第１の記憶部の空き容量を比較する工程と、比較した結果に応じて割り込み動作を行う前記機能部で使用される前記データ量が前記第１の記憶部の空き容量より大きい場合に前記第１の記憶部に記憶されたデータを第２の記憶部に待避させる工程とを有することを特徴とする。
【発明の効果】
【００１１】
このような構成を有する本発明の複合装置によれば、１つの機能を発揮している状態であっても、メモリ使用量の大きな他の機能を割り込ませることができ、通常ではメモリ容量を越えてしまうために同時に実行できないような動作でも割り込ませることができ、例えば印刷を行っている途中で原稿の読み取り動作などの他の動作を割り込ませることができる。換言すれば、記憶部自体をそれほど大きくすることなく同時に複数の機能を発揮できるため、記憶部となるＲＡＭ、揮発性メモリなどを比較的に小さな容量とすることもでき、製品全体のコストダウンも容易に実現できる。
【発明を実施するための最良の形態】
【００１２】
本発明の複合機の好適な実施形態を図面を参照しながら説明する。
【００１３】
[第１の実施形態]  
図１は、本発明の実施形態に係る複合装置である複合機の構成を示すブロック図である。図１に示すように、この本実施形態の複合機１００は、複合機１００全体の動作を制御するＣＰＵ１０１と、第１の記憶部として機能する揮発性メモリであってデータを記憶するＲＡＭ１０２と、制御プログラムなどを格納するＲＯＭ１０３と、ホストコンピュータとの接続のためのインターフェース１０４と、電子写真方式などにより所要の画像データの出力を行う印刷部１０５と、原稿の読み取りが可能なスキャナ１０６と、ユーザが動作を制御するための操作パネル１０７と、データの大容量記憶手段として機能するハードディスク１０８から構成される。なお、複合機の種類によっては、さらにファクシミリ通信機能などを有していても良い。
【００１４】
ＣＰＵ１０１は複合機１００全体の動作を制御する演算処理ユニットであって、ＲＯＭ１０３に格納された制御プログラムに基づいて作動する。ＲＡＭ１０２はＣＰＵ１０１のワークメモリとして機能するメモリであり、第１の記憶部として機能するメモリである。ＲＡＭ１０２は、システム上、他の機能部に取得されていない状態では例えば２００ＭＢ（ｂｙｔｅ）の空き領域を有しており、必要があれば他の機能部の処理を実行するために使用される。すなわち、ＲＡＭ１０２は、印刷時には印刷部１０５へ入力するためのビットマップデータの記憶に用いられ、スキャン時には走査により読み取った画像データの記憶に用いられる。ＲＯＭ１０３は複合機１００の制御プログラムを格納する。ここで、機能部とは、印刷部、スキャン部、ファクシミリ送受信部などの本複合機が発揮し得る種々の機能を実現するための各信号処理部を指し、システムの構成の中では一部のブロックが共通して使用されることもある。
【００１５】
インターフェース１０４は複合機１００とホストコンピュータ２０１〜２０３を接続するためのＬＡＮインターフェースである。ホストコンピュータ２０１〜２０３は、ネットワークを組むようにＬＡＮ接続されているパーソナルコンピュータ等のコンピュータであり、インターフェース１０４はホストコンピュータ２０１〜２０３のいずれかから送られたページ記述言語（ＰＤＬ）による印刷データを受信する。また、ホストコンピュータ２０１〜２０３いずれかヘスキャナから読み取ったスキャン画像データを送信することもできる。インターフェース１０４は複数のチャネルを持ち、送信と受信を並行して行うことができる。
【００１６】
印刷部１０５は電子写真方式のプリントエンジンとして機能し、バスを介してＲＡＭ１０２から転送されたビットマップデータを、電子写真方式によって潜像が形成された感光ドラム上の用紙上に転写して出力する。スキャナ１０６はＣＰＵ１０１からの指示に応じて原稿を読み取り、スキャン画像データをＲＡＭ１０２ヘバスを介して転送する。スキャナ１０６は複数の原稿サイズおよび色数（グレースケール：１色、またはカラー：３色）の原稿を読み取ることができる。読み取ったスキャン画像データのサイズは原稿サイズと色数の積に比例する。
【００１７】
操作パネル１０７は表示のための液晶ディスプレイと入力のためのボタンからなる。操作パネル１０７はスキャナ１０６で読み取る原稿サイズと、スキャンの開始要求の入力を受け付ける。また、図示を省略しているが、ファクシミリ送受信の操作も可能である。ハードディスク１０８はＲＡＭ１０２上のデータを待避するための領域を持つ。データを待避するための領域はＲＡＭ１０２のデータ容量より十分大きい。なお、ホストコンピュータ２０１〜２０３は、印刷時は印刷データを送信することができ、スキャン時はスキャン画像データを受信することができる。
【００１８】
図２にＲＡＭ１０２内のメモリマップ示し、その領域区分の一例を示す。ＲＡＭ１０２はシステム領域３０１と共用領域３０２と固定サイズ領域３０３の３つの領域に分けて管理される。システム領域３０１は下記２つの領域から取得するものを除く全てのメモリの取得に用いられる。
【００１９】
共用領域３０２は、画像処理に用いる大きいサイズのメモリブロックを確保するために使用される。具体的には、共用領域３０２は、印刷部１０５へ入力するためのビットマップデータを記憶するためのメモリブロックの確保と、スキャン画像データを記憶するためのメモリブロックの確保に用いられる。また、固定サイズ領域３０３はシステムに対して数の変わらないリソースに対して固定サイズのメモリブロックを割り当てるために使用される。具体的には固定サイズ領域３０３はインターフェース１０４の送受信バッファとして使用される。
【００２０】
本実施形態の複合機では，処理の一連の単位をジョブと称する。特に印刷データをインターフェース１０４から受信し、印刷部１０５から印刷した用紙を出力するまでの一連の処理を印刷ジョブ、操作パネル１０７からスキャン開始指示を受けてからホストコンピュータへ画像データを送信し終えるまでの一連の動作をスキャンジョブと称する。また、ジョブにはそれぞれ優先度が設定されており、本実施形態においては、スキャンジョブは印刷ジョブよりも高い優先度が設定されている。
【００２１】
図３に本実施例における機能ブロック図を示す。ジョブ管理部４０１は複合機１００が処理しているジョブに識別番号を割り当てて管理する。識別番号は登録された順番に付けるため、登録した順番が遅いほど識別番号は大きくなる。ジョブ管理部４０１はジョブが開始されてから終了するまでそれぞれジョブ情報を保持する。ここでジョブ情報は、シリアル番号などの数字からなる識別番号、実行すべき機能を内容とするジョブ種別（例えば、印刷ジョブかスキャンジョブか）、現在のステータスを示すところの状態（待機中か動作中）からなる。
【００２２】
共用メモリ管理部４０２は、共用メモリ４０３からメモリブロックを取得及び解放を行う。各メモリブロックに対し以下のメモリブロック情報を記憶する。初期状態では共用メモリ４０３は全て空き領域として割り当て可能である。ここでメモリブロック情報は、先のメモリマップ内の共有領域３０２の当該ブロックに対応した領域の先頭番地からなる先頭アドレスと、占有するサイズと、メモリブロックを取得したジョブの識別番号（空き領域ならば"無し"）と、空き領域か否かのフラッグ情報とからなり、後述するようなメモリブロックの取得や解放動作の際に参照される。共用メモリ４０３からのメモリブロックの取得および共用メモリ４０３のメモリブロックの解放については詳細を後述する。
【００２３】
共用メモリ４０３は、共有メモリ管理部４０２に制御されながら、印刷ジョブによるビットマップデータとスキャンジョブによるスキャン画像データを必要に応じて記憶する。共用メモリ４０３にはアクセス速度が速いが比較的高価な揮発性メモリであるＲＡＭ１０２が使用される。待避メモリ４０４は共用メモリ４０３のデータを一時的に待避するためのメモリである。待避メモリ４０４はアクセス速度が遅いが比較的安価な不揮発性メモリが使用され、本実施形態においては大容量のハードディスク１０８が待避メモリとして機能する。なお、ハードディスク１０８としては、典型的には内蔵のハードディスクが利用されるが、代わりに外付けのハードディスクやＵＳＢメモリ、メモリカードなどの記憶手段を用いても良く、ネットワーク接続されるサーバーなどであっても良い。
【００２４】
共有メモリ管理部４０２からの命令に従ってデータ待避制御部４０５は、共用メモリ４０３上のメモリブロックを待避メモリ４０４へ待避及び復元する。待避した各ブロックに対して待避ブロック情報を記憶する。待避ブロック情報は、待避メモリ４０４上の先頭アドレスと、サイズと、待避元の共用メモリ４０３上のメモリブロックの先頭アドレスと、待避元のメモリブロックを取得していたジョブの識別番号とからなる。
【００２５】
データ待避制御部４０５は共有メモリ管理部４０２からデータの待避指示を受けると共用メモリ４０３からデータを読み出し、待避メモリ４０４へ書き込み、移動したブロックに対し上記情報を記録する。データ待避制御部４０５は、復元時には記録した上記情報を使い待避メモリ４０４からデータを読み出し、共用メモリ４０３ヘデータを書き込む。印刷データ入力部４０６は、インターフェース１０４から所定の印刷データを受信する。印刷データ入力部４０６が印刷データの受信を開始すると、印刷ジョブ制御部４０７へ通知し、印刷データ展開部４０８へ当該印刷データを転送する。印刷データ展開部４０８が動作を中断している間は印刷データ入力部４０６はインターフェース１０４からの印刷データの受信を停止する。
【００２６】
印刷ジョブ制御部４０７はジョブ管理部４０１の制御に従って印刷ジョブの動作を制御する。また、印刷ジョブ制御部４０７は印刷ジョブを実行するため共用メモリ管理部４０２から共用メモリを取得する。この印刷ジョブの動作については後述する。印刷データ展開部４０８は印刷データ入力部４０６から入力された印刷データを展開し、共用メモリから取得したメモリブロックヘビットマップデータを作成する。印刷制御部４０９は共用メモリ４０３からビットマップデータを読み込み印刷部１０５へ入力することで用紙上ヘビットマップ画像を印刷することを制御する。
【００２７】
設定入力部４１０はユーザが操作パネル１０７を介してスキャンのパラメータである用紙サイズと色数と共にスキャン開始指示を入力すると、その入力されたパラメータと開始指示をスキャンジョブ制御部４１１へ通知し、スキャンジョブを起動する。スキャンジョブ制御部４１１はスキャンジョブの動作を制御する制御部であり、スキャンジョブの開始指示を受ける。印刷ジョブと同様に、スキャンジョブの動作については後述する。
【００２８】
スキャン部４１２はスキャナ１０６から指定された原稿サイズと色数で画像データを読み込み、スキャン画像データを共用メモリ４０３へ書き込む。スキャンデータの出力の際、スキャンデータ出力部４１３は、共用メモリ４０３からスキャン画像データを読み込みバスを介してインターフェース１０４からホストコンピュータ２０１〜２０３へ出力する。
【００２９】
データ量算出部４１４はスキャンジョブのパラメータから、スキャンジョブ読み込むスキャン画像データのデータサイズを計算する。具体的には、例えば次の数式（数１）により求める。式中の括弧内は単位である。
【００３０】
（数１）
画像データのデータサイズ（バイト）＝
原稿の横長さ（インチ）×スキャナの横方向の解像度（ドット／インチ）×
原稿の縦長さ（インチ）×スキャナの縦方向の解像度（ドット／インチ）×
１ドットの量子化ビット数（ビット）／８×色数
【００３１】
次に、本実施形態におけるスキャンの設定動作を図４を用いて説明し、次に共用メモリ４０３からメモリを取得する際の共用メモリ管理部４０２の動作について詳細を図５および図６を用いて説明する。
【００３２】
図４に本実施形態の複合機におけるスキャンの設定画面を示す。スキャン設定画面６００はサイズ・色選択ボタン６０１〜６０４および送信先指定枠６０５およびスキャン開始指示ボタン６０６からなる。サイズ・色選択ボタン６０１〜６０４はスキャンの用紙サイズおよび色数（カラーかモノクロか）の組み合わせを表示しており、選択されると用紙サイズおよび色数を起動するスキャン処理に設定する。なお、サイズ・色選択ボタン６０１〜６０４のサイズおよび色数で示しているものは、例示であり、他の組み合わせでも良い。
【００３３】
送信先指定枠６０５へはスキャンデータを送付する先のＩＰアドレスを入力する。アドレスは操作ボタンから直接入力し、或いはプリセットされているものを呼び出す。スキャン開始指示ボタン６０６は設定内容にしたがってスキャン処理を開始するための指示に使用される。このスキャンの設定画面６００は、操作パネル１０７の表示画面であっても良く、スキャニング処理をホストコンピュータ２０１〜２０３からの命令で開始する場合は、このスキャンの設定画面６００がホストコンピュータ２０１〜２０３のモニターに表示されるようにすることも可能である。
【００３４】
次に、共用メモリ４０３のメモリブロックを取得する動作について説明する。この共用メモリ４０３のメモリブロックを取得する動作は、本実施形態の複合機が各機能部がそれぞれの機能を発揮するためにメモリを取得する場合、そのメモリの取得に際して行われる動作であり、割り込み動作について処理する場合のフローでもある。図５は本実施形態における共用メモリ４０３のメモリブロックを取得する際のフローである。
【００３５】
先ず、手順Ｓ１０１で、共用メモリ管理部４０２はジョブに応じてジョブ管理部４０１からメモリブロックの取得要求を受けると、共用メモリ４０３に要求されたサイズを取得するための空き領域があるか判定する。先に実行されている機能がない場合や、既に動作している機能部が取得しているメモリブロックサイズが小さい場合には、メモリ領域に空きがあり（Ｙｅｓ）、空きがあれば直ちにメモリを取得して終了する（Ｓ１０６）。
【００３６】
もし手順Ｓ１０１でメモリ領域に空きがない場合（Ｎｏ）、手順Ｓ１０２に進み、共用メモリ管理部４０２は、メモリ取得を要求したジョブ以外のジョブが既に取得したメモリブロックを空き領域と見なせば、要求されたサイズのメモリブロックを取得可能であるかを判定する。もし取得不可能であれば（Ｎｏ）、結果を"取得失敗"として処理を終了する（Ｓ１０８）。例えば、既に動作しているジョブの優先度が他に比べて十分に高い場合には、メモリブロックを明け渡すようには動作はできないため、"取得失敗"の動作を行う。この手順Ｓｌ０８では共用メモリ管理部４０２は"失敗"したことを要求元のジョブに通知する。
【００３７】
もし手順Ｓ１０２で取得可能であれば（Ｙｅｓ）、手順Ｓ１０３に進み、共用メモリ管理部４０２はメモリ取得を要求したジョブより優先度の低いジョブが取得したメモリブロックを仮に空き領域と見なした場合に、要求されたサイズのメモリブロックを取得可能であるかを判定する。ジョブの優先度はジョブの識別番号を用いてジョブ管理部４０１から取得して判断される。本実施形態では、ジョブの種類に応じて優先度が設定されており、スキャンジョブが印刷ジョブに比べて優先度が高く設定されている。このためメモリブロックに空きがない状態で、印刷ジョブが実行されている場合に、スキャンジョブの割り込みは可能であるが、その逆のスキャンジョブが実行されている場合に、印刷ジョブの割り込みは許可されないように制御される。優先度の関係から、取得不可能であれば結果を"現在は取得不可"として処理を終了する（Ｓ１０７）。この手順Ｓ１０７では、共用メモリ管理部４０２は"現在は取得不可"であることを要求元のジョブに通知する。
【００３８】
また、手順Ｓ１０３で要求されたサイズのメモリブロックを取得可能と判定した場合（Ｙｅｓ）には、続いて手順Ｓｌ０４で共用メモリ管理部４０２は、割り込みの開始動作として、メモリ取得を要求したジョブより優先度が低く、かつ共用メモリ４０３からメモリブロックを取得している全てのジョブに対し中断を指示する。さらに、手順Ｓ１０５では、共用メモリ管理部４０２は中断が完了したところで、待避可能となったメモリブロックのデータを待避するようデータ待避制御部４０５に指示し、データをハードディスク１０８に待避させる。データを待避したブロックは空きブロックとみなされ、データのハードディスク１０８への待避は、メモリブロック情報の先頭アドレスとサイズを参照しながら、全サイズについて実行される。
【００３９】
この待避操作の後、手順Ｓ１０６で共用メモリ管理部４０２は要求されたメモリブロックを確保する。このようなメモリブロックの取得は、連続する空きブロックを結合した後、空きブロックから要求されたサイズのメモリブロックを割譲することで行われる。割り込みを開始した機能は、メモリブロックの取得により動作可能となり、待避により中断した作業に割り込んで実行されることになる。
【００４０】
次に、本実施形態における共用メモリ４０３のメモリブロックを解放する動作について図６を参照して説明する。割り込んだ機能がある場合、その割り込んだ機能の実行が終了したとき、中断していた機能を復元させる必要があり、共用メモリ管理部４０２はその復元のための制御を行う。図６は本実施形態における共用メモリ４０３のメモリブロックを解放する際のフローチャートである。
【００４１】
先ず、手順Ｓ２０１で現在動作中であった機能部の動作の終了時などにおいて、共用メモリ管理部４０２はその機能部から解放されたメモリブロックを空き領域とする。続いて、手順Ｓ２０２では、共用メモリ管理部４０２は待機状態のジョブがあるか判定する。もし待機状態のジョブが無ければ（Ｎｏ）、中断して再開を待っているジョブは無いことになり、直ちに処理を終了する。
【００４２】
待機状態のジョブがある場合（Ｙｅｓ）、手順Ｓ２０３に進み、共用メモリ管理部４０２は待機中のジョブが確保していた共通メモリ４０３のメモリブロックが全て復元可能であるかを判定する。メモリブロックが復元可能であるかの判定は、メモリブロックがより高い優先度のジョブにより使用状態になっていないかで判定する。もし、メモリブロックがより高い優先度のジョブにより使用状態とされる場合には、メモリブロックが全て復元可能ではないため、復元のための処理を終了する。
【００４３】
手順Ｓ２０４では、共用メモリ管理部４０２はＳ２０３の判定で復元可能であれば、データ待避制御部４０５に指示しデータをメモリに復元する。このとき復元先の共用メモリ４０３上の領域が、復元しようとしているジョブより優先度の低いジョブによって取得されていれば、その優先度の低いジョブを中断した上で優先度の低いジョブについてのデータを待避させて、待避していたデータを戻すことで復元する。共用メモリ管理部４０２はメモリブロックを復元したジョブに対し再開許可をジョブ管理部４０１を介して出す（Ｓ２０５）。これに応じて、メモリブロックにデータが復元されたジョブの実行が再開されることになる。なお、手順Ｓ２０３〜Ｓ２０５の処理は待機しているジョブ全てに対して優先度の高い順に行われ、手順Ｓ２０４では常に優先度が高いジョブが先にメモリ領域を確保するように操作される。
【００４４】
次に、図７と図８を参照して、より具体的に印刷ジョブの動作とスキャンジョブの動作についてそれぞれ説明する。図７は本実施形態における印刷ジョブの動作を示すフローチャートである。印刷ジョブが開始する場合に、始めに手順Ｓ３０１でインターフェース１０４がホストコンピュータ２０１〜２０３から印刷データを受信する。この受信によりジョブ管理部４０１は、印刷ジョブを開始するように動作を始め、手順Ｓ３０２ではジョブ管理部４０１は、共用メモリ管理部４０２に信号を送って共用メモリ４０３からビットマップデータ展開用のメモリブロックを取得するように動作する。
【００４５】
この手順Ｓ３０２ではビットマップデータ展開用のメモリブロックを取得するように制御が行われるが、成功する場合と、失敗する場合と、現在は取得不可とする場合に３つに枝分かれするように処理される。なお、手順Ｓ３０２は、先の図５に示したメモリ取得のフローにおけるＳ１０１〜１０３に対応する処理である。もし、ビットマップデータ展開用のメモリブロックの取得が失敗する場合、ジョブをキャンセルし（Ｓ３０６）、処理を終了する。また、メモリブロックの取得結果が現在は取得不可であった場合は、ジョブを待機状態へ移行し（Ｓ３０３）、再開後に再度メモリブロックの取得を試みる。ここでメモリブロックの取得結果が"現在は取得不可"と判断される場合は、他のジョブが使用しているメモリブロックを空ければメモリ取得状態に持ち込むことができるが、優先度の関係で現在は割り込むことができない場合であり、例えば、共用メモリ４０３が例えば印刷ジョブに優先するスキャンジョブなどで大きく占有されている場合に、現在は取得不可としてメモリブロックが空くのを待つことを意味する。
【００４６】
ビットマップデータ展開用のメモリブロックを取得することが成功する場合、すなわち、他のジョブに占有されているメモリブロックがない場合や、他のジョブに占有されているメモリブロックがあってもそのジョブの優先度が低い場合や占有されていても空き容量が十分ある場合には、ビットマップデータ展開用のメモリブロックが取得され、その取得が済んだところで手順Ｓ３０４に進む。手順Ｓ３０４では印刷データからビットマップを展開する画像処理が行なわれ、続いてその展開されたビットマップのデータを印刷部に送信して、対応する画像の印刷を用紙上に行う（Ｓ３０５）。この画像の印刷が済んだところで、展開に供したところの共用メモリ４０３から取得したメモリブロックが印刷ジョブ用に確保されている状態から解放される（Ｓ３０７）。
【００４７】
以上の手順に示すように、印刷ジョブを開始する場合には、ビットマップデータを展開するためのメモリブロックの取得作業が進められるが、その場合には、実行中や待機中のジョブとの優先度についても判断が加えられ、特に印刷ジョブの場合には、空きのメモリ容量が大きい場合や、他のジョブに比べて優先度が低いことから他のジョブの待機状態などがない場合に、メモリブロックの取得が可能となる。
【００４８】
次に、図８を参照しながら、本実施形態におけるスキャンジョブの動作について説明する。先ず、ユーザは操作パネル１０７を操作して、所定のスキャン指示を行い、その指示をＣＰＵ１０１乃至共用メモリ管理部４０２が受け取る（Ｓ４０１）。このとき操作パネル１０７からスキャンする画像のサイズと色数の指定も受け付ける。
【００４９】
続いて、ジョブ管理部４０１は、共用メモリ管理部４０２に信号を送って共用メモリ４０３からスキャン画像記憶用のメモリブロックを取得するように動作する（Ｓ４０２）。この手順Ｓ４０２ではスキャン画像記憶用のメモリブロックを取得するように制御が行われるが、成功する場合と、失敗する場合と、現在は取得不可とする場合に３つに枝分かれするように処理される。なお、手順Ｓ４０２は、先の図５に示したメモリ取得のフローにおけるＳ１０１〜１０３に対応する処理である。もし、スキャン画像記憶用のメモリブロックの取得が失敗する場合、ジョブをキャンセルし（Ｓ４０６）、処理を終了する。また、メモリブロックの取得結果が現在は取得不可であった場合は、ジョブを待機状態へ移行し（Ｓ４０３）、再開後に再度メモリブロックの取得を試みる。
【００５０】
手順Ｓ４０２でメモリブロックの取得結果が"現在は取得不可"と判断される場合は、他のジョブが使用しているメモリブロックを空ければメモリ取得状態に持ち込むことができるが、優先度の関係で現在は割り込むことができない場合であり、例えば、共用メモリ４０３が例えばスキャンジョブにさらに優先するジョブなどで大きく占有されている場合に、現在は取得不可としてメモリブロックが空くのを待つことを意味する。
【００５１】
スキャン画像記憶用のメモリブロックを取得することが成功する場合、すなわち、他のジョブに占有されているメモリブロックがない場合や、他のジョブに占有されているメモリブロックがあってもそのジョブの優先度が低い場合や占有されていても空き容量が十分ある場合には、スキャン画像記憶用のメモリブロックが取得され、その取得が済んだところで手順Ｓ４０４に進む。手順Ｓ４０４ではスキャナに原稿を読み取らせ、取得したメモリブロック上に、スキャン画像データを記憶する処理が進められる。続いてその記憶されたスキャン画像データがインターフェース１０４からホストコンピュータ２０１〜２０３のいずれかへ送信される（Ｓ４０５）。このようなスキャン画像データの送信が済んだところで、スキャン画像データを一時的に記憶したメモリブロックがスキャンジョブ用に確保されている状態から解放される（Ｓ４０７）。
【００５２】
上述の図７、図８のフローによれば、たとえばスキャンジョブの原稿サイズが小さく、スキャンジョブと印刷ジョブの実行に必要な共用メモリ４０３上のメモリサイズの合計が共用メモリ４０３のサイズより小さい場合は、印刷ジョブとスキャンジョブは並列に動作させることができる。ただし、メモリ容量の関係から、印刷ジョブとスキャンジョブは並列に動作できない場合もあり、その場合には、スキャンジョブには印刷ジョブより高い優先度が与えられているため、印刷ジョブに対するスキャンジョブの割り込みなどが実行可能となる。
【００５３】
ここで本実施形態の複合機１００のメモリ容量に関する仕様について例示すると、下記の表１のように表すことができる。
【００５４】
【表１】
0004852558.tif 000002
【００５５】
上記仕様の各数字、先の数１に当てはめると各ジョブが使用する画像用メモリの容量は以下のように計算される。具体的には、印刷ジョブ（Ａ４カラー）：６６ＭＢ（＝（２１０×３９．３７×１０−３）×６００×（２９７×３９．３７×１０−３）×６００×４／８×４）、スキャンジョブ（Ａ４カラー）：１００ＭＢ、スキャンジョブ（Ａ３カラー）：１９９ＭＢとなる。但し、１ＫＢ＝１０２４ｂｙｔｅで計算している。従って、ＲＡＭ自体が２５６ＭＢの場合、印刷ジョブが実行されていても取得されているメモリブロックは６６ＭBに過ぎないため、Ａ４カラーのスキャンジョブは問題なく進めることができ、Ａ３カラーのスキャンジョブは従来の技術ではメモリ取得ができないという理由で進めることができないメモリ量である。本実施形態によれば、スキャンジョブと印刷ジョブが競合する場合、スキャンジョブに優先性が付与され、印刷ジョブを実行している間でも印刷ジョブのメモリブロックのデータを待避させてＡ３カラーのスキャンジョブを割り込ませることが可能である。
【００５６】
図９乃至図１２は、本実施形態の複合機のそれぞれ共用メモリ４０３のメモリマップと対応する管理情報を示す図であり、図９は初期段階、図１０は印刷ジョブが動作中の段階、図１１は割り込み動作がなされた段階、図１２はメモリのサイズが小さい割り込み動作の段階をそれぞれ示す。なお、参照符号５０１〜５０７は共用メモリ４０３上のメモリブロックであり、参照符号５１１〜５１７はメモリブロック５０１〜５０７に対応するメモリブロック情報である。待避ブロック情報５２２はメモリブロック５０２を待避したときの待避ブロック情報である。ジョブ情報５５２、５５４、５５６はジョブ管理部４０１が管理するジョブの情報である。
【００５７】
以下に印刷ジョブ実行中に大容量のメモリを使うスキャンジョブを割り込ませた場合と小容量のメモリを使うスキャンジョブを割り込ませた場合の動作例を示す。まず、初期状態では、図９に示すように、共用メモリ４０３は０ｘ００００００００番地から０ｘ０Ｃ８０００００番地までの２００ＭＢ全て空き領域５０１とされている。またメモリブロック情報５１１には、先頭アドレスとして"０ｘ００００００００番地"が格納され、サイズとして２００ＭＢが格納され、取得したジョブの識別番号が"無し"、空き領域か否かについて"TRUE"と格納されている。初期段階ではジョブに対応していないので、取得したジョブ自体が不存在であり、空き領域か否かについて"TRUE"とは空き領域であることを示す。なお、この初期段階ではジョブ情報および待避ブロック情報は登録されていない。
【００５８】
次に、印刷ジョブの実行命令が得られた場合については、初めに印刷ジョブ制御部４０７はホストコンピュータ２０１からＡ４カラーの印刷データを受信すると印刷ジョブ＃１を開始する。この動作は図７の手順Ｓ３０１に対応し、以下の印刷ジョブの動作の各手順については図５乃至図８の各手順も参照するものとする。図１０に示すように、ジョブ管理部４０１はこの印刷ジョブに対し識別番号"１"を割り当て、ジョブ種別として"印刷ジョブ"、状態として"動作中" をそれぞれジョブ情報５５２として登録する。
【００５９】
印刷ジョブ制御部４０７は印刷ジョブ＃１が使うビットマップ展開用のメモリを共用メモリ４０３から６６ＭＢ取得するよう共用メモリ管理部４０２へ要求する（Ｓ３０２）。共用メモリ管理部４０２は空きメモリブロック５０１の容量２００ＭＢと要求された６６ＭＢを比較し（Ｓｌ０１）、その比較結果に空き容量が十分にあるため、ここからメモリブロック５０２を取得して（Ｓ１０６）印刷ジョブ制御部４０７へ返す。このときの共用メモリ４０３の状態は図１０のようになり、０ｘ００００００００番地から０ｘ０４１ＦＦＦＦＦ番地の印刷ジョブ＃１のメモリブロック５０２に６６ＭＢ、０ｘ０４２０００００番地から０ｘ０Ｃ８０００００番地までの空き領域５０３に１３４ＭＢが割り当てられている。
【００６０】
この図１０の状態におけるメモリブロック情報については、印刷ジョブに対応するものとして、メモリブロック情報５１２が格納されており、その内容は先頭アドレスを"０ｘ００００００００"とし、サイズを６６ＭＢとし、取得したジョブの識別番号を"1"とし、空き領域についてのフラグを空きではないことを意味する"FALSE"とするものである。また、同時に空き領域に対するメモリブロック情報５１３も所定のデータからなり、先頭アドレスとして"０ｘ０４２０００００番地"が格納され、サイズとして１３４ＭＢが格納され、取得したジョブの識別番号が"無し"、空き領域か否かについて"TRUE"と格納されている。このメモリブロック情報５１３に対応するジョブ情報は存在しない。
【００６１】
次に、印刷ジョブ制御部４０７は取得したメモリブロック５０２にビットマップを展開するＳ３０４）。ここで、印刷ジョブの実行中にスキャンジョブの割り込みが必要になった場合について説明すると、スキャンジョブ制御部４１１は操作パネル１０７から例えばＡ３カラーのスキャンデータをホストコンピュータ２０２へ送るよう指示を受けるとスキャンジョブ＃２を起動する（Ｓ４０１）。ジョブ管理部４０１はこのスキャンジョブ＃２に対し識別番号"２"を割り当て、ジョブ情報５５４を登録する。
【００６２】
スキャンジョブ制御部４１１はＡ３カラースキャンに使うビットマップ展開用のメモリを共用メモリ４０３から１９９ＭＢ取得するよう共用メモリ管理部４０２へ要求する（Ｓ４０２）。このときメモリの容量はデータ量算出部４１４により算出する。共用メモリ４０３の空きメモリブロック５０３は１３４ＭＢであるため、１９９ＭＢには足りない（Ｓ１０１）。しかしながらスキャンジョブ＃２より優先度の低い印刷ジョブ＃１が使用するメモリブロック５０２を空ければ１９９ＭＢ取得可能である（Ｓ１０２、Ｓ１０３）ため、共用メモリ管理部４０２はジョブ管理部４０１へ印刷ジョブ＃１を中断するよう指示する（Ｓｌ０４）。印刷ジョブ制御部４０７は印刷ジョブ＃１が処理を中断しメモリへのアクセスを止めたら共用メモリ管理部４０２へ通知する。共用メモリ管理部４０２は通知を受けると、メモリブロック５０２をデータごと待避するようデータ待避制御部４０５へ指示する。データ待避制御部４０５は印刷ジョブ＃１が使用していたメモリブロック５０２の内容を全て待避メモリ４０４へ記憶し、このメモリブロックを空きメモリとして扱えるようにする（Ｓ１０５）。
【００６３】
共用メモリ管理部４０２はメモリブロック５０２と５０３を合わせた２００ＭＢのメモリブロックから１９９ＭＢのメモリを取得する（Ｓ１０６）。このときの共用メモリ４０３の状態は図１１のようになる。すなわち、共用メモリ４０３はＡ３スキャンジョブ＃２に割り当てたメモリブロック５０４および空きメモリブロック５０５からなり、スキャンジョブ＃２に割り当てたメモリブロック５０４は、０ｘ００００００００番地から０ｘ０Ｃ６ＦＦＦＦＦ番地のブロックであり、空き領域となったメモリブロック５０５は０ｘ０Ｃ７０００００番地から０ｘ０Ｃ８０００００番地までのブロックである。印刷ジョブ＃１に対するジョブ情報５５２は状態が"動作中"から"待機中"に変化している。スキャンジョブ＃２に対するジョブ情報５５４が追加され、その状態は"動作中"とされている。また、メモリブロック５０２を待避した情報として、待避ブロック情報５２２が新たに登録される。この待避ブロック情報５２２の内容は、ハードディスク１０８上の番地である待避メモリ４０４上の先頭アドレス（例えば、０ｘ０００００００）、サイズ、待避元のアドレス、取得したジョブの識別番号からなる。この図１０では、印刷ジョブ＃１を待避させていることから、サイズとしては６６ＭＢ、ジョブの識別番号としては"１"が格納され、待避元のアドレス"０ｘ０００００００"が格納されている。ジョブの識別番号が格納されているため、その識別番号をキーとして待機中から動作中への再移行も容易に行うことができる。
【００６４】
スキャナ１０６は画像を読み取り、スキャンジョブ制御部４１１は、その読み取ったデータに対応するデータを取得したメモリブロック５０４に記憶する（Ｓ４０４）ように制御する。次に。メモリブロック５０４上の画像データは例えばホストコンピュータ２０２へ送信され（Ｓ４０５）、スキャンジョブ＃２に供したメモリブロック５０４は解放される（Ｓ４０７、Ｓ２０１）。このとき待機状態の印刷ジョブ＃１があり（Ｓ２０２）、待避ブロック情報５２２から復元先の共有領域３０２を調べると、この印刷ジョブ＃１が使用していたメモリ領域５０２が全て空き領域となったため（Ｓ２０３）、共用メモリ管理部４０２はデータ待避制御部４０５に指示し待避メモリ４０４から待避していたデータを復元する（Ｓ２０４）。復元完了後に共用メモリ管理部４０２はジョブ管理部４０１を通して印刷ジョブ管理部４０７へ印刷ジョブ＃１の再開許可を出す（Ｓ２０５）。このときの共用メモリ４０３の状態は再び示す図１０のように復元され、スキャナジョブ＃２による印刷ジョブ＃１への割り込み動作は終了して、再び印刷ジョブ＃１が実行される状態に戻ることになる。
【００６５】
次に、図７及び図１２を参照しながら、印刷ジョブ＃１に占有されるメモリブロックが小さい容量で済むＡ４カラースキャンジョブ＃３の割り込みが行われる場合について説明する。スキャンジョブ制御部４１１は操作パネル１０７からＡ４カラーのスキャンデータを例えばホストコンピュータ２０２へ送るよう指示を受けると、スキャンジョブ＃３を起動する（Ｓ４０１）。スキャンジョブ制御部４１１はＡ４カラースキャンに使うビットマップ展開用のメモリを共用メモリ４０３から１００ＭＢ取得しようとする（Ｓ４０２）。共用メモリ４０３の空きメモリブロック５０３は１３４ＭＢであり、１００ＭＢ以上であることからメモリ取得可能である（Ｓ１０１）。従って、１００ＭＢのメモリブロック５０６をＡ４カラースキャンジョブ＃３用に取得して返す（Ｓｌ０６）。メモリブロック情報５１７は、空き領域についてのデータであり、１３４ＭＢから１００ＭＢを差し引いて３４ＭＢの空き領域のサイズがあることを示している。
【００６６】
このときの共用メモリ４０３の状態を図１２に示す。印刷ジョブ＃１についてのジョブ情報５５２が"動作中"であり、これにスキャンジョブ＃３に対するジョブ情報５５６が追加されている。スキャンジョブ＃３自体は１００ＭＢのサイズのメモリブロックを占有するのみであることから、２００ＭＢのＲＡＭの最大空き容量がある場合に、印刷ジョブとは同時進行する形式で処理を進めることができる。よってジョブ情報５５２、５５６は共に"動作中"となる。スキャンジョブ制御部４１１はスキャナ１０６から画像を読み取り、取得したメモリブロック５０６に記憶し（Ｓ４０４）、メモリブロック５０６上の画像データをホストコンピュータ２０２へ送信し（Ｓ４０５）、送信の完了後にメモリブロック５０６を解放する（Ｓ４０７、Ｓ２０１）。印刷ジョブ制御部４０７はＡ４スキャンジョブと並行して、印刷データをメモリブロック５０２ヘビットマップとして展開し（Ｓ３０４）、メモリブロック５０２へ展開したビットマップを印刷部１０５へ入力して印刷し、印刷後にメモリブロック５０２を解放する。
【００６７】
印刷ジョブ＃１とスキャンジョブ＃３のメモリ解放が行われると、共用メモリ４０３の状態は図９のようになり、２００ＭＢの空き領域がある全て空き状態に戻っている。このとき、ジョブ情報および待避ブロック情報は登録されていない状態に戻る。
【００６８】
以上のように第１の実施形態の複合機によれば、例えば印刷機能とスキャン機能という異なる機能でメモリを共有している場合でも、印刷機能使用中に、他の機能であるスキャン機能が動作できる。また、必要なメモリ量が小さい場合は複数の機能を同時に実行するため高い利用効率が得られ、必要なメモリ量が大きい場合は優先度の高いジョブにメモリを明け渡すため、割り込んだジョブでも多くのメモリを使用することができ、高い機能性が得られる。
【００６９】
[第２の実施形態]
本実施形態の複合装置は、第１の実施形態の複合機と同様の構成を有する複合機の例であり、そのブロック構成は図１に示すものと同じである。本実施形態の複合機における機能ブロック図を図１３に示す。第1の実施形態の複合機で説明したものと同じブロック部材については、同じ参照符号を用いて図面に表し、且つここでは簡単のため重複した説明は省略する。
【００７０】
ここで図３に示した第１の実施形態の複合機と異なる点について説明すると、図１３に示すように、共用メモリ４０３からメモリブロックを取得し且つ解放するための共用メモリ管理部７０１は、取得領域決定部７０２からの不足した容量についての算出結果に基づいて作動するように構成されており、後述するように、メモリが不足した場合に、メモリブロックの取得に必要な領域だけデータ待避することを特徴としている。共用メモリ管理部７０１は、各メモリブロックに対しそれぞれメモリブロック情報を記憶する。メモリブロック情報は、先のメモリマップ内の共有領域の当該ブロックに対応した領域の先頭番地からなる先頭アドレスと、占有するサイズと、メモリブロックを取得したジョブの識別番号（空き領域ならば"無し"）と、空き領域か否かのフラッグ情報とからなり、後述するようなメモリブロックの取得や解放動作の際に参照される。なお、初期状態では共用メモリは全て空き領域として割り当てられる。
【００７１】
共用メモリ管理部７０１は、第１の実施形態における共用メモリ管理部４０２とはメモリブロック取得時の動作が異なり、特にメモリが不足した場合に、メモリブロック取得に必要な領域だけデータ待避する。取得領域決定部７０２はメモリブロックを取得する際に、不足となる容量を算出し、共有メモリ４０３上のどの領域を割り当てるかを決定する。取得領域決定部７０２は、データ待避を必要とする領域がなるべく小さくなるように取得される領域を決定する。共用メモリ４０３からのメモリブロックの取得については詳細に後述する。
【００７２】
図１４は本実施形態における共用メモリ４０３のメモリブロックを取得する際のフローである。図５に先に説明した第１の実施形態の共用メモリ４０３のメモリブロックを取得する際のフローと比較して説明すると、図５における手順Ｓ１０４と手順Ｓ１０５の代わりに新たな手順Ｓ５０１、Ｓ５０２、Ｓ５０３が実行される流れになっており、これら手順Ｓ５０１〜Ｓ５０３によって、データ待避を必要とする領域がなるべく小さくなるように制御される。なお、Ｓ１０１〜Ｓ１０３、Ｓ１０６〜Ｓ１０８は図５とのものと同様であり、簡単のため重複する説明を省略する。
【００７３】
手順Ｓ５０１〜Ｓ５０３に至る前段階として、手順Ｓ１０３では、共用メモリ管理部４０２はメモリ取得を要求したジョブより優先度の低いジョブが取得したメモリブロックを仮に空き領域と見なした場合に、要求されたサイズのメモリブロックが取得可能であるか否かを判定するが、手順Ｓ１０３で要求されたサイズのメモリブロックを取得可能と判定する場合（Ｙｅｓ）には、手順Ｓ５０１に進む。
【００７４】
手順Ｓ５０１においては、共用メモリ管理部７０１は取得領域決定部７０２にメモリブロックとして割り当てるべき領域を問い合わせる。取得領域決定部７０２は共有メモリ４０３の各メモリブロックの境界を上端または下端としたメモリブロックを仮定し、仮定したメモリブロックの内、割り当て可能で、空き領域の容量が最も大きなブロックを返す。空き領域の容量が最も大きな単独のブロックを返しただけでは、メモリ容量が不足する場合もあり、その場合には条件を満たす最小限のメモリブロックを複数個待避処理させるように制御することも可能である。もし同じ条件の領域が複数あった場合は、より先頭アドレスの小さい領域を返す。
【００７５】
次に手順Ｓ５０２では共用メモリ管理部７０１はＳ５０１で決定した割り当て予定の領域を使用するジョブに対して中断指示を出す。この中断指令の後、手順Ｓ５０３では共用メモリ管理部７０２はジョブの中断が完了すると、そのジョブが使用していたメモリブロックの内、割り当て予定の領域と重複する部分のデータを待避するようデータ待避制御部４０５に指示し、データ待避制御部４０５からの指示に従って共用メモリ４０３から待避メモリ４０４にデータを待避する。なお、メモリブロックの解放（図６）およびジョブのフロー（図７、図８）は第１の実施形態と同じであるため、重複する説明を省略する。
【００７６】
次に、図１５乃至図１８を参照して、本実施形態の複合機の動作について説明する。図１５乃至図１８は、本実施形態の複合機のそれぞれ共用メモリ４０３のメモリマップと対応する管理情報を示す図であり、図１５は初期段階、図１６は印刷ジョブが動作中の段階、図１７は印刷ジョブの追加動作がなされた段階、図１８は印刷ジョブの１つが停止とされスキャンジョブが割り込んだ段階をそれぞれ示す。なお、参照符号８０１〜８０６は共用メモリ４０３上のメモリブロックであり、参照符号８１１〜８１６はメモリブロック８０１〜８０６に対応するメモリブロック情報である。待避ブロック情報８２４はメモリブロック８０４の一部を待避したときの待避ブロック情報である。ジョブ情報８５２、８５４、８５６はジョブ管理部４０１が管理するジョブの情報である。
【００７７】
以下、印刷ジョブ実行中にスキャンジョブを割り込ませた場合の動作例を説明する。図１５に示すように、初期状態では、共用メモリ４０３は０ｘ００００００００番地から０ｘ０Ｃ８０００００番地までの２００ＭＢ全て空き領域８０１とされている。またメモリブロック情報８１１には、先頭アドレスとして"０ｘ００００００００番地"が格納され、サイズとして２００ＭＢが格納され、取得したジョブの識別番号が"無し"、空き領域か否かについて"TRUE"と格納されている。初期段階ではジョブに対応していないので、取得したジョブ自体が不存在であり、空き領域か否かについて"TRUE"とは空き領域であることを示す。なお、この初期状態においては、ジョブ情報および待避ブロック情報は登録されていない。
【００７８】
次に、印刷ジョブ制御部４０７はホストコンピュータ２０１からＡ４カラーの印刷データを受信して印刷ジョブ＃１を開始するものとする（Ｓ３０１）。ジョブ管理部４０１はこの印刷ジョブに対し識別番号"１"を割り当て、ジョブ情報８５２を登録する。印刷ジョブ制御部４０７は印刷ジョブ＃１が使うビットマップ展開用のメモリを共用メモリ４０３から６６ＭＢ取得するよう共用メモリ管理部７０１へ要求する（Ｓ３０２）。この要求に応じて、共用メモリ管理部７０１は空きメモリブロック８０１の容量２００ＭＢと要求された６６ＭＢを比較し（Ｓ１０１）、その比較結果より空き容量が十分にあるため、ここからメモリブロック８０２を取得し（Ｓｌ０６）、その旨を印刷ジョブ制御部４０７へ返す。このときの共用メモリ４０３の状態は図１６のように示され、印刷ジョブ＃１のメモリブロック８０２に６６ＭＢ、空き領域８０３に１３４ＭＢ割り当てられている。続いて、印刷ジョブ制御部４０７は取得したメモリブロック８０２にビットマップを展開する（Ｓ３０４）。印刷ジョブ制御部４０７はメモリブロック８０２へ展開したビットマップを印刷部１０５へ入力して印刷を開始する（Ｓ３０５）。
【００７９】
図１６の状態におけるメモリブロック情報については、印刷ジョブに対応するものとして、メモリブロック情報８１２が格納されており、その内容は先頭アドレスを"０ｘ００００００００"とし、サイズを６６ＭＢとし、取得したジョブの識別番号を"1"とし、空き領域についてのフラグを空きではないことを意味する"FALSE"とするものである。また、同時に空き領域に対するメモリブロック情報８１３も所定のデータからなり、先頭アドレスとして"０ｘ０４２０００００番地"が格納され、サイズとして１３４ＭＢが格納され、取得したジョブの識別番号が"無し"、空き領域か否かについて"TRUE"と格納されている。このメモリブロック情報８１３に対応するジョブ情報は存在しない。
【００８０】
次に、１つの印刷ジョブを実行中に、他の印刷ジョブが割り込んだものとする。詳しくは、印刷ジョブ制御部４０７はホストコンピュータ２０１からＡ４カラーの印刷データを受信すると印刷ジョブ＃２を開始する（Ｓ３０１）。ジョブ管理部４０１はこの印刷ジョブに対し識別番号"２"を割り当て、印刷ジョブを内容とするジョブ情報８５４を登録する。
【００８１】
印刷ジョブ制御部４０７は印刷ジョブ＃１が使うビットマップ展開用のメモリを共用メモリ４０３から６６ＭＢ取得するよう共用メモリ管理部７０１へ要求する（Ｓ３０２）。共用メモリ管理部７０１は空きメモリブロック８０３の容量１３４ＭＢと要求された６６ＭＢを比較し（Ｓ１０１）、その比較した結果、空き容量が十分にあるためここからメモリブロック８０４を取得して（Ｓ１０６）、印刷ジョブ制御部４０７へ返す。このときの共用メモリ４０３の状態は図１７に示す状態となる。印刷ジョブ＃１のメモリブロック８０２に６６ＭＢ、印刷ジョブ＃２のメモリブロック８０４に６６ＭＢ、空き領域８０５に６８ＭＢ割り当てられている。
【００８２】
印刷ジョブ制御部４０７は新たに印刷ジョブ＃２のために取得したメモリブロック８０４にビットマップを展開する（Ｓ３０４）。印刷ジョブ制御部４０７はメモリブロック８０２へ展開したビットマップを印刷部１０５へ入力して印刷を開始する（Ｓ３０５）。また、印刷ジョブ制御部４０７はメモリブロック８０４へ展開したビットマップを印刷部１０５へ入力して印刷を開始する（Ｓ３０５）。
【００８３】
続いて、このように印刷ジョブ＃１、＃２が並列して実行されている状態で、さらにスキャンジョブの割り込みが行われるものとする。このスキャンジョブの割り込みに際しては、スキャンジョブ制御部４１１は操作パネル１０７からＡ４カラーのスキャンデータをホストコンピュータ２０２へ送るよう指示を受けるとスキャンジョブ＃３を起動する（Ｓ４０１）。ジョブ管理部４０１はこの印刷ジョブに対し識別番号"３"を割り当て、ジョブ情報８５６を登録する。
【００８４】
スキャンジョブ制御部４１１はＡ４カラースキャンに使うビットマップ展開用のメモリを共用メモリ４０３から１００ＭＢ取得するため共用メモリ管理部７０１へ要求する（Ｓ４０２）。このときメモリの容量は取得領域決定部７０２により算出する。共用メモリ４０３の空きメモリブロック８０５は６８ＭＢであるため１００ＭＢには足りない（Ｓ１０１）。しかしスキャンジョブ＃３より優先度の低い印刷ジョブ＃１が使用するメモリブロック８０２および印刷ジョブ＃２が使用するメモリブロック８０４を空ければ１００ＭＢ取得可能である（Ｓ１０２、Ｓ１０３）。このため、共用メモリ管理部７０１は取得する領域を決定するよう取得領域判定部７０２に要求する。取得領域判定部７０２は図１７の状態にある共有メモリ４０３の各メモリブロック８０２、８０４、８０５の境界を上端または下端としたメモリブロックを仮定する。仮定した領域は図１９に示す領域９０１〜９０８のようになり、このうち取得可能なブロックは領域９０１、９０２、９０７、９０８である。取得領域判定部７０２が取得可能と判断する領域のうち最も空き領域の割合が大きい領域は領域９０８であるため、ここでは領域９０８を取得する領域として返す（Ｓ５０１）。すなわち、領域９０８は空きメモリブロック８０５の全部を収容するような領域であり、最も空き領域の割合が大きい領域となる。
【００８５】
共用メモリ管理部７０１は、取得する領域９０８の一部を使用している印刷ジョブ＃２の処理を中断するようジョブ管理部４０１へ指示する（Ｓ５０２）。印刷ジョブ１０２の処理が中断した後、取得予定領域９０８と重複するメモリブロック８０４の後半部分３２ＭＢを待避メモリ４０４に待避するようデータ待避制御部４０５に指示し、データを待避メモリ４０４に待避する（Ｓ５０３）。共用メモリ管理部７０１はデータ待避によりメモリブロック８０４から削った領域（３２ＭＢ）と空き領域８０５を合わせてメモリブロック８０６を取得しスキャンジョブ制御部４１１へ返す（Ｓ１０６）。
【００８６】
このときの共用メモリ４０３の状態は図１８に示す状態となる。印刷ジョブ＃１のメモリブロック８０２に６６ＭＢ、印刷ジョブ＃２のメモリブロック８０４に３４ＭＢ、その印刷ジョブ＃２のメモリブロック８０４であった３２ＭＢと空き領域８０５であった６８ＭＢが合わせて新たにスキャンジョブ＃３のメモリブロック８０６に６８ＭＢ割り当てられている。印刷ジョブ＃２に対するジョブ情報８５４は「状態」が停止中に変化している。スキャンジョブ＃３に対するジョブ情報８５６が追加されている。また、メモリブロック８０４の一部を待避した情報として、その３２ＭＢ分の待避ブロック情報８２４が登録されている。待避元のアドレスは０ｘ０６４０００００番地であり、元の印刷ジョブ＃２のメモリブロック８０４の途中の番地である。スキャンジョブ制御部４１１はスキャナ１０６から画像を読み取り、取得したメモリブロック８０６に記憶し（Ｓ４０４）、メモリブロック８０６上の画像データをホストコンピュータ２０２へ送信し（Ｓ４０５）。
【００８７】
メモリブロック８０６上の画像データをホストコンピュータ２０２へ送信した後、メモリブロック８０６を解放する（Ｓ４０７、Ｓ２０１）。このとき待機状態の印刷ジョブ＃２があり（Ｓ２０２）、待避ブロック情報８２４から復元先の共有メモリ４０３を調べると、この印刷ジョブが使用していたメモリ領域５０４が全て復元可能となったため（Ｓ２０３）、共用メモリ管理部７０ｌはデータ待避制御部４０５に指示し、待避メモリ４０４から待避していたデータを復元する（Ｓ２０４）。復元完了後に共用メモリ管理部７０１はジョブ管理部４０１を通して印刷ジョブ管理部４０７へ印刷ジョブ＃２の再開許可を出す（Ｓ２０５）。このときの共用メモリ４０３の状態は印刷ジョブ＃１と印刷ジョブ＃２が並列に実行されている図１７のように復元される。
【００８８】
印刷ジョブ制御部４０７はメモリブロック８０２へ展開したビットマップの印刷が終了したらメモリブロック８０２を解放する（Ｓ３０７）。また、印刷ジョブ制御部４０７はメモリブロック８０４へ展開したビットマップの印刷が終了したらメモリブロック８０４を解放する（Ｓ３０７）。このように両方のメモリブロック８０２、８０４が解放された場合には、共用メモリ４０３の状態は図１５のようになり、全て空き状態に戻ることになる。
【００８９】
以上のように、第２の実施形態によれば、重複した部分のデータのみを待避することができ、例えば待避されるデータ量は最小限で済むことになるため、データの待避及び復元にかかる時間が短くなるという効果が得られる。また、第１の実施形態と同様に、例えば印刷機能とスキャン機能という異なる機能でメモリを共有している場合でも、印刷機能使用中に、他の機能であるスキャン機能が動作できる。また、必要なメモリ量が小さい場合は複数の機能を同時に実行するため高い利用効率が得られ、必要なメモリ量が大きい場合は優先度の高いジョブにメモリを明け渡すため、割り込んだジョブでも多くのメモリを使用することができ、高い機能性が得られることになる。
【００９０】
第１の実施形態では、ジョブの優先度をジョブの種類に応じて決定し、スキャンジョブが印刷ジョブより優先度が高いとしたが、逆の優先度またはユーザにより指定された優先度を用いても良い。また、上述の各実施形態で説明した機能部の動作を、印刷動作とスキャン動作を主に説明したが、他の画像処理や複写、ファクシミリ、ネットワーキングについての情報処理などの他の機能についても同様な割り込み処理や待避処理を図るように構成することもできる。
【図面の簡単な説明】
【００９１】
【図１】本発明の第１の実施形態にかかる複合機の一例を示す構成図である。
【図２】本発明の第１の実施形態にかかる複合機のＲＡＭ内のメモリマップである。
【図３】本発明の第１の実施形態にかかる複合機の機能ブロック図である。
【図４】本発明の第１の実施形態にかかる複合機のスキャン動作の設定画面を示す図である。
【図５】本発明の第１の実施形態にかかる複合機のメモリ取得動作のフローチャートである。
【図６】本発明の第１の実施形態にかかる複合機のメモリ解放動作のフローチャートである。
【図７】本発明の第１の実施形態にかかる複合機の印刷ジョブの実行動作のフローチャートである。
【図８】本発明の第１の実施形態にかかる複合機のスキャンジョブの実行動作のフローチャートである。
【図９】本発明の第１の実施形態にかかる複合機の共用メモリのメモリマップと関連情報についての図であり、初期状態を示す図である。
【図１０】本発明の第１の実施形態にかかる複合機の共用メモリのメモリマップと関連情報についての図であり、印刷ジョブを実行する状態を示す図である。
【図１１】本発明の第１の実施形態にかかる複合機の共用メモリのメモリマップと関連情報についての図であり、印刷ジョブにスキャンジョブを割り込ませた状態を示す図である。
【図１２】本発明の第１の実施形態にかかる複合機の共用メモリのメモリマップと関連情報についての図であり、印刷ジョブと小容量のスキャンジョブを同時に実行させる状態を示す図である。
【図１３】本発明の第２の実施形態にかかる複合機の機能ブロック図である。
【図１４】本発明の第２の実施形態にかかる複合機のメモリ取得動作のフローチャートである。
【図１５】本発明の第２の実施形態にかかる複合機の共用メモリのメモリマップと関連情報についての図であり、初期状態を示す図である。
【図１６】本発明の第２の実施形態にかかる複合機の共用メモリのメモリマップと関連情報についての図であり、印刷ジョブを実行する状態を示す図である。
【図１７】本発明の第２の実施形態にかかる複合機の共用メモリのメモリマップと関連情報についての図であり、２つの印刷ジョブと同時に実行する状態を示す図である。
【図１８】本発明の第２の実施形態にかかる複合機の共用メモリのメモリマップと関連情報についての図であり、２つの印刷ジョブとスキャンジョブを割り込ませて実行させる状態を示す図である。
【図１９】本発明の第２の実施形態にかかる複合機の共用メモリのメモリマップと取得領域判定部が取得可能と判断する領域を示す模式図である。
【符号の説明】
【００９２】
１００  複合機
１０１  ＣＰＵ
１０２  ＲＡＭ
１０３  ＲＯＭ
１０４  インターフェイス
１０５  印刷部
１０６  スキャナ
１０７  操作パネル
１０８  ハードディスク
２０１〜２０３  ホストコンピュータ
３０１  システム領域
３０２  共用領域
３０３  固定サイズ領域
４０１  ジョブ管理部
４０２  共用メモリ管理部
４０３  共用メモリ
４０４  待避メモリ
４０５  データ待避制御部
４０６  印刷データ入力部
４０７  印刷ジョブ制御部
４０８  印刷データ展開部
４０９  印刷制御部
４１０  設定入力部
４１１  スキャンジョブ制御部
４１２  スキャン部
４１３  スキャンデータ出力部
４１４  データ量算出部
５０１〜５０７  メモリブロック
５１１〜５１７  メモリブロック情報
５２２  待避ブロック情報
５５２、５５４、５５６  ジョブ情報
６００  スキャン設定画面
６０１〜６０４  サイズ・色選択ボタン
６０５  送信先指定枠
６０６  スキャン開始指示ボタン
７０１  共用メモリ管理部
７０２  取得領域決定部
８０１〜８０６  メモリブロック
８１１〜８１６  メモリブロック情報
８２４  待避ブロック情報
５５２、５５４、５５６  ジョブ情報
９０１〜９０９  領域
【図１】
0004852558.tif 000003
【図２】
0004852558.tif 000004
【図３】
0004852558.tif 000005
【図４】
0004852558.tif 000006
【図５】
0004852558.tif 000007
【図６】
0004852558.tif 000008
【図７】
0004852558.tif 000009
【図８】
0004852558.tif 000010
【図９】
0004852558.tif 000011
【図１０】
0004852558.tif 000012
【図１１】
0004852558.tif 000013
【図１２】
0004852558.tif 000014
【図１３】
0004852558.tif 000015
【図１４】
0004852558.tif 000016
【図１５】
0004852558.tif 000017
【図１６】
0004852558.tif 000018
【図１７】
0004852558.tif 000019
【図１８】
0004852558.tif 000020
【図１９】
0004852558.tif 000021