(57)【要約】【課題】画像データを有する印刷ジョブを受け付け、その印刷ジョブが有する画像データを印刷用画像データに展開して出力するプリンタコントローラにおいて、比較的簡易な構成でハードウェアの利用効率を向上させ、印刷ジョブの処理効率を向上する。【解決手段】共通のハードウェア２１ａ〜２１ｃを使用するとともに、それぞれ独立した処理を行う、仮想的に設けられた複数の画像展開用仮想マシン２５,２６を備え、複数の画像展開用仮想マシン２５,２６によって１または複数の印刷ジョブの画像データの展開を並列的に行なう。【選択図】図２
2010173206.tif 000002
【特許請求の範囲】
【請求項１】
画像データを有する印刷ジョブを受け付ける印刷ジョブ受付部と、該印刷ジョブ受付部により受け付けられた印刷ジョブが有する画像データを印刷用画像データに展開する画像データ展開部と、該画像データ展開部より展開された印刷用画像データを画像形成装置に出力する画像データ出力部とを備えたプリンタコントローラにおいて、
前記画像データ展開部が、共通のハードウェアを使用するとともに、それぞれ独立した処理を行う、仮想的に設けられた複数の画像展開用仮想マシンを備え、該複数の画像展開用仮想マシンによって１または複数の前記印刷ジョブの画像データの展開を並列的に行なうものであることを特徴とするプリンタコントローラ。
【請求項２】
前記印刷ジョブ受付部が、優先印刷ジョブを受け付けるものであり、
前記画像データ展開部が、前記優先印刷ジョブの画像データの展開を行う画像展開用仮想マシンの展開処理を優先して行なうものであることを特徴とする請求項１記載のプリンタコントローラ。
【請求項３】
前記複数の画像展開用仮想マシンのそれぞれに割り当てられる前記ハードウェアの占有率を制御する、仮想的に設けられた特権仮想マシンをさらに備えたことを特徴とする請求項１または２記載のプリンタコントローラ。
【請求項４】
前記複数の画像展開用仮想マシンのそれぞれに割り当てられる前記ハードウェアの占有率を制御する、仮想的に設けられた特権仮想マシンをさらに備え、
前記特権仮想マシンが、前記優先印刷ジョブの画像データの展開を行う画像展開用仮想マシンの前記ハードウェアの占有率を他の前記画像展開用仮想マシンの前記ハードウェアの占有率よりも大きくするものであることを特徴とする請求項２記載のプリンタコントローラ。
【請求項５】
前記画像データ展開部が、前記複数の画像展開用仮想マシンによって複数の前記印刷ジョブの画像データの展開をそれぞれ行なうものであり、
前記画像データ出力部が、前記複数の画像展開用仮想マシンによって展開された印刷用画像データを、前記印刷ジョブ受付部によって受け付けられた前記複数の印刷ジョブの順番で出力するものであることを特徴とする請求項１から４いずれか１項記載のプリンタコントローラ。
【請求項６】
前記画像データ展開部が、前記複数の画像展開用仮想マシンによって複数の前記印刷ジョブの画像データの展開をそれぞれ行なうものであり、
前記画像データ出力部が、前記複数の画像展開用仮想マシンによって展開された印刷用画像データを、該展開処理が終了した順番で出力するものであることを特徴とする請求項１から４いずれか１項記載のプリンタコントローラ。
【請求項７】
前記印刷ジョブ受付部が、互いに異なる種類のページ記述言語からなる複数の印刷ジョブを受け付けるものであり、
前記画像データ展開部における前記各画像展開用仮想マシンが、それぞれ異なる種類のページ記述言語からなる印刷ジョブの画像データの展開を行うものであることを特徴とする請求項１から６いずれか１項記載のプリンタコントローラ。
【請求項８】
前記画像データ展開部が、前記複数の画像展開用仮想マシンによって１つの前記印刷ジョブのカラー画像データの各色の展開をそれぞれ行なうものであることを特徴とする請求１から７いずれか１項記載のプリンタコントローラ。
【請求項９】
前記画像データ展開部が、前記印刷ジョブ受付部により受け付けられた印刷ジョブの数に応じて前記画像展開用仮想マシンの数を増減させるものであることを特徴とする請求項１から８いずれか１項記載のプリンタコントローラ。
【請求項１０】
前記印刷ジョブ受付部が、前記共通のハードウェアを使用する、仮想的に設けられた印刷ジョブ受付用仮想マシンからなるものであることを特徴とする請求項１から９いずれか１項記載のプリンタコントローラ。
【請求項１１】
前記画像データ出力部が、前記共通のハードウェアを使用する、仮想的に設けられた画像データ出力用仮想マシンからなるものであることを特徴とする請求項１から１０いずれか１項記載のプリンタコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを有する印刷ジョブを受け付け、その印刷ジョブが有する画像データを印刷用画像データに展開して出力するプリンタコントローラに関するものである。
【背景技術】
【０００２】
従来、ＬＡＮや電話回線などのネットワークを介して、複数のクライアントＰＣと印刷装置とを接続し、クライアントＰＣから出力された印刷ジョブを印刷装置が有するプリンタコントローラにより受信し、その印刷ジョブが有する画像データを印刷用画像データへ展開処理した後、その印刷用画像データに基づいて印刷エンジンより印刷物を出力するプリンタシステムが多く用いられている。
【０００３】
そして、従来、プリンタコントローラは１つのハードウェア（ＣＰＵ）により構成されており、複数のクライアントＰＣから出力された印刷ジョブはプリンタコントローラによって順次受信されるが、１つのクライアントＰＣから出力された印刷ジョブの受信、展開処理および印刷エンジンへの出力の処理が終了した後、次に受信した印刷ジョブの展開処理および印刷エンジンへの出力を行うといった具合に、印刷ジョブの受信、展開処理および印刷エンジンへの出力の一連の処理を印刷ジョブを受け取った順番で行っていた（たとえば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−５５７９３号公報
【非特許文献】
【０００５】
【非特許文献１】「すべてわかる仮想化大全  実例に学ぶ構築・運用法２００８」、日経ＢＰ社、2007年9月8日、Ｐ１８−Ｐ２３
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、同時期にクライアントＰＣから出力されてプリンタコントローラにより受信される印刷ジョブが少ない場合には、上記のような処理の流れで問題はないが、同時期に多数の印刷ジョブがプリンタコントローラにより受信されるような場合には、前の印刷ジョブの展開処理および印刷エンジンへの出力が終了するまで次の印刷ジョブの展開処理を行うことができないため、処理効率が著しく低下するという問題があった。
【０００７】
そして、各印刷ジョブの展開処理を含めた全体の処理をアプリケーションレベルで並列処理化するにはメモリなどのリソースの管理やモジュール間のインターフェースが複雑化し、装置としての性能や品質の維持が困難であった。また、開発効率にも大きな影響を与えていた。
【０００８】
一方、近年、ＣＰＵのマルチコア化やメモリ、ハードディスクなどの搭載量が増大し、ハードウェアの性能向上が顕著であり、環境配慮の観点からもハードウェアの利用効率の向上が望まれていた。また、ハードウェアの利用効率を向上させる一般的な手法として、仮想化技術が提案されている（たとえば、特許文献２参照）。
【０００９】
本発明は、上記事情に鑑み、比較的簡易な構成でハードウェアの利用効率を向上させ、印刷ジョブの処理効率を向上することができるプリンタコントローラを提供することを目的とするものである。
【課題を解決するための手段】
【００１０】
本発明のプリンタコントローラは、画像データを有する印刷ジョブを受け付ける印刷ジョブ受付部と、印刷ジョブ受付部により受け付けられた印刷ジョブが有する画像データを印刷用画像データに展開する画像データ展開部と、画像データ展開部より展開された印刷用画像データを画像形成装置に出力する画像データ出力部とを備えたプリンタコントローラにおいて、画像データ展開部が、共通のハードウェアを使用するとともに、それぞれ独立した処理を行う、仮想的に設けられた複数の画像展開用仮想マシンを備え、複数の画像展開用仮想マシンによって１または複数の印刷ジョブの画像データの展開を並列的に行なうものであることを特徴とする。
【００１１】
また、上記本発明のプリンタコントローラにおいては、印刷ジョブ受付部を、優先印刷ジョブを受け付けるものとし、画像データ展開部を、優先印刷ジョブの画像データの展開を行う画像展開用仮想マシンの展開処理を優先して行うものとすることができる。
【００１２】
また、複数の画像展開用仮想マシンのそれぞれに割り当てられるハードウェアの占有率を制御する、仮想的に設けられた特権仮想マシンをさらに設けるようにすることができる。
【００１３】
また、複数の画像展開用仮想マシンのそれぞれに割り当てられるハードウェアの占有率を制御する、仮想的に設けられた特権仮想マシンをさらに設け、特権仮想マシンを、優先印刷ジョブの画像データの展開を行う画像展開用仮想マシンのハードウェアの占有率を他の画像展開用仮想マシンのハードウェアの占有率よりも大きくするものとすることができる。
【００１４】
また、画像データ展開部を、複数の画像展開用仮想マシンによって複数の印刷ジョブの画像データの展開をそれぞれ行なうものとし、画像データ出力部を、複数の画像展開用仮想マシンによって展開された印刷用画像データを、印刷ジョブ受付部によって受け付けられた複数の印刷ジョブの順番で出力するものとすることができる。
【００１５】
また、画像データ展開部を、複数の画像展開用仮想マシンによって複数の印刷ジョブの画像データの展開をそれぞれ行なうものとし、画像データ出力部を、複数の画像展開用仮想マシンによって展開された印刷用画像データを、その展開処理が終了した順番で出力するものとすることができる。
【００１６】
また、印刷ジョブ受付部を、互いに異なる種類のページ記述言語からなる複数の印刷ジョブを受け付けるものとし、画像データ展開部における各画像展開用仮想マシンを、それぞれ異なる種類のページ記述言語からなる印刷ジョブの画像データの展開を行うものとすることができる。
【００１７】
また、画像データ展開部を、複数の画像展開用仮想マシンによって１つの印刷ジョブのカラー画像データの各色の展開をそれぞれ行なうものとすることができる。
【００１８】
また、画像データ展開部を、印刷ジョブ受付部により受け付けられた印刷ジョブの数に応じて画像展開用仮想マシンの数を増減させるものとすることができる。
【００１９】
また、印刷ジョブ受付部を、共通のハードウェアを使用する、仮想的に設けられた印刷ジョブ受付用仮想マシンからなるものとすることができる。
【００２０】
また、画像データ出力部を、共通のハードウェアを使用する、仮想的に設けられた画像データ出力用仮想マシンからなるものとすることができる。
【発明の効果】
【００２１】
本発明のプリンタコントローラによれば、共通のハードウェアを使用するとともに、それぞれ独立した処理を行う、仮想的に設けられた複数の画像展開用仮想マシンを設け、複数の画像展開用仮想マシンによって１または複数の印刷ジョブの画像データの展開を並列的に行なうようにしたので、比較的簡易な構成でハードウェアの利用効率を向上させることができ、展開処理機能を複数の画像展開用仮想マシンに分散化して複数の印刷ジョブの画像データの展開処理を同時期に行うことができるので、印刷ジョブの処理効率を向上することができる。そして、各クライアントＰＣへのサービスを平準化することができ、ユーザ満足度を向上させることができる。また、印刷システム全体のコストパフォーマンスの向上を図ることができる。
【００２２】
また、仮想化技術を利用することで、アプリケーションレベルでは仮想化を意識した単一のプリンタコントローラを開発するだけでよく、このプリンタコントローラをユーザの使用環境に応じて複数の仮想マシン上にインストールすることで分散処理や並列処理が比較的容易に実現できる。
【００２３】
また、上記本発明のプリンタコントローラにおいて、優先印刷ジョブを受け付けた場合には、優先印刷ジョブの画像データの展開を行う画像展開用仮想マシンの展開処理を優先して行うようにした場合には、たとえば、優先的に印刷を行いたいものがある場合に、そのニーズに容易に対応することができる。
【００２４】
また、複数の画像展開用仮想マシンのそれぞれに割り当てられるハードウェアの占有率を制御する、仮想的に設けられた特権仮想マシンをさらに設けるようにした場合には、たとえば、各画像展開用仮想マシンが受け付けている印刷ジョブの内容に応じて、各画像展開用仮想マシンに割り当てられるハードウェアの占有率を制御することによって、特にソフトウェアの変更などを行うことなく、各画像展開用仮想マシンの環境設定を最適な状態に設定することができ、より処理効率の向上を図ることができる。
【００２５】
また、特権仮想マシンによって、優先印刷ジョブの画像データの展開を行う画像展開用仮想マシンのハードウェアの占有率を他の画像展開用仮想マシンのハードウェアの占有率よりも大きくするようにした場合には、優先印刷ジョブの処理をより高速に行うことができる。
【００２６】
また、複数の画像展開用仮想マシンによって展開された印刷用画像データを、その展開処理が終了した順番で出力するようにした場合には、たとえば、前に受信した非常に画像データ量が大きい印刷ジョブの展開処理の途中であっても、後に受信した印刷ジョブの展開処理が終了した場合には、その印刷ジョブの印刷処理を先に行うことができるので、印刷システムの使用効率をさらに向上させることができる。
【００２７】
また、互いに異なる種類のページ記述言語からなる複数の印刷ジョブを受け付け、各画像展開用仮想マシンによって、それぞれ異なる種類のページ記述言語からなる印刷ジョブの画像データの展開を行うようにした場合には、たとえば、各クライアントにおけるプリンタドライバが異なる種類のページ記述言語の印刷ジョブを出力するものであったり、プリンタドライバのバージョンが異なるものであったりした場合でも、これらに対応して適切に処理を行うことができ、各ページ記述言語専用のプリンタコントローラを設ける必要がないのでコストの削減を図ることができる。
【００２８】
また、複数の画像展開用仮想マシンによって１つの印刷ジョブのカラー画像データの各色の展開をそれぞれ行なうようにした場合には、カラー画像データの展開処理をより高速に行うことができる。
【００２９】
また、印刷ジョブ受付部により受け付けられた印刷ジョブの数に応じて画像展開用仮想マシンの数を増減させるようにした場合には、印刷ジョブの数が少ない場合には、画像展開用仮想マシンの数を減少させて各画像展開用仮想マシンに割り当てられるハードウェアの占有率を大きくし、印刷ジョブの数が多い場合には、画像展開用仮想マシンの数を増加させて各画像展開用仮想マシンに割り当てられるハードウェアの占有率を小さくすることでき、システムの使用状況に応じてより適切な処理を行うことができる。
【００３０】
また、印刷ジョブ受付部や画像データ出力部についても、印刷ジョブ受付用仮想マシン
画像データ出力用仮想マシンにより実現するようにした場合には、ＣＰＵやメモリなどのリソースをさらに効率的に使用することができる。
【図面の簡単な説明】
【００３１】
【図１】本発明のプリンタコントローラの一実施形態を用いた印刷システムの概略構成図
【図２】プリンタコントローラの概略構成図
【図３】プリンタコントローラの機能ブロック図
【図４】仮想マシンＶＭ−Ａの作用を説明するためのフローチャート
【図５】仮想マシンＶＭ−Ｂ,ＶＭ−Ｃの作用を説明するためのフローチャート
【図６】仮想マシンＶＭ−Ｄの作用を説明するためのフローチャート
【図７】仮想マシンＶＭ−Ｅの作用を説明するためのフローチャート
【発明を実施するための形態】
【００３２】
以下、図面を参照して本発明のプリンタコントローラの一実施形態を用いた印刷システムについて詳細に説明する。本印刷システムは、プリンタコントローラの構成に特徴を有するものであるが、まずは、印刷システムの全体の概略構成について説明する。
【００３３】
本印刷システムは、図１に示すように、印刷対象の画像データを有する印刷ジョブを出力するクライアントＰＣ１０，１１，１２，１３と、電話回線やＬＡＮなどのネットワーク１を介してクライアントＰＣ１０〜１３に接続された印刷装置２とを備えている。
【００３４】
クライアントＰＣ１０〜１３は、画像データ編集用のソフトウェアと、そのソフトウェアにより編集された印刷対象の画像を表す画像データと印刷条件（用紙サイズ、片面印刷/両面印刷、縦/横、カラー/単色、部単位/ページ単位、部数、ページ数など）とに基づいて、所定のＰＤＬ（Ｐａｇｅ Ｄｉｓｃｒｉｐｔｉｏｎ Ｌａｎｇｕａｇｅ）で記述された印刷ジョブを生成し、その印刷ジョブをネットワーク１に出力するプリンタドライバとがインストールされたものである。
【００３５】
印刷装置２は、クライアントＰＣ１０〜１３から出力された印刷ジョブを受け付け、その受け付けた印刷ジョブの画像データと印刷条件とに基づいて印刷用画像データに展開し、その印刷用画像データを印刷エンジンに出力するプリンタコントローラ２０と、プリンタコントローラ２０から出力された印刷用画像データに基づいて所定の記録媒体に画像を形成する印刷エンジン３０と、原稿を読み取って画像データを生成する画像読取部４０と、タッチパネルを有し、操作者による所定の操作指示を受け付ける操作パネル５０とを備えている。
【００３６】
プリンタコントローラ２０は、図２に示すように、ハードウェアの構成としては、ＣＰＵ２１ａと、ハードディスク２１ｂと、一時記憶メモリ２１ｃとを備えている。そして、これらのハードウェアを共通に使用するとともに、それぞれ独立した処理を行う、仮想的に設けられた複数の仮想マシン２３〜２８と、この仮想マシン２３〜２８とハードウェアと仲介する仮想マシンモニタ２２とを備えている。
【００３７】
仮想マシン２３〜２８は、上述したようにそれぞれが独立した処理を行うものであり、各仮想マシンに対してそれぞれ機能が設定される。各仮想マシン２４〜２８は、それぞれ設定された機能を実行する一般アプリケーションと一般アプリケーションを動作させるためのＯＳ（オペレーティングシステム）とを備えている。
【００３８】
また、仮想マシン２３は、一般アプリケーションを有する各仮想マシン２４〜２８のそれぞれに割り当てられるハードウェアの占有率を制御し、各仮想マシン２４〜２８のハードウェアへのアクセスを制御する特権アプリケーションと特権アプリケーションを動作させるためのＯＳ（オペレーティングシステム）とを備えている。なお、本実施形態においては、特権アプリケーションを実行する仮想マシンを別個に設けるようにしたが、これに限らず、特権アプリケーションと同等の機能を仮想マシンモニタに持たせるようにしてもよい。
【００３９】
各仮想マシン２３〜２８に設定される機能を説明するための機能ブロック図を図３に示す。なお、以下、仮想マシン２３をＶＭ−Ｘ、仮想マシン２４をＶＭ−Ａ、仮想マシン２５をＶＭ−Ｂ、仮想マシン２６をＶＭ−Ｃ、仮想マシン２７をＶＭ−Ｄ、仮想マシン２８をＶＭ−Ｅという。
【００４０】
ＶＭ−Ａは、各クライアントＰＣ１０〜１３から出力された印刷ジョブをそれぞれ受け付けるソケットＳ０〜Ｓ３を有するソケットＩ/Ｆと、ソケットＩ/Ｆの各ソケットＳ０〜Ｓ３によって受け付けられた印刷ジョブを受信して一時的に保持する受信キューＱ０〜Ｑ３と、受信キューＱ０〜Ｑ３に保持された印刷ジョブに対してジョブＩＤ０〜ＩＤ３をそれぞれ付加して保存するジョブＤＢとを有するデータ受信およびジョブ管理機能が設定されている。
【００４１】
ＶＭ−ＢおよびＶＭ−Ｃは、展開メモリＭ１〜Ｍ３を有し、受信キューＱ０〜Ｑ３に保持された印刷ジョブに基づいて展開メモリＭ１〜Ｍ３上に印刷用画像データを展開する画像展開機能が設定されている。なお、各展開メモリＭ１〜Ｍ３には、ハードウェアのメモリ２１ｃ上の所定の領域がそれぞれ割り当てられる。
【００４２】
ＶＭ−Ｄは、ＶＭ−ＢおよびＶＭ−ＣのジョブＤＢから出力されたジョブＩＤ０〜ジョブＩＤ３を受け付けて保持するとともに、展開メモリＭ１〜Ｍ３上に展開された印刷用画像データを印刷エンジンに出力するエンジンＩ/Ｆを有するエンジンＩ/Ｆ制御機能が設定されている。
【００４３】
ＶＭ−Ｅは、操作パネル５０における表示内容を制御するとともに、操作パネル５０において受け付けられた操作指示の内容を解析し、その解析結果に応じてその他の仮想マシンの機能を実行させるユーザＩ／Ｆ機能が設定されている。
【００４４】
印刷エンジン３０は、印刷用画像データを受け取って記録媒体上に画像を形成できるものであれば如何なるものでもよく、たとえば、インクジェットプリンター、レーザープリンターや孔版印刷装置などを利用することができる。
【００４５】
次に、本発明のプリンタコントローラの一実施形態を用いた印刷システムの作用について説明する。
【００４６】
まず、クライアントＰＣ１０〜１３において画像データが編集されるとともに印刷条件が設定され、その画像データと印刷条件とに基づいてプリンタドライバにおいて所定のＰＤＬで記述された印刷ジョブが生成される。そして、各クライアントＰＣ１０〜１３からそれぞれ任意のタイミングで印刷ジョブがネットワーク１に出力される。
【００４７】
そして、ネットワーク１に出力された各印刷ジョブはプリンタコントローラ２０に入力される。以下、プリンタコントローラ２０の作用について、図３および図４〜図６に示すフローチャートを参照しながら詳細に説明する。
【００４８】
プリンタコントローラ２０に印刷ジョブが入力されると、まず、ＶＭ−Ａがこの印刷ジョブを処理する。具体的には、ＶＭ−Ａは、図４のフローチャートに示すように、まず、クライアントＰＣ１０〜１３からの印刷ジョブの受信の待状態となっている（ＳＴ１０）。そして、クライアントＰＣ１０〜１３からネットワーク１にそれぞれ印刷ジョブが出力されると、ソケットＩ／ＦのソケットＳ０〜Ｓ３を開いて印刷ジョブを受け付け、その受け付けた印刷ジョブをそれぞれ受信キューＱ０〜Ｑ３に保持する（ＳＴ１２）。そして、ＶＭ−Ａは、受信キューＱ０〜Ｑ３に保持された印刷ジョブに対し、それぞれ受信した順にジョブＩＤ０〜ジョブＩＤ３を付加し、このジョブＩＤ０〜ジョブＩＤ０３をジョブＤＢに登録するとともに、そのジョブＩＤ０〜ジョブＩＤ３を付加された順にＶＭ−Ｄに送信する（ＳＴ１４、ＳＴ１６）。なお、ＶＭ−Ｄは、ジョブＩＤ０〜ジョブＩＤ３を入力された順番で保持する。
【００４９】
そして、次に、ＶＭ−Ａは、受信キューＱ０〜Ｑ３に保持された印刷ジョブを展開するための仮想マシンを選択する（ＳＴ１８）。なお、本実施形態では、画像展開機能を有する仮想マシンの代表としてＶＭ−ＢとＶＭ−Ｃの２つを挙げているが、実際には、画像展開機能を有する仮想マシンは２つ以上設定されており、それぞれが展開メモリを有するものとする。このときＶＭ−Ａは、画像展開処理を行っていない仮想マシンを優先して選択し、画像展開処理を行っていない仮想マシンが複数ある場合には、そのうちの一つを選択する。
【００５０】
そして、ＶＭ−Ａは、受信キューＱ０〜Ｑ３に保持された印刷ジョブをそれぞれ受信した順番で、順次選択した仮想マシンに出力する（ＳＴ２０）。
【００５１】
そして、ＶＭ−Ｂ、ＶＭ−Ｃおよびその他の画像展開機能を有する仮想マシン（以下、代表してＶＭ−ＢおよびＶＭ−Ｃという。）において、それぞれ印刷ジョブを受け付け次第、独立して並列に画像展開処理が行われる。具体的には、図５のフローチャートに示すように、まず、ＶＭ−ＢおよびＶＭ−Ｃは、ＶＭ−Ａから出力される印刷ジョブの待ち状態となっている（ＳＴ２２）。そして、ＶＭ−Ａから選択されて受信キューから出力された印刷ジョブを受け付けるとその印刷ジョブの解析を行う（ＳＴ２４）。そして、印刷ジョブの解析することによって印刷ジョブに含まれる印刷条件を示す印刷パラメータを取得し（ＳＴ２６）、その印刷パラメータに基づいて印刷ジョブに含まれる画像データを印刷用画像データに展開し、それぞれ展開メモリＭ１〜Ｍ３に保持する（ＳＴ２８）。
【００５２】
そして、ＶＭ−ＢおよびＶＭ−Ｃの各仮想マシンは、印刷用画像データへの展開処理が終了次第、その画像展開処理対象の印刷ジョブに付加されたジョブＩＤと、画像展開処理が終了したことを示す展開終了信号と、印刷用画像データを展開した展開メモリ上の展開アドレスと、画像展開処理対象の印刷ジョブに含まれる印刷パラメータとをＶＭ−Ｄに出力する（ＳＴ３０）。
【００５３】
そして、ＶＭ−Ｄは、図６のフローチャートに示すように、展開終了信号の待ち状態となっており（ＳＴ３２）、この状態でＶＭ−ＢおよびＶＭ−Ｃのいずれかの仮想マシンからの展開終了信号を受信すると、その展開終了信号とともに入力されたジョブＩＤと展開アドレスとを保存する（ＳＴ３４）。
【００５４】
ここで、ＶＭ−Ｄは、上述したようにＶＭ−Ａから出力されたジョブＩＤ０〜ジョブＩＤ３を入力された順番で保持しており、この順番で各ジョブＩＤに対応する印刷用画像データを印刷エンジン３０に対して出力するものである。
【００５５】
したがって、ＳＴ３４でジョブＩＤと展開アドレスを保存した後、その保存したジョブＩＤが、次に出力すべき印刷用画像データに対応するジョブＩＤであるか否かを確認する（ＳＴ３６）。なお、本実施形態の説明では、ＶＭ−Ａが、ジョブＩＤ０、ジョブＩＤ１、ジョブＩＤ２およびジョブＩＤ３をこの順番で出力し、ＶＭ−Ｄはこの順番でジョブＩＤを保持しているものとする。
【００５６】
そして、ここでは、ＶＭ−ＢおよびＶＭ−Ｃおいて、ジョブＩＤ３に対応する印刷ジョブ、ジョブＩＤ１に対応する印刷ジョブ、ジョブＩＤ０に対応する印刷ジョブ、ジョブＩＤ２に対応する印刷ジョブがこの順で画像展開処理が終了した場合について説明する。
【００５７】
具体的には、ＶＭ−Ｄは、まず、ジョブＩＤ３に対応する印刷ジョブの画像展開処理が終了したことを示す展開終了信号を受信し（ＳＴ３２）、その展開終了信号とともに入力されたジョブＩＤ３とその展開アドレスを保存する（ＳＴ３４）。そして、そのジョブＩＤ３と次に出力すべきジョブＩＤ０とを比較する。
【００５８】
そして、ジョブＩＤ３とジョブＩＤ０は一致していないので、ＳＴ３６において次に出力すべきジョブＩＤではないと判断し、再びＳＴ３２に戻り展開終了信号の待ち状態となる。
【００５９】
そして、次にＶＭ−Ｄは、ジョブＩＤ１に対応する印刷ジョブの画像展開処理が終了したことを示す展開終了信号を受信する（ＳＴ３２）。
【００６０】
そして、ＶＭ−Ｄは、展開終了信号を受信すると、その展開終了信号とともに入力されたジョブＩＤ１とその展開アドレスとを保存し（ＳＴ３４）、再び、ジョブＩＤ１と次に出力すべきジョブＩＤ０とを比較する（ＳＴ３６）。
【００６１】
そして、ジョブＩＤ１とジョブＩＤ０は一致していないので、ＳＴ３６において次に出力すべきジョブＩＤではないと判断し、再びＳＴ３２に戻り展開終了信号の待ち状態となる。
【００６２】
そして、次にＶＭ−Ｄは、ジョブＩＤ０に対応する印刷ジョブの画像展開処理が終了したことを示す展開終了信号を受信する（ＳＴ３２）。
【００６３】
そして、ＶＭ−Ｄは、展開終了信号を受信すると、その展開終了信号とともに入力されたジョブＩＤ０とその展開アドレスとを保存し（ＳＴ３４）、再び、ジョブＩＤ０と次に出力すべきジョブＩＤ０とを比較する（ＳＴ３６）。
【００６４】
そして、今度は、保存したジョブＩＤ０と次に出力されるべきジョブＩＤ０とが一致しているので、そのジョブＩＤ０とともに保存した展開アドレスに基づいて展開メモリから印刷用画像データを読み出し、その印刷用画像データを印刷パラメータとともに印刷エンジン３０に出力する（ＳＴ３８）。
【００６５】
そして、次に、ＶＭ−Ｄは、ＳＴ３８で印刷用画像データを出力したジョブＩＤ０とは別のジョブＩＤが既に保存されているか否かを確認する（ＳＴ４０）。そして、既に保存されたジョブＩＤがない場合には、再びＳＴ３２に戻り展開終了信号の待ち状態となる。一方、既に保存されたジョブＩＤがある場合には、既に保存している全てのジョブＩＤを取得する（ＳＴ４２）。ここでは、上述したとおりジョブＩＤ３とジョブＩＤ１とが既に保存されているのでこれらを取得する。
【００６６】
そして、再びＳＴ３６に戻り、ＳＴ４２で取得した全てのジョブＩＤと次に出力すべきジョブＩＤとが比較される（ＳＴ３６）。具体的には、既に保存されているジョブＩＤ３およびジョブＩＤ１と次に出力されるべきジョブＩＤ１とを比較する。
【００６７】
そして、既に保存したジョブＩＤ１と次に出力されるべきジョブＩＤ１とが一致しているので、そのジョブＩＤ１とともに保存した展開アドレスに基づいて展開メモリから印刷用画像データを読み出し、その印刷用画像データを印刷パラメータとともに印刷エンジン３０に出力する（ＳＴ３８）。なお、ＶＭ−Ｄは、印刷用画像データを出力したジョブＩＤについては、既に保存されたジョブＩＤのリストから削除されるものとする。
【００６８】
そして、再び、ＶＭ−Ｄは、ＳＴ３８で印刷用画像データを出力したジョブＩＤ１とは別のジョブＩＤが既に保存されているか否かを確認する（ＳＴ４０）。そして、既に保存されたジョブＩＤがない場合には、再びＳＴ３２に戻り展開終了信号の待ち状態となる。一方、既に保存されたジョブＩＤがある場合には、既に保存しているジョブＩＤを取得する（ＳＴ４２）。ここでは、上述したとおりジョブＩＤ３が既に保存されているので、このジョブＩＤ３を取得する。
【００６９】
そして、再びＳＴ３６に戻り、ＳＴ４２で取得したジョブＩＤが次に出力すべきジョブＩＤであるか否かを判断する（ＳＴ３６）。具体的には、既に保存されているジョブＩＤ３と次に出力されるべきジョブＩＤ２とを比較する。
【００７０】
そして、ジョブＩＤ３とジョブＩＤ２は一致していないので、ＳＴ３６において次に出力すべきジョブＩＤではないと判断され、再びＳＴ３２に戻り展開終了信号の待ち状態となる。
【００７１】
そして、次にＶＭ−Ｄは、ジョブＩＤ２に対応する印刷ジョブの画像展開処理が終了したことを示す展開終了信号を受信する（ＳＴ３２）。
【００７２】
そして、ＶＭ−Ｄは、展開終了信号を受信すると、その展開終了信号とともに入力されたジョブＩＤ２とその展開アドレスとを保存し（ＳＴ３４）、再び、その入力されたジョブＩＤ２と次に出力すべきジョブＩＤ２とを比較する（ＳＴ３６）。
【００７３】
そして、今度は、保存したジョブＩＤ２と次に出力されるべきジョブＩＤ２とが一致しているので、そのジョブＩＤ２とともに保存した展開アドレスに基づいて展開メモリから印刷用画像データを読み出し、その印刷用画像データを印刷パラメータとともに印刷エンジン３０に出力する。
【００７４】
そして、次に、ＶＭ−Ｄは、ＳＴ３８で印刷用画像データを出力したジョブＩＤ２とは別のジョブＩＤが既に保存されているか否かを確認する（ＳＴ４０）。そして、既に保存されたジョブＩＤがない場合には、再びＳＴ３２に戻り展開終了信号の待ち状態となる。一方、既に保存されたジョブＩＤがある場合には、既に保存している全てのジョブＩＤを取得する（ＳＴ４２）。ここでは、上述したとおりジョブＩＤ３が既に保存されているのでこれを取得する。
【００７５】
そして、再びＳＴ３６に戻り、ＳＴ４２で取得した全てのジョブＩＤと次に出力すべきジョブＩＤとが比較される（ＳＴ３６）。具体的には、既に保存されているジョブＩＤ３と次に出力されるべきジョブＩＤ３とを比較する。
【００７６】
そして、既に保存したジョブＩＤ３と次に出力されるべきジョブＩＤ３とが一致しているので、そのジョブＩＤ３とともに保存した展開アドレスに基づいて展開メモリから印刷用画像データを読み出し、その印刷用画像データを印刷パラメータとともに印刷エンジン３０に出力する（ＳＴ３８）。
【００７７】
上記のようにしてＶＭ−Ｄは、ＶＭ−Ａか出力されたジョブＩＤの順番で、その各ジョブＩＤに対応する印刷用画像データと印刷パラメータとを印刷エンジン３０に対して出力する。
【００７８】
そして、印刷エンジン３０は、ＶＭ−Ｄから出力された印刷用画像データと印刷パラメータとを順次受け付け、その受け付けた印刷用画像データと印刷パラメータとに基づいて画像形成を順次行って、各クライアントＰＣ１０〜１３から出力された印刷ジョブに対応する印刷処理を順次行う。
【００７９】
上記のような処理の流れが、本印刷システムの通常処理の流れである。
【００８０】
ここで、上記のような通常処理を行っている過程において、たとえば、所定のクライアントＰＣにおいて優先的に印刷を行いたい印刷ジョブが設定され、その優先処理対象の印刷ジョブが出力された場合のプリンタコントローラ２０の作用について説明する。
【００８１】
所定のクライアントＰＣから出力された優先処理対象の印刷ジョブがプリンタコントローラ２０に入力されると、通常処理の場合と同様に、まず、ＶＭ−ＡのソケットＩ／Ｆによりその印刷ジョブが受け付けられ、受信キューに保持されるとともに、ジョブＤＢにジョブＩＤが登録される。
【００８２】
そして、優先処理対象の印刷ジョブが登録されると、特権アプリケーションを有するＶＭ−Ｘは、画像展開機能を有する全ての仮想マシンの画像展開処理を中断させるとともに、その展開メモリに展開された印刷用画像データをハードディスク２１ｂに移動させる。そして、ＶＭ−Ａは、所定の画像展開機能を有する仮想マシンを選択し、その選択した仮想マシンに優先処理対象の印刷ジョブを出力する。
【００８３】
そして、優先処理対象の印刷ジョブを受け付けた仮想マシンは、図５のフローチャートに示すステップで画像展開処理を行うが、このとき、ＶＭ−Ｘは、ＣＰＵ２１ａの処理能力およびメモリ２１ｃの領域の全てを優先処理対象の印刷ジョブを受け付けた仮想マシンに割り当てる。これにより優先処理対象の印刷ジョブの画像展開処理をより高速に行うことができる。なお、上記説明では、優先処理対象の印刷ジョブを受け付けた仮想マシン以外の仮想マシンについて、その画像展開処理を中断し、展開メモリを解放させるようにしたが、必ずしもこれに限らず、優先処理対象の印刷ジョブを受け付けた仮想マシン以外の少なくとも一部仮想マシンについても画像展開処理を継続するようにし、ＣＰＵ２１ａの処理能力およびメモリ２１ｃの領域の占有率を優先処理対象の印刷ジョブを受け付けた仮想マシン処理よりも小さくするようにしてもよい。
【００８４】
そして、優先処理対象の印刷ジョブの画像展開処理が終了すると、優先処理対象の印刷ジョブに付加されたジョブＩＤと、画像展開処理が終了したことを示す展開終了信号と、印刷用画像データを展開した展開メモリ上の展開アドレスと、画像展開処理対象の印刷ジョブに含まれる印刷パラメータとがＶＭ−Ｄに出力される。なお、優先処理対象の印刷ジョブの画像展開処理が終了すると、ハードディスク２１ｂに移動させられていた印刷用画像データは再び展開メモリに戻され、各仮想マシンにおいて通常処理と同様の画像展開処理が再開される。
【００８５】
そして、ＶＭ−Ｄは、優先処理対象の印刷ジョブの展開終了信号を受信すると、その展開終了信号とともに入力されたジョブＩＤと展開アドレスとを保存する。
【００８６】
そして、その保存したジョブＩＤが、ＶＭ−Ａにおいて優先処理対象の印刷ジョブに付加されたジョブＩＤであるか否かを確認し、優先処理対象の印刷ジョブのジョブＩＤである場合には、そのジョブＩＤとともに保存した展開アドレスに基づいて展開メモリから印刷用画像データを読み出し、その印刷用画像データを印刷パラメータとともに印刷エンジン３０に出力する。一方、保存したジョブＩＤが、優先処理対象の印刷ジョブのジョブＩＤでない場合には、優先処理対象の印刷ジョブのジョブＩＤが確認されるまで、展開終了信号の受信からの処理を繰り返す。
【００８７】
これによりＶＭ−Ｄは、優先処理対象の印刷ジョブの印刷用画像データと印刷パラメータとを優先して印刷エンジン３０に対して出力する。
【００８８】
そして、印刷エンジン３０は、ＶＭ−Ｄから出力された印刷用画像データと印刷パラメータとを受け付け、その受け付けた印刷用画像データと印刷パラメータとに基づいて画像形成を行って、優先処理対象の印刷ジョブに対応する印刷処理を優先的に行う。
【００８９】
なお、上記説明では、ＶＭ−Ｘは、優先処理対象の印刷ジョブの展開処理をより高速に行うために、優先処理対象の印刷ジョブを受け付けた仮想マシンのハードウェアの占有率を高めるようにしたが、優先処理に限らず、ＶＭ−Ｘが、ＶＭ−Ａによって受け付けられている印刷ジョブの内容に応じて、各仮想マシンのハードウェアの占有率を制御するようにしてもよい。たとえば、各仮想マシンが展開処理を行う印刷ジョブの画像データ量に応じて、画像データ量が大きいほど占有率を高めるように制御するようにしてもよい。
【００９０】
また、ここで、ユーザＩ／Ｆ機能が設定されているＶＭ−Ｅの動作について説明する。
【００９１】
ＶＭ−Ｅは、上述したように、操作パネル５０における表示内容を制御するとともに、操作パネル５０において受け付けられた操作指示の内容を解析し、その解析結果に応じてその他の仮想マシンの機能を実行させるものである。操作パネル５０に表示させる内容としては、印刷エンジンの稼働状況やジョブ管理の状況やクライアントＰＣからの受信データの状況などがある。具体的には、たとえば、ＶＭ−Ａにより受け付けられた印刷ジョブのリストがある。そして、印刷ジョブリストを表示するようにすれば、操作者がこの印刷ジョブリストの中から優先処理対象の印刷ジョブを選択することができる。操作パネル５０において操作者により優先処理対象の印刷ジョブが選択された場合には、その情報がＶＭ−ＥからＶＭ−Ｘに出力され、ＶＭ−Ｘによってその他の仮想マシンが制御されて上述したような優先処理が行われる。
【００９２】
また、印刷ジョブリストを表示するようにすれば、操作者がこの印刷ジョブリストの中からキャンセル対象の印刷ジョブを選択することができる。操作パネル５０において操作者によりキャンセル対象の印刷ジョブが選択された場合には、その情報がＶＭ−ＥからＶＭ−Ｘに出力され、ＶＭ−Ｘによって各仮想マシンが制御され、キャンセル対象の印刷ジョブ、ジョブＩＤ、および印刷用画像データなどが削除される。
【００９３】
また、操作パネル５０において受け付けられる操作指示の内容としては、たとえば、画像読取部４０による原稿の読取指示などがある。操作パネル５０において画像読取部４０による読取指示が行われるとこれに応じて画像読取部４０において原稿の読取りが行われ、その読み取られた画像データはＶＭ−Ａに出力される。そして、ＶＭ−ＡはＶＭ−Ｅにおける読取指示に応じて、入力された画像データと操作パネル５０において入力された印刷条件とを有する印刷ジョブを受け付けて、印刷ジョブの登録を行う。
【００９４】
また、ＶＭ−Ｄにより印刷エンジン３０の稼働状況を監視し、たとえば、印刷エンジン３０においてジャムが生じた場合に、そのジャム情報をＶＭ−ＤのエンジンＩ／Ｆを介してＶＭ−Ｅに入力し、そのジャム情報を操作パネル５０に表示するようにしてもよい。また、このときジャム情報をＶＭ−Ｘにより受け付け、ＶＭ−Ｘが画像展開機能を有する仮想マシンの画像展開処理を中断させるとともに、ＶＭ−ＤのエンジンＩ／Ｆから印刷エンジンへの印刷用画像データの出力を中断させるようにしてもよい。なお、ＶＭ−Ｄにより監視する印刷エンジン３０の稼働状況は、ジャムに限らず、その他の稼働状況を監視するようにしてもよい。
【００９５】
また、上記実施形態の説明においては、ＶＭ−Ｄは、ＶＭ−Ａにおいて受け付けられた印刷ジョブの順番で各印刷ジョブの印刷用画像データを印刷エンジン３０へ出力するようにしたが、これに限らず、たとえば、ＶＭ−ＢおよびＶＭ−Ｃにおいて画像展開処理が終了した印刷ジョブの印刷用画像データから順に印刷エンジン３０へ出力するようにしてもよい。
【００９６】
また、上記実施形態の説明においては、画像展開機能を有する仮想マシンの数を一定としたが、これに限らず、たとえば、ＶＭ−Ａによって同時期に受け付けられた印刷ジョブの数や、ハードウェア２０の使用状況に応じて画像展開機能を有する仮想マシンの数を増減させるようにしてもよい。たとえば、印刷ジョブの数が多いときにはできるだけ多くの印刷ジョブの画像展開処理を並列して行うことができるように仮想マシンの数を増やし、印刷ジョブの数が少ないときにはその数に応じて仮想マシンの数を減少させるとともに各仮想マシンのＣＰＵ２１ａの処理能力とメモリ２１ｃの領域の占有率を高くし、より画像展開処理を高速に行うようにすることができる。また、たとえば、１つの仮想マシンが画像データ量が大きい非常に重たい処理を行っている場合には、仮想マシンの数を減らしたり、処理の軽い仮想マシンのリソースを減少させて、上記の重たい処理を行っている仮想マシンに対して、仮想マシンの数を追加したり、リソースをより多く振り分けたりしてもよい。
【００９７】
また、上記実施形態の印刷システムにおいては、各クライアントＰＣ１０〜１３におけるプリンタドライバが異なる種類のＰＤＬの印刷ジョブを出力するものであったり、プリンタドライバのバージョンが異なるものであったりする場合がある。このような場合、各クライアントＰＣ１０〜１３から出力される印刷ジョブに対して画像展開処理を施す際、それぞれの印刷ジョブに対応したアプリケーションが必要となる。そこで、異なる種類のＰＤＬで記述された印刷ジョブや、バージョンが異なるプリンタドライバから出力された印刷ジョブに対応するアプリケーションを備えた画像展開機能を有する仮想マシンをそれぞれ設定するようにしてもよい。
【００９８】
また、印刷エンジン３０がカラー印刷を行うものであり、クライアントＰＣから出力された印刷ジョブが、たとえば、Ｃ、Ｍ、Ｙ、Ｋのカラー画像データを有するものである場合には、その印刷ジョブの画像展開処理を行う際には、Ｃ、Ｍ、Ｙ、Ｋの各色の画像データに対しそれぞれ異なる仮想マシンを割り当て、各色の画像データの画像展開処理を並列して行うようにしてもよい。
【００９９】
また、上記実施形態の印刷システムにおいては、たとえば、ＶＭ−ＢおよびＶＭ−Ｃなどの画像展開機能を有する仮想マシンのいずれかが画像展開処理中に何らかの異常でハングアップしてしまった場合には、その画像展開処理中の印刷ジョブについては、そのとき画像展開処理を行っていない空いた仮想マシンを割り当てて画像展開処理を行うようにすればよい。また、このような異常が生じた場合のときのために予備の仮想マシンを常に設定するようにしてもよい。また、このような異常が生じたときに新たに仮想マシンを設定し、その新しい仮想マシンで画像展開処理を継続して行うようにしてもよい。
【符号の説明】
【０１００】
１            ネットワーク
２            印刷装置
１０〜１３     クライアントＰＣ
２０          プリンタ
３０          印刷エンジン
４０          画像読取部
５０          操作パネル
２３〜２８     仮想マシン
【図１】
2010173206.tif 000003
【図２】
2010173206.tif 000004
【図３】
2010173206.tif 000005
【図４】
2010173206.tif 000006
【図５】
2010173206.tif 000007
【図６】
2010173206.tif 000008
【図７】
2010173206.tif 000009