(57)【特許請求の範囲】
【請求項１】
その複数で主処理を実行し、それぞれが副処理を実行する複数の実行手段と、
該実行手段の複数によって実行される主処理毎に、前記実行手段のそれぞれに対する動作条件を示す設定情報と、前記実行手段のそれぞれが実行する副処理間の関係を示す連携情報とを含む動作情報が予め記憶してある記憶部と、
前記記憶部に記憶してある動作情報から、前記実行手段のそれぞれに対する動作条件を示す設定情報を取得する設定情報取得手段と、
該設定情報取得手段が取得した設定情報に基づいて、前記実行手段のそれぞれの動作状態を設定する設定手段と、
前記記憶部に記憶してある動作情報から、前記実行手段のそれぞれが実行する副処理間の関係を示す連携情報を取得する連携情報取得手段と、
該連携情報取得手段が取得した連携情報に従って前記実行手段のそれぞれを実行させることによって前記主処理を実行する制御手段と
を備える情報処理装置。
【請求項２】
前記制御手段は、
前記連携情報が示す副処理間の関係に基づく順序で、前記実行手段のそれぞれを起動させる手段と、
前記実行手段のそれぞれが起動した後、前記実行手段のそれぞれが実行する副処理間の通信路を設定する手段と
を備える請求項１に記載の情報処理装置。
【請求項３】
前記実行手段のそれぞれにおける動作状態を監視する監視手段を備え、
前記制御手段は、前記監視手段が監視する各実行手段の動作状態と、前記連携情報取得手段が取得した連携情報とに基づいて、前記実行手段のそれぞれの動作を制御する請求項１又は２に記載の情報処理装置。
【請求項４】
前記連携情報は、前記実行手段のそれぞれが実行する副処理の優先度を含んでおり、
前記制御手段は、前記連携情報に含まれる優先度に従って、前記実行手段のそれぞれを実行させる請求項１乃至３のいずれかひとつに記載の情報処理装置。
【請求項５】
前記主処理を実行するための実行手段のいずれかの動作が終了した場合、前記連携情報に含まれる優先度に基づいて、動作を終了した実行手段が実行する副処理よりも優先度の高い副処理を行なう実行手段が動作中であるか否かを判断する手段を備え、
前記制御手段は、動作を終了した実行手段が実行する副処理よりも優先度の高い副処理を行なう実行手段が動作中であると判断された場合、動作を終了した実行手段を起動させる請求項４に記載の情報処理装置。
【請求項６】
前記設定情報は、前記実行手段のそれぞれに対応するハードウェア資源及びソフトウェア資源の割り当てを示す情報である請求項１乃至５のいずれかひとつに記載の情報処理装置。
【請求項７】
その複数で主処理を実行し、それぞれが副処理を実行する複数の実行手段を備える情報処理装置による情報処理方法であって、
前記情報処理装置は、前記実行手段の複数によって実行される主処理毎に、前記実行手段のそれぞれに対する動作条件を示す設定情報と、前記実行手段のそれぞれが実行する副処理間の関係を示す連携情報とを含む動作情報が予め記憶してある記憶部を有しており、
前記記憶部に記憶してある動作情報から、前記実行手段のそれぞれに対する動作条件を示す設定情報を取得する設定情報取得ステップと、
該設定情報取得ステップで取得した設定情報に基づいて、前記実行手段のそれぞれの動作状態を設定する設定ステップと、
前記記憶部に記憶してある動作情報から、前記実行手段のそれぞれが実行する副処理間の関係を示す連携情報を取得する連携情報取得ステップと、
該連携情報取得ステップで取得した連携情報に従って前記実行手段のそれぞれを実行させることによって前記主処理を実行するステップと
を含む情報処理方法。
【請求項８】
コンピュータに、その複数で主処理を実行し、それぞれが副処理を実行する複数の実行手段を動作させるためのコンピュータプログラムであって、
前記コンピュータは、前記実行手段の複数によって実行される主処理毎に、前記実行手段のそれぞれに対する動作条件を示す設定情報と、前記実行手段のそれぞれが実行する副処理間の関係を示す連携情報とを含む動作情報が予め記憶してある記憶部を有しており、
前記コンピュータに、
前記記憶部に記憶してある動作情報から、前記実行手段のそれぞれに対する動作条件を示す設定情報を取得する設定情報取得ステップと、
該設定情報取得ステップで取得した設定情報に基づいて、前記実行手段のそれぞれの動作状態を設定する設定ステップと、
前記記憶部に記憶してある動作情報から、前記実行手段のそれぞれが実行する副処理間の関係を示す連携情報を取得する連携情報取得ステップと、
該連携情報取得ステップで取得した連携情報に従って前記実行手段のそれぞれを実行させることによって前記主処理を実行するステップと
を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化技術が適用され、仮想的に複数の装置としての動作を提供することができる情報処理装置、情報処理方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
アプリケーショプログラム（以下、アプリケーションともいう）は通常、オペレーティングシステム（以下、ＯＳ）毎に提供される。また、従来の情報処理装置においては、１つの装置上で１つのＯＳのみを動作させる使用形態が多く、このような使用形態では、ユーザは、使用するアプリケーション毎にＯＳ（情報処理装置）を使い分ける必要があった。
【０００３】
また、複数のアプリケーションを相互に連携させて１つのサービスを提供するシステムがある。このようなシステムは、一のアプリケーションが他のアプリケーションの実行結果を用いて動作することによってシステム全体としての動作を行なう構成である。このようなシステムにおいて、全てのアプリケーションが同一のＯＳで実行可能である場合、１つの情報処理装置での提供が可能である。しかし、各アプリケーションが異なるＯＳ用のアプリケーションである場合、各アプリケーションに対応した複数の情報処理装置を用いる必要がある。
【０００４】
そこで、１つの情報処理装置を論理的に分割し、仮想的に複数の独立した情報処理装置（仮想マシン）として動作するように構成できる仮想化技術が普及している（例えば、特許文献１参照）。このように、１つの情報処理装置によって複数の仮想マシンの動作を実現することにより、異なるＯＳで実行される複数のアプリケーションを連携させて実現されるシステムを１つの情報処理装置によって実現することができる。また、このような構成とすることにより、複数の情報処理装置を実際に用いる場合と比較して運用コストを低減させることができる。なお、このような仮想化技術は、マイクロプロセッサの技術向上に伴い、スーパーコンピュータ及びサーバコンピュータのみならずパーソナルコンピュータ（以下、ＰＣ）にも適用されつつある。
【０００５】
仮想化技術を用いた情報処理装置では、異なるＯＳがそれぞれのアプリケーションを実行させるので、それぞれのアプリケーションの動作環境が、他のアプリケーションの動作環境に影響を与えない。また、１つのＯＳが不正終了した場合であっても、他のＯＳが実行中のアプリケーションには影響を与えないので、システム品質を向上させることができる。
【特許文献１】特開２００５−１５７７８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したように、仮想化技術を用いた情報処理装置では、仮想的に複数の独立した仮想マシンのそれぞれに適切なアプリケーションを実行させることができるので、複数のアプリケーションを連携させて実現するシステムであっても、１つの情報処理装置によって動作させることができる。
【０００７】
しかし、このようなシステムを動作させる場合、各仮想マシンが実行するアプリケーションを連携させるために、ユーザが各種の設定処理及び起動処理等を個別に行なう必要があり、ユーザの操作負担が大きく、利便性が悪い。例えば、システムを起動させる際には、ユーザは、各仮想マシンが実行する各アプリケーションが連携するように各仮想マシンにおける動作条件を設定すると共に、設定された動作条件に従って各仮想マシンを起動させ、各仮想マシンの起動後、各仮想マシンに各アプリケーションを起動させる必要がある。また、システムを終了させる際には、ユーザは、各仮想マシンにおける各アプリケーションを終了させ、各アプリケーションの終了後、各仮想マシンを終了させる必要がある。
【０００８】
本発明は斯かる事情に鑑みてなされたものであり、その目的とするところは、複数のアプリケーションを連携させて実現するシステムにおいて、各仮想マシンが実行するアプリケーションを連携させるために、ユーザが各種の設定処理及び起動処理等を個別に行なう必要がなく、ユーザの操作負担を軽減して利便性を向上させることが可能な情報処理装置、情報処理方法及びコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本願に開示する情報処理装置は、その複数で主処理を実行し、それぞれが副処理を実行する複数の実行手段を備える情報処理装置であって、実行手段の複数を用いて実行される主処理毎に、実行手段のそれぞれに対する動作条件を示す設定情報と、実行手段のそれぞれが実行する副処理間の関係を示す連携情報とを含む動作情報が予め記憶している。情報処理装置は、記憶してある動作情報から、前記実行手段のそれぞれに対する動作条件を示す設定情報を取得し、取得した設定情報に基づいて、前記実行手段のそれぞれの動作状態を設定する。また、本願に開示する情報処理装置は、記憶してある動作情報から、前記実行手段のそれぞれが実行する副処理間の関係を示す連携情報を取得し、取得した連携情報に従って前記実行手段のそれぞれを実行させることによって前記主処理を実行する。
【００１０】
本願に開示する情報処理装置によれば、予め用意してある動作情報から、実行手段のそれぞれに対する動作条件を示す設定情報と、実行手段のそれぞれが実行する副処理間の関係を示す連携情報とを取得する。これにより、実行手段のそれぞれに対する動作条件及び実行手段のそれぞれにおける副処理間の連携情報を個別に設定する必要がない。
【発明の効果】
【００１１】
開示の情報処理装置では、実行手段のそれぞれに対する動作条件及び実行手段のそれぞれにおける副処理間の連携情報を個別に設定する必要がないので、主処理のアプリケーションを実行させるユーザは、主処理毎に動作情報を生成しておけばよく、ユーザの操作負担を軽減することができる。
【発明を実施するための最良の形態】
【００１２】
以下に、本発明に係る情報処理装置を、その実施形態を示す図面に基づいて詳述する。図１は本発明に係る情報処理装置の構成を示すブロック図である。本実施形態の情報処理装置１０は、本発明に係るコンピュータプログラムを例えばＰＣに読み取らせて実行させることによって実現される。なお、専用の装置によって情報処理装置１０を構成するようにしてもよい。
【００１３】
本実施形態の情報処理装置１０は、ＣＰＵ１、Read Only Memory（ＲＯＭ）２、Random Access Memory（ＲＡＭ）３、Hard Disk Drive（ＨＤＤ）４、操作部５、表示部６、通信部７等の各種ハードウェアを備えており、それぞれはバス１ａを介して相互に接続されている。ＣＰＵ１は、ＲＯＭ２又はＨＤＤ４に予め記憶してある制御プログラムを適宜ＲＡＭ３に読み出して実行すると共に、上述したハードウェア各部の動作を制御する。
【００１４】
ＣＰＵ１は、後述するようにＨＤＤ４に格納されているハイパーバイザプログラム２０、メインＯＳプログラム３０、ゲストＯＳプログラム４０をそれぞれＲＡＭ３に読み出して実行し、ハイパーバイザ２１、メインＯＳ３１、ゲストＯＳ４１，４２（図３，４参照）として動作する。ＣＰＵ１は、ハイパーバイザプログラム２０を実行することにより、論理的に複数のＣＰＵ１として動作する。ＣＰＵ１は、マルチコアＣＰＵであり、ハイパーバイザ２１、メインＯＳ３１及びゲストＯＳ４１，４２がそれぞれ物理的に異なるＣＰＵコア上に分散して動作するように最適に設計されている。なお、ＣＰＵ１はマルチコアＣＰＵとは限らず、シングルコアＣＰＵでもよい。
【００１５】
ＲＯＭ２は、本実施形態の情報処理装置１０を本発明の情報処理装置として動作させるために必要な種々の制御プログラムを予め格納している。ＲＡＭ３は、例えばStatic ＲＡＭ（ＳＲＡＭ）、Dynamic ＲＡＭ（ＤＲＡＭ）又はフラッシュメモリ等であり、ＣＰＵ１による制御プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００１６】
ＨＤＤ４は大容量の記憶装置である。ＨＤＤ４は、本実施形態の情報処理装置１０を本発明の情報処理装置として動作させるために必要な種々の制御プログラム、図２に示すようなアプリケーション動作ファイル５１、各種のデータ等を格納している。また、ＨＤＤ４は、ＣＰＵ１が読み出して実行する制御プログラムとして、ハイパーバイザプログラム２０、メインＯＳプログラム３０、ゲストＯＳプログラム４０及びアプリケーションプログラム５０等を格納している。
【００１７】
ハイパーバイザプログラム２０は、情報処理装置１０において複数のＯＳ（メインＯＳ３１、ゲストＯＳ４１，４２）が動作する仮想化技術を実現するためのソフトウェアプログラムである。ＣＰＵ１は、ハイパーバイザプログラム２０を実行することによりハイパーバイザ２１として動作し、情報処理装置１０が論理的に複数の情報処理装置として動作する仮想化環境を提供する。これにより、情報処理装置１０において論理的に複数の独立した仮想マシンが動作することが可能となる。
【００１８】
ＣＰＵ１は、ハイパーバイザ２１として動作することにより、各ソフトウェアとハードウェア資源との間の管理を実現し、各ＯＳ（メインＯＳ３１、ゲストＯＳ４１，４２）への各ハードウェアの割り当て、各ＯＳに対応するハードウェアの動作の基本的な制御を行なう。
【００１９】
また、ハイパーバイザ２１は、メインＯＳ３１からの指示に従って、対応するゲストＯＳプログラム４０を読み出して実行させることにより、ゲストＯＳ４１，４２を起動させる。この場合、ハイパーバイザ２１は、各ゲストＯＳ４１，４２によって利用されるハードウェア、即ち、ＲＡＭ３、ＨＤＤ４、操作部５、表示部６、通信部７の割り当て制御等を行なう。なお、ＣＰＵ１も、ハイパーバイザ２１自身、メインＯＳ３１及びゲストＯＳ４１，４２のそれぞれにＣＰＵコア単位に割り当てられる。
【００２０】
なお、ＲＡＭ３は、ＣＰＵ１がメインＯＳ３１、ゲストＯＳ４１，４２として動作する際に、メインＯＳ３１、ゲストＯＳ４１，４２毎の設定情報を記憶するためにも使用される。従って、ＲＡＭ３も、ハイパーバイザ２１によって論理的に複数のＲＡＭ３に分割され、ハイパーバイザ２１、メインＯＳ３１、ゲストＯＳ４１，４２のそれぞれに割り当てられる。
【００２１】
メインＯＳプログラム３０及びゲストＯＳプログラム４０は、ユーザが操作できるCommand User Interface（ＣＵＩ）、Graphic User Interface（ＧＵＩ）を持つWindows （登録商標）、Ｌｉｎｕｘ等のＯＳソフトウェアである。ＣＰＵ１は、メインＯＳプログラム３０を実行することによりメインＯＳ３１として動作し、各種処理を実行する実行手段の１つとして機能する。メインＯＳプログラム３０は、実行した処理に応じて表示すべきＣＵＩ，ＧＵＩ等を含む表示画面を生成し、表示部６に表示させる。また、メインＯＳ３１は、操作部５からの制御信号を受け付け、受け付けた制御信号に応じて各種処理を実行する。
【００２２】
なお、情報処理装置１０に電源が投入され、情報処理装置１０のハードウェア各部の起動が完了した場合、ＣＰＵ１は、ハイパーバイザプログラム２０及びメインＯＳプログラム３０を実行し、ハイパーバイザ２１の動作を開始すると共にメインＯＳ３１の動作環境（メイン仮想マシン）をユーザに提供する。
【００２３】
ＣＰＵ１は、ゲストＯＳプログラム４０を実行することによりゲストＯＳ４１，４２として動作し、各種処理を実行する実行手段の１つとして機能する。ゲストＯＳプログラム４０は、実行した処理に応じて表示すべきＣＵＩ，ＧＵＩ等を含む表示画面を生成し、表示部６に表示させる。なお、ハイパーバイザ２１が、メインＯＳ３１からの指示に従ってゲストＯＳプログラム４０を実行してゲストＯＳ４１，４２を起動させることによって、ゲストＯＳ４１，４２の動作環境（仮想マシン）をユーザに提供することができる。
【００２４】
ハイパーバイザ２１は、各ゲストＯＳ４１，４２の動作を正常に維持する機能、例えば、各ゲストＯＳ４１，４２の起動及び終了を制御する機能、各ゲストＯＳ４１，４２へのハードウェアの割り当てを行なう機能、各ゲストＯＳ４１，４２に適切なアプリケーションを実行させる機能、各ゲストＯＳ４１，４２が実行中のアプリケーションの動作状態を管理する機能等を有する。また、ハイパーバイザ２１は、各ゲストＯＳ４１，４２間の接続を中継する機能、各ゲストＯＳ４１，４２と外部ネットワークとの接続を中継する機能等を有する。
【００２５】
アプリケーションプログラム５０は、メインＯＳ３１又はゲストＯＳ４１，４２によって実行されるソフトウェアプログラムである。アプリケーションプログラム５０は、外部メモリ（図示せず）又は通信部７を介して情報処理装置１０に読み取らせてＨＤＤ４に格納させてもよい。アプリケーション動作ファイル５１は、ユーザが情報処理装置１０を使用して作成してもよく、ユーザが外部の装置で作成したアプリケーション動作ファイル５１を外部メモリ（図示せず）又は通信部７を介して情報処理装置１０に読み取らせてＨＤＤ４に格納させてもよい。
【００２６】
操作部５は、キーボード及びマウス等であり、ユーザが情報処理装置１０を操作するために必要な各種の操作キーを備えている。ユーザにより各操作キーが操作された場合、操作部５は操作された操作キーに対応した制御信号をＣＰＵ１（メインＯＳ３１）へ送出し、ＣＰＵ１（メインＯＳ３１）は操作部５から取得した制御信号に対応した処理を実行する。
【００２７】
表示部６は、液晶ディスプレイ又はCathode Ray Tube（ＣＲＴ）ディスプレイ等であり、ＣＰＵ１（メインＯＳ３１、ゲストＯＳ４１，４２）からの指示に従って、情報処理装置１０の動作状態、操作部５を介して入力された情報、ユーザに対して通知すべき情報等を表示する。
通信部７は、例えばネットワークカードを備え、Local Area Network（ＬＡＮ）等のネットワークを介して外部の装置と通信を行なうためのハードウェアである。
【００２８】
図２はアプリケーション動作ファイル５１の内容を示す模式図である。なお、以下では、メインＯＳ３１の動作環境を使用中のユーザが、ＬＡＮに接続するためのネットワーク接続アプリケーションをメインＯＳ３１に実行させた場合の処理を例に本発明を説明する。なお、ここでのネットワーク接続アプリケーションは、ユーザ認証を行なうためのユーザ認証アプリケーションを実行させ、正当なユーザであることが認証された場合にＬＡＮへの接続を行なうソフトウェアである。
【００２９】
また、ネットワーク接続アプリケーションは第１ゲストＯＳ４１用のアプリケーションであり、ユーザ認証アプリケーションは第２ゲストＯＳ４２用のアプリケーションであり、２つのアプリケーションはメインＯＳ３１用のアプリケーションではないものとする。なお、メインＯＳ３１、ゲストＯＳ４１，４２はそれぞれ、例えば、Windows Vista、Windows XP、Ｌｉｎｕｘ等であり、それぞれ異なるＯＳである。
【００３０】
アプリケーション動作ファイル５１には、図２に示すように、実行すべきアプリケーションのそれぞれについて、実行させるゲストＯＳ４１，４２の情報、ゲストＯＳ４１，４２に割り当てられる仮想ＬＡＮインタフェース（仮想ＬＡＮＩ／Ｆ）の情報等を含むアプリケーション情報が記載される。また、アプリケーション動作ファイル５１には、各ゲストＯＳ４１，４２で実行されるアプリケーション間の連携を示すアプリケーション間連携情報と、各ゲストＯＳ４１，４２間の連携を示すゲストＯＳ間連携情報とが記載される。アプリケーション動作ファイル５１は、ネットワーク接続アプリケーションを実行させる前に所定のルールに従ってユーザが作成しておく。
【００３１】
以下に、上述した構成の情報処理装置１０において、ＣＰＵ１が、ＲＯＭ２又はＨＤＤ４に格納されている各種の制御プログラムを実行することによって実現される機能について説明する。図３及び図４は情報処理装置１０の機能を示す機能ブロック図である。なお、図３及び図４は、情報処理装置１０が仮想化技術により複数の情報処理装置として動作する原理を示している。
【００３２】
図３及び図４には、情報処理装置１０で、ＣＰＵ１、ＲＡＭ３、ＨＤＤ４、操作部５、表示部６、通信部７等を含むハードウェア上で、ハイパーバイザ２１の動作により、メインＯＳ３１（メイン仮想マシン）及びゲストＯＳ４１，４２（仮想マシン）がそれぞれ独立して実行可能となっていることが示されている。
【００３３】
本実施形態の情報処理装置１において、ＣＰＵ１は、ＲＯＭ２又はＨＤＤ４に格納されている各種の制御プログラムを実行することによって、ハイパーバイザ２１、メインＯＳ３１、ゲストＯＳ４１，４２等の各機能を実現する。また、ハイパーバイザ２１は、ハイパーバイザプログラム２０に含まれるモジュールにより、ゲストＯＳ動作管理部２２、仮想マシンハードウェア管理部２３、アプリケーション動作管理部２４、アプリケーション連携管理部２５等の各機能を有する。
【００３４】
メインＯＳ３１は、メインＯＳプログラム３０に含まれるモジュールにより、設定ファイル生成部３２の機能を有する。また、ゲストＯＳ４１，４２のそれぞれは、それぞれのゲストＯＳプログラム４０に含まれるモジュールにより、アプリケーション状態監視部４１ａ，４２ａの機能を有する。
【００３５】
本実施形態の情報処理装置１０において、メインＯＳ３１の動作環境（メイン仮想マシン）を使用中のユーザは、情報処理装置１０をＬＡＮに接続させたい場合、ネットワーク接続アプリケーションの実行をメインＯＳ３１に指示する。メインＯＳ３１は、ネットワーク接続アプリケーション（主処理のサービス）の動作に関する情報が記載されたアプリケーション動作ファイル５１をＨＤＤ４から、自身に割り当てられたＲＡＭ３に読み出す。そして、メインＯＳ３１の設定ファイル生成部（設定情報取得手段、連携情報取得手段）３２は、自身に割り当てられたＲＡＭ３に読み出されたアプリケーション動作ファイル５１から、ゲストＯＳ設定ファイル３３及び連携設定ファイル３４を生成する。
【００３６】
図５はゲストＯＳ設定ファイル３３及び連携設定ファイル３４の内容を示す模式図である。なお、図５（ａ）はゲストＯＳ設定ファイル３３に含まれる仮想マシン情報テーブルを示しており、図５（ｂ）はゲストＯＳ設定ファイル３３に含まれる連携情報テーブルを示している。また、図５（ｃ）は連携設定ファイル３４を示している。
【００３７】
ゲストＯＳ設定ファイル３３の仮想マシン情報テーブルには、それぞれのゲストＯＳ４１，４２に対する動作条件を示す設定情報が記載されている。具体的には、仮想マシン情報テーブルには、図５（ａ）に示すように、それぞれのアプリケーションを実行させる仮想マシン毎に、仮想マシンを識別するための仮想マシンＩＤ（IDentifier）、仮想マシンにおけるゲストＯＳを識別するためのゲストＯＳ−ＩＤ及び仮想ＬＡＮＩ／Ｆを識別するための仮想ＬＡＮＩ／Ｆ−ＩＤ及び各仮想ＬＡＮＩ／Ｆのポート番号等を含む仮想マシン情報が記載されている。
【００３８】
ゲストＯＳ設定ファイル３３の連携情報テーブルには、それぞれのゲストＯＳ４１，４２間の連携（接続）関係を示す連携情報が記載されている。具体的には、連携情報テーブルには、図５（ｂ）に示すように、それぞれの連携情報の連携情報ＩＤに対応させて、仮想マシン間において連携（接続）される２つの仮想ＬＡＮＩ／Ｆの仮想ＬＡＮＩ／Ｆ−ＩＤ及びポート番号が記載されている。
【００３９】
連携設定ファイル３４には、それぞれのゲストＯＳ４１，４２が実行するアプリケーション（副処理）間の関係を示す連携情報が記載されている。具体的には、連携設定ファイル３４には、図５（ｃ）に示すように、それぞれのゲストＯＳ４１，４２毎に、ゲストＯＳ−ＩＤ、ゲストＯＳ４１，４２に実行させるアプリケーションを識別するためのアプリケーションＩＤ、アプリケーションの優先順位、アプリケーション間を連携するために他の仮想マシン（ゲストＯＳ４１，４２）に連携（接続）される仮想ＬＡＮＩ／Ｆのポート番号が記載されている。
【００４０】
設定ファイル生成部３２は、アプリケーション動作ファイル５１に記載されたアプリケーション情報毎に、仮想マシン情報を生成し、ゲストＯＳ設定ファイル３３に登録する。例えば、設定ファイル生成部３２は、アプリケーション動作ファイル５１に記載された１つ目のアプリケーション情報に基づいて、第１ゲストＯＳ４１、第２ＬＡＮＩ／Ｆ４３、第３ＬＡＮＩ／Ｆ４４及び第４ＬＡＮＩ／Ｆ４５を含む第１仮想マシンを示す仮想マシン情報を生成してゲストＯＳ設定ファイル３３に登録する。
【００４１】
また、設定ファイル生成部３２は、アプリケーション動作ファイル５１に記載された１つ目のアプリケーション情報に基づいて、第１ゲストＯＳ４１のゲストＯＳ−ＩＤと、ネットワーク接続アプリケーション（第１アプリケーション）のアプリケーションＩＤとを対応付けて連携設定ファイル３４に登録する。
【００４２】
次に、設定ファイル生成部３２は、アプリケーション動作ファイル５１に記載された２つ目のアプリケーション情報に基づいて、第２ゲストＯＳ４２及び第５ＬＡＮＩ／Ｆ４６を含む第２仮想マシンを示す仮想マシン情報を生成してゲストＯＳ設定ファイル３３に登録する。また、設定ファイル生成部３２は、アプリケーション動作ファイル５１に記載された２つ目のアプリケーション情報に基づいて、第２ゲストＯＳ４２のゲストＯＳ−ＩＤと、ユーザ認証アプリケーション（第２アプリケーション）のアプリケーションＩＤとを対応付けて連携設定ファイル３４に登録する。
【００４３】
なお、連携設定ファイル３４に登録される優先順位は、本実施形態では、アプリケーション動作ファイル５１において、各アプリケーションのアプリケーション情報の記載順番とする。従って、アプリケーション動作ファイル５１に１番目にアプリケーション情報が記載されているネットワーク接続アプリケーションの優先順位を１番とし、２番目にアプリケーション情報が記載されているユーザ認証アプリケーションの優先順位を２番とする。
【００４４】
しかし、例えば、アプリケーション動作ファイル５１に各アプリケーションに対する優先順位を記載しておく構成としてもよく、この場合、アプリケーション動作ファイル５１に記載された優先順位を連携設定ファイル３４に登録される優先順位とすればよい。
【００４５】
次に、設定ファイル生成部３２は、アプリケーション動作ファイル５１に記載されたアプリケーション間連携情報に基づいて、それぞれのゲストＯＳ４１，４２において、他のゲストＯＳ４１，４２と連携されるＬＡＮＩ／Ｆ４３，４６に割り当てられたポート番号を連携設定ファイル３４に登録する。
【００４６】
なお、図２に示したアプリケーション動作ファイル５１では、アプリケーション間連携情報として、ポート番号が9002の第２ＬＡＮＩ／Ｆ４３と、ポート番号が9005の第５ＬＡＮＩ／Ｆ４６とが連携されることが記載されている。従って、設定ファイル生成部３２は、連携設定ファイル３４の各ゲストＯＳ４１，４２に対応するポート番号の欄にそれぞれ9002,9005を登録する。
【００４７】
更に、設定ファイル生成部３２は、アプリケーション動作ファイル５１に記載されたゲストＯＳ間連携情報に基づいて、それぞれのゲストＯＳ４１，４２（仮想マシン）間の連携関係を示す連携情報を生成し、ゲストＯＳ設定ファイル３３の連携情報テーブルに登録する。なお、図２に示したアプリケーション動作ファイル５１では、ゲストＯＳ間連携情報として、ポート番号が9001の第１ＬＡＮＩ／Ｆ３６と、ポート番号が9003の第３ＬＡＮＩ／Ｆ４４とが連携されていることが記載されている。従って、設定ファイル生成部３２は、ゲストＯＳ設定ファイル３３の連携情報テーブルに、第１ＬＡＮＩ／Ｆ３６と第３ＬＡＮＩ／Ｆ４４との連携関係を示す連携情報ＩＤが１の連携情報を登録する。
【００４８】
同様に、設定ファイル生成部３２は、ゲストＯＳ設定ファイル３３の連携情報テーブルに、第２ＬＡＮＩ／Ｆ４３と第５ＬＡＮＩ／Ｆ４６との連携関係を示す連携情報ＩＤが２の連携情報、第４ＬＡＮＩ／Ｆ４５と外部ネットワークとの連携関係を示す連携情報ＩＤが３の連携情報を登録する。なお、外部ネットワークを示す情報としては、例えば、通信部７のネットワークカードに割り当てられたMedia Access Control（ＭＡＣ）アドレスを用いてもよい。
【００４９】
メインＯＳ３１は、設定ファイル生成部３２によって生成されたゲストＯＳ設定ファイル３３及び連携設定ファイル３４をハイパーバイザ２１へ送出する。ハイパーバイザ２１は、メインＯＳ３１から取得したゲストＯＳ設定ファイル３３をゲストＯＳ動作管理部２２及び仮想マシンハードウェア管理部２３へ入力し、連携設定ファイル３４をアプリケーション動作管理部２４及びアプリケーション連携管理部２５に入力する。
【００５０】
ハイパーバイザ２１のゲストＯＳ動作管理部２２は、ゲストＯＳ設定ファイル３３の仮想マシン情報テーブルの内容に基づいて、対応するゲストＯＳプログラム４０を実行させ、それぞれのゲストＯＳ４１，４２を起動させる。ハイパーバイザ２１の仮想マシンハードウェア管理部２３は、ゲストＯＳ設定ファイル３３の仮想マシン情報テーブルの内容に基づいて、ゲストＯＳ動作管理部２２が起動させたゲストＯＳ４１，４２に、それぞれ対応する仮想ＬＡＮＩ／Ｆ４３，４４，４５，４６を割り当てる。また、仮想マシンハードウェア管理部２３は、ゲストＯＳ設定ファイル３３の連携情報テーブルの内容に基づいて、それぞれ連携すべき仮想ＬＡＮＩ／Ｆ間をブリッジする。
【００５１】
これにより、ハイパーバイザ（設定手段）２１は、ゲストＯＳ設定ファイル３３の仮想マシン情報テーブルに登録された仮想マシン情報に対応した仮想マシンをそれぞれ起動させることができる。また、ゲストＯＳ設定ファイル３３の連携情報テーブルに登録された連携情報に基づいて、連携させるべき仮想マシン間を連携させることができる。
【００５２】
ゲストＯＳ４１，４２のアプリケーション状態監視部（監視手段）４１ａ，４２ａは、それぞれのゲストＯＳ４１，４２が実行するアプリケーションの動作状態を監視し、監視結果をハイパーバイザ２１のアプリケーション連携管理部２５に通知する。
【００５３】
具体的には、アプリケーション状態監視部４１ａは、第１ゲストＯＳ４１が実行する第１アプリケーションプログラム（ネットワーク接続アプリケーション）５０ａの動作状態を監視し、その監視結果をアプリケーション連携管理部２５に通知する。また、アプリケーション状態監視部４２ａは、第２ゲストＯＳ４２が実行する第２アプリケーションプログラム（ユーザ認証アプリケーション）５０ｂの動作状態を監視し、その監視結果をアプリケーション連携管理部２５に通知する。
【００５４】
なお、本実施形態では、アプリケーション状態監視部４１ａ，４２ａを実現するためのモジュールをゲストＯＳプログラム４０に含めておき、ゲストＯＳ４１，４２の起動と共にアプリケーション状態監視部４１ａ，４２ａを起動させる構成である。この構成のほかに、例えば、アプリケーション状態監視部４１ａ，４２ａを実現するためのモジュールをゲストＯＳプログラム４０とは別にＨＤＤ４に格納させておき、ゲストＯＳ４１，４２の起動後に、ＨＤＤ４からロードしてゲストＯＳ４１，４２に実行させるようにしてもよい。
【００５５】
アプリケーション状態監視部４１ａ，４２ａのそれぞれは、ゲストＯＳ４１，４２の起動と共に起動（動作を開始）した場合、その旨をハイパーバイザ２１のアプリケーション連携管理部２５に通知する。ハイパーバイザ２１のアプリケーション連携管理部２５は、各ゲストＯＳ４１，４２のアプリケーション状態監視部４１ａ，４２ａの起動完了を確認すると、その旨をアプリケーション動作管理部２４に通知する。
【００５６】
アプリケーション動作管理部２４は、ゲストＯＳ４１，４２及びゲストＯＳ４１，４２のアプリケーション状態監視部４１ａ，４２ａが起動したことを確認すると、連携設定ファイル３４の内容に基づいて、各ゲストＯＳ４１，４２に、それぞれ対応するアプリケーションプログラム５０ａ，５０ｂを起動させる。
【００５７】
具体的には、アプリケーション動作管理部２４は、連携設定ファイル３４に登録されている優先順位が１番のアプリケーション及びこのアプリケーションを実行させるゲストＯＳ４１，４２を特定する。そして、アプリケーション動作管理部２４は、特定したゲストＯＳ４１，４２に、特定したアプリケーションプログラム５０ａ，５０ｂを起動させる。ここでは、優先順位が１番のアプリケーションとして、第１ゲストＯＳ４１にネットワーク接続アプリケーション５０ａを起動させる。
【００５８】
アプリケーション動作管理部２４は、第１ゲストＯＳ４１のアプリケーション状態監視部４１ａから通知される監視結果に基づいて、ネットワーク接続アプリケーション５０ａの起動が完了したか否かを判断し、ネットワーク接続アプリケーション５０ａの起動が完了するまで待機する。ネットワーク接続アプリケーション５０ａの起動が完了した場合、アプリケーション動作管理部２４は、次に優先順位の高いアプリケーション及びこのアプリケーションを実行させるゲストＯＳ４１，４２を特定する。
【００５９】
ここでは、優先順位が２番のアプリケーションとして、ユーザ認証アプリケーション５０ｂと、ユーザ認証アプリケーション５０ｂを実行させる第２ゲストＯＳ４２とを特定し、第２ゲストＯＳ４２にネットワーク接続アプリケーション５０ａを起動させる。アプリケーション動作管理部２４は、第２ゲストＯＳ４２のアプリケーション状態監視部４２ａから通知される監視結果に基づいて、ユーザ認証アプリケーション５０ｂの起動が完了したか否かを判断し、ユーザ認証アプリケーション５０ｂの起動が完了するまで待機する。
【００６０】
アプリケーション動作管理部２４は、連携設定ファイル３４に登録された全てのアプリケーションプログラム５０の起動が完了するまで、上述した処理を繰り返す。全てのアプリケーションプログラム５０の起動が完了した場合、アプリケーション動作管理部２４は、優先順位が１番のアプリケーションを実行させる第１ゲストＯＳ４１のアプリケーション状態監視部４１ａに対して、他のアプリケーションを実行させる他のゲストＯＳ４２との間の通信路が確保されているかを問い合わせる。
【００６１】
アプリケーション動作管理部２４は、アプリケーション状態監視部４１ａから通信路が確保されていることを通知された場合、その旨をアプリケーション連携管理部２５へ通知する。なお、第１ゲストＯＳ４１及び第２ゲストＯＳ４２間の通信路が確保された場合、第１ゲストＯＳ４１及び第２ゲストＯＳ４２のそれぞれによって実行されるアプリケーション５０ａ，５０ｂ間において連携が取れるので、アプリケーション５０ａ，５０ｂによる処理を開始できる。
【００６２】
即ち、ここでは、第１ゲストＯＳ４１がネットワーク接続アプリケーション５０ａの実行を開始し、第２ゲストＯＳ４２がユーザ認証アプリケーション５０ｂの実行を開始することにより、ユーザ認証アプリケーション５０ｂを含むネットワーク接続アプリケーション５０ａの実行が開始される。アプリケーション連携管理部２５は、アプリケーション状態監視部４１ａ，４２ａからの監視結果に基づいて、ネットワーク接続アプリケーション５０ａ及びユーザ認証アプリケーション５０ｂの動作状況を把握し、必要に応じて、ネットワーク接続アプリケーション５０ａ及びユーザ認証アプリケーション５０ｂの処理結果をゲストＯＳ４１，４２間で中継する。
【００６３】
このように、アプリケーション連携管理部２５は、連携設定ファイル３４に従って、ゲストＯＳ４１，４２のそれぞれにアプリケーション５０ａ，５０ｂを実行させることによって、ユーザ認証アプリケーション５０ｂを含むネットワーク接続アプリケーション５０ａ（主処理）を実行させる制御手段として動作する。
【００６４】
上述した処理により、ユーザが、ネットワーク接続アプリケーション５０ａの開始を指示することによって、ゲストＯＳ４１，４２を起動させると共に、第１ゲストＯＳ４１にネットワーク接続アプリケーション５０ａを実行させ、第２ゲストＯＳ４２にユーザ認証アプリケーション５０ｂを実行させることができる。よって、従来では、ゲストＯＳ４１，４２を個別に起動させるための操作、アプリケーションプログラム５０ａ，５０ｂを個別に起動させるための操作を行なう必要があったが、このような操作が不要となる。従って、ユーザの操作性を向上させることができる。
【００６５】
以下に、上述したようにゲストＯＳ４１，４２が、連携されつつそれぞれのアプリケーションプログラム５０ａ，５０ｂを実行している状態で、アプリケーションプログラム５０ａ，５０ｂを終了させる場合にハイパーバイザ２１が行なう処理について説明する。まず、ユーザがネットワーク接続アプリケーション５０ａの終了指示を行なった場合の処理について説明する。
【００６６】
ユーザが、メインＯＳ３１の動作環境において操作部５を介してネットワーク接続アプリケーション５０ａの終了指示を行なった場合、ハイパーバイザ２１は、メインＯＳ３１を介してネットワーク接続アプリケーション５０ａの終了指示を受け付ける。ハイパーバイザ２１のアプリケーション動作管理部２４は、連携設定ファイル３４の内容に基づいて、最も優先順位が低いアプリケーションを特定し、特定したアプリケーションを終了させる。ここでは、優先順位が２番のユーザ認証アプリケーション５０ｂが特定されて終了される。
【００６７】
アプリケーション動作管理部２４は、第２ゲストＯＳ４２のアプリケーション状態監視部４２ａから通知される監視結果に基づいて、ユーザ認証アプリケーション５０ｂが終了したか否かを判断し、ユーザ認証アプリケーション５０ｂが終了するまで待機する。ユーザ認証アプリケーション５０ｂが終了した場合、アプリケーション動作管理部２４は、次に優先順位が低いアプリケーションを特定し、特定したアプリケーションを終了させる。ここでは、優先順位が１番のネットワーク接続アプリケーション５０ａが特定されて終了される。
【００６８】
アプリケーション動作管理部２４は、第１ゲストＯＳ４１のアプリケーション状態監視部４１ａから通知される監視結果に基づいて、ネットワーク接続アプリケーション５０ａが終了したか否かを判断し、ネットワーク接続アプリケーション５０ａが終了するまで待機する。アプリケーション動作管理部２４は、連携設定ファイル３４に登録された全てのアプリケーションプログラム５０が終了するまで、上述した処理を繰り返す。全てのアプリケーションプログラム５０が終了した場合、アプリケーション動作管理部２４は、その旨をゲストＯＳ動作管理部２２に通知する。
【００６９】
ゲストＯＳ動作管理部２２は、全てのアプリケーションプログラム５０が終了した旨をアプリケーション動作管理部２４から通知された場合、ゲストＯＳ４１，４２の動作を終了させると共に、ゲストＯＳ４１，４２に割り当てられていたハードウェア各部のゲストＯＳ４１，４２への割り当てを開放する。
【００７０】
上述した処理により、ユーザが、ネットワーク接続アプリケーション５０ａを終了させることによって、第１ゲストＯＳ４１が実行するネットワーク接続アプリケーション５０ａだけでなく、第２ゲストＯＳ４２が実行するユーザ認証アプリケーション５０ｂを終了させることができる。また同時に、第１ゲストＯＳ４１及び第２ゲストＯＳ４２も終了させることができる。よって、従来では、アプリケーションプログラム５０ａ，５０ｂを個別に終了させるための操作、ゲストＯＳ４１，４２を個別に終了させるための操作を行なう必要があったが、このような操作が不要となる。従って、ユーザの操作性を向上させることができる。
【００７１】
次に、いずれかのアプリケーションプログラム５０が何らかの理由で不正に終了した場合にハイパーバイザ２１が行なう処理について説明する。ハイパーバイザ２１のアプリケーション動作管理部２４は、アプリケーション状態監視部４１ａ，４２ａからの監視結果に基づいて、アプリケーションプログラム５０ａ，５０ｂの動作状況を監視している。
【００７２】
いずれかのアプリケーション状態監視部４１ａ，４２ａからアプリケーションプログラム５０ａ，５０ｂが終了したことを通知された場合、アプリケーション動作管理部２４は、連携設定ファイル３４の内容に基づいて、現在動作中のアプリケーションプログラム５０ａ，５０ｂに、終了したアプリケーションプログラム５０ａ，５０ｂよりも優先順位が高いアプリケーションが有るか否かを判断する。
【００７３】
アプリケーション動作管理部２４は、終了したアプリケーションプログラム５０ａ，５０ｂよりも優先順位が高いアプリケーションが無いと判断した場合、全てのアプリケーションプログラム５０ａ，５０ｂを終了させる。これは、ユーザによってアプリケーションの終了が指示された可能性があるためである。なお、全てのアプリケーションプログラム５０ａ，５０ｂを終了させる手順は、上述したように、連携設定ファイル３４の内容に基づいて、優先順位の低いアプリケーションから順に終了させる。
【００７４】
そして、全てのアプリケーションプログラム５０ａ，５０ｂが終了した後に、ゲストＯＳ動作管理部２２が、全てのゲストＯＳ４１，４２の動作を終了させると共に、ゲストＯＳ４１，４２に割り当てられていたハードウェア各部のゲストＯＳ４１，４２への割り当てを開放する。
【００７５】
一方、終了したアプリケーションプログラム５０ａ，５０ｂよりも優先順位が高いアプリケーションが有る場合、優先順位が低いアプリケーション５０ａ，５０ｂのみが何らかの理由で不正終了した可能性が高いため、アプリケーション動作管理部２４は、このアプリケーション５０ａ，５０ｂを再度起動させる。なお、ここでは、ネットワーク接続アプリケーション５０ａは優先順位が１番であるので、終了したアプリケーションは、ユーザ認証アプリケーション５０ｂであるとする。
【００７６】
アプリケーション動作管理部２４は、アプリケーション状態監視部４２ａから通知される監視結果に基づいて、アプリケーションプログラム５０ｂの起動が完了したか否かを判断し、起動が完了するまで待機する。アプリケーションプログラム５０ｂの起動が完了した場合、アプリケーション動作管理部２４は、優先順位が１番のアプリケーションを実行させる第１ゲストＯＳ４１のアプリケーション状態監視部４１ａに対して、他のアプリケーションを実行させる他のゲストＯＳ４２との間の通信路が確保されているかを問い合わせる。
【００７７】
アプリケーション動作管理部２４は、アプリケーション状態監視部４１ａから通信路が確保されていることを通知された場合、その旨をアプリケーション連携管理部２５へ通知し、アプリケーション５０ａ，５０ｂによる処理が再開される。
【００７８】
上述した処理により、いずれかのアプリケーションプログラム５０が不正に終了した場合であっても、終了したアプリケーションプログラム５０のみを再度起動させることにより、他のアプリケーションプログラム５０の処理に影響を与えない。よって、異なるアプリケーションプログラム５０を異なるゲストＯＳ４１，４２に実行させる環境において、それぞれのゲストＯＳ４１，４２の動作環境が他のゲストＯＳ４１，４２の動作環境に影響を与えないので、各アプリケーションプログラム５０を安定して動作させることができる。
【００７９】
以下に、本実施形態の情報処理装置１０において、複数のＯＳ（ゲストＯＳ）にそれぞれ異なるアプリケーション（副処理）を実行させることによって主処理のアプリケーションを情報処理装置１０に実行させる際の処理についてフローチャートに基づいて説明する。図６及び図７はアプリケーション開始時の処理の手順を示すフローチャートである。なお、以下の処理は、情報処理装置１０のＲＯＭ２又はＨＤＤ４に格納してある制御プログラムに従ってＣＰＵ１（ハイパーバイザ２１、メインＯＳ３１、ゲストＯＳ４１，４２等）によって実行される。
【００８０】
情報処理装置１０のＣＰＵ１（メインＯＳ３１）は、ユーザが操作部５を操作することによって主処理のアプリケーションの実行が指示された場合、このアプリケーションに対応するアプリケーション動作ファイル５１をＲＡＭ３に読み込む（Ｓ１）。ＣＰＵ１（メインＯＳ３１の設定ファイル生成部３２）は、ＲＡＭ３に読み込んだアプリケーション動作ファイル５１から、それぞれのゲストＯＳ４１，４２に対する動作条件を示すゲストＯＳ設定ファイル３３を生成する（Ｓ２）。
【００８１】
また、ＣＰＵ１は、ＲＡＭ３に読み込んだアプリケーション動作ファイル５１から、それぞれのゲストＯＳ４１，４２が実行するアプリケーション間の関係を示す連携情報を示す連携設定ファイル３４を生成する（Ｓ３）。
【００８２】
ＣＰＵ１（ハイパーバイザ２１のゲストＯＳ動作管理部２２）は、生成したゲストＯＳ設定ファイル３３に基づいて、それぞれのゲストＯＳプログラム４０を実行させてゲストＯＳ４１，４２を起動させる（Ｓ４）。なお、ＣＰＵ１（仮想マシンハードウェア管理部２３）は、ゲストＯＳ４１，４２を起動させると共に、起動させたゲストＯＳ４１，４２に、それぞれ対応する仮想ＬＡＮＩ／Ｆ４３，４４，４５，４６を割り当てる。
【００８３】
ＣＰＵ１は、ゲストＯＳ設定ファイル３３に登録されている全てのゲストＯＳ４１，４２が起動したか否かを判断しており（Ｓ５）、起動していないと判断した場合（Ｓ５：ＮＯ）、ステップＳ４へ処理を戻し、全てのゲストＯＳ４１，４２が起動するまで待機する。全てのゲストＯＳ４１，４２が起動したと判断した場合（Ｓ５：ＹＥＳ）、ＣＰＵ１は、ゲストＯＳ４１，４２のそれぞれのアプリケーション状態監視部４１ａ，４２ａが起動したか否かを判断する（Ｓ６）。
【００８４】
アプリケーション状態監視部４１ａ，４２ａが起動していないと判断した場合（Ｓ６：ＮＯ）、ＣＰＵ１は、全てのアプリケーション状態監視部４１ａ，４２ａが起動するまで待機する。全てのアプリケーション状態監視部４１ａ，４２ａが起動したと判断した場合（Ｓ６：ＹＥＳ）、ＣＰＵ１（アプリケーション動作管理部２４）は、連携設定ファイル３４に基づいて、優先順位が１番のアプリケーション５０を特定し、特定したアプリケーション５０を対応するゲストＯＳ４１，４２に起動させる（Ｓ７）。
【００８５】
ＣＰＵ１は、対応するゲストＯＳ４１，４２のアプリケーション状態監視部４１ａ，４２ａから通知される監視結果に基づいて、優先順位が１番のアプリケーション５０の起動が完了したか否かを判断する（Ｓ８）。優先順位が１番のアプリケーション５０の起動が完了していないと判断した場合（Ｓ８：ＮＯ）、ＣＰＵ１は、このアプリケーション５０の起動が完了するまで待機する。優先順位が１番のアプリケーション５０の起動が完了したと判断した場合（Ｓ８：ＹＥＳ）、ＣＰＵ１は、連携設定ファイル３４に基づいて、起動すべきアプリケーション５０がまだ有るか否かを判断する（Ｓ９）。
【００８６】
起動すべきアプリケーション５０が有ると判断した場合（Ｓ９：ＹＥＳ）、ＣＰＵ１は、連携設定ファイル３４に基づいて、優先順位が次（ここでは２番）のアプリケーション５０を特定し、特定したアプリケーション５０を対応するゲストＯＳ４１，４２に起動させる（Ｓ１０）。ＣＰＵ１は、ステップＳ８へ処理を戻し、このアプリケーション５０の起動が完了したか否かを判断し（Ｓ８）、このアプリケーション５０の起動が完了するまで待機する。
【００８７】
起動すべきアプリケーション５０が無いと判断した場合（Ｓ９：ＮＯ）、ＣＰＵ１は、優先順位が１番のアプリケーション５０を実行させるゲストＯＳ４１（又は４２）のアプリケーション状態監視部４１ａ（又は４２ａ）に対して、他のアプリケーションを実行させる他のゲストＯＳ４２（又は４１）との間の通信路が確保されているかを問い合わせる。ＣＰＵ１は、アプリケーション状態監視部４１ａ（又は４２ａ）からの応答に基づいて、ゲストＯＳ４１，４２間の通信路が確保されたか否かを判断する（Ｓ１１）。
【００８８】
ＣＰＵ１は、通信路が確保されていないと判断した場合（Ｓ１１：ＮＯ）、通信路が確保されるまで待機する。ＣＰＵ１は、通信路が確保されたと判断した場合（Ｓ１１：ＹＥＳ）、主処理のアプリケーションの動作を開始させ（Ｓ１２）、主処理のアプリケーションの動作を開始するための処理を終了する。
【００８９】
以下に、本実施形態の情報処理装置１０において、上述したように複数のＯＳ（ゲストＯＳ）にそれぞれ異なるアプリケーション（副処理）を実行させることによって主処理のアプリケーションの実行中に情報処理装置１０が行なう処理についてフローチャートに基づいて説明する。図８及び図９はアプリケーション実行中の処理の手順を示すフローチャートである。なお、以下の処理は、情報処理装置１０のＲＯＭ２又はＨＤＤ４に格納してある制御プログラムに従ってＣＰＵ１（ハイパーバイザ２１、メインＯＳ３１、ゲストＯＳ４１，４２等）によって実行される。
【００９０】
情報処理装置１０のＣＰＵ１（メインＯＳ３１）は、ユーザが操作部５を操作することによって主処理のアプリケーションの終了が指示されたか否かを判断しており（Ｓ２１）、指示されたと判断した場合（Ｓ２１：ＹＥＳ）、ステップＳ２８へ処理を移行する。アプリケーションの終了が指示されていないと判断した場合（Ｓ２１：ＮＯ）、ＣＰＵ１（ハイパーバイザ２１のアプリケーション動作管理部２４）は、アプリケーション状態監視部４１ａ，４２ａから通知される監視結果に基づいて、いずれかのアプリケーション５０が終了したか否かを判断する（Ｓ２２）。
【００９１】
いずれのアプリケーション５０も終了していないと判断した場合（Ｓ２２：ＮＯ）、ＣＰＵ１は、ステップＳ２１へ処理を戻す。いずれかのアプリケーション５０が終了したと判断した場合（Ｓ２２：ＹＥＳ）、ＣＰＵ１は、連携設定ファイル３４に基づいて、現在動作中のアプリケーション５０に、終了したアプリケーションプログラム５０よりも優先順位が高いアプリケーション５０が有るか否かを判断する（Ｓ２３）。
【００９２】
ＣＰＵ１は、優先順位が高いアプリケーション５０が無いと判断した場合（Ｓ２３：ＮＯ）、ステップＳ２８へ処理を移行する。優先順位が高いアプリケーション５０が有ると判断した場合（Ｓ２３：ＹＥＳ）、ＣＰＵ１は、終了したアプリケーション５０を再度起動させる（Ｓ２４）。ＣＰＵ１は、アプリケーション状態監視部４１ａ（又は４２ａ）から通知される監視結果に基づいて、アプリケーション５０の起動が完了したか否かを判断し（Ｓ２５）、起動が完了していないと判断した場合（Ｓ２５：ＮＯ）、待機する。
【００９３】
ＣＰＵ１は、アプリケーション５０の起動が完了したと判断した場合（Ｓ２５：ＹＥＳ）、ゲストＯＳ４１，４２間の通信路が確保されているか否かを判断し（Ｓ２６）、通信路が確保されていないと判断した場合（Ｓ２６：ＮＯ）、待機する。通信路が確保されたと判断した場合（Ｓ２６：ＹＥＳ）、ＣＰＵ１は、主処理のアプリケーションの動作を再開させ（Ｓ２７）、上述した処理を終了する。
【００９４】
アプリケーションの終了が指示されたと判断した場合（Ｓ２１：ＹＥＳ）、又は優先順位が高いアプリケーション５０が無いと判断した場合（Ｓ２３：ＮＯ）、ＣＰＵ１（アプリケーション動作管理部２４）は、連携設定ファイル３４に基づいて、最も優先順位が低いアプリケーション５０を特定する（Ｓ２８）。ＣＰＵ１は、特定したアプリケーション５０を終了させ（Ｓ２９）、まだ起動中のアプリケーション５０が有るか否かを判断する（Ｓ３０）。
【００９５】
起動中のアプリケーション５０が有ると判断した場合（Ｓ３０：ＹＥＳ）、ＣＰＵ１は、ステップＳ２８へ処理を戻し、次に優先順位が低いアプリケーションを特定し（Ｓ２８）、特定したアプリケーションを終了させる（Ｓ２９）。ＣＰＵ１は、起動中の全てのアプリケーション５０が終了するまでステップＳ２８〜Ｓ３０の処理を繰り返し、起動中のアプリケーション５０が無いと判断した場合（Ｓ３０：ＮＯ）、ゲストＯＳ設定ファイル３３に登録してある全てのゲストＯＳ４１，４２の動作を終了させる（Ｓ３１）。
【００９６】
なお、ＣＰＵ１（仮想マシンハードウェア管理部２３）は、それぞれのゲストＯＳ４１，４２に割り当てられていたハードウェア各部のゲストＯＳ４１，４２への割り当てを開放する。
【００９７】
ＣＰＵ１は、全てのゲストＯＳ４１，４２の動作が終了したか否かを判断しており（Ｓ３２）、終了していないと判断した場合（Ｓ３２：ＮＯ）、ステップＳ３１へ処理を戻し待機する。ＣＰＵ１は、全てのゲストＯＳ４１，４２の動作が終了したと判断した場合（Ｓ３２：ＹＥＳ）、複数のＯＳ（ゲストＯＳ）にそれぞれ異なるアプリケーション（副処理）を実行させることによって実行中であった主処理のアプリケーションの動作を終了させる。
【００９８】
上述した実施形態では、アプリケーション動作ファイル５１からゲストＯＳ設定ファイル３３及び連携設定ファイル３４を生成する設定ファイル生成部３２の機能をメインＯＳ３１が有する構成を例に説明した。この構成に対して、例えば設定ファイル生成部３２の機能をハイパーバイザ２１に持たせてもよい。
【００９９】
また、上述した実施形態では、第１ゲストＯＳ４１にネットワーク接続アプリケーション５０ａのみを実行させ、第２ゲストＯＳ４２にユーザ認証アプリケーション５０ｂのみを実行させる構成であった。このような構成に限られず、例えば、同一のゲストＯＳに複数のアプリケーションを実行させる場合であっても、同様の処理によって実現が可能であることは勿論である。
【０１００】
また、本願に開示する情報処理装置の制御手段は、連携情報が示す副処理間の関係に基づく順序で、実行手段のそれぞれを起動させる手段と、実行手段のそれぞれが起動した後、実行手段のそれぞれが実行する副処理間の通信路を設定する手段とを備える。このような構成によれば、異なるＯＳ上で動作するアプリケーション同士の起動順序を１つの連携情報が示す副処理間の関係で管理することができ、ユーザによるアプリケーションの起動管理の負担を軽減することが期待できる。
【０１０１】
また、本願に開示する情報処理装置は、実行手段のそれぞれにおける動作状態を監視する監視手段を備え、制御手段は、監視手段が監視する各実行手段の動作状態と、連携情報取得手段が取得した連携情報とに基づいて、実行手段のそれぞれの動作を制御する。このような構成によれば、監視手段が副処理間の関係を理解して、異なるＯＳ上で動作するアプリケーションを制御して１つのアプリケーション動作のように見せることとなる。その結果、ユーザはこのシステムのためにアプリケーションを別途用意する必要がなく、アプリケーションの調達に関するコストを削減することが期待できる。
【０１０２】
また、本願に開示する情報処理装置の連携情報は、実行手段のそれぞれが実行する処理の優先度を含んでおり、制御手段は、連携情報に含まれる優先度に従って、実行手段のそれぞれを実行させる。このような構成によれば、異なるＯＳ上で動作するアプリケーション同士の起動順序を１つの連携情報が示す副処理間の関係で記載することができ、かつ、起動順序が明確になっているので、アプリケーション同士の連携動作が完了しているかどうかを確認しながら自動的に起動させることができるため、アプリケーションの起動トラブルを軽減させることが期待できる。
【０１０３】
また、本願に開示する情報処理装置は、主処理を実行するための実行手段のいずれかの動作が終了した場合、連携情報に含まれる優先度に基づいて、動作を終了した実行手段が実行する処理よりも優先度の高い処理を行なう実行手段が動作中であるか否かを判断する手段を備え、制御手段は、動作を終了した実行手段が実行する処理よりも優先度の高い処理を行なう実行手段が動作中であると判断された場合、動作を終了した実行手段を起動させる。このような構成によれば、連携情報が示す副処理間の関係を正しい状態として、異なるＯＳ上で動作するアプリケーション・ＯＳの異常状態検出、及び復旧をすることができ、トラブル発生時にユーザが行なう操作負担を軽減することが期待できる。
【図面の簡単な説明】
【０１０４】
【図１】本発明に係る情報処理装置の構成を示すブロック図である。
【図２】アプリケーション動作ファイルの内容を示す模式図である。
【図３】情報処理装置の機能を示す機能ブロック図である。
【図４】情報処理装置の機能を示す機能ブロック図である。
【図５】ゲストＯＳ設定ファイル及び連携設定ファイルの内容を示す模式図である。
【図６】アプリケーション開始時の処理の手順を示すフローチャートである。
【図７】アプリケーション開始時の処理の手順を示すフローチャートである。
【図８】アプリケーション実行中の処理の手順を示すフローチャートである。
【図９】アプリケーション実行中の処理の手順を示すフローチャートである。
【符号の説明】
【０１０５】
１０  情報処理装置
１  ＣＰＵ
２１  ハイパーバイザ（設定手段）
２５  アプリケーション連携管理部（制御手段）
３１  メインＯＳ（実行手段）
３２  設定ファイル生成部（設定情報取得手段、連携情報取得手段）
４１，４２  ゲストＯＳ（実行手段）
４１ａ，４２ａ  アプリケーション状態監視部（監視手段）
【図１】
0005125659.tif 000002
【図２】
0005125659.tif 000003
【図３】
0005125659.tif 000004
【図４】
0005125659.tif 000005
【図５】
0005125659.tif 000006
【図６】
0005125659.tif 000007
【図７】
0005125659.tif 000008
【図８】
0005125659.tif 000009
【図９】
0005125659.tif 000010