(57)【特許請求の範囲】
【請求項１】
当該画像処理装置において提供される複数の機能を実現するための部分であるアプリケーション共通層と当該画像処理装置において提供される各機能を実現するための固有の部分であるアプリケーション固有層とから構成されるアプリケーションロジック層と、当該画像処理装置の機能の実行要求を受け付けるユーザインタフェース層と前記実行要求を受けた当該画像処理装置の機能を実現するための処理を制御するコントロール層と前記アプリケーションロジック層から共通に利用される下位機能を実現するデバイスサービス層と当該画像処理装置のデバイスを制御するデバイス制御層とから構成されるサービス層とを有し、当該画像処理装置の機能を実現するために使用するメモリの一部を共有する第１のプロセスと、第２のプロセスとを有する画像処理装置であって、
前記第１のプロセスが、
前記サービス層に係るプログラムと、前記アプリケーション共通層に係るプログラムとを、前記メモリの第１の領域にロードする第１のプログラムロード手段と、
前記第２のプロセスが、
前記アプリケーション固有層に係るプログラムを、前記メモリの前記第１の領域と異なる第２の領域にロードする第２のプログラムロード手段とを有し、
前記第２のプロセスが、前記第１の領域を前記第１のプロセスと共有することを特徴とする画像処理装置。
【請求項２】
前記第２のプログラムロード手段は、
前記第２のプロセスを生成させる生成プログラムを、前記メモリにロードすることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
複数の前記第２のプロセスを有し、
一の前記第２のプロセスが、前記サービス層に係るプログラムと、前記アプリケーションロジック層に係るプログラムとから構成されるアプリケーションを実行している状態で、
前記第１のプロセスが他の第２のプロセスを生成し、生成された第２のプロセスの第２のプログラムロード手段が、
前記アプリケーション固有層に係るプログラムを、前記メモリにロードすることを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記第２のプログラムロード手段は、通信ネットワークを介した当該画像処理装置の機能の実行要求に応答するプログラムを、前記メモリにロードすることを特徴とする請求項２に記載の画像処理装置。
【請求項５】
前記第１のプログラムロード手段は、
前記アプリケーション固有層に係るプログラムのうち、複数の前記第２のプロセスで実行される所定のプログラムを、前記メモリの前記第１の領域及び前記第２の領域と異なる第３の領域にロードし、
前記２のプロセスが、前記第１の領域及び前記第３の領域を前記第１のプロセスと共有することを特徴とする請求項１に記載の画像処理装置。
【請求項６】
前記第１のプロセスが、
前記サービス層に係るプログラムを実行する第１のプログラム実行手段を有することを特徴とする請求項１に記載の画像処理装置。
【請求項７】
当該画像処理装置において提供される複数の機能を実現するための部分であるアプリケーション共通層と当該画像処理装置において提供される各機能を実現するための固有の部分であるアプリケーション固有層とから構成されるアプリケーションロジック層と、当該画像処理装置の機能の実行要求を受け付けるユーザインタフェース層と前記実行要求を受けた当該画像処理装置の機能を実現するための処理を制御するコントロール層と前記アプリケーションロジック層から共通に利用される下位機能を実現するデバイスサービス層と当該画像処理装置のデバイスを制御するデバイス制御層とから構成されるサービス層とを有し、当該画像処理装置の機能を実現するために使用するメモリの一部を共有する第１のプロセスと、第２のプロセスとを有する画像処理装置のアプリケーション起動方法であって、
前記第１のプロセスが、
前記サービス層に係るプログラムと、前記アプリケーション共通層に係るプログラムとを、前記メモリの第１の領域にロードする第１のプログラムロード手順と、
前記第２のプロセスが、
前記アプリケーション固有層に係るプログラムを、前記メモリの前記第１の領域と異なる第２の領域にロードする第２のプログラムロード手順とを有し、
前記第２のプロセスが、前記第１の領域を前記第１のプロセスと共有することを特徴とするアプリケーション起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置に関し、特にアプリケーション毎にプロセスを割り当てるシステムに関する。
【背景技術】
【０００２】
近年におけるプリンタ、コピー機、スキャナ、ファクシミリ、又はこれらの機能を一台の筐体で実現する複合機（MFP：Multifunction Printer）などの画像処理装置では、メモリなどの制限は厳しいものの、汎用的なコンピュータと同様にCPU（Central Processing Unit）を備え、各機能はアプリケーションの制御によって実現されるようになっている。
【０００３】
例えば、特許文献１に記載された画像処理装置では、各アプリケーションから共通的に利用される機能をプラットフォームとして備えており、当該プラットフォームのAPI（Application Program Interface）を利用してアプリケーションを実装することができる。この画像処理装置によれば、共通的に利用される機能がプラットフォームとして備えられていることにより、アプリケーションごとに重複した機能の実装が回避され、アプリケーション全体の開発効率を向上させることができる。
【０００４】
その結果、このような画像処理装置では、システムにアプリケーションを追加・拡張することで、ユーザの所望する機能を提供することができる。
【０００５】
また、このような画像処理装置の中には、現在、実装する環境（実装機種）などに依存しないという特徴を生かし、携帯電話や家電製品などの開発にも用いられている、Sun Microsystems社が開発したJava（登録商標）言語によって開発されているものもある。また、実装する環境に、プロセスを複数に分割することでマルチプロセス化を行うことのできるプロセスベースのUNIX系OS（Operating System）を採用しているものもある。UNIX系OSの多くはプロセスを生成するためのforkシステムコールを備えており、親プロセスを複製することで新しいプロセスを生成する。また多くの場合、fork直後は親プロセスと子プロセスでメモリが共有され、メモリに対する書き込み（変更）があった場合にのみ、子プロセス側でメモリの複製を行うCopy  On  Writeという性質を備えている。この性質により、変更のないメモリに関しては共有が保たれるため、メモリ使用量を抑制することができる。
【特許文献１】特許３６７９３４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、複合機のような巨大なシステムでは、ソフトウェアモジュール同士が複雑に連携して、当該複合機の機能を実現するため、初期化シーケンスとプロセスへのモジュール配置を適切に設計しないと、メモリ共有の効果を十分に得ることができず、メモリの使用量を増大させることになるという問題がある。
【０００７】
そこで、本発明では、上記の問題点に鑑み、当該画像処理装置の機能を実現するために使用するメモリの一部を複数のプロセスで共有させることにより、メモリという限られたハードウェア資源を効率的に利用することのできる画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明における画像処理装置は、当該画像処理装置において提供される複数の機能を実現するための部分であるアプリケーション共通層と当該画像処理装置において提供される各機能を実現するための固有の部分であるアプリケーション固有層とから構成されるアプリケーションロジック層と、当該画像処理装置の機能の実行要求を受け付けるユーザインタフェース層と前記実行要求を受けた当該画像処理装置の機能を実現するための処理を制御するコントロール層と前記アプリケーションロジック層から共通に利用される下位機能を実現するデバイスサービス層と当該画像処理装置のデバイスを制御するデバイス制御層とから構成されるサービス層とを有し、当該画像処理装置の機能を実現するために使用するメモリの一部を共有する第１のプロセスと、第２のプロセスとを有する画像処理装置であって、前記第１のプロセスが、前記サービス層に係るプログラムと、前記アプリケーション共通層に係るプログラムとを、前記メモリの第１の領域にロードする第１のプログラムロード手段と、前記第２のプロセスが、前記アプリケーション固有層に係るプログラムを、前記メモリの前記第１の領域と異なる第２の領域にロードする第２のプログラムロード手段とを有し、前記第２のプロセスが、前記第１の領域を前記第１のプロセスと共有することを特徴とする。
【０００９】
また、本発明の一形態では、前記第２のプログラムロード手段は、前記第２のプロセスを生成させる生成プログラムを、前記メモリにロードすることを特徴とする。
【００１０】
また、本発明の一形態では、当該画像処理装置は複数の前記第２のプロセスを有し、一の前記第２のプロセスが、前記サービス層に係るプログラムと、前記アプリケーションロジック層に係るプログラムとから構成されるアプリケーションを実行している状態で、第１のプロセスが他の第２のプロセスを生成し、生成された第２のプロセスの第２のプログラムロード手段が、前記アプリケーション固有層に係るプログラムを、前記メモリにロードすることを特徴とする。
【００１１】
また、本発明の一形態では、前記第２のプログラムロード手段は、通信ネットワークを介した当該画像処理装置の機能の実行要求に応答するプログラムを、前記メモリにロードする。
【００１２】
また、本発明の一形態では、前記第１のプログラムロード手段は、前記アプリケーション固有層に係るプログラムのうち、複数の前記第２のプロセスで実行される所定のプログラムを、前記メモリの前記第１の領域及び前記第２の領域と異なる第３の領域にロードし、前記２のプロセスが、前記第１の領域及び前記第３の領域を前記第１のプロセスと共有することを特徴とする。
【００１３】
また、本発明の一形態では、前記第１のプロセスが、前記サービス層に係るプログラムを実行する第１のプログラム実行手段を有することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、当該画像処理装置の機能を実現するために使用するメモリの一部を複数のプロセスで共有させることにより、メモリという限られたハードウェア資源を効率的に利用することのできる画像処理装置を提供することができる。
【発明を実施するための最良の形態】
【００１５】
図面を参照しながら、本発明を実施するための最良の形態について説明する。
【００１６】
（本発明に係る画像処理装置のソフトウェアアーキテクチャ）
図1は、本発明の実施の形態における複合機のソフトウェア構成例を示す図である。ここで、複合機とは、プリンタ、コピー、スキャナ、又はFAX等の複数の機能を一台の筐体において実現する画像処理装置をいう。
【００１７】
図1に示されるように、複合機１におけるソフトウェアは、ユーザインタフェース層１０、コントロール層２０、アプリケーションロジック層３０、デバイスサービス層４０及びデバイス制御層５０より構成される。なお、図中における各層の上下関係は、層間の呼び出し関係に基づいている。すなわち、基本的に図中において上にある層が下の層を呼び出す。
【００１８】
ユーザインタフェース層１０は、機能（例えば、コピー、印刷、スキャン、FAX送信）の実行要求を受け付けるための機能が実装されている部分であり、例えば、通信サーバ部１１及びローカルUI（User Interface）１２が含まれる。通信サーバ部１１は、例えば、非図示のクライアントPC（Personal Computer）からネットワーク経由で要求を受け付ける。ローカルUI部１２は、例えば、非図示のオペレーションパネルを介して入力される要求を受け付ける。ユーザインタフェース層１０はにおいて受け付けられた要求は、コントロール層２０に伝えられる。
【００１９】
コントロール層２０は、要求された機能を実現するための処理を制御するための機能が実装されている部分である。具体的には、要求された機能に応じて、アプリケーションロジック層３０における各フィルタを接続し、接続されたフィルタに基づいて機能の実行を制御する。なお、本実施の形態において「複合機１の機能」とは、複合機１がユーザに対して提供する一つのまとまった単位（要求が入力されて最終的な出力が得られるまで）のサービスと同義であり、ソフトウェア的には一つのまとまった単位のサービスを提供するアプリケーションと同義である。
【００２０】
アプリケーションロジック層３０は、それぞれが複合機１において提供される機能の一部を実現する部品群が実装されている部分である。すなわち、アプリケーションロジック層３０における部品を組み合わせることにより一つの機能が実現される。本実施の形態では、各部品を「フィルタ」と呼ぶ。これは、複合機１のソフトウェアアーキテクチャが「パイプ＆フィルタ」と呼ばれる考え方に基づくことによる。
【００２１】
また、アプリケーションロジック層３０は、複合機１において提供される複数の機能を実現するための部分であるアプリケーション共通層と、複合機１において提供される各機能を実現するための固有の部分であるアプリケーションロジック層とから構成される。
【００２２】
図２は、パイプ＆フィルタの概念を示すための図である。図２においては、「F」はフィルタを示し、「P」はパイプを示す。図中に示されるように、各フィルタはパイプによって接続される。フィルタは、入力されたデータに対して変換を施し、その結果を出力する。パイプは、フィルタから出力されたデータを次のフィルタに伝達する。
【００２３】
すなわち、本実施の形態における複合機１では、各機能をドキュメント（データ）に対する「変換」の連続として捉える。複合機の各機能は、ドキュメントの入力、加工、及び出力によって構成されるものとして一般化することができる。そこで、「入力」、「加工」、及び「出力」を「変換」として捉え、一つの「変換」を実現するソフトウェア部品がフィルタとして構成される。入力を実現するフィルタを特に「入力フィルタ」という。また、加工を実現するフィルタを特に「加工フィルタ」という。更に、出力を実現するフィルタを特に「出力フィルタ」という。なお。各フィルタは独立しており、フィルタ間における依存関係（呼び出し関係）は基本的には存在しない。したがって、フィルタ単位で追加（インストール）又は削除（アンインストール）が可能とされている。
【００２４】
図１において、アプリケーションロジック層３０には、入力フィルタとして、読取フィルタ３０１、メール受信フィルタ３０２、FAX受信フィルタ３０３、PC文書受信フィルタ３０４が含まれている。
【００２５】
読取フィルタ３０１は、スキャナによる画像データの読み取りを制御し、読み取られた画像データを出力する。メール受信フィルタ３０２は、電子メールを受信し、当該電子メールに含まれているデータを出力する。FAX受信フィルタ３０３は、FAX受信を制御し、受信されたデータを出力する。PC文書受信フィルタ３０４は、非図示のクライアントPCから印刷データを受信し、受信された印刷データを出力する。
【００２６】
文書加工フィルタ３１１は、入力されたデータに所定の画像変換処理（集約、拡大、又は縮小等）を施し、出力する。文書変換フィルタ３１２は、レンダリング処理を実行する。すなわち、入力されたPostScriptデータをビットマップデータに変換して出力する。
【００２７】
印刷フィルタ３２１は、入力されたデータをプロッタに出力（印刷）させる。メール送信フィルタ３２２は、入力されたデータを電子メールに添付して送信する。FAX送信フィルタ３２３は、入力されたデータをFAX送信する。PC文書送信フィルタ３２４は、入力されたデータをクライアントPCに送信する。
【００２８】
デバイスサービス層４０は、アプリケーションロジック層３０における各フィルタから共通に利用される下位機能が実装されている部分であり、例えば、画像パイプ４１及びデータ管理部４２が含まれる。画像パイプ４１は、上述したパイプの機能を実現する。すなわち、或るフィルタからの出力データを次のフィルタに伝達する。データ管理部４２は、各種のデータベースを表現する。例えば、ユーザ情報が登録されたデータベースや、文書又は画像データ等が蓄積されるデータベース等が相当する。
【００２９】
デバイス制御層５０は、デバイス（ハードウェア）を制御するドライバと呼ばれるプログラムモジュール群が実装されている部分であり、例えば、スキャナ制御部５１、プロッタ制御部５２、メモリ制御部５３、電話回線制御部５４、及びネットワーク制御部５５が含まれる。各制御部は、当該制御部の名前に付けられているデバイスを制御する。
【００３０】
フィルタについて更に詳しく説明する。図３は、フィルタの構成要素を説明するための図である。図３に示されるように、各フィルタは、フィルタ設定用UI、フィルタロジック、フィルタ固有下位サービス及び永続記憶領域情報により構成される。
【００３１】
フィルタ設定用UIは、フィルタの実行条件を設定させるための画面をオペレーションパネルに表示させるプログラムである。例えば、入力フィルタの一つである読取フィルタであれば、解像度、濃度、画像種別を設定する画面が相当する。なお、オペレーションパネルの表示がHTML（HyperText Markup Language）データや、スクリプトに基づいて行われ得ることに鑑みれば、フィルタ設定用UIはHTMLデータやスクリプトであっても良い。
【００３２】
フィルタロジックは、フィルタの機能を実現するためのロジックが実装されたプログラムである。例えば、読取フィルタであれば、スキャナによる原稿読み取り制御のためのロジックが相当する。
【００３３】
フィルタ固有下位サービスは、フィルタロジックを実現するために必要な下位機能（ライブラリ）である。例えば、読取フィルタであれば、スキャナを制御するための機能が相当する。
【００３４】
永続記憶領域情報は、フィルタに対する設定情報（例えば、実行条件のデフォルト値）等、不揮発性メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、フィルタのインストール時にデータ管理部４２に登録される。
【００３５】
図４は、本実施の形態の複合機における各機能（アプリケーション）を実現するためのフィルタの組み合わせの例を示す図である。
【００３６】
例えば、コピー機能は、読取フィルタ３０１と印刷フィルタ３２１とを接続することにより実現される。読取フィルタ３０１によって、原稿から読み取られた画像データを印刷フィルタ３２１によって印刷すれば良いからである。なお、コピー機能に付随する、集約、拡大、縮小等の加工が要求された場合には、これらの加工を実現する文書加工フィルタ３１１が読取フィルタ３０１と印刷フィルタ３２１の間に挿入される。
【００３７】
プリンタ機能（クライアントPCからの印刷機能）は、PC文書受信フィルタ３０４と文書変換フィルタ３１２と印刷フィルタ３２１とを接続することにより実現される。スキャン to mail機能（スキャンした画像データを電子メールで転送する機能）は、読取フィルタ３０１とメール送信フィルタ３２２とを接続することにより実現される。FAX送信機能は、読取フィルタ３０１とFAX送信フィルタ３２３とを接続することにより実現される。FAX受信機能は、FAX受信フィルタ３０３と印刷フィルタ３２１とを接続することにより実現される。
【００３８】
（本発明の動作原理）
図５は、本発明に係る画像処理装置である複合機１の動作原理を示す図である。
【００３９】
複合機1は、メモリ（RAM：Random Access Memory）１００と、第一のプロセス１１０と、第２のプロセス１２０と、プログラム記憶装置１３０とから構成される。
【００４０】
メモリ１００は、非図示の複合機１のCPUでプログラムを実行する際に、実行するプログラムやデータが展開（ロード）され、演算の間、演算データを一時的に保持する。
【００４１】
プログラム記憶装置１３０は、複合機１の機能を実現するためのプログラムを記憶する装置であり、そのプログラムは、サービス層１３１と、アプリケーション共通層１３２と、アプリケーション固有層１３３から構成される。サービス層１３１は、前述のユーザインタフェース層１０と、コントロール層２０と、デバイスサービス層４０と、デバイス制御層５０から構成される。また、アプリケーション共通層１３２は、アプリケーションロジック層３０に含まれる各フィルタのプログラムにおいて、全てのフィルタで共通する部分である。一方、アプリケーション固有層３２は、アプリケーションロジック層３０に含まれる各フィルタのプログラムにおいて、各フィルタで固有の部分である。
【００４２】
第１のプロセス１１０は、マルチプロセス対応の仮想機械であり、forkコマンドを実行することによって、第２のプロセスを生成する。forkとは、UNIX系システムコールのひとつで、プロセスのコピーを生成するものである。また、第１のプロセス１１０は、第１のプログラムロード手段１１１、生成手段１１２、第１のプログラム実行手段１１３、及び第１のプログラム読取手段１１４を有する。
【００４３】
第１のプログラム読取手段１１４は、サービス層１３１及びアプリケーション共通層１３２に係るプログラムを、プログラム記憶装置１３０から読み出す。
【００４４】
第１のプログラムロード手段１１１は、第１のプログラム読取手段１１４が読み出したサービス層１３１及びアプリケーション共通層１３２に係るプログラムを、メモリ１００にロードする。つまり、複合機１の機能を実現するためのプログラムにつき、共通する部分を第１のプロセスがメモリ１００にロードする。
【００４５】
そして、生成手段１１２は、第１のプロセスが、forkコマンドを実行することによって、第２のプロセスを生成する。図６に、第１のプロセスから第２のプロセスが生成される概念図を示す。第１のプロセスにおいて、forkコマンドを実行することによって、当該第１のプロセスとメモリ使用領域の一部を共有する第２のプロセスが生成される。生成される第２のプロセスは、一つであっても、複数であっても良い。図７に、第１のプロセスと、第２のプロセスとのメモリ使用領域の共有について説明する図を示す。図７で示すように、第１のプロセスが、第１のプログラムロード手段１１１でメモリ１００にロードしたサービス層１３１及びアプリケーション共通層１３２に係るプログラムが使用するメモリ領域について、第１のプロセスと第２のプロセスとで共有するため、複合機１のメモリ１００を効率的に利用することができる。
【００４６】
また、第１のプログラムロード手段１１１は、アプリケーション固有層１３３に係るプログラムであって、複数の第２のプロセスで実行され、かつ、複合機１の基本機能を実現するフィルタ（例えば、読取フィルタ３０１や印刷フィルタ３２１）に係るプログラムについても、メモリ１００にロードする。この様に、アプリケーション固有層１３３に係るプログラムであって、複数の第２のプロセスで実行され、かつ、複合機１の基本機能を実現するフィルタ（例えば、読取フィルタ３０１や印刷フィルタ３２１）に係るプログラムを、第１のプロセス１１０でメモリ１００にロードすることによって、更に、複合機１のメモリ１００を効率的に利用することができる。
【００４７】
一方、第１のプログラム実行手段１１３は、第１のプログラムロード手段１１１がメモリ１００にロードしたサービス層１３１に係るプログラムを、第１のプロセスが実行する。その後、第１のプロセス１１０が、forkコマンドを実行し、第２のプロセス１２０を生成することで、メモリ利用の効率化を図ることができ、更に、第２のプロセスでサービス層１３１に係るプログラムを起動する必要がないため、第２のプロセスにおけるプログラム起動時間の短縮を実現する。
【００４８】
第２のプロセス１２０は、マルチプロセス対応の仮想機械であり、第１のプロセス１１０がforkコマンドを実行することによって生成される。また、第２のプロセスは、複合機１の機能を実現するためのプログラムを実行するが、そのために、第２のプログラムロード手段１２１、生成要求手段１２２、第２のプログラム実行手段１２３、及び第２のプログラム読取手段１２４を有する。
【００４９】
第２のプログラム読取手段１２４は、アプリケーション固有層１３３に係るプログラムを、プログラム記憶装置１３０から読み出す。
【００５０】
第２のプログラムロード手段１２１は、第２のプログラム読取手段１２４が読み出したアプリケーション固有層１３３に係るプログラムを、メモリ１００にロードする。第２のプログラム実行手段１２３は、メモリ１００にロードされたサービス層１３１及びアプリケーションロジック層３０に係るプログラムから構成される複合機１の機能を実現するためのアプリケーションを実行する。
【００５１】
また、第２のプログラム読取手段１２４は、生成要求手段１２２を実現するためのプログラムをプログラム記憶装置１３０から読み出し、その後、第２のプログラムロード手段１２１が、メモリ１００にこの読み出したプログラムをロードし、第２のプログラム実行手段１２３が、生成要求手段１２２を実現するためのプログラムを実行する。こうすることで、生成要求手段１２２は、ユーザが、複合機１の操作画面から又は通信ネットワーク経由で、複合機１の機能につき、実行要求を行った場合に、その実行要求のあった複合機１の機能に係るプログラムを実行させるための第２のプロセスを生成するように、第１のプロセスに対して要求する。
【００５２】
ここで、サービス層１３１に係るプログラムがミドルウェア含む場合であっても、前述の説明と同様に、複合機１は動作する。第１のプログラム読取手段１１３が、ミドルウェアを含むサービス層１３１とアプリケーション共通層１３２に係るプログラムを、プログラム記憶装置１３０から読み出し、第１のプログラムロード手段１１１が、それらプログラムをメモリ１００にロードする。そして、第２のプログラム読取手段１２４が、アプリケーション固有層１３３に係るプログラムを、プログラム記憶装置１３０から読み出し、第２のプログラムロード手段１２１が、そのプログラムをメモリ１００にロードし、第２のプログラム実行手段１２３が、ミドルウェアを含むサービス層１３１とアプリケーションロジック層３０に係るプログラムを実行する。こうすることで、サービス層にミドルウェアが含まれる場合であっても、複合機１のメモリを効率的に使用することができる。
【００５３】
（本実施の形態に係る複合機のハードウェア構成）
以下に本発明の画像処理装置である複合機１のハードウェアの構成の一例を示す。図８は、本発明の実施の形態における複合機１のハードウェア構成の一例を示す図である。
【００５４】
複合機１のハードウェアとしては、コントローラ８０と、オペレーションパネル８７、ファクシミリコントロールユニット（FCU：Facsimile Control Unit）８８と、撮像部８９と、印刷部９０が存在する。
【００５５】
コントローラ８０は、CPU（Central Processing Unit）８４、ASIC（Application Specific Integrated Circuit）８６、NB（North Bridge）８５、SB（South Bridge）９１、MEM-P８１、MEM-C８２、HDD（ハードディスクドライブ）８３、メモリカードスロット９６、ネットワークインタフェースコントローラ（NIC：Network Interface Controller）９２、USB（Universal Serial Bus）デバイス９３、IEEE（The Institute of Electrical and Electronics Engineers, Inc.）１３９４デバイス９４、セントロニクスデバイス９５により構成される。
【００５６】
CPU８４は、種々の情報処理用のIC（Integrated Circuit）である。ASIC８６は、種々の画像処理用のICである。NB８５は、コントローラのノースブリッジである。SB９１は、コントローラのサウスブリッジである。MEM-P８１は、複合機１のシステムメモリである。MEM-C８２は、複合機１のローカルメモリである。HDD８３は、複合機１のストレージである。メモリカードスロット９６は、メモリカード９７をセットするためのスロットである。NIC９２は、MACアドレスによるネットワーク通信用のコントローラである。USBデバイス９３は、USB規格の接続端子を提供するためのデバイスである。セントロニクスデバイス９５は、セントロニクス仕様の接続端子を提供するためのデバイスである。オペレーションパネル８７は、オペレータが複合機１に入力を行うためのハードウェア（操作部）であると共に、オペレータが複合機１から出力を得るためのハードウェア（表示部）である。
【００５７】
なお、本発明に係る複合機１のソフトウェアは、例えば、MEM-C８２に格納され、CPU８４によって処理されることにより、その機能を複合機１に実行させる。
【００５８】
（本発明の実施の形態）
（１）複合機１のコピー機能を実行する場合について
図９を用いて、本実施の形態における複合機１のコピー機能を実現する処理手順について説明する。図９は、本実施の形態における複合機１の機能を実現する処理手順についてのフローチャートである。
【００５９】
Ｓ９０で第１のプログラム読取手段１１４が、プログラム記憶装置１３０から、サービス層１３１とアプリケーション共通層１３２に係るプログラムを読み出し、第１のプログラムロード手段１１１が、その読み出したプログラムをメモリ１００にロードする。
【００６０】
Ｓ９１で生成手段１１２が、forkコマンドを実行して、第２のプロセスＡを生成する。ここで、第１のプロセスと第２のプロセスＡとは、サービス層１３１とアプリケーション共通層１３２に係るプログラムのメモリ使用領域を共有しているため、複合機１における効率的なメモリの使用が実現している。
【００６１】
Ｓ９２で第２のプログラム読取手段１２４が、プログラム記憶装置１３０から、アプリケーション管理に係るプログラムとネットワークデーモンに係るプログラムとを読み出し、第２のプログラムロード手段１２１が、これらのプログラムをメモリ１００にロードする。ここで、アプリケーション管理に係るプログラムとは、ユーザがオペレーションパネル８７より、複合機１の機能につき、実行要求を行った場合に、その実行要求のあった機能に係るプログラムを実行させる第２のプロセスＢを生成するように、第１のプロセスに対して要求する生成要求手段１２２を実現させるアプリケーションである。また、ネットワークデーモンに係るプログラムとは、ユーザがNIC９２を介して、複合機１の機能につき、実行要求を行った場合に、その実行要求のあった機能に係るプログラムを実行させる第２のプロセスＢを生成するように、第１のプロセスに対して要求する生成要求手段１２２を実現させるアプリケーションである。更に、これら２つのアプリケーションは、一旦起動されると、当該プロセスの終了要求がされるまで、動作を継続する。
【００６２】
Ｓ９３で第２のプログラム実行手段は、サービス層１３１に係るプログラムと、アプリケーション管理に係るプログラムと、ネットワークデーモンに係るプログラムとを起動する。これにより、生成要求手段１２２を使用できる状態となった。
【００６３】
Ｓ９４でユーザがオペレーションパネル８７より、複合機１のコピー機能につき、実行要求を行った場合（Ｓ９４でYESの場合）には、Ｓ９５で生成要求手段１２２は、コピー機能に係るプログラムを実行させる第２のプロセスＢを生成するように、第１のプロセスに対して要求し、生成手段１１２は、その要求に応答して、新たに第２のプロセスＢを生成する。一方、Ｓ９４でユーザの実行要求が無い場合（Ｓ９４でNOの場合）は、ユーザの実行要求があるまで複合機１は待ち状態となる。
【００６４】
Ｓ９６で、Ｓ９５において生成された第２のプロセスＢが有する第２のプログラム読取手段１２４は、ユーザから実行要求のあったコピー機能に係るプログラムを、プログラム記憶装置１３０から読み出し、第２のプログラムロード手段１２１は、そのプログラムをメモリ１００にロードする。ここでも、第１のプロセスと第２のプロセスＢとで使用するメモリの共有化が図られているため、メモリ利用の効率化が実現している。
【００６５】
Ｓ９７で、Ｓ９５において生成された第２のプロセスＢが有する第２のプログラム実行手段１２４は、サービス層１３１に係るプログラムと、コピー機能に係るプログラムとを実行する。このプログラムが実行されると、読取フィルタ３０１はスキャナ制御部５１に撮像部８９から原稿の画像データを読み取るよう要求を行い、その要求に応じて、撮像部８９は原稿の画像データを読み取る。そして、ここで読み取られた画像データは、画像パイプ４１に一時的に記憶される。次に、印刷フィルタ３２１は、画像パイプ４１からその一時的に記憶された画像データを読み出し、プロッタ制御部５２を介して、印刷部９０からこの画像データを印刷させる。
【００６６】
Ｓ９９でコピー機能に係るプログラムが終了し、それを実行させていた第２のプロセスＢも終了する。第２のプロセスＡでは引き続きアプリケーションの実行要求を待機する（Ｓ９４に戻る）。
【００６７】
（２）複合機１のプリンタ機能を実行する場合について
図９を用いて、本実施の形態における複合機１のプリンタ機能を実現する処理手順について説明する。
【００６８】
Ｓ９０で第１のプログラム読取手段１１４が、プログラム記憶装置１３０から、サービス層１３１とアプリケーション共通層１３２に係るプログラムを読み出し、第１のプログラムロード手段１１１が、その読み出したプログラムをメモリ１００にロードする。
【００６９】
Ｓ９１で生成手段１１２が、forkコマンドを実行して、第２のプロセスＡを生成する。ここで、第１のプロセスと第２のプロセスＡとは、サービス層１３１とアプリケーション共通層１３２に係るプログラムのメモリ使用領域を共有しているため、複合機１における効率的なメモリの使用が実現している。
【００７０】
Ｓ９２で第２のプログラム読取手段１２４が、プログラム記憶装置１３０から、アプリケーション管理に係るプログラムとネットワークデーモンに係るプログラムとを読み出し、第２のプログラムロード手段１２１が、これらのプログラムをメモリ１００にロードする。
【００７１】
Ｓ９３で第２のプログラム実行手段は、サービス層１３１に係るプログラムと、アプリケーション管理に係るプログラムと、ネットワークデーモンに係るプログラムとを起動する。これにより、生成要求手段１２２を使用できる状態となった。
【００７２】
Ｓ９４でユーザがNIC９２を介して、複合機１のプリンタ機能につき、実行要求を行った場合（Ｓ９４でYESの場合）には、Ｓ９５で生成要求手段１２２は、プリンタ機能に係るプログラムを実行させる第２のプロセスＢを生成するように、第１のプロセスに対して要求し、生成手段１１２は、その要求に応答して、第２のプロセスＢを生成する。一方、Ｓ９４でユーザの実行要求が無い場合（Ｓ９４でNOの場合）は、ユーザの実行要求があるまで複合機１は待ち状態となる。
【００７３】
Ｓ９６で、Ｓ９５において生成された第２のプロセスＢが有する第２のプログラム読取手段１２４は、ユーザから実行要求のあったプリンタ機能に係るプログラムを、プログラム記憶装置１３０から読み出し、第２のプログラムロード手段１２１は、そのプログラムをメモリ１００にロードする。
【００７４】
Ｓ９７で、Ｓ９５において生成された第２のプロセスＢが有する第２のプログラム実行手段１２４は、サービス層１３１に係るプログラムと、プリンタ機能に係るプログラムを実行する。このプログラムが実行されると、PC文書受信フィルタ３０４はネットワーク制御部５５に対し、NIC９２を介して、非図示のクライアントPCから印刷すべき画像データを受信するよう要求する。ネットワーク制御部５５は、その要求に応答し、その受信した画像データをPC文書受信フィルタ３０４に渡す。そして、PC文書受信フィルタ３０４は、その受信した画像データを、画像パイプ４１に出力し、記憶させる。次に、文書変換フィルタ３１２は、その画像データを画像パイプ４１から読み出し、その画像データにレンダリング処理を施して、画像パイプ４１に出力し、記憶させる。最後に、印刷フィルタ３２１は、その画像データを画像パイプ４１から読み出し、プロッタ制御部５２を介して、その画像データを印刷部９０から印刷させる。
【００７５】
Ｓ９９でプリンタ機能に係るプログラムが終了し、それを実行させていた第２のプロセスＢも終了する。第２のプロセスＡでは引き続きアプリケーションの実行要求を待機する（Ｓ９４に戻る）。
【００７６】
（本発明の実施の形態の変形例）
図９を用いて、本発明の実施の形態の変形例について説明する。
【００７７】
（１）第１の変形例
本実施の形態の第１の変形例について説明する。
【００７８】
Ｓ９０で第１のプログラム読取手段１１４が、プログラム記憶装置１３０から、サービス層１３１とアプリケーション共通層１３２に係るプログラムに加え、アプリケーション固有層の所定のプログラムを読み出し、第１のプログラムロード手段１１１が、その読み出したプログラムをメモリ１００にロードし、その後、Ｓ９１〜Ｓ９９の手順を図９のフローチャートに従い実施することで、複合機１の機能を実現することができる。ここで、所定のプログラムとは、複数のプロセスで実行され、かつ、複合機１の基本機能を実現するフィルタ、例えば、読取フィルタ３０１、印刷フィルタ３２１をいう。
【００７９】
Ｓ９１で生成手段１１２が、forkコマンドを実行して、第２のプロセスＡを生成すれば、第１のプロセスと第２のプロセスＡとは、サービス層１３１とアプリケーション共通層１３２に係るプログラムに加え、アプリケーション固有層の所定のプログラムについても、そのメモリ使用領域を共有しているため、更に効率的なメモリの使用が実現している。
【００８０】
（２）第２の変形例
本実施の形態の第２の変形例について説明する。
【００８１】
Ｓ９０で第１のプログラム読取手段１１４が、プログラム記憶装置１３０から、サービス層１３１とアプリケーション共通層１３２に係るプログラムを読み出し、第１のプログラムロード手段１１１が、その読み出したプログラムをメモリ１００にロードする。
【００８２】
そして、Ｓ９１で第１のプログラム実行手段１１３がサービス層１３１に係るプログラムを起動し、主に初期化処理を実行したところで処理を中断する。その後、生成手段１１２が、forkコマンドを実行して、第２のプロセスＡを生成する。こうすることで、第１のプロセスと第２のプロセスＡとは、サービス層１３１とアプリケーション共通層１３２に係るプログラムのメモリ使用領域を共有しているため、効率的なメモリの使用が実現している。更に、第１のプロセスにおいて既にサービス層１３１に係るプログラムを起動させているため、第２のプロセスＡでサービス層に係るプログラムを再び起動させる必要が無く、第２のプロセスＡにおけるプログラムの起動時間を短縮することができる。
【００８３】
これに続いて、Ｓ９２〜Ｓ９９の手順を図９のフローチャートに従い実施することで、複合機１の機能を実現することができる。ただし、Ｓ９７で第２のプログラム実行手段１２４は、サービス層１３１に係るプログラムの初期化処理を実行することは無く（中断した状態から再開する）、ユーザから実行要求のあった複合機１の機能に係るプログラムのみ実行する。
【００８４】
（３）第３の変形例
ここまでの実施例は、アプリケーションの実行要求を受け付けてから、第２のプロセスを生成するものであったが、あらかじめシステム起動時にアプリケーションを実行するための第２のプロセスを生成しておいても良い。この場合、第２のプロセスでは、アプリケーションの初期化処理を行った状態で、ユーザからの要求を待機する。アプリケーション管理やネットワークデーモンがユーザ要求を受け付けると、プロセス間通信により待機しているプロセスに通知を行う。
【００８５】
この実施例では、あらかじめ起動しているので、ユーザ要求からアプリケーション実行までの時間が短縮できるメリットがある。一方、現在使用されていないアプリケーションのためのプロセスがシステムに常駐するため、メモリ容量を圧迫するのがデメリットである。
【００８６】
以上、本発明の実施の形態について詳述したが、本発明は係る特定の実施の形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲において、種々の変形・変更が可能である。
【図面の簡単な説明】
【００８７】
【図１】本発明の実施の形態における複合機のソフトウェア構成例を示す図である。
【図２】パイプ＆フィルタの概念を示すための図である。
【図３】フィルタの構成要素を説明するための図である。
【図４】本実施の形態の複合機における各機能（アプリケーション）を実現するためのフィルタの組み合わせの例を示す図である。
【図５】本発明に係る画像処理装置である複合機１の動作原理を示す図である。
【図６】第１のプロセスから第２のプロセスが生成される概念図である。
【図７】第１のプロセスと、第２のプロセスとのメモリ使用領域の共有について説明する図である。
【図８】本実施の形態における複合機のハードウェア構成の一例を示す図である。
【図９】本実施の形態における複合機の機能を実現する処理手順についてのフローチャートである。
【符号の説明】
【００８８】
１      画像処理装置（複合機）
１００  メモリ（RAM）
１１０  第１のプロセス
１１１  第１のプログラムロード手段
１１２  生成手段
１１３  第１のプログラム実行手段
１１４  第１のプログラム読取手段
１２０  第２のプロセス
１２１  第２のプログラムロード手段
１２２  生成要求手段
１２３  第２のプログラム実行手段
１２４  第２のプログラム読取手段
１３０  プログラム記憶装置
１３１  サービス層
１３２  アプリケーション共通層
１３３  アプリケーション固有層
【図１】
0005042079.tif 000002
【図２】
0005042079.tif 000003
【図３】
0005042079.tif 000004
【図４】
0005042079.tif 000005
【図５】
0005042079.tif 000006
【図６】
0005042079.tif 000007
【図７】
0005042079.tif 000008
【図８】
0005042079.tif 000009
【図９】
0005042079.tif 000010