以下に、本発明の実施の形態について、添付の図面を参照して説明する。
<システム構成>
図1に、一実施形態に係る画像形成装置(以下、複合機と称す)100の構成図を示す。複合機100は、ソフトウェア群101と、複合機起動部102と、ハードウェア資源103とを有する。ハードウェア資源103は、スキャナ124、白黒レーザプリンタ(以下、白黒LPと称す)125、カラーレーザプリンタ(以下、カラーLPと称す)126及びその他のハードウェアリソース123を含む。
複合機起動部102は、複合機100の電源投入時に最初に起動され、アプリケーション層104及びプラットフォーム層105を起動する。例えば複合機起動部102は、アプリケーション層104及びプラットフォーム層105のプログラムを、後述するハードディスク装置等から読み出し、読み出した各プログラムをメモリ領域に転送して起動する。
ソフトウェア群101は、UNIX(登録商標)等のオペレーティングシステム(以下、OSと称す)上に起動されているアプリケーション層104とプラットフォーム層105とを含む。アプリケーション層104は、プリンタ、コピー、ファックス及びスキャナ等の画像形成に係るユーザサービスにそれぞれ固有の処理を行うプログラムを含む。
アプリケーション層104は、プリンタアプリ108と、コピーアプリ109と、ファックスアプリ110と、スキャナアプリ111等を含む。プリンタアプリ108は、プリンタ用のアプリケーションである。コピーアプリ109はコピー用のアプリケーションである。ファックスアプリ110はファックス用のアプリケーションである。スキャナアプリ111は、スキャナ用のアプリケーションである。
また、プラットフォーム層105は、アプリケーション層104からの処理要求を解釈してハードウェア資源103の獲得要求を発生するコントロールサービス層106と、1つ以上のハードウェア資源103の管理を行ってコントロールサービス層106からの獲得要求を調停するシステムリソースマネージャ(以下、SRMと称す)120と、SRM120からの獲得要求に応じてハードウェア資源103の管理を行うハンドラ層107とを含む。
コントロールサービス層106は、ネットワークコントロールサービス(以下、NCSと称す)112、デリバリーコントロールサービス(以下、DCSと称す)113、オペレーションコントロールサービス(以下、OCSと称す)114、ファックスコントロールサービス(以下、FCSと称す)115、エンジンコントロールサービス(以下、ECSと称す)116、メモリコントロールサービス(以下、MCSと称す)117、ユーザインフォメーションコントロールサービス(以下、UCSと称す)118、システムコントロールサービス(以下、SCSと称す)119等、一つ以上のサービスモジュールを含むように構成されている。
尚、プラットフォーム層105は、予め定義されている関数により、アプリケーション層104からの処理要求を受信可能にするアプリケーションプログラミングインタフェース(以下、API称す)128を有する。オペレーティングシステム(以下、OSと称す)は、アプリケーション層104及びプラットフォーム層105の各ソフトウェアをプロセスとして並列実行する。
ネットワークコントロールサービスであるNCS112のプロセスは、ネットワーク入出力を必要とするアプリケーションに対して共通に利用できるサービスを提供するものである。NCS112は、ネットワーク側から各プロトコルによって入手したデータを各アプリケーションに振り分けたり、各アプリケーションからのデータをネットワーク側に送信する際の仲介を行う。例えば、NCS112は、ネットワークを介して接続されるネットワーク機器とのデータ通信をhttpd(Hyper Text Transfer Protocol Daemon)により、HTTP(Hyper Text Transfer Protocol)で制御する。
デリバリーコントロールサービスであるDCS113のプロセスは、蓄積文書の配信等の制御を行う。オペレーションコントロールサービスであるOCS114のプロセスは、オペレータと本体制御との間の情報伝達手段となるオペレーションパネルの制御を行う。ファックスコントロールサービスであるFCS115のプロセスは、アプリケーション層104からPSTN等を利用したファックス送受信、バックアップ用のメモリで管理されている各種ファックスデータの登録/引用、ファックス読み取り、ファックス受信印刷等を行うためのAPIを提供する。
エンジンコントロールサービスであるECS116のプロセスは、スキャナ124、白黒レーザプリンタ(白黒LP)125、カラーレーザプリンタ(カラーLP)126、その他のハードウェアリソース123等の、エンジン部の制御を行う。メモリコントロールサービスであるMCS117のプロセスは、メモリの取得及び開放、ハードディスク装置の利用等のメモリ制御を行う。ユーザインフォメーションコントロールサービスであるUCS118のプロセスは、ユーザ情報の管理を行う。
システムコントロールサービスであるSCS119のプロセスは、アプリケーション管理、操作部制御、システム画面表示、LED表示、ハードウェア資源管理、割り込みアプリケーション制御等の処理を行う。
システムリソースマネージャであるSRM120のプロセスは、スキャナ124、白黒LP125やカラーLP126等のハードウェア資源103を含むリソースを利用する上位層からの獲得要求に従って調停を行い、実行制御する。具体的には、SRM120のプロセスは、リソースが利用可能であるか(他の獲得要求により利用されていないかどうか)を判定し、利用可能であれば獲得要求されたリソース利用可能である旨を上位層に通知する。また、SRM120のプロセスは、上位層からの獲得要求に対してリソースを利用するためのスケジューリングを行い、要求内容(例えば、プリンタエンジンによる紙搬送と作像要求、メモリ確保、ファイル生成等)を直接実施している。
また、ハンドラ層107は、後述するファックスコントロールユニット(以下、FCUと称す)の管理を行うファックスユニットハンドラ(以下、FCUHと称す)121と、プロセスに対するメモリの割り振り及びプロセスに割り振ったメモリの管理を行うイメージメモリハンドラ(以下、IMHと称す)122とを含む。SRM120及びFCUH121は、予め定義されている関数によりハードウェア資源103に対する処理要求を送信可能とするエンジンインタフェース(以下、エンジンI/Fと称す)127を利用して、ハードウェア資源103に対する処理要求を行う。
また、IMH122は、ハードウェア資源103や画像データ又は画像データを記憶する記憶領域をリソースとして管理する。さらに、OSから提供されている排他の仕組みを使用して、上記リソース等の排他制御を行い、情報やハードウェアの競合を防いでいる。
複合機100は、各アプリケーションで共通的に必要な処理をプラットフォーム層105で一元的に処理することができる。
上記構成において、例えば、画像の読み込みを行う場合には、コピーアプリ109、ファックスアプリ110又はスキャナアプリ111等にて要求が発生する。要求に応じてスキャナ124等で読み込まれた画像のデータは、プラットフォーム層105を通じて、メモリ等の記憶領域に書き込まれる。記憶領域に書き込まれた画像データは、エンジンI/F128を介して、例えば、白黒LP125、カラーLP126等で印刷することができる。
<ハードウェア構成>
図2は、複合機100の一実施の形態におけるハードウェア構成図を示している。複合機100は、コントローラボード200と、オペレーションパネル209と、FCU210と、エンジン部213とを含む。エンジン部213は、例えば、図1のスキャナ124、白黒LP125、カラーLP126等を含む。また、コントローラボード200は、CPU201と、ASIC206と、ハードディスク装置(以下、HDDと称す)208と、システムメモリ(MEM−P)202と、ローカルメモリ(MEM−C)207と、ノースブリッジ(以下、NBと称す)203と、サウスブリッジ(以下、SBと称す)204と、NIC214(Network Interface Card)と、USBデバイス211と、IEEE1394デバイス212と、セントロニクスデバイス215とを含む。
オペレーションパネル209は、コントローラボード200のASIC206に接続されている。また、SB204と、NIC214と、USBデバイス211と、IEEE1394デバイス212と、セントロニクスデバイス215は、NB203にPCIバスで接続されている。また、FCU210と、エンジン部213は、コントローラボード200のASIC206にPCIバスで接続されている。
尚、コントローラボード200は、ASIC206にローカルメモリ207、HDD208等が接続されると共に、CPU201とASIC206とがCPUチップセットのNB203を介して接続されている。このように、NB203を介してCPU201とASIC206とを接続すれば、CPU201のインタフェースが公開されていない場合に対応できる。
また、ASIC206とNB203とは、PCIバスを介して接続されているのではなく、AGP(Accelerated Graphic Port)205を介して接続されている。このように、図1のアプリケーション層104やプラットフォーム層105を形成する一つ以上のプロセスを実行制御するため、ASIC206とNB203とを低速のPCIバスではなく、AGP205を介して接続し、パフォーマンスの低下を防いでいる。
CPU201は、複合機100の全体制御を行うものである。CPU201は、NCS112、DCS113、OCS114、FCS115、ECS116、MCS117、UCS118、SCS119、SRM120、FCUH121、IMH122をOS上にそれぞれプロセスとして起動して実行させる。さらに、アプリケーション層104を形成するプリンタアプリ108、コピーアプリ109、ファックスアプリ110、スキャナアプリ111を同様に起動して実行させる。
NB203は、CPU201、システムメモリ202、SB204及びASIC206を接続するためのブリッジである。システムメモリ202は、複合機100の描画用メモリ等として用いるメモリである。SB204は、NB203とPCIバス、周辺デバイスとを接続するためのブリッジである。また、ローカルメモリ207は、コピー用画像バッファ、符号バッファとして用いるメモリである。システムメモリ202又はローカルメモリ207は、以下の説明で、単にメモリ、又は記憶領域と表現する場合がある。
ASIC206は、画像処理用のハードウェア要素を有する画像処理用途向けのICである。HDD208は、画像の蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積等を行うためのストレージである。また、オペレーションパネル209は、ユーザからの入力操作を受け付けると共に、ユーザに向けた表示を行う操作部である。
<機能構成>
図3に、複合機100の機能構成の一例を示す。複合機100は、一つ以上のモジュール301、302、排他制御手段303、リソース管理手段304、及び複数のリソース305、306、307、308を含む。尚、モジュール301、302及び、リソース305〜308の数は一例であって、その数は他の数であっても良い。
モジュール301、302は、CPU201等に予め定められた機能を実現させるためのプログラムであり、例えば、アプリケーション層104のアプリケーションや、コントロールサービス層106のサービス等である。リソース管理手段304は、ハードウェア資源103や、画像データ又は画像データを記憶する記憶領域等を、それぞれリソース305〜308として管理する。排他制御手段303は、リソース305〜308やモジュール301、302等の排他制御を行う。尚、リソース管理手段304、排他制御手段303は、例えば、CPU201で動作するプログラムによって実現される。このプログラムは、例えば、図2のHDD208等のストレージデバイス、及び/又はUSBデバイス211等に接続されたUSBメモリ等の記録媒体に格納することができる。
次に、モジュールとリソースの関係について説明する。図4は、一実施の形態に係るモジュールとリソースの関係を示す図である。モジュール301は、その処理の中で、ハードウェア資源401、402、403、及び画像データ404を使用する。ここで、リソース管理手段304は、これらのハードウェア資源401〜403、及び画像データ404等をそれぞれリソース305〜308として管理する。尚、ハードウェア資源401のように、同じハードウェアが複数搭載されている場合には、その複数のハードウェアをまとめて1つのリソースとして管理しても良い。
モジュール301が行う処理によって、必要なリソースは決まっており、必要の無いリソースにはアクセスしない。そのため、排他制御手段303は、処理に必要なリソースに応じて、排他制御を行う。
排他制御手段303は、例えば、リソース305がモジュール301の処理によって使用される場合、リソース305の排他制御を行い、リソース305の使用が終わったときにリソース305の排他制御を停止又は終了する。但し、ランダムに各リソースの権利を取得していくとデッドロックが発生する恐れがあるため、各リソースを使用する前にモジュール301の排他制御を行い、モジュール301の処理は、モジュール301を介して各リソースの権利を取得する。
図5に、本実施の形態に係るリソースの取得手順を示すフローチャートを示す。例えば、モジュール301の処理が、リソース305を使用する場合、排他制御手段303は、モジュール301の排他制御を行う(ステップS501)。次に、排他制御手段303は、リソース305の排他制御を開始し、モジュール301の排他制御を停止又は終了する(ステップS502)。次に、ステップS503において、リソース305における処理が終わった後、リソース305の排他制御を停止又は終了する(ステップS504)。モジュール301は、各リソースへの排他制御等の状況を一元管理することにより、各リソースへの重複した排他制御を防止し、デッドロックを防止している。
<動作の説明>
次に複合機100の動作について説明する。
[第1の実施の形態]
図6は、第1の実施形態に係る処理が1つの場合の排他制御の流れを示す図である。ここでは、処理1はリソース305から、306、307、308の順番に使用していくものとする。
処理1のリソース305に対応する処理である処理1−1がリソース305を使用する場合、排他制御手段303は、時刻T1において、モジュール301の排他制御を行い、その後、時刻T3においてリソース305の排他制御を開始する。尚、本実施の形態では、排他制御手段303は、リソース305の排他制御を開始する時刻T3、またはその前にモジュール301の排他制御を停止又は終了するものとして説明を行うが、本発明の範囲を限定するものではない。例えば、排他制御手段301は、リソース305の排他制御を開始した後に、モジュール301の排他制御を停止又は終了するものであっても良い。時刻T5において処理1−1によるリソース305の使用が終わると、リソース管理手段304は、リソース305の排他制御を終了する。
時刻T5において、処理1−1が終わると、次のリソース306に係る処理である処理1−2を開始する。排他制御手段303は、時刻T5において、モジュール301の排他制御を行い、その後時刻T7において、リソース306の排他制御を開始する。尚、排他制御手段303は、リソース306の排他制御を開始する時刻T7又はその前にモジュール301の排他制御を終了する。同様にして、処理1−3、処理1−4についても、順次処理を行い、最後に処理1−5を実行して、時刻T19に処理1を完了する。このように排他制御手段303は、処理1が使用するリソースに対応して、処理1に係る排他制御を複数の処理単位に細分化(分割)する。また、排他制御手段303は、各リソースで処理を行っているとき、モジュール301の排他制御を停止又は終了する。
次に処理が2つの場合の動作について説明する。図7は、本実施の形態を実施していない場合の処理の流れの一例を示す図である。図7において、処理1は、リソース305とリソース307を使用する処理である。また、処理2は、リソース306とリソース305を使用する処理である。図7では、図6のように処理1に係る排他制御が各リソースに対応する複数の処理単位に細分化されていないので、処理1の処理が始まる時刻T1から処理が終わる時刻T5までモジュール301の排他制御は解除されない。そのため、処理2は、時刻T9まで処理を開始できず、大きな遅延が発生する。
次に、図8は第1の実施形態に係る処理が2つの場合の排他制御の流れを示す図である。図8の時刻T1において、処理1のリソース305に係る処理である処理1−1を開始すると、それに応じて排他制御手段303は、モジュール301の排他制御を行う。この排他制御が行われている間、処理1−1以外の処理はモジュール301を使用することができない。次に排他制御手段303は、時刻T3にモジュール301の排他制御を終了し、リソース305の排他制御を行う。これにより、処理1−1は、リソース305を使用できるようになる。一方、リソース305は、処理1−1以外の処理からは使用できなくなる。
時刻T3において、モジュール301の排他制御が解除されると、処理2は、リソース307に係る処理である処理2−1を開始する。処理2−1の開始に応じて、排他制御手段303は時刻T3よりモジュール301の排他制御を開始し、モジュール301は処理2−1以外の処理では使用できなくなる。
時刻T5において、排他制御手段303は、処理2−1に係るモジュール301の排他制御を終了し、リソース307の排他制御を開始する。一方、時刻T5において、処理1−1によるリソース305に係る処理が終わると、排他制御手段303は、リソース305の排他制御を終了する。T5において、処理1−1が終了し、モジュール301が使用可能であるため、処理1の次のリソースであるリソース307に係る処理1−2を開始する。排他制御手段303は、処理1−2の開始に応じてモジュール301の排他制御を開始する。
時刻T7において、排他制御手段303は、処理1−2に係るモジュール301の排他制御を終了し、リソース306の排他制御を開始する。一方、時刻T7において、処理2−1が完了すると、排他制御手段303はリソース307の排他制御を終了する。また、時刻T7において、処理2の次のリソースであるリソース305に係る処理である処理2−2を開始する。処理2−2の開始に応じて、排他制御手段303は、時刻T7よりモジュール301の排他制御を開始する。
時刻T9において、排他制御手段303は、処理2−2に係るモジュール301の排他制御を終了し、リソース305の排他制御を開始する。また、時刻T9において、処理1は、処理1−2を終え、処理1−3に処理を移行する。次に、時刻T11において、処理2は、処理2−2を終え、処理2−3に処理を移行する。
このようにして、各処理に係る排他制御を複数のリソースに対応する複数の処理単位に細分化することにより、必要最低限のリソース又はモジュールだけを排他制御することができる。従って、複数の処理が並行して動作した場合に、排他制御による遅延を低減することができる。
ここで、図5、6における、リソース305、306、307と各ハードウェア資源103の対応について、具体的な一例をあげて説明する。例えば、図8において、リソース305をデータの一時記憶領域、リソース306をカラーLP126、リソース307をスキャナ124とする。また、処理1を一時記憶領域のデータをカラーLP126で印刷する処理、処理2をスキャナ124から入力したデータを一時記憶領域に保存する処理とする。
この場合、図7の動作では、一時記憶領域のデータをカラーLP126で印刷する処理が終了するまで、スキャナ124からの入力処理を行うことができなかった。しかし、図8に示す本実施の形態では、一時記憶領域からデータを読み出している期間(時刻T3からT5)、及びカラーLP126が印刷を行っている期間(時刻T7からT9)には、スキャナ124からのデータ入力を開始することができる。
尚、図6、7、8において、説明を簡単にするため、各処理の排他制御期間が等しく記載されているが、本発明の範囲を制限するものではない。例えば、図8のT5において、処理2−1は、モジュール301の排他制御を終了し、リソース307の排他制御を開始している。しかし、例えば、時刻T4において処理2−1によるモジュール301の処理が完了していれば、時刻T4においてモジュール301の排他制御を終了し、リソース307の排他制御を開始しても良い。他の処理による排他制御期間についても、必要な期間だけ、必要なモジュール又はリソースを排他制御すれば良いことは言うまでもない。
次に、複数の処理の間でリソースが競合する場合の動作について説明する。図9は、第1の実施形態における処理が3つの場合の排他制御の流れを示す図である。尚、基本的な排他制御の流れは図8と同じであるので、図8との相違点を中心に説明する。
モジュール301の処理である処理1、2、3はそれぞれ、リソース305とリソース307、リソース307とリソース308、リソース307とリソース308を使用する。従って、処理1、2、3は、いずれもリソース307を使用することになる。
図9の時刻T1において、排他制御手段303は処理1−1に係るモジュール301の排他制御を行う。次に、時刻T4に処理1−1に係るモジュール301の排他制御を終了し、リソース305の排他制御を開始する。時刻T4にモジュール301が利用可能になると、排他制御手段303は、処理2−1に係るモジュール301の排他制御を行う。その後、時刻T5に処理2−1に係るモジュール301の排他制御を終了し、リソース307の排他制御を開始する。時刻T5には、処理2−1に係るモジュール301の排他制御が終了するため、モジュール301が利用可能になるが、処理1及び処理2は他の処理を実行しているため、モジュール301を利用しない。このとき、新たな処理である処理3がモジュール301を利用できる。
時刻T5において、排他制御手段303は処理3−1に係るモジュール301の排他制御を行い、時刻T6にモジュール301の排他制御を終了する。しかし、時刻T6において、処理3−1が使用したいリソース307は、処理2−1によって使用中なので、処理3−1はリソース307の使用権を獲得することができない。
時刻T7において、処理2−1が完了し、リソース307の排他制御が終了すると、リソース307が利用可能になる。しかし、時刻T7には、処理1−2に係るモジュール301も排他制御が終了するので、時刻T7においてリソース307には、処理1−2、処理3−1の双方からの利用要求が発生する。ここで、排他制御手段303は、処理3よりも先に実行を開始した処理1に係る処理1−2に優先的にリソース307を割り当てるものとする。この場合、排他制御手段303は、処理1−2が完了し、リソース307の排他制御が終了する時刻T9に、処理3−1に係るリソース307の排他制御を開始する。
同様に、時刻T11において、処理2−2と処理3−1との間でモジュール301への要求が競合するが、処理3よりも先に実行を開始した処理2に係る処理2−2を優先して実行させる。
尚、上記動作は本実施の形態の一例であって本発明の範囲を限定するものではない。例えば、図7の時刻T7において、先に実行を開始した処理1に係る処理1−2を先に処理したが、システムの要求等に応じて、先に処理を終えた、処理3−1を先に処理するものであっても良い。
以上より、本実施の形態によれば、排他制御による遅延を低減した画像形成装置を提供することができる。
尚、本実施の形態は本発明の範囲を限定するものではない。システムやユーザ等の要求に応じて様々な応用が可能であることは言うまでもない。以下に、いくつかの変形例をあげて説明する。
(第1の変形例)
図4において、リソース管理手段304は、ハードウェア資源401、402、403、及び画像データ404をそれぞれリソース305、306、307、308として管理するものとして説明を行った。しかし、画像データ404に代えて、画像データを記憶する一時記憶領域をリソース308として管理しても良い。また、より好適な例として、図10に示すように、画像データを記憶する一時記憶領域を複数のリソースに分けて管理すると良い。
図10において、リソース管理手段304は、ハードウェア資源401、402、403、及び、メモリ上に設けられた複数の一時記憶領域1001、1002、1003をそれぞれ、リソース305、306、307、1004、1005、1006として管理する。
上記構成により、例えば処理1によって一時記憶領域1001が使用されている場合でも、他の処理は記憶領域1002又は1003を使って処理を行うことができるので、一時記憶領域1001の排他制御による遅延を低減できる。
(第2の変形例)
図11は、第2の変形例におけるリソースの構成の一例である。各リソースは、その中にさらに細分化されたサブリソースを有していても良い。図11の例では、リソース1006は、サブリソース1101、1102を有している。図12に、サブリソース1101、1102を処理1、2が利用する場合の排他制御の流れを示す。
図12において、処理1がサブリソース1101を使用し、処理2がサブリソース1102を使用する場合の処理の流れについて説明する。時刻T1において、排他制御手段303は処理1に係るモジュール301の排他制御を行う。時刻T3において、排他制御手段303は、処理1に係るモジュール301の排他制御を停止又は終了し、リソース1006の排他制御を行う。さらに、時刻T5において、排他制御手段303は、処理1に係るリソース1006の排他制御を停止又は終了し、サブリソース1101の排他制御を開始する。時刻T9において、処理1によるサブリソース1101の使用が終わると、排他制御手段303は、サブリソース1101の排他制御を終了し、処理1に係るリソース1006の排他制御を行う。次に、時刻T11において、排他制御手段303は処理1に係るリソース1006の排他制御を終了し、モジュール301の排他制御を開始する。処理2についても、同様に処理を行う。
上記動作の中で、サブリソース1101の排他制御を開始する時刻T5において、リソース1006の排他制御を停止又は終了しているため、処理2は、時刻T7より、並行してサブリソース1102を使用することが可能となる。
上記構成により、リソースを複数のサブリソースに細分化して管理することが可能となり、また、リソース及びサブリソースの排他制御による遅延を低減できる。
(第3の変形例)
図13に第3の変形例に係るリソースの構成の例を示す。リソース管理手段304が管理するリソースとして、ハードウェア資源や、画像データ又は画像データを記憶する記憶領域に加えて、圧縮、伸張のライブラリ等のソフトウェア資源を管理しても良い。
例えば、リソース管理手段304は、図13の画像圧縮ライブラリ1301、画像伸張ライブラリ1302をそれぞれ、リソース1303、1304として管理する。
上記構成により、モジュール301の処理が、画像圧縮ライブラリ1301及び画像伸張ライブラリ1302を使用する際にも、排他制御による遅延を低減することができる。
(第4の変形例)
図14に第4の変形例に係るリソースの構成の例を示す。リソース管理手段304は必要に応じて、複数のハードウェア資源や、画像データ、記憶領域等を1つのリソースとしてまとめて管理しても良い。図14の例では、ハードウェア資源401、401をまとめてリソース1404として管理している。また、複数の画像データ1401、1402、1403をまとめてリソース1406として管理している。
例えば、コピー動作を他の処理よりも優先させたいような場合には、スキャナ124と白黒LP125をまとめてリソースとして管理することによって、他の処理の排他制御による遅延を防止することができる。
[第2の実施形態]
第1の実施形態では、画像形成装置100のモジュールの複数の処理に係る排他制御をリソースに応じて細分化(分割)する場合の例について説明を行った。第2の実施形態では、モジュールの複数の処理に係る排他制御を細分化する際の好適な一例として、排他制御の処理単位が、複数のリソースの処理速度に基づいて細分化されている場合の例について説明する。
図15は、第2の実施形態に係る処理1の排他制御の処理単位を示す図である。図15において、モジュール1501は、出力部1502、入力部1503、画像データを記憶する複数の記憶領域1504、1505、HDD1506等の複数のリソースを含む。
出力部1502は、例えば、図1の白黒LP125、カラーLP126等のプリンタエンジン部である。入力部1503は、例えば、図2のスキャナ124等の画像入力部である。複数の記憶領域1504、1505は、例えば、図2のシステムメモリ202、ローカルメモリ207等のメモリ上に設けられた記憶領域である。HDD1506は、例えば、図2のHDD208等のストレージデバイスである。
処理1は、入力部1503から読込んだ画像データを記憶領域1504に記憶し、記憶領域1504に記憶した画像データをHDD1506に保存する入力処理であるものとする。また、処理1は、複数のリソースである入力部1503、記憶領域1504、HDD1506を利用し、記憶領域1504の処理速度は、入力部1503及びHDD1506の処理速度よりも十分に速いものとする。
このような場合、処理1の排他制御を3つのリソースに合わせて3分割するのではなく、比較的処理が遅いリソースである、入力部1503に係る処理と、HDD1506に係る処理とに着目して、排他制御を2つの処理単位に分割すると良い。例えば、図15に示すように、入力部1503及び記憶領域1504を処理単位1507、記憶領域1504及びHDD1506を処理単位1508とする。これにより、処理速度の遅い2つのリソースが同時に排他制御されることを防止することができる。尚、記憶領域1504の処理速度は、入力部1503又はHDD1506の処理速度よりも十分に速いので、入力部1503又はHDD1506と共に排他制御を行っても遅延時間への影響が少ない。
図16は、第2の実施形態に係る処理2の排他制御単位を示す図である。処理2は、入力部1503から読込んだ画像データを記憶領域1505に記憶し、記憶領域1505に記憶した画像データをHDD1506に保存する入力処理であるものとする。本実施の形態では、図15と同様に、比較的処理が遅いリソースである、入力部1503に係る処理と、HDD1506に係る処理と、に2分割して排他制御を行う。例えば、図16に示すように、入力部1503及び記憶領域1505を処理単位1601、記憶領域1505及びHDD1506を処理単位1602とする。これにより、処理1と同様に、処理速度の遅い2つのリソースが同時に排他制御されることを防止することができる。
尚、図15、16では、処理速度が遅いリソースが2つの場合について説明を行ったが、処理速度が遅いリソースの数が3つ以上ある場合、処理速度が遅いリソースの数に合わせて排他制御の処理単位を分割すれば良い。
また、処理速度が遅いか否かの判断は、例えば、複数のリソースの処理速度に係る情報、例えば、処理時間、又は処理が遅いことを示すフラグ等を記録したテーブルを、例えば、図2のHDD208等に記憶しておくと良い。
<処理の流れ>
図17は、従来の入力処理の一例を示す図である。図17において、時刻T1に処理1を開始すると、排他制御手段303はモジュール1501の排他制御を行う。ここで、処理1は、例えば、使用するリソースのアクセス権を取得する処理等を含む開始処理を行う。続いて、時刻T2において、排他制御手段303は、処理1がアクセス権を取得した入力部1503、記憶領域(例えば、記憶領域1504)、及びHDD1506の排他制御を行う。
処理1は、時刻T2〜T8の間、入力部1503、記憶領域、及びHDD1506を用いて所定の入力処理を行う。時刻T8に、処理1による入力処理が終わると、排他制御手段303は、入力部1503、記憶領域、及びHDD1506の排他制御を終了する。処理1は、例えば、使用が終わったリソースのアクセス権を開放する処理等を含む終了処理を行う。時刻T9には、排他制御手段303は、処理1に係るモジュール1501の排他制御を終了し、処理1は終了する。
尚、上記時刻T1〜T9の期間、モジュール1501が排他制御されているため、処理2は、モジュール1501を利用して処理を開始することができない。また、時刻T2〜T8の期間、入力部1503、記憶領域、及びHDD1506が排他制御されているため、処理2はもちろん、他のモジュール等からも上記リソースにアクセスすることはできない。
また、時刻T9に処理1に係るモジュール1501の排他制御が終了すると、処理2の実行を開始する。処理2が時刻T9に実行を開始すると、排他制御手段303はモジュール1501の排他制御を行う。ここで、処理2は、例えば、例えば、使用するリソースのアクセス権を取得する処理等を含む開始処理を行う。続いて、時刻T10において、排他制御手段303は、処理2がアクセス権を取得した入力部1503、記憶領域(例えば、記憶領域1504)、及びHDD1506の排他制御を行う。
処理2は、時刻T10〜T16の間、入力部1503、記憶領域、及びHDD1506を用いて所定の入力処理を行う。時刻T16に、処理2による入力処理が終わると、排他制御手段303は、入力部1503、記憶領域、及びHDD1506の排他制御を終了する。ここで、処理2は、例えば、使用が終わったリソースのアクセス権を開放する処理等を含む終了処理を行う。続いて、時刻T17において、排他制御手段303は、処理2に係るモジュール1501の排他制御を終了し、処理2は終了する。
このように、従来の排他制御方法では、例えば、処理時間の比較的長い入力部1503及びHDD1506と、モジュール1501とを共に排他制御するため、排他制御による遅延時間が長くなる。
但し、従来は、HDD1506の処理時間(転送時間)が、入力部1503の処理時間(入力時間)よりも短かったため、図17の排他制御方法でも問題は顕在化しなかった。しかし、近年、入力部1503の高速化等により入力部1503の処理時間が短くなり、また、画像の高画質化に伴いHDD1506の転送時間が長くかかるようになってきた。その影響により、例えば、入力部1503とHDD1506を同時に排他制御することによる遅延時間の影響が無視できなくなってきた。
今後、さらに入力部1503の処理の高速化、及び画像の高画質化が進むことにより、例えば、HDD1506の処理時間が、入力部1503の処理時間よりも大きくなる可能性もあり、HDD1506の処理時間がボトルネックとなり、高速化された要求スペックを達成できなくなることが懸念される。本実施の形態に係る排他制御は、このような問題を低減する。
図18は、第2の実施形態に係る入力処理の例を示す図である。本実施の形態では、記憶領域を複数に分割し(記憶領域1504、1505)、それぞれをリソースとして管理する。また、処理1の排他制御の処理単位を、処理速度が遅い、入力部1503に係る処理(処理単位1507)と、HDD1506に係る処理(処理単位1508)とに分割する。同様に、処理2の排他制御の処理単位を、入力部1503に係る処理(処理単位1601)と、HDD1506に係る処理(処理単位1602)とに分割する。
図18の時刻T1において、処理1の実行を開始すると、排他制御手段303はモジュール1501の排他制御を行う。ここで、処理1は、処理単位1507で用いるリソースである入力部1503及び記憶領域1504のアクセス権を取得する処理等を含む開始処理を行う。尚、本実施の形態では、リソースを排他制御する前に、モジュール1501の排他制御を行い、排他制御されたモジュール1501でリソースのアクセス権等を管理することにより、デッドロックの発生を防止している。
次に、時刻T2において、排他制御手段303は、処理1がアクセス権を有するリソースである入力部1503及び記憶領域1504に対して排他制御を行い、モジュール1501に対する排他制御を終了(停止又は終了)する。
尚、ここで、排他制御を行うとは、対象となるリソース及び/又はモジュールを、他の処理が使用できないように制御(ロック)することである。また、排他制御を終了(停止又は終了)するとは、他の処理が使用できないように制御されたリソース及び/又はモジュールを、他の処理が使用できるように制御(ロックを解除)することである。
また、図18の「排他制御期間」は、処理1又は処理2によって排他制御が行われている期間を示している。従って、例えば、図18において、時刻T3〜T5の期間、モジュール1501は、処理1又は処理2によって排他制御されていないことを示す。つまり、図18は、例えば時刻T3〜T5の期間、処理1、2がモジュール1501にアクセス可能であることを示すものであり、モジュール1501で処理1、2が実行されていないことを示すものではない。従って、排他制御手段303が、例えば、図18の時刻T3の前にモジュール1501の排他制御を終了すると、例えば、時刻T3に任意の処理がモジュール1501を利用することができるようになる。
尚、排他制御手段303がモジュール1501の排他制御を終了するタイミングは、リソースの排他制御を開始する時刻、例えば、時刻T2の前であっても良いし、時刻T2以降であっても良い。
例えば、図18の時刻T2の後の斜線部の期間、モジュール1501の排他制御を続けた場合であっても、他の処理は、例えば、時刻T3からモジュール1501を利用することができるので、排他制御による遅延時間を短縮する効果が期待できる。つまり、排他制御手段303がモジュール1501の排他制御を終了するタイミングは、入力部1503、記憶領域1504等のリソースの排他制御を終了するよりも前、例えば、図18の時刻T5よりも前であることが望ましい。これにより、処理1に係るリソースの排他制御を終了するよりも前に、処理2を開始することができるようになる。以降の処理についても同様である。
尚、図18の例では、処理2は、初めに入力部1503を使用するので、処理1が入力部1503のリソースを開放するまで待機している。しかし、例えば、HDD1506の画像データを出力部1502に出力する処理等、入力部1503を使用しない処理は、例えば、時刻T3から実行を開始することができる。
時刻T5に、処理1の処理単位1507に係る処理が終わると、排他制御手段303は、入力部1503及び記憶領域1504の排他制御を終了し、モジュール1501の排他制御を行う。次に、処理1は、例えば、入力部1503のアクセス権を開放し、次の処理単位1508で用いるHDD1506のアクセス権を取得する処理等を行う。また、処理1は、次の処理単位1508でも引き続き使用する記憶領域1504のアクセス権を保持する。或いは、処理1は、記憶領域1504のアクセス権を改めて取得するものであっても良い。
次に、時刻T6において、排他制御手段303は、処理1がアクセス権を有するリソースである記憶領域1504及びHDD1506に対して排他制御を行い、モジュール1501に対する排他制御を終了する。
時刻T6には、モジュール1501及び入力部1503が利用可能となるので、処理2は、実行を開始する。時刻T6において、処理2の実行を開始すると、排他制御手段303は、モジュール1501の排他制御を行う。ここで、処理2は、処理単位1601で用いるリソースである入力部1503及び記憶領域1505のアクセス権を取得する処理等を含む開始処理を行う。続いて、時刻T7には、排他制御手段303は、処理2がアクセス権を有するリソースである入力部1503及び記憶領域1505に対して排他制御を行い、モジュール1501に対する排他制御を終了する。
次に、時刻T9に処理1の処理単位1508に係る処理が終わると、排他制御手段303は、記憶領域1504及びHDD1506の排他制御を終了し、モジュール1501の排他制御を行う。ここで、処理1は、記憶領域1504及びHDD1506のアクセス権を開放する処理等を含む終了処理を行う。時刻T10において、処理1は終了し、排他制御手段303は、処理1に係るモジュール1501の排他制御を終了する。
一方、時刻T10には、処理2の処理単位1601の処理が終わるので、排他制御手段303は、入力部1503及び記憶領域1505の排他制御を終了し、モジュール1501の排他制御を行う。ここで、処理2は、例えば、入力部1503のアクセス権を開放し、次の処理単位1602で用いるHDD1506のアクセス権を取得する処理等を行う。また、処理2は、次の処理単位1602でも引き続き使用する記憶領域1505のアクセス権を、例えば、保持する。
次に、時刻T11において、排他制御手段303は、処理2がアクセス権を有するリソースである記憶領域1505及びHDD1506に対して排他制御を行い、モジュール1501に対する排他制御を終了する。
時刻T14に処理2の処理単位1602に係る処理が終わると、排他制御手段303は、記憶領域1505及びHDD1506の排他制御を終了し、モジュール1501の排他制御を行う。ここで、処理2は、記憶領域1505及びHDD1506のアクセス権を開放する処理等を含む終了処理を行う。時刻T15において、処理2に係る処理は終了し、排他制御手段303は、処理2に係るモジュール1501の排他制御を終了する。
以上、本実施の形態によれば、複数のリソースの処理速度に基づいて排他制御の処理単位を分割(細分化)する。これにより、処理速度が比較的遅いリソースを同時に排他制御することを防止することができる。また、排他制御を必要以上に細分化することなく、排他制御による処理の遅延を効果的に低減することができる。
[第3の実施の形態]
第3の実施の形態では、複数のリソースが、連動して所定の処理を行う2つ以上のリソースを含み、所定の処理が排他制御の1つの処理単位に含まれる場合の例について説明する。
図19は、第3の実施形態に係る処理1の排他制御の処理単位を示す図である。モジュール1901は、出力部1902、入力部1903、画像データを記憶する複数の記憶領域1904、1905、回転器1907、圧縮器1908、HDD1906等の複数のリソースを含む。
このうち、出力部1902、入力部1903、複数の記憶領域1904、1905、及びHDD1906については、図15に示した第2の実施の形態と同様である。回転器1907は、データの並べ替え等により、画像データを回転させる(例えば、90°回転、270°回転等)画像処理部であり、例えば、図2の画像処理用のASIC206に含まれるデジタル回路等で構成される。また、圧縮器1908は、画像データを圧縮させる画像処理部であり、例えば、ASIC206に含まれるデジタル回路等で構成される。
本実施の形態では、回転器1907及び圧縮器1908は、HDD1906と連動して、画像データを回転及び圧縮してHDD1506に保存する処理が可能であるものとする。このような場合、例えば、連動して処理が可能な回転器1907、圧縮器1908、及びHDD1906の排他制御を細分化してしまうと、処理効率(速度)の低下を招く場合がある。このような場合、連動して処理が可能な回転器1907、圧縮器1908、及びHDD1906を、1つの排他制御の処理単位に含むようにすると良い。
例えば、図19において、処理1は、入力部1903から読込んだ画像データを記憶領域1904に記憶し、記憶領域1504に記憶した画像データを回転及び圧縮して、HDD1906に保管する入力処理であるものとする。本実施の形態では、処理1に係る排他制御を、入力部1903に係る処理単位1909と、回転器1907、圧縮器1908及びHDD1906に係る処理単位1910とに2分割して排他制御を行う。
図20は、第3の実施形態に係る処理2の排他制御の処理単位を示す図である。処理2は、入力部1903から読込んだ画像データを記憶領域1905に記憶し、記憶領域1505に記憶した画像データを回転及び圧縮して、HDD1906に保管する入力処理であるものとする。本実施の形態では、処理2に係る排他制御を、入力部1903に係る処理単位1909と、回転器1907、圧縮器1908及びHDD1906に係る処理単位1910とに2分割して排他制御を行う。
図21は、第3の実施形態に係る入力処理の例を示す図である。図21は、回転器1907及び圧縮器1908の処理速度は、HDD1906の処理速度よりも十分に速く、図18と同様のタイミングで入力処理が行われる場合の例を示している。尚、排他制御の流れは、図18と同様のため説明を省略する。
このように、複数のリソースが、連動して所定の処理を行う二つ以上のリソースを含む場合、連動して処理が可能な二つ以上のリソースを、排他制御の一の処理単位に含むことにより、処理効率を高めることができる場合がある。例えば、ASIC化されたハードウェアリソース等は、ASICの仕様に応じて、適切な処理単位で排他制御を行うことが望ましい。
また、このような制御により、排他制御の処理単位を必要以上に細分化することなく、排他制御による処理の遅延を効果的に低減することができる。
[第4の実施の形態]
第4の実施の形態では、複数のリソース、例えば、入力部、出力部、回転器、圧縮器、HDD等が複数の実行ユニットを有する場合の例について説明する。
図22は、第4の実施形態に係る複数のリソースの構成を示す図である。モジュール2201は、4つの出力部2202、2203、2204、2205と、4つの入力部2206、2207、2208、2209と、6つの記憶領域2210、2211、2212、2213、2214、2215と、2つの回転器2216、2217と、2つの圧縮器2218、1129と、1つのHDD2220と、を含む。
出力部2202、2203、2204、2205は、出力部の4つの実行ユニットである。また、入力部2206、2207、2208、2209は、入力部の4つの実行ユニットである。入力部及び出力部は、それぞれ4つの実行ユニットにより、例えば、CMYK(Cyan Mazenta Yellow Key plate color model)形式のカラー画像に含まれる、C(Cyan:水色)、M(Magenta:赤紫色)、Y(Yellow:黄色)、K(黒色)の4色を並行して処理することができる。
回転器及び圧縮器についても、4つの実行ユニットを有していることが処理速度の面では望ましい。しかし、本実施の形態では、例えば、コスト及び/又は実装上の理由等により、それぞれ2つの2つの実行ユニット、回転器2216、2217及び圧縮器2218、1129を有しているものとする。
図23は、第4の実施形態に係る処理の一例を示す図である。図23は、入力部2206〜2209からカラー画像(CMYK画像)を入力して記憶領域2210〜2213に記憶し、記憶したカラー画像を回転及び圧縮してHDD2220に保管する場合の処理の例を示している。尚、本実施の形態においても、各リソースの排他制御を行う前後にモジュール2201の排他制御を行っているが、モジュール2201の排他制御については、第2及び第3の実施例と同様のため、図23、24及びその説明では省略する。
本実施の形態では、入力部2206、2207、2208、2209、記憶領域2210、2211、2212、2213、2214、2215、回転器2216、2217、圧縮器2218、2219、及びHDD2220をそれぞれリソースとして管理する。また、排他制御手段303は、同時に処理が可能なリソースの数に基づいて、排他制御の処理単位を細分化する。
<処理の流れ>
図23の時刻T1において、排他制御手段303は、入力部2206〜2209、及び記憶領域2210〜2213の排他制御を行う。このように、処理に必要なリソースを1度に確保できる場合は、排他制御の処理単位も1つにすることが望ましい。
入力部2206は、入力処理として、CMYK画像のC成分に係るデータを取得し、記憶領域2210に記憶する。同様に、入力部2207、2208、2209は、それぞれ、CMYK画像のM成分、Y成分、K成分に係るデータを記憶領域2211、2212、2213に記憶する。時刻T3に入力処理が終わると、排他制御手段303は、入力部2206〜2209、及び記憶領域2210〜2213の排他制御を終了する。
続いて、時刻T3以降に、記憶領域2210、2211、2212、2213に記憶されたC、M、Y、K成分のデータをそれぞれ回転及び圧縮しHDD2220に保存する処理が行われる。しかし、本実施の形態に係る画像形成装置100は、回転器及び圧縮器の実行ユニットを2つ、HDD2220を1つしか有していないため、C、M、Y、K成分の4つのデータを同時に処理することはできない。
従って、例えば、第3の実施形態のように、記憶領域と、回転器と、圧縮器と、HDDと、を連動させて処理する場合、実行ユニットの数が最も少ないHDD2220の数「1」に応じて、C、M、Y、K成分のデータの圧縮、回転及び保存の処理を4回に分けて行う。この場合、排他制御の処理単位も、C、M、Y、K成分のデータの圧縮、回転及び保存の処理に合わせて、4分割することが望ましい。
また、仮にHDDの機能を有するリソースが2つある場合には、C、M、Y、K成分のデータの圧縮、回転及び保存の処理を、2色ずつ2回に分けて実行することができるので、排他制御の処理単位も、同様に2回に分割すると良い。
尚、仮にHDDの機能を有するリソースが4つある場合であっても、回転器及び圧縮器の機能を有するリソースは2つしかないので、C、M、Y、K成分のデータの圧縮、回転及び保存の処理は2色ずづ2回に分けて行われる。この場合、排他制御の処理単位も2回に分割する。
このように、処理に必要なリソースを1度に確保できず、実行ユニットの数に応じて処理を複数に分割して実行する場合、排他制御の処理単位も分割された処理と同様に分割することが望ましい。
図23に戻って、処理の一例の説明を続ける。排他制御手段303は、時刻T3〜T5の期間に、記憶領域2210、回転器2216、圧縮器2218及びHDD2220の排他制御を行う。この期間に、画像形成装置100は、C成分に係るデータの圧縮、回転及び保存の処理を行う。尚、このとき、処理を待っている、M、Y、K成分のデータを記憶する記憶領域2211、2212、2213についても排他制御を行いデータを保護することが望ましい。
時刻T5にC成分に係るデータの圧縮、回転及び保存の処理が終わると、排他制御手段303は、記憶領域2210、回転器2216、圧縮器2218及びHDD2220の排他制御を終了する。
次に、図23の時刻T5〜T7の期間に、排他制御手段303は、記憶領域2211、回転器2217、圧縮器2219及びHDD2220の排他制御を行う。この期間に、画像形成装置100は、M成分に係るデータの圧縮、回転及び保存の処理を行う。尚、このとき、処理を待っている、Y、K成分のデータを記憶する記憶領域2212、2213についても排他制御を行いデータを保護することが望ましい。
時刻T7にM成分に係るデータの圧縮、回転及び保存の処理が終わると、排他制御手段303は、記憶領域2211、回転器2217、圧縮器2219及びHDD2220の排他制御を終了する。
尚、このように、各色の処理に合わせて排他制御の処理単位を細分化することにより、他の処理、例えば、白黒画像Bの入力処理を時刻T4等に開始することができるようになる。白黒画像Bの入力処理は、例えば、入力部2206から入力された白黒画像データを記憶領域2214に記憶し、記憶した白黒画像データを時刻T6に使用されていない回転器2216を用いて回転し、記憶領域2215に記憶する処理であるものとする。
次に、図23の時刻T7〜T9の期間に、排他制御手段303は、記憶領域2212、回転器2217、圧縮器2218及びHDD2220の排他制御を行う。この期間に、画像形成装置100は、Y成分に係るデータの圧縮、回転及び保存の処理を行う。尚、このとき、処理を待つ、K成分のデータを記憶する記憶領域2213についても排他制御を行いデータを保護することが望ましい。
時刻T9にY成分に係るデータの圧縮、回転及び保存の処理が終わると、排他制御手段303は、記憶領域2212、回転器2217、圧縮器2218及びHDD2220の排他制御を終了する。
同様に、図23の時刻T9〜T11の期間に、排他制御手段303は、記憶領域2213、回転器2216、圧縮器2219及びHDD2220の排他制御を行う。この期間に、画像形成装置100は、K成分に係るデータの圧縮、回転及び保存の処理を行う。
時刻T11にK成分に係るデータの圧縮、回転及び保存の処理が終わると、排他制御手段303は、記憶領域2213、回転器2216、圧縮器2219及びHDD2220の排他制御を終了する。
時刻T11において、C、M、Y、K成分のデータの圧縮、回転及び保存の処理が終わると、例えば、時刻T4に開始した白黒画像の入力処理によって、記憶領域2215に記憶された白黒画像Bに回転処理を施した画像データをHDD2220に保存することができるようになる。
図24は、第4の実施形態に係る処理の別の一例を示す図である。図24は、入力部2206〜2209からカラー画像(CMYK画像)を入力して記憶領域2210〜2213に記憶し、記憶したカラー画像に回転処理を施して、出力部2202〜2206に出力する処理の例を示している。
図24の例においても、入力部2206、2207、2208、2209、記憶領域2210、2211、2212、2213、回転器2216、2217、出力部2202、2203、2204及び2205をそれぞれリソースとして管理し、同時に処理が可能なリソースの数に基づいて排他制御の処理単位の細分化を行う。
図24の時刻T1において、排他制御手段303は、入力部2206〜2209、及び記憶領域2210〜2213の排他制御を行う。このように、必要なリソースを1度に確保できる処理は、排他制御の処理単位を1つにすることが望ましい。
入力部2206は、入力処理として、CMYK画像のC成分に係るデータを取得し、記憶領域2210に記憶する。同様に、入力部2207、2208、2209は、それぞれ、CMYK画像のM成分、Y成分、K成分に係るデータを取得し、記憶領域2211、2212、2213に記憶する。時刻T3に入力処理が終わると、排他制御手段303は、入力部2206〜2209の排他制御を終了する。
続いて、時刻T3以降に、記憶領域2210、2211、2212、2213に記憶されたC、M、Y、K成分のデータをそれぞれ回転し、出力部2202〜2206に出力する処理が行われる。しかし、本実施の形態に係る画像形成装置100は、回転器の実行ユニットを2つしか有していないため、C、M、Y、K成分の4つのデータを同時に処理することはできない。
そのため、本実施の形態では、実行ユニットの数が最も少ない回転器2216、2217の数2に応じて、C、M、Y、K成分のデータの回転の処理を2回に分けて行う。
この場合、排他制御の処理単位も、C、M、Y、K成分のデータの回転処理の数に合わせて、2分割することが望ましい。
尚、本実施の形態では、出力部の実行ユニットが4つあり、C、M、Y、K成分のデータを1度に出力することができるため、出力部の排他制御の処理単位を回転処理の排他制御と分割することが望ましい。
図24に戻って、処理の一例の説明を続ける。時刻T3〜T5の期間、排他制御手段303は、記憶領域2210、2211、2214、2215及び回転器2216、2217の排他制御を行う。回転器2216は、記憶領域2210に記憶されたCMYK画像のC成分に係るデータに回転処理を施し、記憶領域2214に記憶する。同様に、回転器2217は、記憶領域2211に記憶されたCMYK画像のM成分に係るデータに回転処理を施し、記憶領域2215に記憶する。尚、このとき、処理を待っている、Y、K成分のデータを記憶する記憶領域2212、2213についても排他制御を行いデータを保護することが望ましい。
時刻T5にC成分及びM成分に係るデータの回転処理が終わると、排他制御手段303は、記憶領域2210、2211、2214、2215及び回転器2216、2217の排他制御を終了する。尚、ここで排他制御を終了することにより、記憶領域2210、2211を再利用することができるようになる。
次に、時刻T5〜T7の期間、排他制御手段303は、記憶領域2210、2211、2212、2213及び回転器2216、2217の排他制御を行う。回転器2216は、記憶領域2212に記憶されたCMYK画像のY成分に係るデータに回転処理を施し、記憶領域2210に記憶する。同様に、回転器2217は、記憶領域2213に記憶されたCMYK画像のK成分に係るデータに回転処理を施し、記憶領域2211に記憶する。
時刻T7にY成分及びK成分に係るデータの回転処理が終わると、排他制御手段303は、記憶領域2210、2211、2212、2213及び回転器2216、2217の排他制御を終了する。
続いて、時刻T7〜T9の期間、排他制御手段303は、記憶領域2210、2211、2214、2215及び出力部2202、2203、2204、2205の排他制御を行う。出力部2202、2203、2204、2205は、記憶領域2210、2211、2214、2215に記憶されたCMYK画像データの出力処理(例えば、カラープリント)を行う。
時刻T9にCMYK画像データの出力処理が終わると、排他制御手段303は、記憶領域2210、2211、2214、2215及び出力部2202、2203、2204、2205の排他制御を終了する。
以上、本実施の形態では、複数のリソースが、同等の機能を並行して実行可能な複数の実行ユニットを含む場合、排他制御の処理単位を複数のリソースの実行ユニットの数に基づいて細分化する。これにより、一つの処理で同時に利用できない複数の実行ユニットの一部を、他の処理が利用できるようになる。また、排他制御の処理単位を必要以上に細分化することなく、排他制御による処理の遅延を効果的に低減することができる。
<まとめ>
以上、上記各実施の形態によれば、画像形成装置100は、画像形成装置100のモジュールに係る複数の処理によって使用される画像データ、又は画像データを記憶する記憶領域と、一つ以上のハードウェアとを複数のリソースとして管理する。また、複数のリソースのうちの少なくとも一のリソースが使用される場合、使用されるリソースに対する排他制御を行い、モジュールに対する排他制御を終了する。
上記動作により、画像形成装置100のモジュールに係る一の処理がリソースを使用している期間、他の処理がモジュールを利用して処理を開始することができるので、排他制御による遅延を低減することができる。
また、排他制御手段303は、複数のリソースのうちの少なくとも一つのリソースが使用される場合、使用されるリソースを排他制御する前に、モジュールに対する排他制御を行う。リソースを排他制御する前に、排他制御されたモジュールでリソースのアクセス権等を管理することにより、デッドロックの発生を防止することができる。
また、排他制御手段303は、上記リソースに対する排他制御が終了するよりも前に、上記モジュールに対する排他制御を終了する。これにより、リソースの排他制御の終了前に、他の処理を開始することができる。
さらに、画像形成装置100では、モジュールの複数の処理に係る排他制御は、複数のリソースに基づいて、複数の処理単位に分割(細分化)されている。排他制御を複数の処理単位に細分化することにより、使用していないリソースの排他制御を終了(開放)することができる。
また、好適な一例として、モジュールの複数の処理に係る排他制御は、複数のリソースの処理速度に基づいて、細分化されていると良い。これにより、処理速度が遅い複数のリソースが同時に排他制御されることを防止することができる。また、排他制御を必要以上に細分化することなく、排他制御による処理の遅延を低減することができる。
さらに、上記複数のリソースが、連動して所定の処理を行う2つ以上のリソースを含む場合、上記所定の処理は、排他制御の1つの処理単位に含まれていると良い。これにより、連動して動作する2つ以上のリソースを効率よく動作させることができるようになる。また、排他制御が必要以上に細分化されることを防止することができる。
また、別の好適な一例として、上記複数のリソースが、同等の処理を並行して実行可能な複数の実行ユニットを含む場合、上記モジュールの処理に係る排他制御は、上記実行ユニットの数に基づいて、細分化されていると良い。これにより、一つの処理では同時に利用できない複数の実行ユニットの一部を、他の処理で有効利用できるようになる。また、排他制御が必要以上に細分化されることを防止することができる。