(57)【要約】【課題】仮想マシンを複数起動させる際における、システム起動時間の短縮と、メモリ使用量の削減と、を可能とする。【解決手段】複合機１００が、メインＶＭ１０２と、ベンダＶＭ１０３と、を動作させる際、メインＶＭ１０２は、サービスを提供するサービス層１１５と、サービス層１１５を用いて動作する第１のアプリケーション１１２と、サービス層１１５にベンダＶＭ１０３から接続可能とするメインサービスインターフェイス１１６と、を備え、ベンダＶＭ１０３は、メインサービスインターフェイス１１６とプロセス間通信を行うことでサービス層１１５と接続可能とするベンダサービスインターフェイス１３６と、ベンダサービスインターフェイス１３６を介して接続されたサービス層１１５を用いて動作する第２のアプリケーション１３２と、を備えたこと、を特徴とする。【選択図】図１
2011197827.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセスと、第２のプロセスと、を動作させる情報処理装置において、
前記第１のプロセスは、アプリケーションが利用できるサービスを提供するサービス層と、前記サービス層を用いて動作する第１のアプリケーションと、前記サービス層に前記第２のプロセスから接続可能とする第１のインターフェイスと、を備え、
前記第２のプロセスは、前記第１のインターフェイスとプロセス間通信を行うことで前記サービス層と接続可能とする第２のインターフェイスと、前記第２のインターフェイスを介して接続された前記サービス層を用いて動作する第２のアプリケーションと、を備えたこと、
を特徴とする情報処理装置。
【請求項２】
前記第１のプロセスおよび前記第２のプロセスが備えるアプリケーションの起動順を示した起動順情報を記憶する記憶手段と、をさらに備え、
前記記憶手段に記憶された前記起動順情報に従って、前記プロセス上で動作させるアプリケーションを起動する起動手段と、
をさらに備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記記憶手段に記憶された前記起動順情報に対して、アプリケーションの起動順を設定する設定手段を、
さらに備えることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記起動部は、さらに、第２のプロセスに、前記第２のアプリケーションがインストールされている場合、前記第２のプロセスを起動させる制御を行い、前記第２のアプリケーションがインストールされていない場合、前記情報処理装置の起動の際に、前記第２のプロセスを起動させないこと、
を特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記起動部は、前記起動順情報において起動を優先させるアプリケーションが前記第１のアプリケーションの場合、前記第２のプロセスの起動を、前記第１のアプリケーションより遅れて起動させ、前記起動順情報において起動を優先させるアプリケーションが前記第２のアプリケーションの場合、前記第２のプロセスを前記第１のアプリケーションより早く起動させること、
を特徴とする請求項１乃至４のいずれか一つに記載の情報処理装置。
【請求項６】
前記第１のプロセスは、前記第２のプロセス間の通信状態を監視する第１の状態管理部を、さらに備え、前記第１の状態管理部は、前記第２のプロセス間の通信状態に異常が生じた場合に、前記第１のプロセスが備えている各構成に通知し、
前記第２のプロセスは、前記第１のプロセス間の通信状態を監視する第２の状態管理部を、さらに備え、前記第２の状態管理部は、前記第１のプロセス間の通信状態に異常が生じた場合に、前記第２のプロセスが備えている各構成に通知すること、
を特徴とする請求項１乃至５のいずれか一つに記載の情報処理装置。
【請求項７】
前記第１のインターフェイスが、前記サービス層にアクセスするための下層のＡＰＩを備えていることを特徴とする請求項１に記載の情報処理装置。
【請求項８】
第１のプロセスと、第２のプロセスと、を動作させる情報処理装置で実行される情報処理方法であって、
前記第１のプロセスが、アプリケーションが利用できるサービスを提供するサービスステップと、
前記第１のプロセスが、前記サービスステップを用いて第１のアプリケーションを動作させる第１の動作ステップと、
前記第１のプロセスが、前記サービスステップで提供されるサービスを、前記第１のプロセスと前記第２のプロセスとを接続するインターフェイスを介して前記第２のプロセスに提供する接続ステップと、
前記第２のプロセスは、前記インターフェイスを介して提供された前記サービスを用いて第２のアプリケーションを動作させる第２の動作ステップと、
を有することを特徴とする情報処理方法。
【請求項９】
第１のプロセスと、第２のプロセスと、を動作させるコンピュータにおいて、
前記第１のプロセスが、アプリケーションが利用できるサービスを提供するサービス層と、前記サービス層を用いて第１のプログラムを動作させる第１の動作手段と、前記サービス層に前記第２のプロセスを接続する第１の接続手段と、
前記第２のプロセスが、前記第１のインターフェイスとプロセス間通信を行うことで前記サービス層と接続する第２の接続手段と、前記第２の接続手段を介して接続された前記サービス層を用いて第２のプログラムを動作させる第２の動作手段と、
して機能させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
従来から、顧客ごとに最適なオフィス環境を提供するために、顧客ごとにアプリケーションの追加、又は削除可能なシステムが検討されている。この追加されるアプリケーションには、様々なメーカが開発するものも含まれる。当該追加により、システムの基本機能が損なわれるものであってはならない。
【０００３】
ＵＮＩＸ（登録商標）等のプロセスベースのＯＳでシステムを構築する場合、システムの堅牢性を向上させるために適切な粒度でプロセスを分割するのが一般的である。しかし、開発言語としてＪａｖａ（登録商標）を用いる場合、単一の仮想マシン（ＪＶＭ）上でアプリケーションを動作させることになる。このように、各アプリケーションを仮想マシン上で動作させることで、システムの堅牢性を向上させることができる。
【０００４】
さらに、近年、複数のJava（登録商標）仮想マシンを動作させる技術として、マルチＶＭ（ＭＶＭ：Multi  Virtual  Machine）が提案されている。このマルチＶＭの技術を用いて、アプリケーションを複数の仮想マシンに分けることで、あるアプリケーションの影響を他のアプリケーションに及ぼすのを抑止できる。
【０００５】
ところで、現在、複数のアプリケーションが搭載された装置の一種として画像処理装置が存在する。当該画像処理装置では、ＦＡＸアプリケーションや、コピーアプリケーションなど様々なアプリケーションが搭載されているだけでなく、ユーザの要求に応じて様々なアプリケーションが搭載可能となっている。
【０００６】
これにより、たとえば特許文献１に記載された技術では、パイプ＆フィルタアーキテクチャを活用して、各ベンダが様々なアプリケーションの開発が可能となっていた。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、動作させるアプリケーションの増加に伴い、各ＶＭでアプリケーションを動作させるためのコンポーネント（アプリケーション含む）が増加すると、システム起動時間が長くなるとともに、メモリ使用量も増加するという問題がある。
【０００８】
本発明は、上記に鑑みてなされたものであって、システム起動時間の短縮と、メモリ使用量を削減した情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明にかかる情報処理装置は、第１のプロセスと、第２のプロセスと、を動作させる情報処理装置において、前記第１のプロセスは、アプリケーションが利用できるサービスを提供するサービス層と、前記サービス層を用いて動作する第１のアプリケーションと、前記サービス層に前記第２のプロセスから接続可能とする第１のインターフェイスと、を備え、前記第２のプロセスは、前記第１のインターフェイスとプロセス間通信を行うことで前記サービス層と接続可能とする第２のインターフェイスと、前記第２のインターフェイスを介して接続された前記サービス層を用いて動作する第２のアプリケーションと、を備えたこと、を特徴とする。
【００１０】
また、本発明にかかる情報処理方法は、第１のプロセスと、第２のプロセスと、を動作させる情報処理装置で実行される情報処理方法であって、前記第１のプロセスが、アプリケーションが利用できるサービスを提供するサービスステップと、前記第１のプロセスが、前記サービスステップを用いて第１のアプリケーションを動作させる第１の動作ステップと、前記第１のプロセスが、前記サービスステップで提供されるサービスを、前記第１のプロセスと前記第２のプロセスとを接続するインターフェイスを介して前記第２のプロセスに提供する接続ステップと、前記第２のプロセスは、前記インターフェイスを介して提供された前記サービスを用いて第２のアプリケーションを動作させる第２の動作ステップと、を有することを特徴とする。
【００１１】
また、本発明にかかる情報処理プログラムは、第１のプロセスと、第２のプロセスと、を動作させるコンピュータにおいて、前記第１のプロセスが、アプリケーションが利用できるサービスを提供するサービス層と、前記サービス層を用いて第１のプログラムを動作させる第１の動作手段と、前記サービス層に前記第２のプロセスを接続する第１の接続手段と、前記第２のプロセスが、前記第１のインターフェイスとプロセス間通信を行うことで前記サービス層と接続する第２の接続手段と、前記第２の接続手段を介して接続された前記サービス層を用いて第２のプログラムを動作させる第２の動作手段と、して機能させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、メモリ使用量を削減するとともに、システム起動時間の短縮という効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、第１の実施の形態にかかる複合機の構成を示すブロック図である。
【図２】図２は、第１の実施の形態にかかる複合機における、第１のアプリケーションによる処理手順を示すシーケンス図である。
【図３】図３は、第１の実施の形態にかかる複合機における、第２のアプリケーションによる処理手順を示すシーケンス図である。
【図４】図４は、第１の実施の形態にかかる複合機における、起動時の前段手順を示すシーケンス図である。
【図５】図５は、第１の実施の形態にかかる複合機における、起動時の後段手順を示すシーケンス図である。
【図６】図６は、第１の実施の形態にかかる複合機における、第２のアプリケーションを優先的に起動させる場合の手順を示すシーケンス図である。
【図７】図７は、第１の実施の形態にかかる複合機における、アプリケーションのインストール、更新、及び削除の手順を示すシーケンス図である。
【図８】図８は、第１の実施の形態にかかる複合機における、ベンダＶＭ異常を検知した場合の通知経路の例を示す図である。
【図９】図９は、第１の実施の形態にかかる複合機における、異常の検出処理の手順を示すフローチャートである。
【図１０】図１０は、第１の実施の形態にかかる複合機における、各コンポーネントに異常を通知するための処理の手順を示すフローチャートである。
【図１１】図１１は、第１の実施の形態にかかる複合機のハードウェア構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、この発明にかかる情報処理装置、情報処理方法、及び情報処理プログラムの一実施の形態を詳細に説明する。
【００１５】
（第１の実施の形態）
図１は、第１の実施の形態にかかる複合機１００の構成を示すブロック図である。図１に示すように複合機１００は、ＯＳ１０１上に、メインＶＭ（Virtual  Machine）１０２と、ベンダＶＭ１０３と、を備える。
【００１６】
ＯＳ１０１は、複合機１００のハードウェアリソースと、ソフトウェアリソースと、を管理するプログラムとする。ＯＳ１０１は、プログラムの起動、情報の読み込み制御、保存制御等を行うものとする。
【００１７】
メインＶＭ１０２及びベンダＶＭ１０３は、ＯＳ１０１上で動作する仮想マシンとする。仮想マシンとは、複合機１００のＣＰＵやメモリ等のリソースを、物理的構成によらず柔軟に分割したり統合して、仮想化したコンピュータを実現させたプログラムとする。例えば、仮想マシンとして、Ｊａｖａ（登録商標）をプログラミング言語とするＪａｖａ（登録商標）仮想マシンがある。なお、このＪａｖａ（登録商標）仮想マシンは、ＯＳ１０１上で所定の実行ファイルを実行された場合に、クラスファイルを読み込み、クラス内のメソッドを呼び出すことで実現される。
【００１８】
さらに、本実施の形態にかかる複合機１００では、マルチＶＭ技術を適用することで、複数の仮想マシンを動作させることができる。本実施の形態では、メインＶＭ１０２と、ベンダＶＭ１０３と、を動作させている例について説明するが、動作させる仮想マシンを２つに制限するものではなく、動作させるアプリケーションの数などに応じて変更される。
【００１９】
ところで、本実施の形態にかかる複合機１００では、後述するメインシステム管理部１１１やベンダシステム管理部１３１を介して、ユーザ等がカスタマイズアプリをインストールできる。これらインストールされたアプリケーションは、複合機１００が管理できないため質の悪いアプリケーションも存在する。このようなアプリケーションは動作中に異常終了することがある。
【００２０】
そこで、本実施の形態にかかる複合機１００上では、当該仮想マシンごとに１プロセスで動作させる。これにより、アプリケーションが異常終了した場合に、当該アプリケーションが動作していた仮想マシンのみ異常終了することになり、他のアプリケーションが動作している仮想マシンに対して影響を与えない。次に、各仮想マシン上で動作するプログラムについて説明する。
【００２１】
メインＶＭ１０２は、メインシステム管理部１１１と、第１のアプリケーション１１２と、サービス層１１５と、メインサービスインターフェイス１１６と、を備えている。上述したとおり、メインＶＭ１０２には、一つのプロセスが割り当てられている。
【００２２】
メインシステム管理部１１１、及びサービス層１１５は、各アプリケーションを動作させるために必要なすべての構成とする。
【００２３】
サービス層１１５は、アプリケーションが利用できるサービスを提供する。本実施の形態にかかるサービス層１１５は、ＵＩ部１２１と、セキュリティ部１２２と、画像入出力部１２３と、通信部１２４と、データベース管理部１２５と、メモリ管理部１２６とを備え、各アプリケーションが複合機１００のハードウェアを利用するために、共通に使用する部分を集めたプログラム群とする。
【００２４】
メモリ管理部１２６は、複合機１００が備える図示しないＨＤＤやＳＳＤなどの二次記憶領域の使用を管理する。
【００２５】
本実施の形態にかかる複合機１００が備えるＨＤＤは、各仮想マシンや、各仮想マシン上で動作させるコンポーネント（アプリケーションを含む）の起動順を示した起動順リストを記憶する。そして、後述する起動部１１７は、メモリ管理部１２６を介して、起動順リストを読み出すことができる。
【００２６】
ＵＩ部１２１は、複合機１００が備える図示しない液晶パネルに対するＵＩ描画と、操作部に対するキー入力受付機能を提供する。
【００２７】
さらに、ＵＩ部１２１は、キー入力受付機能により、複合機１００に対する様々な設定を受け付ける。例えば、ＵＩ部１２１は、ユーザからのキー入力に従って、複合機１００が備えるＨＤＤに記憶された起動順リストに対して、各コンポーネント（アプリケーション含む）の起動順を設定する。このように、ＵＩ部１２１は、各コンポーネントを起動させる優先順位を設定する設定手段として機能する。そして、起動部１１７が、当該ＵＩ部１２１により設定された起動順リストに従って、各コンポーネントの起動制御を行う。これにより、例えば、ＵＩ部１２１が、よく利用するアプリケーションについて起動させる優先順位を高く設定することで、当該アプリケーションの起動を早くすることができる。
【００２８】
セキュリティ部１２２は、複合機１００に対する認証、アクセス制御、または暗号化等のセキュリティ機能を提供する。
【００２９】
画像入出力部１２３は、スキャナ／プロッタ／画像処理ＡＳＩＣ等を制御して、画像入出力機能を提供する。
【００３０】
通信部１２４は、ネットワーク、または電話回線を介して接続された様々な外部機器と通信するための通信機能を提供する。
【００３１】
データベース管理部１２５は、複合機１００が備えるデータベースの検索、データ追加／変更／削除機能を提供する。
【００３２】
メインサービスインターフェイス１１６は、コンポーネントＡＰＩ１２７を備え、他のプロセスと通信するためのインターフェイスとする。メインサービスインターフェイス１１６は、サービス層１１５に、外部プロセス（例えばベンダＶＭ１０３）から接続可能とする。このように、本実施の形態にかかる複合機１００では、メインＶＭ１０２以外の仮想マシンがサービス層１１５に接続するためのインターフェイスモジュールを備えている。これにより、メインＶＭ１０２と、他の仮想マシン（例えばベンダＶＭ１０３）とがプロセス間通信を行うことで、仮想マシン上で動作する各アプリケーションが、サービス層１１５のサービスを利用できる。
【００３３】
コンポーネントＡＰＩ１２７は、外部のプロセスからメインサービスインターフェイス１１６を介して入力された命令を受け付け、サービス層１１５に対してアクセスする。このように、メインＶＭ１０２が、コンポーネントＡＰＩ１２７を備えたことで、ベンダＶＭ１０３が、プロセス間通信を介してサービス層１１５の低レベルＡＰＩにアクセスする必要を抑止している。
【００３４】
メインシステム管理部１１１は、起動部１１７と、インストール部１１８と、状態管理部１１９と、を備え、メインＶＭ１０２上で動作する各コンポーネント（第１のアプリケーション１１２などを含む）を管理する。
【００３５】
起動部１１７は、メモリ管理部１２６を介し、ＨＤＤに記憶された起動順リストに従って、メインＶＭ１０２で動作させるべきアプリケーション（例えば、第１のアプリケーション１１２）を起動させる。また、起動部１１７は、アプリケーションのみならず、メインＶＭ１０２で動作するコンポーネントの起動(順序)／停止を制御する。
【００３６】
また、起動部１１７は、他の仮想マシン（例えばベンダＶＭ１０３）とプロセス間通信を行い、複合機１００上で動作する各仮想マシンにおけるコンポーネント起動の同期制御や、各仮想マシン間でのアプリケーションの起動順序制御を行う。
【００３７】
さらに、メインＶＭ１０２で動作する起動部１１７は、ベンダＶＭ１０３を起動させる制御を行う。その際、起動部１１７は、ベンダＶＭ１０３を起動のタイミングも制御する。
【００３８】
また、起動部１１７は、ベンダ用のプロセス、換言すればベンダＶＭ１０３に対して、アプリケーション（例えば、第２のアプリケーション１３２）がインストールされていない場合、複合機１００の起動の際に、ベンダＶＭ１０３を起動させない。本実施の形態では、このようにして、不要なプロセスが動作することを抑止する。
【００３９】
また、起動部１１７は、上述した起動順リストに従って、各コンポーネントの起動制御を行う。例えば、起動部１１７は、起動順リストで起動を優先させるアプリケーションが第１のアプリケーション１１２の場合、ベンダＶＭ１０３の起動を、第１のアプリケーション１１２より遅れて起動させる。他の例としては、起動部１１７は、起動順リストにおいて起動を優先させるアプリケーションが第２のアプリケーション１３２の場合、ベンダＶＭ１０３を第１のアプリケーション１１２より早く起動させる。これにより、優先的に起動させるべきアプリケーションを早く起動させることができる。
【００４０】
また、起動部１１７は、ベンダＶＭ１０３のベンダシステム管理部１３１に含まれている起動部１３７とプロセス間通信を行う。これにより、起動部１１７及び起動部１３７は、起動部１１７が参照する起動順リストに従って、各プロセスで動作するコンポーネントの起動タイミングを制御することができる。これにより、複数の仮想マシン間で、適切に同期を取りながら起動することが可能となる。したがって、複合機１００を起動する際に、効率よくシステムを起動することができる。
【００４１】
また、起動部１１７は、各コンポーネントや仮想マシンの起動の有無についても制御する。例えば、起動部１１７は、機能拡張するためのアプリケーション（第２のアプリケーション１３２）がインストールされていない場合、ベンダＶＭ１０３を起動しない。このように、アプリケーションのインストール状況に応じて、効率よくシステムを起動することができる。
【００４２】
インストール部１１８は、各仮想マシンに対するアプリケーションのインストール／更新／アンインストールを制御する。また、インストール部１１８は、仮想マシン間でプロセス間通信を行い、アプリケーションをインストールする仮想マシンを選択し、選択した仮想マシンについてアプリケーションのインストールを行う。また、インストール部１１８は、アプリケーションの更新、アンインストールも、インストール先の仮想マシンを特定した後に行う。
【００４３】
本実施の形態にかかる複合機１００では、複合機１００を提供しているメーカが制作したアプリケーションであるか否かに応じて、インストール先となる仮想マシンを選択する。例えば、複合機１００を提供しているメーカが提供したアプリケーションであれば、メインＶＭ１０２にインストールし、他のベンダが提供したアプリケーションであれば、インストール部１３８を介してベンダＶＭ１０３にインストールする。
【００４４】
その際、インストール部１１８又はインストール部１３８は、起動部１１７または起動部１３７が起動させるプログラムの格納領域に対して、アプリケーションの追加、置換又は削除を行う。
【００４５】
本実施の形態にかかるインストール部１１８は、インストール先となる仮想マシンを選択することで、プログラムの種別に応じて適切な仮想マシン（プロセス）にアプリケーションを配置できる。
【００４６】
状態管理部１１９は、複合機１００のシステム全体の異常状態を管理する。例えば、プロセス間の通信状態や、各仮想マシン（プロセス）の起動状態などが異常であるか否かを管理する。そして、状態管理部１１９は、ベンダＶＭ１０３から異常の通知を受けた場合、ベンダＶＭ１０３とプロセス間通信を行う各コンポーネントにベンダＶＭ１０３が異常であることを通知する。また、状態管理部１１９は、ベンダＶＭ１０３間の通信状態に異常が生じた場合に、メインＶＭ１０２上で動作している各コンポーネントに通知する。そして、異常が生じた旨の通知を受けたコンポーネントは、以降のプロセス間通信を抑制する。
【００４７】
本実施の形態にかかる複合機１００において、状態管理部１１９がこのような処理を行うことで、例えば、機能拡張用のアプリケーションで異常が発生した場合であっても、基本機能を提供するアプリケーションが、その影響を受けず動作を継続することができる。
【００４８】
また、状態管理部１１９は、各仮想マシンとプロセス間通信を行い、各仮想マシンの異常状態を仮想マシン（プロセス）間で共有する。また状態管理部１１９は、各仮想マシン（例えばベンダＶＭ１０３）との間で、生存確認を行うための信号を送受信する。
【００４９】
第１のアプリケーション１１２は、サービス層１１５を用いて動作するアプリケーションとする。第１のアプリケーション１１２は、複合機１００を提供しているメーカが作成したアプリケーションであり、品質保証がされているアプリケーションとする。
【００５０】
ベンダＶＭ１０３は、ベンダシステム管理部１３１と、第２のアプリケーション１３２と、ベンダサービスインターフェイス１３６と、を備えている。ベンダＶＭ１０３には、一つのプロセスが割り当てられている。
【００５１】
ベンダＶＭ１０３は、メインＶＭ１０２と連携して動作する最低限のシステム管理機能と、ＳＤＫアプリケーションを動作させるための必要最低限度のコンポーネントのみを備えている。そして、ベンダＶＭ１０３で動作するアプリケーションは、必要に応じて、プロセス間通信によりメインＶＭ１０２上のサービスを利用する。
【００５２】
ベンダシステム管理部１３１は、起動部１３７と、インストール部１３８と、状態管理部１３９と、を備え、ベンダＶＭ１０３上で動作する各コンポーネント（第２のアプリケーション１３２などを含む）を管理する。
【００５３】
そして、起動部１３７は、メインＶＭ１０２の起動部１１７に従って、ベンダＶＭ１０３で動作するコンポーネントについて起動(順序)／停止を制御する。さらに、起動部１３７は、ベンダＶＭ１０３上の各コンポーネントの起動有無や、起動タイミングを制御する。
【００５４】
インストール部１３８は、メインＶＭ１０２のインストール部１１８に従って、ベンダＶＭ１０３で動作するアプリケーションのインストール／更新／アンインストールを制御する。
【００５５】
状態管理部１３９は、メインＶＭ１０２の状態管理部１１９に従って、複合機１００のシステム全体の異常状態を管理する。例えば、状態管理部１３９は、メインＶＭ１０２から異常の通知を受けた場合、メインＶＭ１０２とプロセス間通信を行う各コンポーネントにメインＶＭ１０２が異常であることを通知する。また、状態管理部１３９は、メインＶＭ１０２間の通信状態に異常が生じた場合に、ベンダＶＭ１０３上で動作している各コンポーネントに通知する。そして、異常が生じた旨の通知を受けたコンポーネントは、以降のプロセス間通信を抑制する。
【００５６】
第２のアプリケーション１３２は、ベンダサービスインターフェイス１３６を介して接続されたサービス層１１５を用いて動作する。第２のアプリケーション１３２は、複合機１００を提供しているメーカと異なるベンダが作成したアプリケーションとする。このため、複合機１００上で動作させた際の品質保証がなされていない。しかしながら、第２のアプリケーション１３２で異常が生じた場合でも、メインＶＭ１０２とベンダＶＭ１０３とは別プロセスのため、メインＶＭ１０２上で動作しているシステムの基本機能(システム管理、サービス層)と、第１のアプリケーション１１２と、は、動作を継続できる。
【００５７】
ベンダサービスインターフェイス１３６は、コンポーネントＡＰＩ１４０を備え、メインサービスインターフェイス１１６とプロセス間通信を行うことで、ベンダＶＭ１０３上で動作する各アプリケーションに対してサービス層１１５のサービスを提供できる。
【００５８】
コンポーネントＡＰＩ１４０は、ＳＤＫで作成されたアプリケーションを動作させるために必要な最低限のコンポーネントのみを備えている。
【００５９】
つまり、本実施の形態にかかる複合機１００では、複合機１００の各ハードウェアデバイスが提供するサービスを利用するためサービス層１１５を、メインＶＭ１０２のみで起動させることとした。そして、ベンダＶＭ１０３では、ＳＤＫで作成されたアプリケーションを動作させるための上位コンポーネントのみ備えることにした。これにより、ロバストネス用件を満たし、仮想マシンごとにサービス層を起動させないため、メモリ使用量を少なくすること及びシステム起動時間の短縮を可能とした。さらに、本実施の形態にかかる複合機１００では、このような構成にしたことで、メモリ使用量の低減と、プロセス間通信量の低減と、の両立を図ることができる。
【００６０】
次に、本実施の形態にかかる複合機１００のメインＶＭ１０２において、第１のアプリケーション１１２の処理について説明する。図２は、本実施の形態にかかる複合機１００のメインＶＭ１０２における上述した処理の手順を示すシーケンス図である。
【００６１】
まず、第１のアプリケーション１１２が、ＵＩ部１２１に対して、設定画面の表示要求を行う（ステップＳ２０１）。そして、ＵＩ部１２１が、当該表示要求に基づいて、設定画面の表示を行う（ステップＳ２０２）。
【００６２】
そして、ＵＩ部１２１が、ユーザからの入力操作を受け付け、入力操作に基づく条件設定を第１のアプリケーション１１２に対して行う（ステップＳ２０３）。その後、ＵＩ部１２１が、第１のアプリケーション１１２に対して、処理の実行開始要求を行う（ステップＳ２０４）。
【００６３】
これに伴い、第１のアプリケーション１１２は、画像入出力部１２３に対して、ジョブの生成要求を行う（ステップＳ２０５）。さらに、第１のアプリケーション１１２は、画像入出力部１２３に対して、ステップＳ２０３で入力された条件に基づく設定を行う（ステップＳ２０６）。その後、第１のアプリケーション１１２は、画像入出力部１２３に対して、実行要求を行う（ステップＳ２０７）。
【００６４】
そして、画像入出力部１２３は、実行要求を受け付けたため、実行を開始する（ステップＳ２０８）。そして、画像入出力部１２３は、実行している際の状態通知を、第１のアプリケーション１１２に対して行う（ステップＳ２０９）。
【００６５】
これに伴い、第１のアプリケーション１１２は、受け付けた状態通知に基づく状態の表示要求を、ＵＩ部１２１に対して行う（ステップＳ２１０）。当該表示要求に伴い、ＵＩ部１２１は、画像入出力部１２３の処理状態を表示する（ステップＳ２１１）。
【００６６】
その後、画像入出力部１２３が、第１のアプリケーション１１２に対して、完了通知を行う（ステップＳ２１２）。これにより、第１のアプリケーション１１２による処理が全て終了する。
【００６７】
次に、本実施の形態にかかる複合機１００のベンダＶＭ１０３において、第２のアプリケーション１３２の処理について説明する。図３は、本実施の形態にかかる複合機１００のベンダＶＭ１０３における上述した処理の手順を示すシーケンス図である。
【００６８】
まず、第２のアプリケーション１３２が、ベンダサービスインターフェイス１３６に対して、表示する画像情報とともに表示要求を行う（ステップＳ３０１）。この表示要求を受け付けたベンダサービスインターフェイス１３６が、プロセス間通信により、メインサービスインターフェイス１１６に対して、入力された画像情報とともに表示要求を行う（ステップＳ３０２）。
【００６９】
そして、メインサービスインターフェイス１１６が、ＵＩ部１２１に対して、入力された画像情報とともに表示要求を行う（ステップＳ３０３）。そして、ＵＩ部１２１が、当該表示要求に基づいて、設定画面の表示を行う（ステップＳ３０４）。
【００７０】
そして、ＵＩ部１２１が、ユーザからの入力操作を受け付け、入力操作に基づく条件設定を、メインサービスインターフェイス１１６に対して行う（ステップＳ３０５）。その後、ＵＩ部１２１が、メインサービスインターフェイス１１６に対して、処理の実行開始要求を行う（ステップＳ３０６）。なお、ＵＩ部１２１からの命令は、メインサービスインターフェイス１１６のコンポーネントＡＰＩ１２７が受け付けるものとする。
【００７１】
これに伴い、メインサービスインターフェイス１１６が、設定された条件とともに、処理の実行開始要求を、ベンダサービスインターフェイス１３６に対して行う（ステップＳ３０７）。その後、ベンダサービスインターフェイス１３６が、設定された条件とともに、処理の実行開始要求を、第２のアプリケーション１３２に対して行う（ステップＳ３０８）。
【００７２】
そして、第２のアプリケーション１１２は、ベンダサービスインターフェイス１３６に対して、設定する条件とともに、処理の実行要求を行う（ステップＳ３０９）。その後、ベンダサービスインターフェイス１３６が、メインサービスインターフェイス１１６に対して、設定する条件とともに、処理の実行要求を行う（ステップＳ３１０）。
【００７３】
その後、処理の実行に必要な処理を、メインサービスインターフェイス１１６が行う。本処理手順においては、メインサービスインターフェイス１１６のコンポーネントＡＰＩ１２７が、画像入出力部１２３に対して、ジョブの生成要求を行う（ステップＳ３１１）。
【００７４】
さらに、メインサービスインターフェイス１１６のコンポーネントＡＰＩ１２７が、画像入出力部１２３に対して、入力された条件に基づく設定を行う（ステップＳ３１２）。その後、メインサービスインターフェイス１１６のコンポーネントＡＰＩ１２７は、画像入出力部１２３に対して、実行要求を行う（ステップＳ３１３）。このように、本実施の形態においては、サービス層１１５を利用するための低レベルＡＰＩは、コンポーネントＡＰＩ１２７が呼び出すこととする。
【００７５】
そして、画像入出力部１２３は、実行要求を受け付けたため、実行を開始する（ステップＳ３１４）。そして、画像入出力部１２３は、実行している際の状態通知を、メインサービスインターフェイス１１６に対して行う（ステップＳ３１５）。
【００７６】
そして、メインサービスインターフェイス１１６が、状態通知を受け付けた場合、メインサービスインターフェイス１１６内のコンポーネントＡＰＩ１２７が、ＵＩ部１２１に対して、受け付けた状態通知に基づく状態の表示要求を行う（ステップＳ３１６）。
【００７７】
これに伴い、ＵＩ部１２１は、画像入出力部１２３の処理状態を表示する（ステップＳ３１７）。
【００７８】
その後、画像入出力部１２３が、メインサービスインターフェイス１１６に対して完了通知を行う（ステップＳ３１８）。そして、メインサービスインターフェイス１１６が、ベンダサービスインターフェイス１３６に対して、完了通知を行う（ステップＳ３１９）。その後、ベンダサービスインターフェイス１３６が、第２のアプリケーション１３２に対して、完了通知を行う（ステップＳ３２０）。これにより、第２のアプリケーション１３２による処理が全て終了する。
【００７９】
上述した図３に示す処理手順においては、サービス層１１５に対するジョブ生成要求や、条件設定などは、メインサービスインターフェイス１１６のコンポーネントＡＰＩ１２７が行うこととした。このように、サービス層１１５と送受信するためのコンポーネントＡＰＩ１２７を、メインサービスインターフェイス１１６が備えたことで、ベンダＶＭ１０３側はサービス層１１５を利用するための低レベルＡＰＩを呼び出す必要がなくなるため、プロセス間通信を抑止できる。
【００８０】
次に、本実施の形態にかかる複合機１００の起動時の処理について説明する。図４及び図５は、本実施の形態にかかる複合機１００における上述した処理の手順を示すシーケンス図である。なお、図４及び図５に示す例では、起動順リストに従って、第１のアプリケーション１１２を優先的に起動させる場合とする。
【００８１】
図４に示すように、ＯＳ１０１が、メインＶＭ１０２を起動させる（ステップＳ４０１）。そして、起動したメインＶＭ１０２が備える各構成を起動させていく。
【００８２】
まず、メインＶＭ１０２は、状態管理部１１９を起動させる（ステップＳ４０２）。次に、メインＶＭ１０２は、起動部１１７を起動させる（ステップＳ４０３）。そして、これ以降、起動部１１７が、各構成の起動制御を行っていく。
【００８３】
最初に、起動部１１７は、メモリ管理部１２６が管理している起動順リストを読み出す（ステップＳ４０４）。その後、起動部１１７は、起動順リストに従って、起動制御を行う。
【００８４】
具体的には、起動部１１７は、インストール部１１８を起動させる（ステップＳ４０５）。その次に、サービス層１１５を起動させる（ステップＳ４０６）。なお、図示していないが、メインサービスインターフェイス１１６も起動させる。
【００８５】
次に、起動部１１７は、第１のアプリケーション１１２も起動させる（ステップＳ４０７）。その後、起動部１１７は、メインＶＭ１０２の起動制御が終了した後、ベンダＶＭ１０３の起動制御を行うことになる。ベンダＶＭ１０３の起動制御については、図５を用いて説明する。ただし、ベンダＶＭ１０３にアプリケーションがインストールされていない場合、ステップＳ４０７で処理を終了することになる。
【００８６】
次に、第２のアプリケーション１３２がベンダＶＭ１０３にインストールされているため、起動制御を継続する場合について、図５を用いて説明する。
【００８７】
まず、メインＶＭ１０２の起動部１１７が、ベンダＶＭ１０３を起動させる（ステップＳ５０１）。ベンダＶＭ１０３は、状態管理部１３９を起動させる（ステップＳ５０２）。次に、ベンダＶＭ１０３は、起動部１３７を起動させる（ステップＳ５０３）。そして、これ以降、ベンダＶＭ１０３の起動部１３７が、各構成の起動制御を行っていく。
【００８８】
具体的には、起動部１３７は、インストール部１３８を起動させる（ステップＳ５０４）。その次に、ベンダサービスインターフェイス１３６も起動させる（ステップＳ５０５）。さらに、起動部１３７は、第２のアプリケーション１３２も起動させる（ステップＳ５０６）。その後、ベンダＶＭ１０３の起動部１３７は、メインＶＭ１０２の起動部１１７に対して、起動完了した旨を通知する（ステップＳ５０７）。
【００８９】
図４及び図５に示す例では、起動順リストで、第１のアプリケーション１１２が優先的に起動させるアプリケーションとして設定されている場合について説明した。次に、第２のアプリケーション１３２を優先的に起動させる場合について、図６を用いて説明する。図６に示す例では、各アプリケーションを起動させるために必要な構成のみを記載して説明するが、当然に、インストール部１１８や、状態管理部１１９、及びサービス層１１５などの他の構成についても起動制御が行われているものとする。
【００９０】
まず、ＯＳ１０１が、メインＶＭ１０２を起動させる（ステップＳ６０１）。そして、メインＶＭ１０２は、状態管理部１１９を起動させた後、起動部１１７を起動させる（ステップＳ６０２）。
【００９１】
その後、起動部１１７は、メモリ管理部１２６が管理している起動順リストを読み出す（ステップＳ６０３）。次に、起動部１１７は、起動順リストに従って、起動制御を行う。図６に示す処理手順では、起動順リストにおいて、第２のアプリケーション１３２を優先的に起動させる旨設定されているものとする。
【００９２】
そこで、メインＶＭ１０２の起動部１１７が、ベンダＶＭ１０３を起動させる（ステップＳ６０４）。ベンダＶＭ１０３は、状態管理部１３９を起動させた後、起動部１３７を起動させる（ステップＳ６０５）。その後、ベンダＶＭ１０３の起動部１３７は、第２のアプリケーション１３２の起動に必要な各構成を起動した後、第２のアプリケーション１３２も起動させる（ステップＳ６０６）。
【００９３】
その後、ベンダＶＭ１０３の起動部１３７は、メインＶＭ１０２の起動部１１７に対して、優先起動完了した旨を通知する（ステップＳ６０７）。
【００９４】
そして、起動部１１７が、当該通知を受け付けた後、第１のアプリケーション１１２を起動させる（ステップＳ６０８）。
【００９５】
このように、複合機１００では、起動順リストに従って、起動させるアプリケーション等の順序を制御することができる。
【００９６】
次に、複合機１００におけるアプリケーションのインストール、更新、及び削除について説明する。図７は、第１の実施の形態にかかる複合機１００における上述した処理の手順を示すシーケンス図である。
【００９７】
まず、ＵＩ部１２１が、ユーザから入力された操作に従って、インストール部１１８に対して、インストール要求を行う（ステップＳ７０１）。次に、インストール部１１８は、アプリケーションのインストール先を、メインＶＭ１０２及びベンダＶＭ１０３のいずれから選択する（ステップＳ７０２）。選択基準としては、複合機１００を提供しているメーカが作成したアプリケーションであるか否かなどとする。
【００９８】
そして、インストール部１１８が、インストール先としてメインＶＭ１０２を選択した場合に、メインＶＭ１０２用の記憶領域に、アプリケーションをインストールする（ステップＳ７０３）。
【００９９】
一方、インストール部１１８が、インストール先としてベンダＶＭ１０３を選択した場合に、ベンダＶＭ１０３のインストール部１３８に対して、インストール要求を行う（ステップＳ７０４）。そして、インストール要求を受け付けたインストール部１３８が、ベンダＶＭ１０３用の記憶領域に、アプリケーションをインストールする（ステップＳ７０５）。
【０１００】
次に、アプリケーションの更新を行う場合について説明する。この場合、ＵＩ部１２１が、ユーザから入力された操作に従って、インストール部１１８に対して、更新要求を行う（ステップＳ７１１）。次に、インストール部１１８は、更新対象となるアプリケーションのインストール先を、メインＶＭ１０２及びベンダＶＭ１０３のどちらであるかを判定する（ステップＳ７１２）。
【０１０１】
そして、インストール部１１８が、インストール先がメインＶＭ１０２であると判定した場合に、メインＶＭ１０２用の記憶領域に記憶されているアプリケーションを更新する（ステップＳ７１３）。
【０１０２】
一方、インストール部１１８が、インストール先がベンダＶＭ１０３であると判定した場合に、ベンダＶＭ１０３のインストール部１３８に対して、更新要求を行う（ステップＳ７１４）。そして、更新要求を受け付けたインストール部１３８が、ベンダＶＭ１０３用の記憶領域に記憶されているアプリケーションを更新する（ステップＳ７１５）。
【０１０３】
次に、アプリケーションの削除を行う場合について説明する。この場合、ＵＩ部１２１が、ユーザから入力された操作に従って、インストール部１１８に対して、削除要求を行う（ステップＳ７２１）。次に、インストール部１１８は、削除対象となるアプリケーションのインストール先を、メインＶＭ１０２及びベンダＶＭ１０３のどちらであるかを判定する（ステップＳ７２２）。
【０１０４】
そして、インストール部１１８が、インストール先がメインＶＭ１０２であると判定した場合に、メインＶＭ１０２用の記憶領域に記憶されているアプリケーションを削除する（ステップＳ７２３）。
【０１０５】
一方、インストール部１１８が、インストール先がベンダＶＭ１０３であると判定した場合に、ベンダＶＭ１０３のインストール部１３８に対して、削除要求を行う（ステップＳ７２４）。そして、削除要求を受け付けたインストール部１３８が、ベンダＶＭ１０３用の記憶領域に記憶されているアプリケーションを削除する（ステップＳ７２５）。
【０１０６】
ところで、本実施の形態にかかる複合機１００では、上述したように仮想マシンを複数実行させることとしたのは、品質保証していないベンダのアプリケーションをインストールした場合に、当該アプリケーションの不具合による、システム全体の動作不能や、基本機能を提供するアプリケーションの動作不能を、抑止するためである。
【０１０７】
このように、品質保証していないベンダのアプリケーションに不具合があった場合、以下に示すような、様々な障害として発現する可能性がある。
【０１０８】
例えば、ベンダのアプリケーションによる想定外のＡＰＩ使用が原因で、呼び出し先のコンポーネント（例えば、コンポーネントＡＰＩ１４０や、サービス層１１５）で、障害が発生したように見えることもある。逆に、呼び出し先のコンポーネントの設計が不十分なために障害が発生するケースもある。
【０１０９】
また、ベンダのアプリケーションが、メモリを大量に消費したような場合、ベンダＶＭ１０３全体がメモリ不足により動作不能になる。
【０１１０】
このような全ての状態を総称して、“ベンダＶＭ異常”と呼ぶ。つまり、ベンダが提供しているコンポーネントに原因があるか否かにかかわらず、結果としてどのような不具合が発生したとしても、ベンダが作成したアプリケーションが正常に動作できなくなった状態を全て“ベンダＶＭ異常”として、システム上同じ扱いをする。この“ベンダＶＭ異常”が発生した場合に、障害解析のために、原因によって詳細な分類を定義したり、ログを残してもよい。
【０１１１】
“ベンダＶＭ異常”が生じた場合、例えば、状態管理部１３９から異常が生じたことの通知を受けた、ベンダＶＭ１０３の起動部１３７は、ベンダＶＭ１０３上で動作しているアプリケーションを全て停止する制御を行う。そして、状態管理部１３９から状態管理部１１９に対して、行われた制御を表す情報のプロセス間通信が行われる。そして、ＵＩ部１２１は、ベンダＶＭ１０３で異常が発生している旨を表示する。
【０１１２】
このように、ベンダＶＭ１０３で異常が検知された場合、ベンダＶＭ１０３全体が不安定になっている可能性があるため、ベンダＶＭ１０３上で動作している全てのアプリケーションも停止することでシステムを安定化させ、メインＶＭ１０２上で動作している基本機能の利用を継続できる。
【０１１３】
他の例としては、状態管理部１３９から異常が生じたことの通知を受けた、インストール部１３８は、以降ベンダＶＭ１０３で動作するアプリケーションのインストール要求を受け付けなくする。ただし、アンインストール及び更新については、受け付けてもよい。
【０１１４】
これにより、複合機１００では、ベンダＶＭ１０３の異常が検知されている状態で、新たにアプリケーションをインストールすることに基づく、システムの不安定を抑止できる。一方、複合機１００では、インストール済みのアプリケーションのアンインストール又は更新を受け付けることで、システムを安定化させることができる。
【０１１５】
次に、本実施の形態にかかる複合機１００において、ベンダＶＭ異常の検知した場合の処理手順について説明する。ベンダＶＭ異常については、どの構成が検知し、どのようにメインＶＭ１０２の状態管理部１１９に通知するかが重要となる。そこで、ベンダＶＭ異常における、検知と通知の手法としては、いくつかの手法が存在する。
【０１１６】
図８は、第１の実施の形態にかかる複合機１００における、ベンダＶＭ異常を検知した場合の通知経路の例を示した図である。図８に示すように異常が検出された場合には、最終的にメインＶＭ１０２の状態管理部１１９に通知される。
【０１１７】
例えば、ベンダＶＭ１０３上でコンポーネントの異常を検知した場合、経路８０４、８０５、及び８０６に示されるように、ベンダＶＭ１０３の各構成が、ベンダＶＭ１０３上の状態管理部１３９に、状態の通知を行う。その後、状態管理部１３９から、メインＶＭ１０２の状態管理部１１９に状態の通知を行う。
【０１１８】
ベンダＶＭ１０３上で動作するコンポーネントのバグによる不具合の多くがこのケースとなる。一般に、想定外の異常を検知した時には実行時例外を通知するように実装している。この実行時例外は、発生したスレッドの関数呼び出しを逆にたどって、スタックフレームのトップまで通知される。そして、当該実行時例外の通知を、状態管理部１３９が受け付ける。そして、状態管理部１３９は、当該例外の通知を受け付けた時に、プロセス間通信でメインＶＭ１０２に通知する。
【０１１９】
また、異常検知時に実行時例外を受け付けるのではなく、状態管理部１３９のＡＰＩを直接呼び出してもよい。各ベンダが作成したアプリケーションを複数搭載する場合に、あるアプリで発生した例外によって他のアプリまで動作できなくなることを防ぐため、状態管理部１３９が実行時例外を把握した後、その例外が発生したアプリのみを停止するように制御してもよい。その場合は、ベンダＶＭ異常とはみなさず、当該アプリを除いた状態で動作を継続する。
【０１２０】
また、仮想マシン間のプロセス間通信で深刻な異常８０７、８０８が生じた場合には、メインシステム管理部１１１、ベンダシステム管理部１３１、メインサービスインターフェイス１１６又はベンダサービスインターフェイス１３６が、通信異常を検知する。
【０１２１】
また、メインＶＭ１０２上の各コンポーネントが、プロセス間通信異常を検知した場合、経路８０１、８０２、及び８０３に示すように、直接、状態管理部１１９に対してベンダＶＭ異常を通知する。一方、ベンダＶＭ１０３上のコンポーネントが、プロセス間通信異常を検知した場合、状態管理部１３９を介して、メインＶＭ１０２の状態管理部１１９に通知する。
【０１２２】
これらのプロセス間通信は、関連する機能が動作する場面でしか実行されない。このため、状態管理部１１９、１３９が、両プロセス間で定期的に生存確認を送受信する仕組みを備えてもよい。例えば、メインＶＭ１０２が、生存確認を送信する場合、ベンダＶＭ１０３が当該生存確認を受信できなかった場合に、プロセス間通信の深刻な異常として検知する。一方、ベンダＶＭ１０３から生存確認を送信する場合、深刻な異常が発生するとメインＶＭ１０２は生存確認の通信を受け取れなくなるので、一定期間生存確認を受信しないときにベンダＶＭ異常と判断する。
【０１２３】
次に、本実施の形態にかかる複合機１００における、異常の検出処理について説明する。図９は、本実施の形態にかかる複合機１００における上述した処理の手順を示すフローチャートである。
【０１２４】
まず、図９の（Ａ）に示すように、第２のアプリケーション１３２で例外が発生したものとする（ステップＳ９０１）。この場合、第２のアプリケーション１３２は、ベンダＶＭ１０３の状態管理部１３９に例外が発生したことを通知する（ステップＳ９０２）。
【０１２５】
その後、状態管理部１３９は、メインＶＭ１０２の状態管理部１１９に対して、異常が生じたことを通知する（ステップＳ９０３）。これにより、メインＶＭ１０２の状態管理部１１９は、ベンダＶＭ異常が生じたことを認識できる。
【０１２６】
次に、図９の（Ｂ）に示すように、第１のアプリケーション１１２が、メインサービスインターフェイス１１６及びベンダサービスインターフェイス１３６を介して、プロセス間通信を行っている際に、異常が生じたものとする（ステップＳ９１１）。上述したように、このような状況で、第１のアプリケーション１１２が、異常が生じたことを検知できる（ステップＳ９１２）。そして、第１のアプリケーション１１２が、異常を検出したことを、状態管理部１１９に通知する（ステップＳ９１３）。
【０１２７】
次に、図９の（Ｃ）に示すように、第２のアプリケーション１３２が、ベンダサービスインターフェイス１３６及びメインサービスインターフェイス１１６を介して、第１のアプリケーション１１２と、プロセス間通信を行っている際に、異常が生じたものとする（ステップＳ９２１）。そして、第２のアプリケーション１３２が、異常が生じたことを検知する（ステップＳ９２２）。その後、第２のアプリケーション１３２が、異常を検出したことを、ベンダＶＭ１０３の状態管理部１３９に通知する（ステップＳ９２３）。そして、状態管理部１３９は、メインＶＭ１０２の状態管理部１１９に異常を検出したことを通知する（ステップＳ９２４）。
【０１２８】
次に、図９の（Ｄ）に示すように、メインＶＭ１０２の状態管理部１１９が、ベンダＶＭ１０３の状態管理部１３９に対して、プロセス間通信を用いて、生存確認を定期的に送信している（ステップＳ９３１〜Ｓ９３３）。そして、生存確認をベンダＶＭ１０３の状態管理部１３９が受信できなかった場合（ステップＳ９３３）に、メインＶＭ１０２の状態管理部１１９が、異常が生じたことを検出する（ステップＳ９３４）。
【０１２９】
次に、図９の（Ｅ）に示すように、ベンダＶＭ１０３の状態管理部１３９が、メインＶＭ１０２の状態管理部１１９に対して、プロセス間通信を用いて、生存確認を定期的に送信している（ステップＳ９５１〜Ｓ９５２）。そして、メインＶＭ１０２の状態管理部１１９が、一定時間生存確認を受信しなかった場合に、状態管理部１１９が、異常が生じたことを検出する（ステップＳ９５３）。
【０１３０】
上述した処理手順により、複合機１００のメインＶＭ１０２の状態管理部１１９は、メインＶＭ１０２及びベンダＶＭ１０３のどちらで異常が生じたかにかかわらず、異常を検知できる。
【０１３１】
複合機１００においては、メインＶＭ１０２の状態管理部１１９が、ベンダＶＭ異常の通知を受け付けると、状態管理部１１９は、ベンダＶＭ１０３とプロセス間通信を行うコンポーネント（アプリケーション含む）、及びベンダＶＭ１０３の異常時に処理を変更する必要があるコンポーネントに対して、ベンダＶＭ異常が生じたことを通知する。
【０１３２】
この状態管理部１１９が通知するためには、コンポーネントが、初期化時に、状態管理部１１９に対して登録しておく必要がある。
【０１３３】
このあらかじめ登録を行うコンポーネントの例について説明する。まず、プロセス間通信を行うコンポーネントとしては、メインシステム管理部１１１が備えている各コンポーネントや、メインサービスインターフェイス１１６が存在する。また、ベンダＶＭ異常時に処理を変更する必要があるコンポーネントとしては、ＵＩ部１２１が存在する。
【０１３４】
これにより、例えば、メインサービスインターフェイス１１６は、このような通知を受けると、以降はプロセス間通信を抑制する。
【０１３５】
次に、本実施の形態にかかる複合機１００において、各コンポーネントに異常を通知するための処理について説明する。図１０は、本実施の形態にかかる複合機１００における上述した処理の手順を示すフローチャートである。
【０１３６】
まず、複合機１００が起動の際に、ＯＳ１０１が、メインＶＭ１０２を起動させる（ステップＳ１００１）。次に、メインＶＭ１０２が、状態管理部１１９を起動させる（ステップＳ１００２）。そして、メインＶＭ１０２が、起動部１１７を起動させる（ステップＳ１００３）。
【０１３７】
その後、起動部１１７が、ベンダＶＭ異常時に通知するよう、状態管理部１１９に登録する（ステップＳ１００４）。
【０１３８】
そして、起動部１１７が、インストール部１１８を起動させ（ステップＳ１００５）、ＵＩ部１２１を起動させ（ステップＳ１００６）、メインサービスインターフェイス１１６を起動させる（ステップＳ１００７）。
【０１３９】
そして、起動したコンポーネントのうち、ベンダＶＭ異常時に通知してほしいコンポーネントについては、状態管理部１１９に登録する。
【０１４０】
具体的には、インストール部１１８は、状態管理部１１９に、通知するよう登録する（ステップＳ１００８）。また、ＵＩ部１２１も、状態管理部１１９に、通知するよう登録する（ステップＳ１００９）。さらに、メインサービスインターフェイス１１６も、通知するよう状態管理部１１９に登録する（ステップＳ１０１０）。
【０１４１】
そして、状態管理部１１９が、異常を検知したものとする（ステップＳ１０１１）。この場合、状態管理部１１９は、登録された各コンポーネントについて異常を通知する。
【０１４２】
具体的には、状態管理部１１９は、起動部１１７に異常を通知し（ステップＳ１０１２）、インストール部１１８に異常を通知し（ステップＳ１０１３）、ＵＩ部１２１に異常を通知し（ステップＳ１０１４）、メインサービスインターフェイス１１６に異常を通知する（ステップＳ１０１５）。
【０１４３】
このように、メインＶＭ１０２の各コンポーネントについて異常の通知が行われる。さらに、メインＶＭ１０２の起動部１１７が、異常の通知を受け付けると、プロセス間通信によりベンダＶＭ１０３の起動部１３７に、異常を通知する。これにより、ベンダＶＭ１０３の起動部１３７は、ベンダＶＭ１０３上で動作するアプリケーションを停止する制御を行う。但し、ベンダＶＭ１０３全体に異常が発生している場合、このプロセス間通信は失敗するが、既にベンダＶＭ異常状態になっているため、このプロセス間通信の失敗をトリガとして再度状態通知に異常通知することはしない。
【０１４４】
また、ＵＩ部１２１が、ベンダＶＭ異常通知を受け付けると、アプリケーション一覧を表示する画面で、異常状態となったアプリケーションのアイコンをグレーダウンする。又は、異常状態となったアプリケーションが、ハードキーに割り当てられていた場合、ＵＩ部１２１が、当該ハードキー押下を受け付けた際、ベンダＶＭ異常状態である旨をダイアログで表示する。この常時の例としては、『拡張機能に異常が発生しているため、拡張アプリケーションを使用することができません。』というメッセージなどが考えられる。
【０１４５】
メインＶＭ１０２のインストール部１１８が、ベンダＶＭ異常通知を受け付けると、当該ベンダＶＭ異常に関する情報を保持し、以降ユーザから、ベンダアプリのインストール要求があった場合、ベンダＶＭ異常により、インストールが不可能であることをＵＩ部１２１に通知する。そして、ＵＩ部１２１は、例えば『拡張機能に異常が発生しているため、拡張アプリケーションをインストールすることができません』というメッセージを表示する。
【０１４６】
本実施の形態にかかる複合機１００では、複合機１００を提供したメーカが作成したアプリケーションであるか否かでインストール先の仮想マシンを選択した。しかしながら、このような選択手法に制限するものではなく、他の基準に基づいてアプリケーションのインストール先の仮想マシンを選択してもよい。
【０１４７】
本実施の形態にかかる複合機１００では、ベンダにより提供された機能拡張を行うためのアプリケーションを、基本機能と別プロセスで動作させることにした。これにより、機能拡張を行うためのアプリケーションに異常が発生した場合でも、複合機１００では、その影響を受けず動作を継続することができる。
【０１４８】
ところで、従来においては、仮想マシンごとにサービス層に相当するコンポーネントも動作させる技術の提案もなされていた。この場合、各仮想マシンで起動するコンポーネントが多かったため、システム起動時間が長くなるとともに、メモリ使用量も大きくなるという問題が生じていた。
【０１４９】
さらに、アプリケーションからみれば低位のサービス層のコンポーネントでは、プロセス通信の頻度とデータ量とが大きくなり、結果としてプロセス間通信が性能に大きな影響を与えるという問題が生じていた。
【０１５０】
これに対し、本実施の形態にかかる複合機１００では、仮想マシンごとに、サービス層１１５を利用するためのサービスインターフェイス部を備えることとした。これにより、システムの機能の大部分を実現するサービス層を、各プロセスで動作させる必要がなくなるため、メモリの消費量を抑えることが可能となった。
【０１５１】
さらに、本実施の形態にかかる複合機１００では、仮想マシンごとに、ＳＤＫで作成されたアプリケーションが利用する、上位ＡＰＩ（例えば、コンポーネントＡＰＩ１４０）を提供することとした。このように、仮想マシンごとにアプリケーション開発の視点で設計した上位のＡＰＩを、各仮想マシン（プロセス）で動作させることで、プロセス間通信を介してサービス層の低レベルＡＰＩにアクセスする必要がなくなるため、プロセス間通信の頻度とデータ量を減らすことができる。つまりは、プロセス間通信のオーバヘッドによる性能劣化を抑えることができる。
【０１５２】
図１１は、第１の実施の形態にかかる複合機１００のハードウェア構成を示すブロック図である。本図に示すように、この複合機１００は、コントローラ１０とエンジン部（Ｅｎｇｉｎｅ）６０とをＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｆａｃｅ）バスで接続した構成となる。コントローラ１０は、複合機１００全体の制御と描画、通信、図示しない操作部からの入力を制御するコントローラである。エンジン部６０は、ＰＣＩバスに接続可能なプリンタエンジンなどであり、たとえば白黒プロッタ、１ドラムカラープロッタ、４ドラムカラープロッタ、スキャナまたはファックスユニットなどである。なお、このエンジン部６０には、プロッタなどのいわゆるエンジン部分に加えて、誤差拡散やガンマ変換などの画像処理部分が含まれる。
【０１５３】
コントローラ１０は、ＣＰＵ１１と、ノースブリッジ（ＮＢ）１３と、システムメモリ（ＭＥＭ−Ｐ）１２と、サウスブリッジ（ＳＢ）１４と、ローカルメモリ（ＭＥＭ−Ｃ）１７と、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１６と、ハードディスクドライブ（ＨＤＤ）１８とを有し、ノースブリッジ（ＮＢ）１３とＡＳＩＣ１６との間をＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）バス１５で接続した構成となる。また、ＭＥＭ−Ｐ１２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２ａと、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ)１２ｂと、をさらに有する。
【０１５４】
ＣＰＵ１１は、複合機１００の全体制御をおこなうものであり、ＮＢ１３、ＭＥＭ−Ｐ１２およびＳＢ１４からなるチップセットを有し、このチップセットを介して他の機器と接続される。
【０１５５】
ＮＢ１３は、ＣＰＵ１１とＭＥＭ−Ｐ１２、ＳＢ１４、ＡＧＰ１５とを接続するためのブリッジであり、ＭＥＭ−Ｐ１２に対する読み書きなどを制御するメモリコントローラと、ＰＣＩマスタおよびＡＧＰターゲットとを有する。
【０１５６】
ＭＥＭ−Ｐ１２は、プログラムやデータの格納用メモリ、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いるシステムメモリであり、ＲＯＭ１２ａとＲＡＭ１２ｂとからなる。ＲＯＭ１２ａは、プログラムやデータの格納用メモリとして用いる読み出し専用のメモリであり、ＲＡＭ１２ｂは、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いる書き込みおよび読み出し可能なメモリである。
【０１５７】
ＳＢ１４は、ＮＢ１３とＰＣＩデバイス、周辺デバイスとを接続するためのブリッジである。このＳＢ１４は、ＰＣＩバスを介してＮＢ１３と接続されており、このＰＣＩバスには、ネットワークインターフェイス（Ｉ／Ｆ）部なども接続される。
【０１５８】
ＡＳＩＣ１６は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）であり、ＡＧＰ１５、ＰＣＩバス、ＨＤＤ１８およびＭＥＭ−Ｃ１７をそれぞれ接続するブリッジの役割を有する。このＡＳＩＣ１６は、ＰＣＩターゲットおよびＡＧＰマスタと、ＡＳＩＣ１６の中核をなすアービタ（ＡＲＢ）と、ＭＥＭ−Ｃ１７を制御するメモリコントローラと、ハードウェアロジックなどにより画像データの回転などをおこなう複数のＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）と、エンジン部６０との間でＰＣＩバスを介したデータ転送をおこなうＰＣＩユニットとからなる。このＡＳＩＣ１６には、ＰＣＩバスを介してＦＣＵ（Ｆａｃｓｉｍｉｌｅ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）３０、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）４０、ＩＥＥＥ１３９４（ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ  １３９４）インターフェイス５０が接続される。操作表示部２０はＡＳＩＣ１６に直接接続されている。
【０１５９】
ＭＥＭ−Ｃ１７は、コピー用画像バッファ、符号バッファとして用いるローカルメモリであり、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１８は、画像データの蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積を行うためのストレージである。
【０１６０】
ＡＧＰ１５は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレーターカード用のバスインターフェイスであり、ＭＥＭ−Ｐ１２に高スループットで直接アクセスすることにより、グラフィックスアクセラレーターカードを高速にするものである。
【０１６１】
なお、本実施の形態の複合機１００で実行される情報処理プログラムは、ＲＯＭ等に予め組み込まれて提供される。
【０１６２】
本実施の形態の複合機１００で実行される情報処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【０１６３】
さらに、本実施の形態の複合機１００で実行される情報処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施の形態の複合機１００で実行される情報処理プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０１６４】
本実施の形態の複合機１００で実行される情報処理プログラムは、上述した各部（ＯＳ１０１、メインＶＭ１０２及びベンダＶＭ１０３を起動させるプログラム）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記ＲＯＭから情報処理プログラムを読み出して実行することにより各部が主記憶装置上にロードされ、ＯＳ１０１、メインＶＭ１０２、ベンダＶＭ１０３が主記憶装置上に生成されるようになっている。
【０１６５】
なお、上記実施の形態では、本発明の情報処理装置を、コピー機能、プリンタ機能、スキャナ機能およびファクシミリ機能のうち少なくとも２つの機能を有する複合機に適用した例を挙げて説明するが、複写機、プリンタ、スキャナ装置、ファクシミリ装置等の画像形成装置、オフィス機器又はＰＣ（Personal  Computer）であればいずれにも適用することができる。
【符号の説明】
【０１６６】
１００  複合機
１０１  ＯＳ
１０２  メインＶＭ
１０３  ベンダＶＭ
１１１  メインシステム管理部
１１２  第１のアプリケーション
１１５  サービス層
１１６  メインサービスインターフェイス
１１７  起動部
１１８  インストール部
１１９  状態管理部
１２１  ＵＩ部
１２２  セキュリティ部
１２３  画像入出力部
１２４  通信部
１２５  データベース管理部
１２６  メモリ管理部
１２７  コンポーネントＡＰＩ
１３１  ベンダシステム管理部
１３２  第２のアプリケーション
１３６  ベンダサービスインターフェイス
１３７  起動部
１３８  インストール部
１３９  状態管理部
１４０  コンポーネントＡＰＩ
【先行技術文献】
【特許文献】
【０１６７】
【特許文献１】特開２００９−１３４６９５号公報
【図１】
2011197827.tif 000003
【図２】
2011197827.tif 000004
【図３】
2011197827.tif 000005
【図４】
2011197827.tif 000006
【図５】
2011197827.tif 000007
【図６】
2011197827.tif 000008
【図７】
2011197827.tif 000009
【図８】
2011197827.tif 000010
【図９】
2011197827.tif 000011
【図１０】
2011197827.tif 000012
【図１１】
2011197827.tif 000013