(57)【特許請求の範囲】
【請求項１】
中間データを解釈して画像データを生成する画像形成装置において，
単一の印刷データを複数のタスクで並列に解釈し，解釈された印刷データを基に中間データの生成処理を行う並列処理手段であって，所定のページの印刷データについて，先に解釈が始まるタスクでは，解釈された当該ページの印刷データを基に中間データを生成し，且つ，後に解釈が始まるタスクでは，解釈された当該ページの中間データを生成しない前記並列処理手段と，
生成処理により生成された中間データから画像データを生成する画像データ生成手段と，
前記印刷データの解釈中に前記画像形成装置のメモリに対するファイルの書き込み命令を検知する検知手段と，を有し，
前記複数のタスクの内，中間データを生成していないタスクが印刷データを解釈している際に前記検知手段によりファイルの書き込み命令を検知した場合，当該タスクにおける印刷データの解釈処理を中止することを特徴とする画像形成装置。
【請求項２】
前記並列処理手段は，
印刷データを解釈し，中間データを生成するタスクを実行する第１の実行手段と，
前記第１の実行手段と並行して，印刷データを解釈し，中間データを生成するタスクを実行する第２の実行手段と，
前記印刷データを解釈中に，前記検知手段が前記画像形成装置のメモリにフォントファイル，またはイメージファイルを書き込む命令を検知した場合，前記第１の実行手段，または前記第２の実行手段の内，何れの実行手段が中間データを生成しているかどうかを判断する判断手段と，を有し，
２つの実行手段の内，前記判断手段が中間データを生成していると判断された一方の実行手段は，フォントファイル，またはイメージデータを前記メモリに書き込み，中間データを生成し，
前記判断手段が中間データを生成していないと判断された他方の実行手段は，フォントファイル，またはイメージデータを前記メモリに書き込むことなく，前記解釈を中止することを特徴とする請求項１記載の画像形成装置。
【請求項３】
前記並列処理手段は，一方の実行手段が解釈処理を中止した後，前記中間データを生成していた他方の実行手段が，中間データが生成されていない残りのページを解釈し，前記印刷データにおける各ページの中間データを生成することを特徴とする請求項１記載の画像形成装置。
【請求項４】
前記並列処理手段は，
印刷データを解釈し，中間データを生成するタスクを実行する第１の実行手段と，
前記第１の実行手段と並行して，印刷データを解釈し，中間データを生成するタスクを実行する第２の実行手段と，
前記第１の実行手段，または前記第２の実行手段の内，何れの実行手段が中間データを生成しているかどうかを判断する判断手段と，を有し，
前記印刷データを解釈中に，前記検知手段が前記画像形成装置のメモリにフォントファイル，またはイメージファイルを書き込む命令を検知した後，当該フォントファイル，またはイメージファイルを読み出す命令を検知した場合，
２つの実行手段の内，前記判断手段が中間データを生成していると判断された一方の実行手段は，フォントファイル，またはイメージデータを前記メモリに書き込みまたは読み出しを行って中間データを生成し，
前記判断手段が中間データを生成していないと判断された他方の実行手段は，フォントファイル，またはイメージデータを前記メモリから読み出すことなく，前記解釈を中止することを特徴とする請求項１記載の画像形成装置。
【請求項５】
前記並列処理手段は，前記所定のページの中間データの生成処理を前記複数のタスクのうち当該ページの解釈を最初に開始する一つのタスクのみが行うことで，該印刷データのページ毎に中間データを生成していくことを特徴とする請求項１乃至４のいずれか１項に記載の画像形成装置。
【請求項６】
前記並列処理手段は，２つの実行手段により２つのタスクを実行することでマルチタスク処理を開始し，
一方の実行手段が解釈処理を中止した場合，マルチタスク処理から他方の実行手段のみでタスクを実行するシングルタスク処理へ移行することを特徴とする請求項１乃至４のいずれか１項に記載の画像形成装置。
【請求項７】
前記検知手段は，
一方の実行手段が既に命令を実行して中間データを生成している間に，当該中間データを生成しているページと同一ページに対する処理を他方の実行手段が開始した後，前記画像形成装置のメモリにフォントファイル，またはイメージファイルを書き込む命令を検知することを特徴とする請求項２記載の画像形成装置。
【請求項８】
中間データを解釈して画像データを生成する画像形成装置におけるデータ処理方法において，
単一の印刷データを複数のタスクで並列に解釈し，解釈された印刷データを基に中間データの生成処理を行う並列処理工程であって，所定のページの印刷データについて，先に解釈が始まるタスクでは，解釈された当該ページの印刷データを基に中間データを生成し，且つ，後に解釈が始まるタスクでは，解釈された当該ページの中間データを生成しない前記並列処理工程と，
生成処理により生成された中間データから画像データを生成する画像データ生成工程と，
前記印刷データの解釈中に前記画像形成装置のメモリに対するファイルの書き込み命令を検知する検知工程と，を有し，
前記複数のタスクの内，中間データを生成していないタスクが印刷データを解釈している際に前記検知工程によりファイルの書き込み命令を検知した場合，当該タスクにおける印刷データの解釈処理を中止することを特徴とするデータ処理方法。
【請求項９】
請求項８に記載のデータ処理方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、データ処理方法及びプログラムに関するものである。
【背景技術】
【０００２】
複写機、レーザプリンタ等の画像形成装置は、ホストコンピュータからのプリントデータを受け取り、そのデータの解釈及び画像処理を行い、印字するための画像データを生成するコントローラを備える。
ホストコンピュータのアプリケーションとプリンタドライバはページ記述言語（ＰＤＬ）により記述されたプリントデータを生成し、ネットワーク等の通信媒体を介してコントローラにデータ送信する。
【０００３】
ＰＤＬとしては、キヤノン社のLIPS、アドビシステムズ社のPostScript（アドビシステムズ社の登録商標）、HP社のPCLなどが知られている。
ホストコンピュータの性能向上、アプリケーションの高機能化に伴い生成されるＰＤＬデータの大容量化、複雑化が進んでいる。全般的なＣＰＵ性能の向上に伴い、コントローラのＰＤＬ処理性能も向上しているが、ＰＤＬ処理がエンジンスループットに間に合わないケースがなお存在する。
【０００４】
近年、ＣＰＵクロックの向上が頭打ちとなり、複数のコアを単一パッケージに格納したマルチコア化が進んでいる。マルチコア化したＣＰＵの性能をフルに引き出すためには、ＰＤＬ処理の並列化が必要であり、幾つかの方法が考案されている。
例えば、複数ジョブを複数のコアで同時並行してＰＤＬ処理するジョブ並列処理方式がある。このジョブ並列処理方式では大量のジョブを処理する場合には、全体の生産性を向上することができる。
【０００５】
しかしながら、その中の単一ジョブだけをみると、ＰＤＬ処理時間はシングルコアで実行した場合と変わらない。また、別の方法として、単一ジョブ内の複数ページを複数のコアで同時並行してＰＤＬ処理するページ並列処理方式がある。このページ並列処理方式では単一ジョブに対しても高速化が見込める。
しかし、プリントデータはページ間の依存関係の無いページ独立なＰＤＬで記述されている必要がある。
また、ジョブ中の単一ページだけをみると、ＰＤＬ処理時間はシングルコアで実行した場合と変わらない。複雑な描画がされたページのＰＤＬ処理は時間がかかることが多く、ページ並列処理方式でもボトルネックとなる可能性が残る。
さらに別の方法として、単一ページ内の複数描画オブジェクトを複数のコアで同時並行してＰＤＬ処理するオブジェクト並列処理方式がある。このオブジェクト並列処理方式は単一ページのＰＤＬ処理時間を短縮することも可能であるが、オブジェクトの分割と収集にかかる計算コストが高いことが知られている。並列処理の効率を考えた場合には、ジョブ並列処理方式、もしくはページ並列処理方式の方が望ましい。
【０００６】
なお、ページ並列処理方式には、完全ページ並列処理方式と部分ページ並列処理方式の二つが存在する。ここで、完全ページ並列処理方式はコントローラＣＰＵ上で実行されるＰＤＬ処理をページ単位で完全に並列処理する方式である（例えば、特許文献１）。
一方、部分ページ並列処理はＰＤＬ処理のうち一部分を並列処理して、残りの部分は重複処理を行うものである（例えば、特許文献２）。
ページ間の依存関係があるＰＤＬの場合、ＰＤＬデータを解釈するインタプリタは先頭ページから順番に処理を行う必要がある。前のページ迄の処理結果がインタプリタ内部に状態として蓄積されるためである。
しかしながら、インタプリタよりも下層のコンポーネントであるグラフィックライブラリやディスプレイリスト生成部、レンダラはページ間の依存性を除くことが比較的容易である。
その為、インタプリタは重複処理を行い、それ以下のコンポーネントをページ毎に並列処理することが可能である。部分ページ並列処理は完全ページ並列処理方式よりも並列度が落ちるが、ページ間の依存関係のあるＰＤＬでも並列処理が可能となり有用である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−３１０７６３号公報
【特許文献２】特許ＵＳ２０１０／０２７７７５７Ａ１
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、部分ページ並列処理を行った場合でもそのままでは処理できないケースが存在する。具体的にはファイルへの書き込みを伴うジョブである。
例えば、PostScriptではファイルの読み書きを行う為のオペレータが存在する。並列実行される複数のインタプリタが同一ファイルの書き込みを行った場合、ファイルの不整合が発生する。
ファイルの書き込みはフォントファイルのダウンロードや再利用する画像データの一時記憶等の目的で使われることが多い。ファイルの書き込みを伴うプリントジョブであることが、事前に判別できれば、ジョブ先頭から並列処理を行わないという方法が考えられる。
しかしながら、ファイルの書き込みがあるか否かの事前判別はPDLデータの保存とプレパースが必要なため、PDL処理時間の低下をまねく。
また、ファイルの書き込みを多重化する方法も考えられる。並列実行されるインタプリタごとにファイル書き込みを行うディレクトリを用意し、同じファイルをそれぞれ個別に書き込む方法である。この場合、書き込むファイルのトータルサイズが小さい場合は、それほど問題にならないが、大きい場合は非常に多くのファイルシステムリソースを消費することになる。また、同一のファイルを二重に書き込む処理は一般的にファイルＩＯの性能が低いこともあり、実行時間の面からも効率が良いとは言えない。
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、単一の印刷データを複数のタスクで並列に解釈する場合に、中間データを生成していないタスクからの書き込みを中止して、当該タスクを終了できる仕組みを提供することである。
【課題を解決するための手段】
【０００９】
上記目的を達成する本発明の画像形成装置は以下に示す構成を備える。
中間データを解釈して画像データを生成する画像形成装置において，単一の印刷データを複数のタスクで並列に解釈し，解釈された印刷データを基に中間データの生成処理を行う並列処理手段であって，所定のページの印刷データについて，先に解釈が始まるタスクでは，解釈された当該ページの印刷データを基に中間データを生成し，且つ，後に解釈が始まるタスクでは，解釈された当該ページの中間データを生成しない前記並列処理手段と，生成処理により生成された中間データから画像データを生成する画像データ生成手段と，前記印刷データの解釈中に前記画像形成装置のメモリに対するファイルの書き込み命令を検知する検知手段と，を有し，前記複数のタスクの内，中間データを生成していないタスクが印刷データを解釈している際に前記検知手段によりファイルの書き込み命令を検知した場合，当該タスクにおける印刷データの解釈処理を中止することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、単一の印刷データを複数のタスクで並列に解釈する場合に、中間データを生成していないタスクからの書き込みを中止して、当該タスクを終了できる。
【図面の簡単な説明】
【００１１】
【図１】印刷装置の構成を説明するブロック図である。
【図２】図１に示した印刷装置のモジュール構成を説明するブロック図である。
【図３】ＰＳパーサが発行するＤＬ生成依頼の内容の一例を示す図である。
【図４】画像形成装置の制御方法を説明するフローチャートである。
【図５】画像形成装置の制御方法を説明するフローチャートである。
【図６】画像形成装置の制御方法を説明するフローチャートである。
【図７】印刷装置のデータ処理例を説明するタイミングチャートである。
【図８】画像形成装置の制御方法を説明するフローチャートである。
【図９】印刷装置のデータ処理例を説明するタイミングチャートである。
【発明を実施するための形態】
【００１２】
次に本発明を実施するための最良の形態について図面を参照して説明する。
＜システム構成の説明＞
〔第１実施形態〕
【００１３】
図１は、本実施形態の画像形成装置の構成を説明するブロック図である。なお、本実施形態に示す画像形成装置は、ネットワークを介してホストコンピュータ上で多くの処理を分離実行させる構成も可能である。また、本実施形態の画像形成装置は、図示しない情報処理装置からネットワーク等を介して受信する中間データを解釈して画像データを生成する処理を複数のタスクを並列して実行させることが可能とすべく、後述するようにＣＰＵが内部に二つのコアを有するデュアルコアプロセッサで構成される。
【００１４】
図１に示す画像形成装置１００おいて、２００はコントローラで、画像信号やデバイス情報の入出力を制御する。１はＣＰＵで、ＲＯＭ３あるいはＨＤＤ４に記憶されたプログラムをＲＡＭ２に読み出して実行する。さらに、ＣＰＵ１はシステムバス５に接続される各デバイスを統括的に制御する。ＣＰＵ１は、内部に二つのコアを有するデュアルコアプロセッサであり、二つの制御プログラムを同時並列に実行可能である。
【００１５】
ＲＡＭ２は、ＣＰＵ１の主メモリ、ワークエリアとして機能する。ＲＯＭ３には電源ＯＮ時に実行されるブートプログラムが格納され、ＨＤＤ４にはオペレーティングシステムと本装置の制御プログラム本体が格納される。
また、ＨＤＤ４は画像データやプリントデータ等の大容量データを一時的あるいは長期的に保持する目的でも使用される。Ｎｅｔｗｏｒｋ６はローカルエリアネットワーク１３に接続し、印刷データやデバイス情報の入出力を担う。
【００１６】
７は操作部Ｉ／Ｆで、操作部１４とのインターフェース部で、操作部１４に表示する画像データを操作部１４に対して出力する。また、操作部１４から本装置の使用者が入力した情報を、ＣＰＵ１に伝える役割をする。操作部１４は、出力器として液晶パネルと音源を備え、入力器としてタッチパネルとハードキーを備えるものである。
【００１７】
コントローラ２００は、デバイスＩ／Ｆ８を介して、プリンタエンジン１５に接続される。デバイスＩ／Ｆ８はＣＰＵ１の指示に基づき、画像信号の送出、デバイス動作指示、デバイス情報の受信を行う。
【００１８】
プリンタエンジン１５は、コントローラ２００からの画像信号を媒体上に出力する出力機であり、電子写真方式、インクジェット方式の何れでも構わない。９はＲａｓｔｅｒ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｏｒ（ＲＩＰ）で、ディスプレイリスト（以後、ＤＬと略記する）をラスタイメージに展開する専用ハードウェアである。ＲＩＰ９は、ＣＰＵ１によりＲＡＭ２上に生成されたＤＬを高速かつ、ＣＰＵ１の実行と並列に、処理するものである。１０はプリンタ画像処理部で、プリント出力画像データに対して、画像補正処理、ハーフトーニング処理等を行う。１１は画像圧伸部で、多値画像データはＪＰＥＧ、２値画像データはＪＢＩＧ、ＭＭＲ、ＭＨの圧縮伸張処理を行う。１２は画像回転部で、画像データの回転処理を行う。
【００１９】
図２は、図１に示した画像形成装置１００のモジュール構成を説明するブロック図である。図２の（Ａ）に示す各ソフトウェアモジュールは、プログラムとしてＨＤＤ４に格納され、ＲＡＭ２にロードされＣＰＵ１により実行されるものである。
より具体的には、各ソフトウェアモジュールはＣＰＵ１上で動作するＯＳ（オペレーティングシステム）によりＲＡＭ２にロードされ、スレッド単位で実行権を付与され、実行されるものである。
図２の（Ａ）において、２０１はデータ受信部で、図示しないホストから送信されたプリントデータを受信し、受信したプリントデータはジョブ制御部２０２を介してジョブデータ管理部２０８で保持される。ジョブ制御部２０２は、プリントデータの受信から印刷までのジョブ制御の全般を司る。
２０３はＰＳインタプリタで、プリントデータを解釈して、中間データであるＤＬを生成する。ＰＳインタプリタ２０３が生成したＤＬはジョブ制御部２０２を介してジョブデータ管理部２０８で保持される。ＰＳインタプリタ２０３は、単一の印刷データを複数のタスクで並列に解釈し、該印刷データのページ毎に中間データの生成処理を複数のタスクのうち一つのタスクのみ行う並列処理可能に構成されている。
【００２０】
２０４は中間データから画像データを生成する画像データ生成処理を行うレンダラで、ＤＬからビットマップイメージを生成するモジュールとして機能し、多くの処理は専用ハードウェアであるＲＩＰ９により実行される。レンダラ２０４が生成したビットマップイメージはジョブ制御部２０２を介してジョブデータ管理部２０８で保持される。
２０５はプリントドライバで、デバイスＩ／Ｆ８を介してプリンタエンジン１５への印刷指示とビットマップイメージの送出を行う。２０６はユーザインターフェースで、操作部Ｉ／Ｆ７を介して、操作部１４を制御するモジュールである。主に操作部１４の液晶パネルに表示するデータを生成し、タッチパネルからの入力に従い液晶パネルの表示を更新する。また、ユーザインターフェース２０６は、タッチパネルからの入力が何らかのジョブ実行指示であった場合は、ジョブ制御部２０２にその指示を伝達する。
【００２１】
なお、ジョブデータ管理部２０８は、プリントデータ、ＤＬ、ビットマップイメージのそれぞれを一時的もしくは長期的に保持管理するデータベースとして使用される。
【００２２】
図２の（Ｂ）は、図２の（Ａ）に示したＰＳインタプリタ２０３をより詳細に記したソフトウェアモジュール構成に対応する。
図２の（Ｂ）において、ＰＳパーサ２０９は、ＰＳデータの解釈を行い、描画命令を抽出して、ＤＬ生成部２１０にＤＬの生成を依頼する。ＤＬ生成部２１０は、ＰＳパーサ２０９からのＤＬ生成依頼を受けて、ＤＬを生成する。ここで、ＤＬ生成部２１０は、複数のＤＬ生成部２１０を備え、印刷データを解釈し、中間データを生成するタスクを実行する第１の実行手段あるいは第２の実行手段として機能させることが可能に構成されている。
なお、２つのＤＬ生成部２１０は印刷データを並行して解釈する。
従って、後述する図６の（Ａ）に示す処理において、ＰＳインタプリタ２０３が印刷データを解釈中に、中間データを生成していないＤＬ生成部が画像形成装置のメモリにフォントファイル、またはイメージファイルを書き込む命令を検出したかどうかを判断する。
そして、中間データを生成していないＤＬ生成部が画像形成装置のメモリにフォントファイル、またはイメージファイルを書き込む命令を検知すると、当該ＤＬ生成部は、フォントファイル、またはイメージデータをメモリに書き込むことなく、解釈を中止する。
なお、ＰＳパーサ２０９とＤＬ生成部２１０とは密結合であり、ＰＳパーサ２０９が描画命令を抽出するたびに、ＤＬ生成部２１０が呼び出される。ＰＳパーサ２０９が発行するＤＬ生成依頼の内容は図３の表に記載の通りである。２１１は切り換え部で、ＰＳパーサ２０９からのＤＬ生成依頼を受け付けるか、無視するかを切り替えるためのモジュールである。
【００２３】
ここで、ＰＳパーサ２０９は、ページ依存処理であるのに対して、ＤＬ生成部２１０はページ独立処理である。ＰＳデータには前ページで定義したリソースを次ページで参照するケースがあるため、ＰＳパーサ２０９は、ページ順番通りにＰＳデータの解釈を行う必要がある。これに対して、図３に示すＤＬ生成依頼はいずれも前ページの処理に依存するものはなく、ＤＬ生成部２１０はページ順通りに処理する必要はない。
また、ＰＳパーサ２０９とＤＬ生成部２１０はそれぞれリエントラントな構造となっており、多重起動が可能である。一つのスレッド上で一つのＰＳパーサ２０９と一つのＤＬ生成部２１０が実行される。
【００２４】
図４は、本実施形態を示す画像形成装置の制御方法を説明するフローチャートである。本例は、コントローラ２００にて実行される基本プリントフローに対応し、各スレッドに対応する処理は、図２に示した各ソフトウェアモジュールによって実行される。
より具体的に、各ステップはＨＤＤ４に記憶された図２に示した各ソフトウェアモジュール内の各プログラムがＲＡＭ２に読み出され、ＣＰＵ１により実行されることにより実現される。以下の説明では、図２に示した各ソフトウェアモジュールを主体として説明を行う。
また、本処理ではスレッドＡ、スレッドＢ１、スレッドＢ２、スレッドＣの四つのスレッドが並列に実行される。また、各スレッドはオペレーティングシステムにより時分割され、ＣＰＵ１内の二つのコアに順番にその実行権が割り振られる。時分割の単位は十分に小さいため、四つのスレッドは並列動作すると見なすことができる。
【００２５】
しかしながら、ある一時点に着目すると同時に実行されるスレッドは二つである。これは、ＣＰＵ１が前述の通り２コアのデュアルコアプロセッサであることが理由である。オペレーティングシステムによるマルチスレッディング処理は一般に広く知られる技術であるため、詳細は省略する。
【００２６】
さらに、各スレッドのうち、スレッドＡがプリント処理のメインスレッドであり、スレッドＢ１、スレッドＢ２はスレッドＡにより実行時に動的生成されるものである。スレッドＣは本画像形成装置の起動時にオペレーティングシステムにより生成される常駐スレッドである。
【００２７】
スレッドＡでは最初にＳ４００１において、データ受信部２０１は、図示しない情報処理装置からネットワークを介してプリントデータを受信し、ジョブ制御部２０２を介してジョブデータ管理部２０８に保持（スプール）させる。
次に、Ｓ４００２において、ジョブ制御部２０２は、ＰＳインタプリタ２０３がエントリポイントとなる二つのスレッドＢ１、スレッドＢ２を起動する。即ち、ＰＳインタプリタ２０３は二つのスレッドにマッピングされて二重に起動される。
そして、ジョブ制御部２０２は、ＰＳインタプリタ２０３に対して、ジョブデータ管理部２０８に保持したプリントデータを渡し、プリントデータの解釈を指示する。ここで、ＰＳインタプリタ２０３は二重に起動されているため、同一のプリントデータをそれぞれのスレッドで同時に解釈し始めることになる。
【００２８】
次にＳ４００３において、ジョブ制御部２０２は、ＰＳインタプリタ２０３から１ページ分のＤＬの生成完了通知か、ＰＳインタプリタ２０３からＤＬの生成可否の問い合わせの何れかのイベントを受信するまで待つ。何れのイベントも、ＰＳインタプリタ２０３（スレッドＢ１、スレッドＢ２）からジョブ制御部２０２（スレッドＡ）に対して送信されるものである。ここで、ＤＬの生成可否の問い合わせは、指定されたページに対してＰＳインタプリタ２０３がＤＬを生成しても良いか問い合わせるものである。ＰＳインタプリタ２０３は、ＰＳデータを解釈して行き、新しいページが開始されると、必ずＤＬ生成可否の問い合わせをジョブ制御部２０２に対して行う。
【００２９】
次にＳ４００４に進み、ジョブ制御部２０２は、ＰＳインタプリタ２０３からＤＬの生成完了通知を受信したかどうか判定する。図４のフローを開始した当初はＤＬの生成は完了していないので、最初はＮｏと判断され、Ｓ４００５へ進む。この場合、ＰＳインタプリタ２０３から受信したイベントはＤＬ生成可否の問い合わせなので、ジョブ制御部２０２は指定されたページが現在スレッドＢ１、Ｂ２の何れかのスレッドでＤＬ生成中、あるいは生成済みのページか否かを判定する。
ここで、ジョブ制御部２０２がＹｅｓと判断した場合は、Ｓ４００７へ進み、ジョブ制御部２０２は、ＰＳインタプリタ２０３（スレッドＢ１、スレッドＢ２のいずれか）に対して、ＤＬの生成を許可しないで、Ｓ４００３に戻って処理を繰り返す。
【００３０】
一方、Ｓ４００５で、指定されたページが現在何れかのスレッドでＤＬ生成中、あるいは生成済みのページでないとジョブ制御部２０２が判断した場合はＳ４００６へ進む。そして、ジョブ制御部２０２は、ＰＳインタプリタ２０３（スレッドＢ１、スレッドＢ２のいずれか）に対して、ＤＬの生成を許可して、Ｓ４００３へ戻って処理を繰り返す。ジョブ制御部２０２は何ページ目までＤＬ生成を許可したか記憶し、この情報が次のＳ４００５における判定に用いられる。
【００３１】
一方、Ｓ４００４でＤＬの生成が完了しているとジョブ制御部２０２が判断した場合は、Ｓ４００８へ進み、ジョブ制御部２０２はレンダラ２０４でＤＬのオブジェクトのレンダリングを行い、ビットマップを生成する。
次に、Ｓ４００９において、ジョブ制御部２０２は、レンダラ２０４が生成したビットマップをジョブデータ管理部２０８に保存し、プリントドライバ２０５にプリントを依頼する。なお、ジョブ制御部２０２によるプリントの依頼はプリントドライバ２０５に対してレンダリング終了通知を送信することにより実行される。
プリントドライバ２０５は、プリンタエンジン１５に同期して処理を実行するために、スレッドＣとしてスレッドＡとは別スレッドで実行される。依頼を受けたプリントドライバ２０５は、Ｓ４２０１において、プリンタエンジン１５に対してプリント開始要求コマンドを送信し、画像データを転送する。なお、Ｓ４２０１の詳細は別途後述する。
【００３２】
次にＳ４０１０へ進み、ジョブ制御部２０２は、レンダラ２０４が全ページのレンダリングが完了したか判定する。ここで、ジョブ制御部２０２がＹｅｓと判断した場合は、図４のフローを終了し、Ｎｏと判断した場合は、Ｓ４００３へ戻り、処理を繰り返す。以下、重複起動する図４に示すスレッドＢ１、スレッドＢ２の処理を説明する。
【００３３】
図４に示すスレッドＢ１、スレッドＢ２のＳ４１０１において、ＰＳインタプリタ２０３は、当該ページのＤＬを生成するかどうかをジョブ制御部２０２に問い合わせる。ジョブ制御部２０２から問い合わせ結果が通知されると、次にＳ４１０２へ進み、ＰＳインタプリタ２０３は、当該ページのＤＬ生成が許可されたか否か判定する。
【００３４】
ここで，ＰＳインタプリタ２０３がＹｅｓと判断した場合は，Ｓ４１０３へ進み，当該ページに対するＰＳデータを解釈して１ページ分のＤＬを生成する。一方，Ｓ４１０２で，ＰＳインタプリタ２０３がＮｏと判断した場合は，Ｓ４１０４へ進み，当該ページに対するＰＳデータを解釈するが，ＤＬは生成しない。
前述したように，ＤＬの生成する／しないは，切り換え部２１１でＤＬ生成依頼を受け付けるか／無視するかを切り替えることにより行う。
このように切り換え部２１１でＤＬの生成依頼を無視するように設定した場合，当該ページに対するＤＬ生成処理が実行されないため，処理が高速化される。
なお，スレッドＢ１，Ｂ２のどちらのスレッドが１ページ目のＤＬ生成を担当するかは，ＤＬの生成問い合わせの後先によって決まる。例えばスレッドＢ１，スレッドＢ２のうち，先に起動されたスレッドＢ１が先行して処理を開始するため，ＤＬ生成の問い合わせもスレッドＢ１が先行する。
上記Ｓ４１０３，あるいはＳ４１０４の処理が終了すると，Ｓ４１０５へ進み，ＰＳインタプリタ２０３は，全ページの処理が終了したか否か判定する。ここで，ＰＳインタプリタ２０３がＮｏと判断した場合は，Ｓ４１０１へ戻り，処理を繰り返す。
【００３５】
一方、Ｓ４１０５で、ＰＳインタプリタ２０３がＹｅｓと判断した場合は、本フローを終了する。
上述したようにＰＳインタプリタ２０３の処理はリエントラントな構成となっており、同時に二つのＰＳデータを処理することが可能である。ＰＳデータ解釈処理、およびＤＬ生成処理にかかる時間は、ＰＳデータの各ページのデータ量と複雑度に大きく依存する。従って、スレッドＢ１、スレッドＢ２における各ページのＤＬの生成が完了するタイミングはページ順になるとは限らない。
【００３６】
ここで、プリント時のページ順への並び替えはプリントドライバ２０５により実行される。なお、スレッドＡとスレッドＣは同期の為の待ち時間が非常に多い（スレッドＣに関しては後述）。その結果として、ＣＰＵ１の二つのコアにおける実行時間の大半がスレッドＢ１とスレッドＢ２に割り当てられることになる。
また、各ページのＤＬ生成をスレッドＢ１とスレッドＢ２のどちらに割り振るかは、どちらのスレッドが先に当該ページの解釈を始めるかによって決まる。特定のページの解釈とＤＬ生成処理に大きく時間がかかる場合でも、もう一方のスレッドが次のページ以降を連続して処理できるので、効率の良い割り振り方法である。ＤＬ生成の具体的な割り振り例に関しては別途後述する。
【００３７】
図５は、本実施形態を示す画像形成装置の制御方法を説明するフローチャートである。本例は、図２に示したプリントドライバ２０５により実行される画像データ転送処理例であって、図４のＳ４２０１を詳細化した手順である。なお、各ステップは、図１に示したＣＰＵ１がＲＯＭ３に記憶された制御プログラムをＲＡＭ２にロードして実行することで実現される。
最初にＳ５００１において、プリントドライバ２０５は、ジョブ制御部２０２からレンダリング終了通知を受信するまで待つ。ここで、レンダリング終了通知は、前述したように、ジョブ制御部２０２によりＳ４００９で送信されるものである。
【００３８】
次に、Ｓ５００２において、プリントドライバ２０５は、レンダリング済みのページがジョブの先頭ページか、もしくは前ページの印字出力が完了しているか判定する。ここで、プリントドライバ２０５がＮｏと判断した場合は、前のページのレンダリング完了を待つために、Ｓ５００１に戻る。前述したように、各ページのレンダリングはページ順に完了するとは限らない。
一方、Ｓ５００２で、プリントドライバ２０５がＹｅｓと判断した場合は、Ｓ５００３へ進み、プリントドライバ２０５はプリンタエンジン１５に対してプリント開始要求コマンドを送信し、画像データを転送する。
【００３９】
なお、Ｓ５００３において、プリントドライバ２０５はプリンタエンジン１５との同期処理も行う。プリンタエンジン１５は所定のスピード以上では出力できない。コントローラ２００はそのＲＩＰ処理が速すぎる場合にプリンタエンジン１５の印字出力を待つ必要がある。
次に、Ｓ５００４において、プリントドライバ２０５は次ページがレンダリング済みか否か判定する。ここで、プリントドライバ２０５がＹｅｓであると判断した場合、Ｓ５００５に進み、プリントドライバ２０５はプリンタエンジン１５に同期して、プリント開始要求コマンドを送信し、画像データを転送する。
そして、再び、Ｓ５００４に戻り同様の処理を繰り返す。Ｓ５００４、Ｓ５００５の処理により、先にレンダリング済みのページの画像データが全て出力される。
【００４０】
一方、Ｓ５００４でプリントドライバ２０５がＮｏと判断した場合は、Ｓ５００６へ進み、プリントドライバ２０５は全ページの画像データの転送が完了したか否か判定する。ここで、プリントドライバ２０５がＹｅｓと判断した場合は、Ｓ５００７へ進み、プリントドライバ２０５はプリンタエンジン１５に対してプリント完了要求コマンドを送信する。
一方、Ｓ５００６で、プリントドライバ２０５がＮｏと判断した場合は、Ｓ５００１へ戻り、処理を繰り返す。
本実施形態では、複数のタスクで印刷データの解釈を開始した後、いずれか１つのタスクで画像形成装置のメモリにフォントファイル、またはイメージファイルを書き込む命令を検知した後、タスク制御を変更する。具体的には、１つのタスクで中間データ生成中において、後続のページで書き込み命令を検知したタスクに代えて、中間データを生成しているタスクが各ページの中間データ生成が１つのタスクで実行されるようにタスク制御される。
【００４１】
次に、図６の（Ａ）、図６の（Ｂ）を用いて、図４の基本プリントフローにおける並列処理において、ファイルの書き込みが発生した場合の処理フローについて説明する。
図６は、本実施形態を示す画像形成装置の制御方法を説明するフローチャートである。本例は、図４の基本プリントフローにおける並列処理例である。なお、各ステップはＨＤＤ４に記憶された図２に示した各ソフトウェアモジュール内の各プログラムがＲＡＭ２に読み出され、ＣＰＵ１により実行されることにより実現される。以下の説明では、図２に示した各ソフトウェアモジュールを主体として説明を行う。以下、中間データを生成していないタスクにおいて、ファイルへの書き込み命令を検知した際に当該タスクにおける解釈を中止する処理を説明する。
なお、図４のスレッドＢ１、スレッドＢ２にマッピングされたＰＳインタプリタ２０３は同一のＰＳデータを処理するため、同一のファイルにアクセスする場合がある。同一のファイルに対して二つのスレッドから、非同期に書き込みを行った場合、ファイルの中身がＰＳデータの意図するものと異なってしまう可能性がある。
【００４２】
ここで、図６の（Ａ）は図４のＳ４１０４を、図６の（Ｂ）は図４のＳ４１０３を詳細化したものである。
図６の（Ａ）では、Ｓ６００１で、ＰＳインタプリタ２０３は、ＰＳデータをパース（解釈）して、ＰＳオペレータを取り出す。次にＳ６００２に進み、ＰＳインタプリタ２０３は取り出したＰＳオペレータがファイルの書き込みを伴うオペレータ（命令）か否か判定する。なお、ＰＳインタプリタ２０３は、印刷データの解釈中に画像形成装置のメモリに対するファイルへの書き込み命令またはメモリに対するファイルの読み出し命令を検知する検知可能に構成されている。ここで、メモリとは、図１に示したＨＤＤ４が好適である。
【００４３】
ここで、ＰＳインタプリタ２０３がＹｅｓと判断した場合はＳ６００３に進み、ＰＳインタプリタ２０３は当該スレッドをエラー終了する。
一方、Ｓ６００２で、ＰＳインタプリタ２０３がＮｏと判断した場合は、Ｓ６００４へ進み、ＰＳインタプリタ２０３はＰＳオペレータで指定された処理を実行する。但し、Ｓ６００４において、ＰＳインタプリタ２０３は描画オペレータの場合も、ＤＬに出力しない。次にＳ６００５に進み、ＰＳインタプリタ２０３は１ページ分のＰＳデータの解釈が終了したか否か判定する。ここで、ＰＳインタプリタ２０３がＮｏと判断した場合は、Ｓ６００１へ戻り、処理を繰り返す。
【００４４】
一方、Ｓ６００５で、ＰＳインタプリタ２０３がＹｅｓと判断した場合は、本フローを終了する。
図６の（Ｂ）では、Ｓ６１０１で、ＰＳインタプリタ２０３はＰＳデータをパース（解釈して）、ＰＳオペレータを取り出す。次に、Ｓ６１０２へ進み、ＰＳインタプリタ２０３はＰＳオペレータで指定された処理を実行する。
但し、Ｓ６１０２において、ＰＳインタプリタ２０３は描画オペレータの場合にＤＬに出力する。また、取り出したＰＳオペレータがファイル書き込みを伴うものであった場合には、ファイル書き込みが実行される。
【００４５】
次にＳ６１０３に進み、ＰＳインタプリタ２０３は１ページ分のＰＳデータの解釈が終了したか否か判定する。ここで、ＰＳインタプリタ２０３がＮｏと判断した場合は、Ｓ６００１へ戻り、処理を繰り返し、ＰＳインタプリタ２０３がＹｅｓと判断した場合は、本フローを終了する。
なお、中間データを生成していないと判断した一方のＤＬ生成部２１０が処理をエラー終了した後、中間データを生成していると判断した一方のＤＬ生成部２１０が印刷データの解釈処理をシングルタスクで処理を継続する。
【００４６】
図７は、本実施形態を示す画像形成装置のデータ処理例を説明するタイミングチャートである。以下、２つのＤＬ生成部２１０により２つのタスクを実行することでマルチタスク処理を開始し、一方のＤＬ生成部が解釈処理を中止した場合、マルチタスク処理から他方のＤＬ生成部のみでタスクを実行するシングルタスク処理へ移行する処理を説明する。
図７の（Ａ）は、５ページからなる特定データのＤＬ生成ありの場合（上段側）となしの場合下段側に斜線で示す）の処理時間を表している。この特定データではＤＬ生成なしの場合に、ＤＬ生成ありの場合に比べて半分近くの処理時間で終了する。あくまで、特定データによる例を示すものであり、実際の処理時間はＰＳデータの内容によって変わる。
【００４７】
図７の（Ｂ）は、図７の（Ａ）の特定データに対して、図４の基本プリントフローによるＤＬ生成のページ割り振りを実施した場合のタイミングチャートを示している。
まず、１ページ目のＤＬ生成がスレッドＢ１に割り振られ、スレッドＢ２はＤＬ生成しないため１ページ目の処理を先に終了する。
スレッドＢ２で１ページ目が終了した時点で、２ページ目のＤＬ生成を行っているスレッドは存在しないため、２ページ目のＤＬ生成はスレッドＢ２に割り振られる。
次に、２ページ目の処理はスレッドＢ２が先に終了し、３ページ目のＤＬ生成はスレッドＢ２に割り振られる。以後同様に、４ページ目はスレッドＢ１に、５ページ目はスレッドＢ２に割り振られる。
【００４８】
図７の（Ｃ）は，図７の（Ａ）の特定データの３ページ目の前半部分にファイルの書き込みを加えた場合のタイミングチャートを示している。
図７の（Ｃ）では，２ページ目迄の処理は，図７の（Ｂ）と全く同じである。
まず，３ページ目の処理をスレッドＢ２が開始し，ファイルへの書き込みを検知する。このとき，スレッドＢ２はＤＬ生成を行っているため，指定された通りにファイルの書き込みを終了する。スレッドＢ１は３ページ目の処理をやや遅れて開始し，同様にファイルへの書き込みを検知する。このとき，スレッドＢ１はＤＬ生成を行っていないため（図中斜線で示す），スレッドＢ１は書き込みを検知した時点でエラー終了する。
スレッドＢ１が３ページ目でエラー終了してしまうため，４ページ目以降のＤＬ生成は常にスレッドＢ２に割り振られる。なお，本実施形態では，一方のＤＬ生成部２１０が既に命令を実行して中間データを生成している間に，当該中間データを生成しているページと同一ページに対する処理を他方のＤＬ生成部２１０が開始した後，画像形成装置のメモリにフォントファイル，またはイメージファイルを書き込む命令を検知することを特徴としている。
【００４９】
図７の（Ｄ）は、図７の（Ａ）の特定データの３ページ目の後半部分にファイルの書き込みを加えた場合のタイミングチャートを示している。
図７の（Ｃ）との違いは、ＤＬ生成を行っていないスレッドＢ１が先にファイルの書き込みを検知して、エラー終了する点である。
このように、ファイルの書き込み検知の後先ではなく、ＤＬ生成中か否かで当該スレッドをエラー終了する点が本実施形態における特徴的な処理例である。
本実施形態によれば、ファイル書き込みを伴うジョブが存在するPDLでも効率的に並列処理を行うことができる。また、インタプリット前にファイル書き込みの有無判定を行わないため、ファイル書き込みのない通常の印刷ジョブの処理時間に殆ど影響を与えない。
さらに、ファイルの書き込みを多重化しないため、ファイルシステムリソースの消費量も単一処理（非並列処理）の際と変わらない。また、並列処理時にファイル書き込みを検知した際でも、先頭ページからやり直すこともなく、残りのページのみを単一処理することができる。さらに、本方式は制御手順がシンプルであり、ソフトウェアの実装工数を比較的少なくすることが可能である。
〔第２実施形態〕
【００５０】
上記第１実施形態では、ファイル書き込みの検知時に、ＤＬ生成していないスレッドを終了させる方式を示した。本実施形態では、書き込んだファイルを読み出した時点でＤＬ生成していないスレッドを終了させる方式の実施形態について説明する。
【００５１】
図８は、本実施形態を示す画像形成装置の制御方法を説明するフローチャートである。本例は、基本プリントフローにおける並列処理において、書きこんだファイルからの読み出しが発生した場合の処理手順である。ここで、図８の（Ａ）は図４のＳ４１０４の処理に対応し、図８の（Ｂ）は図４のＳ４１０３の処理に対応する。
なお、各ステップは、図１に示したＣＰＵ１がＲＯＭ３に記憶された制御プログラムをＲＡＭ２にロードして実行することで実現される。
【００５２】
なお、図４に示したスレッドＢ１、スレッドＢ２にマッピングされたＰＳインタプリタ２０３は同一のＰＳデータを処理するため、同一のファイルにアクセスする場合がある。また、同一のファイルに対して二つのスレッドから、非同期に書き込みを行った場合、ファイルの中身がＰＳデータの意図するものと異なってしまう可能性がある。
しかしながら、書き込みだけであれば、後からの書き込みをスキップすればファイル内容の不整合は発生しない。それでも、書き込みを行ったファイルから読み出す時点で問題が発生する場合がある。これは、先行するスレッドがファイルの書き込みを行うため、他のスレッドが同一ファイルを読み出した場合に、本来書き込まれていないはずの書き込みが既にされている場合があるからである。以下、ＰＳインタプリタ２０３が印刷データを解釈中に、画像形成装置のメモリにフォントファイル、またはイメージファイルを書き込む命令を検知した後、当該フォントファイル、またはイメージファイルを読み出す命令を検知場合の処理を詳述する。
【００５３】
図８の（Ａ）では、Ｓ８００１で、ＰＳインタプリタ２０３は、ＰＳデータをパース（解釈して）、ＰＳオペレータを取り出す。次に、Ｓ８００２に進み、ＰＳインタプリタ２０３は、取り出したＰＳオペレータがファイルの書き込みを伴うオペレータか否か判定する。ここで、ＰＳインタプリタ２０３がＹｅｓと判断した場合はＳ８００３に進み、ＰＳインタプリタ２０３は書き込むファイルのパス名を記憶する。
次に、Ｓ８００４へ進み、ＰＳインタプリタ２０３は、他のインタプリタスレッドに先行する書き込みか否かを判定する。
一方、Ｓ８００２でＰＳインタプリタ２０３がＮｏと判断した場合は、Ｓ８００５へ進み、ＰＳインタプリタ２０３は、当該ジョブで過去に書き込んだファイルからの読み出しを指示するオペレータか否かを判定する。ここで、Ｓ８００４でＰＳインタプリタ２０３がＹｅｓと判断した場合と、Ｓ８００５で、ＰＳインタプリタ２０３がＮｏと判断した場合は、Ｓ８００６へ進む。
【００５４】
そして、Ｓ８００６で、ＰＳインタプリタ２０３は、ＰＳオペレータに指定された処理を実行する。但し、描画コマンドの場合にもＤＬ出力は行わない。そして、Ｓ８００４からＳ８００６へ進んだ場合は、Ｓ８００６で、ＰＳインタプリタ２０３は、ファイルへの書き込みを実行することになる。ＰＳインタプリタ２０３がＳ８００６の処理を終了した場合、Ｓ８００４でＰＳインタプリタ２０３がＮｏと判断した場合、Ｓ８００７へ進む。
【００５５】
そして、Ｓ８００７で、ＰＳインタプリタ２０３は、１ページ分のＰＳデータの解釈が終了したか否か判定する。ここで、ＰＳインタプリタ２０３がＮｏと判断した場合はＳ８００１へ戻り、処理を繰り返す。
一方、Ｓ８００７で、ＰＳインタプリタ２０３がＹｅｓと判断した場合は、本フローを終了する。また、Ｓ８００５で、ＰＳインタプリタ２０３がＹｅｓと判断した場合はＳ８００８へ進み、ＰＳインタプリタ２０３は、当該スレッドをエラー終了する。
【００５６】
図８（Ｂ）では、Ｓ８１０１で、ＰＳインタプリタ２０３は、ＰＳデータをパース（解釈して）、ＰＳオペレータを取り出す。次に、Ｓ８１０２へ進み、ＰＳインタプリタ２０３はファイルの書き込みを伴うオペレータか否かを判定する。ここで、ＰＳインタプリタ２０３がＹｅｓと判断した場合は、Ｓ８１０３へ進み、ＰＳインタプリタ２０３は他のインタプリタスレッドに先行する書き込みか否かを判定する。Ｓ８１０２で、ＰＳインタプリタ２０３がＮｏと判断した場合と、Ｓ８１０３でＰＳインタプリタ２０３がＹｅｓと判断した場合は、Ｓ８１０４へ進む。
【００５７】
そして、Ｓ８１０４では、ＰＳインタプリタ２０３は、ＰＳオペレータで指定された処理を実行する。但し、Ｓ８１０４において、ＰＳインタプリタ２０３は描画オペレータの場合にＤＬに出力する。ＰＳインタプリタ２０３がＳ８１０４の処理を終了した場合と、Ｓ８１０３でＰＳインタプリタ２０３がＮｏと判断した場合、Ｓ８１０５へ進む。
そして、Ｓ８１０５で、ＰＳインタプリタ２０３は１ページ分のＰＳデータの解釈が終了したか否か判定する。ここで、ＰＳインタプリタ２０３がＮｏと判断した場合はＳ８１０１へ戻り、処理を繰り返し、ＰＳインタプリタ２０３がＹｅｓと判断した場合は、本フローを終了する。
本実施形態では、中間データを生成していると判断した一方のＤＬ生成部２１０は、フォントファイル、またはイメージデータをメモリに書き込みまたは読み出しを行って中間データを生成する。一方、中間データを生成していないと判断した他方のＤＬ生成部２１０は、フォントファイル、またはイメージデータをメモリから読み出すことなく、解釈を中止する。その後は、中間データを生成していると判断した一方のＤＬ生成部２１０が印刷データの解釈処理をシングルタスクで処理を継続する。
【００５８】
図９は、本実施形態を示す印刷装置のデータ処理例を説明するタイミングチャートである。以下、２つのＤＬ生成部２１０により２つのタスクを実行することでマルチタスク処理を開始し、一方のＤＬ生成部が解釈処理を中止した場合、マルチタスク処理から他方のＤＬ生成部のみでタスクを実行するシングルタスク処理へ移行する処理を説明する。
図９の（Ａ）は、３ページからなる特定データのＤＬ生成ありの場合となしの場合の処理時間を表している。このデータではＤＬ生成なしの場合に、ＤＬ生成ありの場合に比べて半分近くの処理時間で終了することが分かる。あくまで、特定データによる例を示すものであり、実際の処理時間はＰＳデータの内容によって変わる。
図９の（Ｂ）は、図の９（Ａ）の特定データに対して、図４の基本プリントフローによるＤＬ生成のページ割り振りを実施した場合のタイミングチャートを示している。
【００５９】
図７の（Ｂ）と同様のロジックにより、ＤＬ生成のページ割り振りが決まるため、詳細は割愛する。
図９の（Ｃ）は、図９の（Ａ）の特定データの２ページ目の前半部分に同一ファイルの書き込みと読み出しを加えた場合のタイミングチャートを示している。
まず、２ページ目の処理をスレッドＢ２が開始し、ファイルへの書き込み命令を検知する。このとき、スレッドＢ２はＤＬ生成を行っていて、かつ、当該ファイルへの先行する書き込みであるため、指定された通りにファイルの書き込みを終了する。
次にスレッドＢ２は当該ファイルからの読み出し、当該ファイルへの書き込みを、連続して行う。スレッドＢ１は２ページ目の処理を遅れて開始し、同様にファイルへの書き込み命令を検知する。
ここで、スレッドＢ１は当該ファイルへの後からの書き込みを実行しようとするため、ファイルへの書き込み処理は実行されない。続いて、スレッドＢ１は当該ファイルからの読み出しを検知する。ここで、スレッドＢ１はＤＬ生成を行っておらず、かつ過去に書き込みを行ったファイルからの読み出しを実行しようとしているため、読み出し命令を検知した時点でエラー終了する。なお、本実施形態では、一方のＤＬ生成部２１０が既に命令を実行して中間データを生成している間に、当該中間データを生成しているページと同一ページに対する処理を他方のＤＬ生成部２１０が開始した後、画像形成装置のメモリにフォントファイル、またはイメージファイルを書き込む命令を検知することを特徴としている。
【００６０】
本実施形態によれば、第１実施形態と同様に、ファイル書き込みを伴うジョブが存在ＰＤＬでも効率的に並列処理を行うことができる。この際、インタプリット前にファイル書き込みの有無判定を行わないため、ファイル書き込みのない通常の印刷ジョブの処理時間に殆ど影響を与えない。
【００６１】
さらに、ファイルの書き込みを多重化しないため、ファイルシステムリソースの消費量も単一処理（非並列処理）の際と変わらない。
また、並列処理時にファイル書き込みを検知した際でも、先頭ページからやり直すこともなく、残りのページのみを単一処理することができる。
さらに、第２実施形態に示す方式では、ファイルを書き込むだけのジョブであれば並列処理が可能になる利点がある。
【００６２】
本発明の各工程は、ネットワーク又は各種記憶媒体を介して取得したソフトウエア（プログラム）をパソコン（コンピュータ）等の処理装置（ＣＰＵ、プロセッサ）にて実行することでも実現できる。
【００６３】
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。
【符号の説明】
【００６４】
２０１  データ受信部
２０２  ジョブ制御部
２０３  ＰＳインタプリタ
２０４  レンダラ
２０５  プリントドライバ
２０６  ユーザインターフェース
２０８  ジョブデータ管理部
２０９  ＰＳパーサ
２１０  ＤＬ生成部
２１１  切り換え部
【図１】
0005847460.tif 000002
【図２】
0005847460.tif 000003
【図３】
0005847460.tif 000004
【図４】
0005847460.tif 000005
【図５】
0005847460.tif 000006
【図６】
0005847460.tif 000007
【図７】
0005847460.tif 000008
【図８】
0005847460.tif 000009
【図９】
0005847460.tif 000010