(57)【要約】【課題】各仮想マシンに対してハードウェア資源を公平に割り当てることが可能な情報処理装置、情報処理方法及びコンピュータプログラムを提供する。【解決手段】管理ＯＳ用ＶＭ３１は、各ゲストＯＳ用ＶＭのＣＰＵ負荷をＶＭＭ２１から取得して合計値を算出する。管理ＯＳ用ＶＭ３１は、合計値が所定値（例えば９０％）以上であるか否かを判定し、所定値以上である場合、ＣＰＵ負荷が最大のゲストＯＳ用ＶＭ４１に対して処理負荷の低減を要求する。ゲストＯＳ用ＶＭ４１は、処理負荷の低減を要求された場合、ＣＰＵ負荷が最大のアプリケーションプログラムを特定する。ゲストＯＳ用ＶＭ４１は、特定したアプリケーションプログラムに対する制御方法を制御方法テーブル４ｄから取得し、特定したアプリケーションプログラムに対して、取得した制御方法での制御を開始する。【選択図】図６
2010176413.tif 000002
【特許請求の範囲】
【請求項１】
各種の処理を実行する実行手段を複数備える情報処理装置であって、
前記実行手段のそれぞれにおける処理負荷を検出する検出手段と、
該検出手段が検出した処理負荷の合計値が所定値以上であるか否かを判定する判定手段と、
該判定手段によって前記合計値が所定値以上であると判定された場合、前記検出手段が検出した前記実行手段のそれぞれにおける処理負荷に基づいて、動作状態を制御される実行手段を特定する特定手段と、
該特定手段が特定した実行手段が実行中の処理のうちで、実行状態を制御される処理を特定する処理特定手段と、
該処理特定手段が特定した処理の実行状態を制御する制御手段と
を備える情報処理装置。
【請求項２】
前記特定手段は、前記検出手段が検出した前記実行手段のそれぞれにおける処理負荷に基づいて、他の実行手段よりも処理負荷が高い実行手段を特定する請求項１に記載の情報処理装置。
【請求項３】
前記制御手段は、前記処理特定手段が特定した処理の実行状態を、該処理による処理負荷を軽減するように制御する請求項１又は２に記載の情報処理装置。
【請求項４】
前記判定手段は、前記検出手段が検出した処理負荷の合計値が所定値以上である時間を計時し、計時した時間が所定時間以上となった場合に、前記合計値が所定値以上であると判定する請求項１から３までのいずれかひとつに記載の情報処理装置。
【請求項５】
前記特定手段は、前記検出手段が検出した前記実行手段のそれぞれにおける処理負荷と、前記実行手段のそれぞれに対して予め設定された許容負荷とに基づいて、動作状態を制御される実行手段を特定する請求項１から４までのいずれかひとつに記載の情報処理装置。
【請求項６】
各種の処理を実行する複数の実行手段を備える情報処理装置による情報処理方法であって、
前記実行手段のそれぞれにおける処理負荷を検出する検出ステップと、
該検出ステップで検出した処理負荷の合計値が所定値以上であるか否かを判定するステップと、
前記合計値が所定値以上であると判定した場合、前記検出ステップで検出した前記実行手段のそれぞれにおける処理負荷に基づいて、動作状態を制御される実行手段を特定するステップと、
特定した実行手段が実行中の処理のうちで、実行状態を制御される処理を特定するステップと、
特定した処理の実行状態を制御するステップと
を含む情報処理方法。
【請求項７】
コンピュータに、各種の処理を実行する複数の実行手段を備える情報処理装置としての動作を実行させるためのコンピュータプログラムであって、
コンピュータに、
前記実行手段のそれぞれにおける処理負荷を検出する検出ステップと、
該検出ステップで検出した処理負荷の合計値が所定値以上であるか否かを判定するステップと、
前記合計値が所定値以上であると判定した場合、前記検出ステップで検出した前記実行手段のそれぞれにおける処理負荷に基づいて、動作状態を制御される実行手段を特定するステップと、
特定した実行手段が実行中の処理のうちで、実行状態を制御される処理を特定するステップと、
特定した処理の実行状態を制御するステップと
を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化技術が適用され、仮想的に複数の装置としての動作を提供することができる情報処理装置、情報処理方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
近年、仮想マシン（ＶＭ：Virtual Machine）技術が注目を集めている。仮想マシン技術とは、１つのコンピュータ内のハードウェア資源を論理的に分割し、仮想的に複数の独立したコンピュータ（仮想マシン）として動作させる技術である。このように、１つのコンピュータによって複数の仮想マシンの動作を実現することにより、１つのコンピュータを複数のユーザによって共用することができる。
【０００３】
このようなコンピュータでは、各仮想マシンが各種の処理の実行を開始する都度、処理に必要なハードウェア資源を割り当てる場合が多い。しかし、１つのコンピュータが備えるハードウェア資源は有限であるので、各ユーザの仮想マシンの使用状況によって、各仮想マシンに割り当てられるハードウェア資源にばらつきが生じる。即ち、処理負荷の大きい処理を実行している仮想マシンが存在する場合、他の仮想マシンに十分なハードウェア資源を割り当てることができない状況が生じる。このような状況では、処理負荷の大きい処理を実行している仮想マシンが、他の仮想マシンの使用環境に影響を与え、他の仮想マシンにおける操作性が低下する虞がある。
【０００４】
そこで、各仮想マシンに割り当てられるハードウェア資源にばらつきが生じた場合に、各仮想マシンへのハードウェア資源の割り当てを再構築するシステムが提案されている（特許文献１，２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−２０２９５９号公報
【特許文献２】特許第４０１８９００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、各仮想マシンへのハードウェア資源の割り当てを再構築する場合、再構築した割り当てを各仮想マシンに反映させるために、各仮想マシンを再起動させる必要がある。従って、他の仮想マシンに影響を与えていない仮想マシンのユーザも、仮想マシンの使用を一時的に中断させる必要があり、各ユーザに与える影響が非常に大きい。
【０００７】
また、従来技術ではサーバ向けのシステムへの適用を想定しており、仮想マシンの性能を保証する等の目的で予め一定量のハードウェア資源を仮想マシンに割り当てておくことが多い。しかし、高負荷な処理を行ないハードウェア資源を大量に消費した仮想マシンが存在した場合に、各仮想マシンに割り当て可能なハードウェア資源に上限があるため、たとえ余剰なハードウェア資源が存在しても、高負荷な仮想マシンへ割り当てることができずハードウェア資源を効率的に利用できない。そこで、各仮想マシンが処理を実行する度にその処理に必要なハードウェア資源を割り当てることで、ハードウェア資源を効率的に利用することは可能である。その場合、各仮想マシンの処理負荷状況に応じてハードウェア資源の割り当てにばらつきが生じる。つまり、処理負荷の高い仮想マシンにはハードウェア資源が多く割り当てられ、その他の仮想マシンに影響を与えてしまうことになる。
【０００８】
本発明は斯かる事情に鑑みてなされたものであり、その目的とするところは、動作中の各仮想マシン（実行手段）に影響を与えずに、各仮想マシンに対してハードウェア資源を公平に割り当てることが可能な情報処理装置、情報処理方法及びコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本願に開示する情報処理装置は、各種の処理を実行する複数の実行手段を備える情報処理装置であって、実行手段のそれぞれにおける処理負荷を検出し、検出した処理負荷の合計値が所定値以上であるか否かを判定する。また、本願に開示する情報処理装置は、処理負荷の合計値が所定値以上であると判定した場合、実行手段のそれぞれにおける処理負荷に基づいて、動作状態を制御される実行手段を特定する。更に、本願に開示する情報処理装置は、特定した実行手段が実行中の処理のうちで、実行状態を制御される処理を特定し、特定した処理の実行状態を制御する。
【００１０】
本願に開示する情報処理装置によれば、複数の実行手段のそれぞれにおける処理負荷の合計値が所定値以上となった場合に、いずれかの実行手段において実行中のいずれかの処理の実行状態が制御される。
【発明の効果】
【００１１】
本願に開示する情報処理装置では、複数の実行手段のそれぞれにおける処理負荷の合計値が所定値以上となった場合に、各実行手段に影響を与えずに、各実行手段における処理負荷の均衡を保つことができる。よって、各実行手段を使用する各ユーザの操作性を平等に確保できる。
【図面の簡単な説明】
【００１２】
【図１】実施形態１のＰＣの構成を示す模式図である。
【図２】実施形態１のＰＣの構成を示すブロック図である。
【図３】各テーブルの格納内容を示す模式図である。
【図４】各テーブルの格納内容を示す模式図である。
【図５】実施形態１のＰＣの機能を示す機能ブロック図である。
【図６】実施形態１のＰＣの機能を示す機能ブロック図である。
【図７】表示画面の構成を示す模式図である。
【図８】各テーブルの格納内容を示す模式図である。
【図９】管理ＯＳ用ＶＭによるゲストＯＳ用ＶＭの起動処理の手順を示すフローチャートである。
【図１０】実施形態１の負荷制御処理の手順を示すフローチャートである。
【図１１】実施形態１の負荷制御処理の手順を示すフローチャートである。
【図１２】実施形態１の負荷監視処理の手順を示すフローチャートである。
【図１３】実施形態１の負荷監視処理の手順を示すフローチャートである。
【図１４】ゲストＯＳ用ＶＭの終了処理の手順を示すフローチャートである。
【図１５】実施形態２の負荷制御処理の手順を示すフローチャートである。
【図１６】実施形態２の負荷制御処理の手順を示すフローチャートである。
【図１７】実施形態３のＰＣの機能を示す機能ブロック図である。
【図１８】優先度テーブルの格納内容を示す模式図である。
【図１９】優先利用の設定処理の手順を示すフローチャートである。
【図２０】実施形態３の負荷制御処理の手順を示すフローチャートである。
【図２１】実施形態３の負荷制御処理の手順を示すフローチャートである。
【図２２】ＣＰＵを割り当てる際の優先度を下げる処理に用いる設定情報を示す図である。
【図２３】実施形態６のＰＣの構成を示すブロック図である。
【発明を実施するための形態】
【００１３】
以下に、本願に開示する情報処理装置、情報処理方法及びコンピュータプログラムを、各実施形態を示す図面に基づいて詳述する。以下では、本願に開示する情報処理装置をパーソナルコンピュータ（以下、ＰＣという）に適用した各実施形態について説明する。
【００１４】
（実施形態１）
以下に、実施形態１に係るＰＣについて説明する。図１は実施形態１のＰＣの構成を示す模式図である。本実施形態１のＰＣ１０は、筺体に６つのＵＳＢ（Universal Serial Bus）ポート５ａ，５ａ…及び３つのモニタ接続ポート６ａ，６ａ…を有する。図１では、ＰＣ１０の側面の下方に水平方向に６つ並べて示したポートがＵＳＢポート５ａ，５ａ…であり、ＵＳＢポート５ａ，５ａ…の上方に水平方向に３つ並べて示したポートがモニタ接続ポート６ａ，６ａ…である。
【００１５】
本実施形態１のＰＣ１０には、ＵＳＢポート５ａ，５ａ…に接続されたＵＳＢケーブルを介して、３つのキーボード５１ｂ，５２ｂ，５３ｂ及び３つのマウス５１ｃ，５２ｃ，５３ｃが接続されている。また、本実施形態１のＰＣ１０には、モニタ接続ポート６ａ，６ａ…に接続されたモニタ接続用ケーブルを介して３つのモニタ５１ａ，５２ａ，５３ａが接続されている。
【００１６】
従って、本実施形態１のＰＣ１０では、モニタ５１ａ（５２ａ，５３ａ）、キーボード５１ｂ（５２ｂ，５３ｂ）及びマウス５１ｃ（５２ｃ，５３ｃ）をそれぞれ含む入出力デバイスセット５１（５２，５３）を３つ設置することができる。しかし、本願に開示する情報処理装置を適用できるＰＣは、このような構成に限られない。例えば、ＵＳＢポート５ａ，５ａ…の数は６つに限られず、モニタ接続ポート６ａ，６ａ…の数は３つに限られない。また、１つのＵＳＢポート５ａにＵＳＢハブを接続し、ＵＳＢハブを介して複数のキーボード及びマウスを接続させたＰＣ１０にも、本願に開示する情報処理装置を適用することができる。
【００１７】
図２は実施形態１のＰＣ１０の構成を示すブロック図である。本実施形態１のＰＣ１０は、ＣＰＵ（Central Processing Unit）１、ＲＯＭ（Read Only Memory）２、ＲＡＭ（Random Access Memory）３、ハードディスクドライブ（以下、ＨＤＤという）４、ＵＳＢインタフェース５、モニタインタフェース６等のハードウェア各部を備える。これらのハードウェア各部はバス１ａを介して相互に接続されている。
【００１８】
ＣＰＵ１は、ＲＯＭ２又はＨＤＤ４に予め格納されている制御プログラムを適宜ＲＡＭ３に読み出して実行すると共に、上述したハードウェア各部の動作を制御する。
ＲＯＭ２は、ＰＣ１０を本願に開示する情報処理装置として動作させるために必要な種々の制御プログラムを予め格納している。ＲＡＭ３は、例えばＳＲＡＭ（Static ＲＡＭ）、ＤＲＡＭ（Dynamic ＲＡＭ）、フラッシュメモリ等である。ＲＡＭ３は、ＣＰＵ１による制御プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００１９】
ＨＤＤ４は大容量の記憶装置である。ＨＤＤ４は、ＰＣ１０を本願に開示する情報処理装置として動作させるために必要な種々の制御プログラム及び各種のデータ等を格納している。ＨＤＤ４は、ＣＰＵ１が読み出して実行する制御プログラムとして、ＶＭＭプログラム２０、管理ＯＳプログラム３０、３つのゲストＯＳプログラム４０、アプリケーションプログラム５０等を格納している。
【００２０】
また、ＨＤＤ４は、図３（ａ）に示すようなデバイステーブル４ａ、図３（ｂ）に示すようなユーザ情報テーブル４ｂ、図３（ｃ）に示すようなＶＭ情報テーブル４ｃ、図３（ｄ）に示すような制御方法テーブル４ｄを格納している。また、ＨＤＤ４は、図４（ａ）に示すようなＶＭデバイス対応テーブル４ｅ、図４（ｂ）に示すようなＶＭ管理テーブル４ｆを格納している。
【００２１】
ＵＳＢインタフェース５には、６つのＵＳＢポート５ａ，５ａ…が接続されている。ＵＳＢインタフェース５は、ＵＳＢポート５ａ，５ａ…にそれぞれ接続されたＵＳＢケーブルを介して接続された機器との間でデータの送受信を行なう。本実施形態１のＵＳＢインタフェース５は、ＵＳＢケーブルを介してキーボード５１ｂ，５２ｂ，５３ｂ及びマウス５１ｃ，５２ｃ，５３ｃと接続されている。従って、ＵＳＢインタフェース５は、キーボード５１ｂ，５２ｂ，５３ｂ及びマウス５１ｃ，５２ｃ，５３ｃとの間でデータの送受信を行なう。
【００２２】
キーボード５１ｂ，５２ｂ，５３ｂ及びマウス５１ｃ，５２ｃ，５３ｃは、ユーザがＰＣ１０を操作するために必要な各種の操作検知装置を備えている。ユーザにより各操作キーが操作された場合、キーボード５１ｂ，５２ｂ，５３ｂ及びマウス５１ｃ，５２ｃ，５３ｃは、操作された操作キーに対応した制御信号を、対応する管理ＯＳ３１ａ又はゲストＯＳ４１ａ，４２ａ，４３ａ（図５，６参照）へ送出する。管理ＯＳ３１ａ及びゲストＯＳ４１ａ，４２ａ，４３ａは、キーボード５１ｂ，５２ｂ，５３ｂ及びマウス５１ｃ，５２ｃ，５３ｃから取得した制御信号に対応した処理を実行する。
【００２３】
モニタインタフェース６には、３つのモニタ接続ポート６ａ，６ａ…が接続されている。本実施形態１のモニタインタフェース６は、モニタ接続ポート６ａ，６ａ…にそれぞれ接続されたモニタ接続用ケーブルを介してモニタ５１ａ，５２ａ，５３ａと接続されている。従って、モニタインタフェース６は、モニタ５１ａ，５２ａ，５３ａとの間でデータの送受信を行なう。
【００２４】
モニタ５１ａ，５２ａ，５３ａは、液晶ディスプレイ又はＣＲＴ（Cathode Ray Tube）ディスプレイ等である。モニタ５１ａ，５２ａ，５３ａは、対応する管理ＯＳ３１ａ又はゲストＯＳ４１ａ，４２ａ，４３ａから、モニタインタフェース６を介して送出されてくるデータに従って、ＰＣ１０（ＶＭ）の動作状態、ユーザによって入力された情報、ユーザに対して通知すべき情報等を表示する。
【００２５】
上述した構成のＰＣ１０において、ＣＰＵ１は、ＨＤＤ４に格納されているＶＭＭ（Virtual Machine Monitor）プログラム２０、管理ＯＳプログラム３０、ゲストＯＳプログラム４０をそれぞれＲＡＭ３に読み出して実行することにより、ＶＭＭ２１、管理ＯＳ３１ａ及びゲストＯＳ４１ａ，４２ａ，４３ａ（図５，６参照）として動作する。
【００２６】
ＶＭＭプログラム２０は、ＰＣ１０において複数（本実施形態１では４つ）のＯＳ（管理ＯＳ３１ａ、ゲストＯＳ４１ａ，４２ａ，４３ａ）が動作する仮想化技術を実現するためのソフトウェアプログラムである。ＣＰＵ１は、ＰＣ１０の起動後にＶＭＭプログラム２０を実行することによりＶＭＭ２１としての動作を開始する。ＣＰＵ１は、ＶＭＭ２１として動作することにより、論理的に複数のＣＰＵ１として動作する。なお、ＣＰＵ１にマルチコアＣＰＵを用いた場合、ＶＭＭ２１、管理ＯＳ３１ａ、ゲストＯＳ４１ａ，４２ａ，４３ａをそれぞれ物理的に異なるＣＰＵコア上に分散させて動作させることができるが、ＣＰＵ１にシングルコアＣＰＵを用いてもよいことは勿論である。
【００２７】
ＣＰＵ１がＶＭＭ２１として動作することにより、ＰＣ１０は、論理的に複数のＰＣとして動作する仮想環境（管理ＯＳ用ＶＭ３１、第１ゲストＯＳ用ＶＭ４１、第２ゲストＯＳ用ＶＭ４２、第３ゲストＯＳ用ＶＭ４３）を提供する。これにより、１つのＰＣ１０において論理的に４つの独立した仮想マシン（ＶＭ）が動作する。
【００２８】
また、ＶＭＭ２１は、各ソフトウェアとハードウェア資源との間の管理を実現し、管理ＯＳ３１ａ及びゲストＯＳ４１ａ，４２ａ，４３ａのそれぞれに対するハードウェアの動作の基本的な制御を行なう。例えば、ＶＭＭ２１は、管理ＯＳ３１ａ及びゲストＯＳ４１ａ，４２ａ，４３ａを起動させる際に、管理ＯＳ３１ａ及びゲストＯＳ４１ａ，４２ａ，４３ａのそれぞれに対して、ＣＰＵ１、ＲＡＭ３、ＨＤＤ４、入出力デバイスセット５１，５２，５３等のハードウェアを割り当てる。
【００２９】
なお、ＲＡＭ３は、ＣＰＵ１がＶＭＭプログラム２０、管理ＯＳプログラム３０及びゲストＯＳプログラム４０等をそれぞれ読み出す際に使用されるほか、ＣＰＵ１が各制御プログラムを読み出して実行し、各処理を行なう際に一時的に各種情報を記憶する。また、ＲＡＭ３は、ＣＰＵ１が管理ＯＳ３１ａ、ゲストＯＳ４１ａ，４２ａ，４３ａとして動作する際に、管理ＯＳ３１ａ、ゲストＯＳ４１ａ，４２ａ，４３ａ毎の設定情報を記憶するためにも使用される。従って、ＲＡＭ３も、ＶＭＭ２１によって論理的に複数のＲＡＭ３に分割され、ＶＭＭ２１、管理ＯＳ３１ａ、ゲストＯＳ４１ａ，４２ａ，４３ａのそれぞれに割り当てられる。
【００３０】
管理ＯＳプログラム３０は、ゲストＯＳ４１ａ，４２ａ，４３ａの動作を正常に維持するために構成されたソフトウェアプログラムであり、通常ユーザが操作できるＣＵＩ（Command User Interface）、ＧＵＩ（Graphic User Interface）等のインタフェースは用意されていない。ＣＰＵ１は、ＰＣ１０の起動後に管理ＯＳプログラム３０を実行することにより管理ＯＳ３１ａとしての動作を開始する。また、管理ＯＳプログラム３０は管理者が操作できるＣＵＩ，ＧＵＩを持っていてもよい。
【００３１】
ゲストＯＳプログラム４０は、ユーザが操作できるＣＵＩ、ＧＵＩを持つＷｉｎｄｏｗｓ （登録商標）、Ｌｉｎｕｘ等のＯＳソフトウェアプログラムである。ＣＰＵ１は、管理ＯＳ３１ａからいずれかのゲストＯＳ用ＶＭ４１，４２，４３の起動指示があった場合に、ゲストＯＳプログラム４０を実行することによりゲストＯＳ４１ａ，４２ａ，４３ａとしての動作を開始する。
【００３２】
ゲストＯＳ４１ａ，４２ａ，４３ａは、実行した処理に応じて表示すべきＣＵＩ，ＧＵＩ等を含む表示画面を生成し、自身に対応付けられているモニタ５１ａ（又は５２ａ，５３ａ）に表示させる。また、ゲストＯＳ４１ａ，４２ａ，４３ａは、自身に対応付けられているキーボード５１ｂ（又は５２ｂ，５３ｂ）及びマウス５１ｃ（又は５２ｃ、５３ｃ）からの制御信号を受け付け、受け付けた制御信号に応じて各種処理を実行する実行手段として機能する。更に、ゲストＯＳ４１ａ，４２ａ，４３ａは、自身のゲストＯＳ用ＶＭ４１，４２，４３における処理負荷を検出しており、検出した処理負荷を逐次ＶＭＭ２１へ通知する。なお、処理負荷としては、例えばＣＰＵ使用率を用いることができる。
【００３３】
アプリケーションプログラム５０は、ゲストＯＳ４１ａ，４２ａ，４３ａのそれぞれによって実行されるソフトウェアプログラムである。ＰＣ１０は、アプリケーションプログラム５０が記録された外部メモリからアプリケーションプログラム５０を読み取ってＨＤＤ４に格納してもよい。また、ＰＣ１０がネットワークに接続するための通信部を備える場合、ＰＣ１０は、ネットワークを介してアプリケーションプログラム５０をダウンロードしてＨＤＤ４に格納させてもよい。
【００３４】
図３及び図４は各テーブルの格納内容を示す模式図である。図３（ａ）はデバイステーブル４ａの格納内容を、図３（ｂ）はユーザ情報テーブル４ｂの格納内容を、図３（ｃ）はＶＭ情報テーブル４ｃの格納内容を、図３（ｄ）は制御方法テーブル４ｄの格納内容をそれぞれ示す。また、図４（ａ）はＶＭデバイス対応テーブル４ｅの格納内容を、図４（ｂ）はＶＭ管理テーブル４ｆの格納内容をそれぞれ示す。
【００３５】
図３（ａ）に示すように、デバイステーブル４ａには、ＰＣ１０に接続されている全ての入出力デバイスセット５１，５２，５３のそれぞれに割り当てられた入出力デバイスＩＤが格納されている。デバイステーブル４ａの格納内容は、ＰＣ１０の初期設定処理時に登録される。なお、モニタ５１ａ（又は５２ａ，５３ａ）、キーボード５１ｂ（又は５２ｂ，５３ｂ）及びマウス５１ｃ（又は５２ｃ，５３ｃ）のそれぞれをまとめて入出力デバイスセット５１（又は５２，５３）として扱う。
【００３６】
図３（ｂ）に示すように、ユーザ情報テーブル４ｂには、ＰＣ１０の使用が可能なユーザのユーザＩＤと、各ユーザによって予め登録されているパスワードとが対応付けて格納されている。ユーザ情報テーブル４ｂの格納内容は、ＰＣ１０の初期設定処理時に登録されると共に、ユーザが自身のＶＭ（ゲストＯＳ用ＶＭ４１，４２，４３）を使用中に自身のパスワードを変更した場合には、対応するゲストＯＳ４１ａ，４２ａ，４３ａによって変更される。
【００３７】
図３（ｃ）に示すように、ＶＭ情報テーブル４ｃには、ＣＰＵ１がゲストＯＳプログラム４０のそれぞれを実行することによって構築されるゲストＯＳ用ＶＭ４１，４２，４３を識別するためのＶＭ−ＩＤと、それぞれのゲストＯＳ用ＶＭ４１，４２，４３を割り当てられているユーザを識別するためのユーザＩＤとが対応付けて格納されている。ＶＭ情報テーブル４ｃの格納内容は、ＰＣ１０の初期設定処理時に登録される。従って、ＰＣ１０は、ＶＭ情報テーブル４ｃに格納されたユーザＩＤのユーザによってのみ使用可能である。なお、各ゲストＯＳ用ＶＭ４１，４２，４３は、自身を割り当てられたユーザのユーザＩＤ、ユーザによって設定された各種の設定情報等を、自身に割り当てられたＲＡＭ３又はＨＤＤ４に格納している。
【００３８】
図３（ｄ）に示すように、制御方法テーブル４ｄには、アプリケーションプログラム５０を識別するためのアプリケーションＩＤ及びアプリケーション名と、各アプリケーションプログラム５０に対して予め設定された制御方法とが対応付けて格納されている。制御方法テーブル４ｄの格納内容は、ＰＣ１０を管理する管理者によって予め登録されている。なお、制御方法テーブル４ｄの格納内容は、ＰＣ１０の管理者によって変更可能としてもよい。
【００３９】
図４（ａ）に示すように、ＶＭデバイス対応テーブル４ｅには、ゲストＯＳ用ＶＭ４１，４２，４３のＶＭ−ＩＤと、各ゲストＯＳ用ＶＭ４１，４２，４３に対応付けられた入出力デバイスセット５１，５２，５３を示す入出力デバイスＩＤとが対応付けて格納されている。ＶＭ−デバイス対応テーブル４ｅの格納内容は、管理ＯＳ３１ａがゲストＯＳ４１ａ，４２ａ，４３ａを起動させた場合に、ゲストＯＳ４１ａ，４２ａ，４３ａのそれぞれに入出力デバイスセット５１，５２，５３を対応付ける都度、管理ＯＳ３１ａによって登録される。また、ＶＭデバイス対応テーブル４ｅの格納内容は、ゲストＯＳ４１ａ，４２ａ，４３ａが動作を終了させた場合に、管理ＯＳ３１ａによって削除される。
【００４０】
図４（ｂ）に示すように、ＶＭ管理テーブル４ｆには、ゲストＯＳ用ＶＭ４１，４２，４３のＶＭ−ＩＤと、各ゲストＯＳ用ＶＭ４１，４２，４３が実行中の処理に対して動作の制御（制限）が行なわれているか否かを示す制御状態情報と、制御が行なわれている場合に制御されている負荷の量を示す負荷変動量とが対応付けて格納されている。ＶＭ管理テーブル４ｆの格納内容は、管理ＯＳ３１ａがゲストＯＳ４１ａ，４２ａ，４３ａを起動させた場合に、管理ＯＳ３１ａによって登録される。
【００４１】
なお、このとき、管理ＯＳ３１ａは、制御情報として「制御なし」を格納し、負荷変動量として「０」を格納する。また、ＶＭ管理テーブル４ｆの格納内容は、管理ＯＳ３１ａがゲストＯＳ４１ａ，４２ａ，４３ａのそれぞれが実行中のアプリケーションプログラム５０の実行状態を制御する都度、又は実行状態の制御を解除する都度、管理ＯＳ３１ａによって更新される。
【００４２】
以下に、上述した構成のＰＣ１０において、ＣＰＵ１が、ＲＯＭ２又はＨＤＤ４に格納されている各種の制御プログラムを実行することによって実現される機能について説明する。図５及び図６は実施形態１のＰＣ１０の機能を示す機能ブロック図である。なお、図５及び図６は、ＰＣ１０が仮想化技術により複数のＰＣ（ＶＭ）として動作する原理を示している。
【００４３】
図５及び図６には、ＰＣ１０において、ＶＭＭ２１の動作により、４つのＶＭ（管理ＯＳ用ＶＭ３１、第１ゲストＯＳ用ＶＭ４１、第２ゲストＯＳ用ＶＭ４２、第３ゲストＯＳ用ＶＭ４３）がそれぞれ独立して実行可能となっていることを示している。なお、ＶＭＭ２１は、ＣＰＵ１、ＲＡＭ３、ＨＤＤ４、入出力デバイスセット５１，５２，５３等を含むハードウェア上で動作する。また、図６では、第２ゲストＯＳ用ＶＭ４２及び第３ゲストＯＳ用ＶＭ４３の図示を省略しているが、第２ゲストＯＳ用ＶＭ４２及び第３ゲストＯＳ用ＶＭ４３は、第１ゲストＯＳ用ＶＭ４１と同様の構成を有する。なお、第１ゲストＯＳ用ＶＭ４１、第２ゲストＯＳＶＭ４２、第３ゲストＯＳ用ＶＭ４３を省略してゲストＯＳ用ＶＭ４１，４２，４３と呼び、第１ゲストＯＳ４１ａ、第２ゲストＯＳ４２ａ、第３ゲストＯＳ４３aを省略してゲストＯＳ４１ａ，４２ａ，４３ａと呼ぶこともある。
【００４４】
本実施形態１のＶＭＭ２１は、ＶＭＭプログラム２０に含まれるモジュールによって、デバイス割当部２２、デバイス振分部２３、負荷状態監視部２４等の機能を有する。また、本実施形態１の管理ＯＳ３１ａは、管理ＯＳプログラム３０に含まれるモジュールによって、起動要求受付部３１ｂ、ＶＭ起動部３１ｃ、ＶＭ負荷監視部３１ｄ、ＶＭ負荷判定部３１ｅ、ＶＭ通知部３１ｆ等の機能を有する。また、本実施形態１のゲストＯＳ４１ａは、ゲストＯＳプログラム４０に含まれるモジュールによって、負荷解析部４１ｂ、制御方法特定部４１ｃ、制御部４１ｄ等の機能を有する。
【００４５】
本実施形態１のＰＣ１０に電源が投入され、ＰＣ１０のハードウェア各部の起動が完了した場合、ＣＰＵ１は、まず、ＶＭＭプログラム２０をＨＤＤ４から読み出して実行することによりＶＭＭ（仮想マシンモニタ）２１としての動作を開始する。
【００４６】
ＶＭＭ２１は、起動後、管理ＯＳプログラム３０をＨＤＤ４から読み出して実行することにより管理ＯＳ３１ａの動作を開始させる。このとき、ＶＭＭ２１は、管理ＯＳ３１ａに使用されるハードウェアの割り当て等を行ない、管理ＯＳ用ＶＭ３１を起動させる。
【００４７】
管理ＯＳ用ＶＭ３１の起動直後は、入出力デバイスセット５１，５２，５３の全てが管理ＯＳ３１ａに割り当てられる。即ち、管理ＯＳ３１ａは、ＶＭＭ２１のデバイス振分部２３を介して全ての入出力デバイスセット５１，５２，５３と接続されている。また、管理ＯＳ３１ａは、起動直後は、全てのモニタ５１ａ，５２ａ，５３ａに、図７（ａ）に示すようなログイン画面を表示させる。
【００４８】
図７は表示画面の構成を示す模式図である。図７（ａ）に示したログイン画面は、ユーザＩＤ及びパスワードの入力欄、ＯＫボタン及びキャンセルボタンを表示する。ＰＣ１０を使用したいユーザは、入出力デバイスセット５１，５２，５３のいずれかを用いてユーザＩＤ及びパスワードを入力する。
【００４９】
入出力デバイスセット５１，５２，５３のいずれかを用いてユーザＩＤ及びパスワードが入力され、ＯＫボタンが選択された場合、使用された入出力デバイスセット５１（又は５２，５３）は、入力されたユーザＩＤ及びパスワードを管理ＯＳ３１ａへ送出する。なお、入出力デバイスセット５１（又は５２，５３）は、ユーザＩＤ及びパスワードを、ＶＭＭ２１のデバイス振分部２３を介して管理ＯＳ３１ａへ送出する。
【００５０】
いずれかの入出力デバイスセット５１（又は５２，５３）から管理ＯＳ３１ａへユーザＩＤ及びパスワードの送出処理が開始された場合、デバイス振分部２３は、他の入出力デバイスセット５２，５３（又は５１）からのデータの管理ＯＳ３１ａへの転送を禁止する。これにより、複数の入出力デバイスセット５１，５２，５３から同時に管理ＯＳ３１ａへデータが転送されることを防止できる。
【００５１】
管理ＯＳ３１ａは、いずれかの入出力デバイスセット５１（又は５２，５３）からユーザＩＤ及びパスワードを取得した場合、ユーザＩＤ及びパスワードを送出してきた入出力デバイスセット５１（又は５２，５３）を特定する。そして、管理ＯＳ３１ａは、取得したユーザＩＤ及びパスワードを起動要求受付部３１ｂへ送出する。
【００５２】
起動要求受付部３１ｂは、管理ＯＳ３１ａからユーザＩＤ及びパスワードを取得した場合、ユーザ情報テーブル４ｂの格納内容に基づいて認証を行なう。具体的には、起動要求受付部３１ｂは、取得したユーザＩＤ及びパスワードがユーザ情報テーブル４ｂに格納されているか否かを判断する。起動要求受付部３１ｂは、取得したユーザＩＤ及びパスワードがユーザ情報テーブル４ｂに格納されていると判断した場合、認証できた旨を管理ＯＳ３１ａに返す。
【００５３】
一方、取得したユーザＩＤ及びパスワードがユーザ情報テーブル４ｂに格納されていないと判断した場合、起動要求受付部３１ｂは、認証できなかった旨を管理ＯＳ３１ａに返す。認証できなかった旨を起動要求受付部３１ｂから通知された場合、管理ＯＳ３１ａは、例えば「ユーザＩＤまたはパスワードが誤りです」のようなエラーメッセージを、ユーザＩＤ及びパスワードを送出してきた入出力デバイスセット５１（又は５２，５３）のモニタ５１ａ（又は５２ａ，５３ａ）に表示させる。そして、管理ＯＳ３１ａは、図７（ａ）に示したログイン画面を再度表示させる。なお、このとき、ＶＭＭ２１のデバイス振分部２３は、データの転送を禁止されていた入出力デバイスセット５２，５３（又は５１）からのデータの管理ＯＳ３１ａへの転送を再開する。
【００５４】
認証できた旨を起動要求受付部３１ｂから通知された場合、管理ＯＳ３１ａは、取得したユーザＩＤ及びこのユーザＩＤを送出してきた入出力デバイスセット５１（又は５２，５３）の情報をＶＭ起動部３１ｃへ通知する。
【００５５】
ＶＭ起動部３１ｃは、管理ＯＳ３１ａからユーザＩＤ及び入出力デバイスセット５１（又は５２，５３）の情報を通知された場合、通知されたユーザＩＤに対応するＶＭ−ＩＤをＶＭ情報テーブル４ｃから読み出す。ＶＭ起動部３１ｃは、ＶＭ情報テーブル４ｃから読み出したＶＭ−ＩＤに対応するゲストＯＳ用ＶＭを起動させ、ゲストＯＳプログラム４０をＨＤＤ４から読み出して実行することによりゲストＯＳ４１ａ（又は４２ａ，４３ａ）の動作を開始させる。
【００５６】
このとき、ＶＭＭ２１は、ゲストＯＳ用ＶＭ４１（又は４２，４３）に使用されるハードウェアの割り当て等を行ない、ゲストＯＳ用ＶＭ４１（又は４２，４３）を起動させる。なお、ゲストＯＳ用ＶＭ４１（又は４２，４３）に割り当てるハードウェアとしては、例えば、ＣＰＵ１、ＲＡＭ３、ＨＤＤ４、管理ＯＳ３１ａから通知された入出力デバイスセット５１（又は５２，５３）等がある。
【００５７】
なお、各ユーザが自身のゲストＯＳ用ＶＭ４１（又は４２，４３）に対して設定した各種の設定情報を、ゲストＯＳ用ＶＭ４１（又は４２，４３）を起動させる際に読み込ませることにより、各ユーザに対応したゲストＯＳ用ＶＭ４１（又は４２，４３）を起動させる。以下では、ゲストＯＳ４１ａ（又は４２ａ，４３ａ）を単にゲストＯＳ４１ａと言い、ゲストＯＳ用ＶＭ４１（又は４２，４３）を単にゲストＯＳ用ＶＭ４１と言い、入出力デバイスセット５１（又は５２，５３）を単に入出力デバイスセット５１と言う。
【００５８】
ゲストＯＳ用ＶＭ４１を起動させた場合、ＶＭ起動部３１ｃは、起動させたゲストＯＳ用ＶＭ４１のＶＭ−ＩＤと、起動させたゲストＯＳ用ＶＭ４１に割り当てた入出力デバイスセット５１の入出力デバイスＩＤとをＶＭＭ２１に通知する。また、ＶＭ起動部３１ｃは、起動させたゲストＯＳ用ＶＭ４１のＶＭ−ＩＤをＶＭ管理テーブル４ｆに登録する。このとき、ＶＭ起動部３１ｃは、制御状態情報として「制御なし」を、負荷変動量として「０」をそれぞれＶＭ管理テーブル４ｆに格納させる。
【００５９】
ゲストＯＳ用ＶＭ４１のＶＭ−ＩＤと、ゲストＯＳ用ＶＭ４１に割り当てられた入出力デバイスセット５１の入出力デバイスＩＤとを通知されたＶＭＭ２１では、デバイス割当部２２が、通知されたＶＭ−ＩＤと入出力デバイスＩＤとを対応付けてＶＭデバイス対応テーブル４ｅに格納させる。
【００６０】
デバイス振分部２３は、ＶＭデバイス対応テーブル４ｅの格納内容に従って、ゲストＯＳ４１ａ，４２ａ，４３ａからの出力情報を、それぞれ対応する入出力デバイスセット５１，５２，５３へ転送する。具体的には、デバイス振分部２３は、ゲストＯＳ４１ａ，４２ａ，４３ａからの出力情報を取得した場合、ゲストＯＳ４１ａ，４２ａ，４３ａに対応するゲストＯＳ用ＶＭ４１，４２，４３のＶＭ−ＩＤを特定する。そして、デバイス振分部２３は、特定したＶＭ−ＩＤに対応付けてＶＭデバイス対応テーブル４ｅに格納されている入出力デバイスＩＤの入出力デバイスセット５１，５２，５３を特定し、特定した入出力デバイスセット５１，５２，５３へ転送する。
【００６１】
また、デバイス振分部２３は、ＶＭデバイス対応テーブル４ｅの格納内容に従って、入出力デバイスセット５１，５２，５３のそれぞれからの入力情報を、それぞれ対応するゲストＯＳ用ＶＭ４１，４２，４３（ゲストＯＳ４１ａ，４２ａ，４３ａ）へ転送する。これにより、入出力デバイスセット５１，５２，５３のそれぞれは、対応するゲストＯＳ４１ａ，４２ａ，４３ａに対するダイレクトＩ／Ｏ（Input/Output）として機能することができる。
【００６２】
従って、起動されたゲストＯＳ用ＶＭ４１のＶＭ−ＩＤと入出力デバイスＩＤとがＶＭデバイス対応テーブル４ｅに格納されることにより、ゲストＯＳ用ＶＭ４１の使用環境を、入出力デバイスセット５１を介して提供できる。よって、ユーザＩＤ及びパスワードを入力したユーザは、自身が使用する入出力デバイス５１（又は５２，５３）において、自身に割り当てられているゲストＯＳ用ＶＭ４１（又は４２，４３）の使用を開始できる。
【００６３】
なお、起動されたゲストＯＳ用ＶＭ４１のＶＭ−ＩＤと入出力デバイスＩＤとがＶＭデバイス対応テーブル４ｅに格納された場合、ＶＭＭ２１のデバイス振分部２３は、禁止していた入出力デバイスセット５２，５３（又は５１）から管理ＯＳ３１ａへのデータの転送を再開する。
【００６４】
本実施形態１のＰＣ１０では、入出力デバイスセット５１，５２，５３とゲストＯＳ４１ａ，４２ａ，４３ａとの間のデータのやりとりをＶＭＭ２１のデバイス振分部２３が行なう。しかし、例えば、ＶＭＭ２１を介さずに、入出力デバイスセット５１，５２，５３とゲストＯＳ４１ａ，４２ａ，４３ａとが直接的にデータのやりとりを行なってもよい。
【００６５】
また、ＶＭＭ２１だけでなく管理ＯＳ３１ａを更に介して、入出力デバイスセット５１，５２，５３とゲストＯＳ４１ａ，４２ａ，４３ａとの間のデータのやりとりを行なってもよい。この場合は、管理ＯＳ３１ａが、デバイス振分部２３の機能を備え、ゲストＯＳ４１ａ，４２ａ，４３ａからの出力情報をＶＭＭ２１を介して取得し、対応する入出力デバイスセット５１，５２，５３へ転送する。また、管理ＯＳ３１ａが、入出力デバイスセット５１，５２，５３からの入力情報を取得し、それぞれ対応するゲストＯＳ４１ａ，４２ａ，４３ａへＶＭＭ２１を介して転送する。
【００６６】
ＶＭＭ２１の負荷状態監視部（検出手段）２４は、起動後のゲストＯＳ用ＶＭ４１，４２，４３のそれぞれにおける処理負荷を監視しており、監視した処理負荷を、図８（ａ）に示すようなＶＭ負荷テーブル４ｇで管理している。図８は各テーブルの格納内容を示す模式図である。図８（ａ）はＶＭ負荷テーブル４ｇの格納内容を、図８（ｂ）は後述する実行プロセステーブル４ｈの格納内容を、図８（ｃ）は後述する制御状態管理テーブル４ｉの格納内容をそれぞれ示す。
【００６７】
図８（ａ）に示すように、ＶＭ負荷テーブル４ｇには、ゲストＯＳ用ＶＭ４１，４２，４３のＶＭ−ＩＤと、各ゲストＯＳ用ＶＭ４１，４２，４３におけるＣＰＵ負荷とが対応付けて格納されている。ＶＭ負荷テーブル４ｇの格納内容は、管理ＯＳ３１ａがゲストＯＳ用ＶＭ４１，４２，４３を起動させる都度、負荷状態監視部２４によって登録される。また、ＶＭ負荷テーブル４ｇの格納内容は、負荷状態監視部２４が各ゲストＯＳＶＭ４１，４２，４３における処理負荷（ＣＰＵ負荷）を検出する都度、負荷状態監視部２４によって更新される。更に、ＶＭ負荷テーブル４ｇの格納内容は、各ゲストＯＳ用ＶＭ４１，４２，４３が動作を終了させる都度、負荷状態監視部２４によって削除される。
【００６８】
管理ＯＳ用ＶＭ３１のＶＭ負荷監視部３１ｄは、ＶＭＭ２１の負荷状態監視部２４を介して定期的（例えば１秒毎）にＶＭ負荷テーブル４ｇに格納された各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷を取得する。ＶＭ負荷監視部３１ｄは、取得した各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷の合計値を算出し、算出した合計値と、ＶＭＭ２１の負荷状態監視部２４から取得した各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷とをＶＭ負荷判定部３１ｅに通知する。
【００６９】
なお、ここでＶＭ負荷監視部３１ｄが各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷を取得するタイミング（例えば１秒毎）は、例えば管理ＯＳ用ＶＭ３１に割り当てられたＨＤＤ４に予め格納されている。また、この時間は、例えばＰＣ１０の管理者等によって変更可能である。
【００７０】
ＶＭ負荷判定部（判定手段）３１ｅは、ＶＭ負荷監視部３１ｄから取得したＣＰＵ負荷の合計値が所定値（例えば９０％）以上であるか否かを判定する。ＶＭ負荷判定部３１ｅは、ＣＰＵ負荷の合計値が所定値（例えば９０％）未満であると判定した場合、ＰＣ１０が高負荷状態ではないと判断して何も行なわない。なお、ここでＣＰＵ負荷の合計値と比較する所定値は、例えば管理ＯＳ用ＶＭ３１に割り当てられたＨＤＤ４に予め格納されている。また、この所定値は、例えばＰＣ１０の管理者等によって変更可能である。
【００７１】
ＶＭ負荷判定部３１ｅは、ＣＰＵ負荷の合計値が所定値（例えば９０％）以上であると判定した場合、ＰＣ１０が高負荷状態であると判断する。そして、ＶＭ負荷判定部（特定手段）３１ｅは、各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷に基づいて、ＣＰＵ負荷が最大のゲストＯＳ用ＶＭ４１（又は４２，４３）を動作制御の対象に特定する。ＶＭ負荷判定部３１ｅは、特定したゲストＯＳ用ＶＭ４１（又は４２，４３）をＶＭ通知部３１ｆに通知する。
【００７２】
ＶＭ通知部３１ｆは、ＶＭ負荷判定部３１ｅから通知されたゲストＯＳ用ＶＭ４１（又は４２，４３）のゲストＯＳ４１ａ（又は４２ａ，４３ａ）に対して、処理負荷の低減（軽減）を要求する。なお、このとき、ＶＭ通知部３１ｆは、ＶＭ負荷監視部３１ｄがＶＭ負荷テーブル４ｇから取得したゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷のうちで、処理負荷の低減を要求するゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷を保持しておく。
【００７３】
ゲストＯＳ用ＶＭ４１において、ゲストＯＳ４１ａは、ＨＤＤ４に格納してあるアプリケーションプログラム５０の実行を開始した場合に、各アプリケーションプログラム５０における処理負荷（ＣＰＵ負荷）の監視を開始する。ゲストＯＳ４１ａは、監視した各アプリケーションプログラム５０における処理負荷を、図８（ｂ）に示すような実行プロセステーブル４ｈで管理している。
【００７４】
図８（ｂ）に示すように、実行プロセステーブル４ｈには、ゲストＯＳ４１ａが実行中のアプリケーションプログラム５０のアプリケーションＩＤと、各アプリケーションプログラム５０における処理負荷（ＣＰＵ負荷）とが対応付けて格納されている。実行プロセステーブル４ｈの格納内容は、ゲストＯＳ４１ａがアプリケーションプログラム５０を実行させる都度、ゲストＯＳ４１ａによって登録される。また、実行プロセステーブル４ｈの格納内容は、ゲストＯＳ４１ａが実行中のアプリケーションプログラム５０における処理負荷を検出する都度、ゲストＯＳ４１ａによって更新される。更に、実行プロセステーブル４ｈの格納内容は、ゲストＯＳ４１ａがアプリケーションプログラム５０の実行を終了させる都度、ゲストＯＳ４１ａによって削除される。
【００７５】
ゲストＯＳ４１ａは、管理ＯＳ用ＶＭ３１のＶＭ通知部３１ｆから処理負荷の低減を要求された場合、その旨を負荷解析部４１ｂに通知する。負荷解析部（処理特定手段）４１ｂは、処理負荷の低減の要求を通知された場合、実行プロセステーブル４ｈの格納内容に基づいて、実行中のアプリケーションプログラム５０のうちで、ＣＰＵ負荷が最大のアプリケーションプログラム５０を特定する。なお、図８（ｂ）に示した実行プロセステーブル４ｈでは、アプリケーションＩＤが「４」のアプリケーションプログラム５０が、ＣＰＵ負荷が最大のアプリケーションプログラム５０に特定される。
【００７６】
負荷解析部４１ｂは、特定したアプリケーションプログラム５０のアプリケーションＩＤを制御方法特定部４１ｃに通知する。制御方法特定部４１ｃは、アプリケーションＩＤを通知された場合、制御方法テーブル４ｄの格納内容に基づいて、負荷解析部４１ｂによって特定されたアプリケーションプログラム５０における処理負荷を低減させるための制御方法を取得する。なお、ここでは、制御方法特定部４１ｃは、アプリケーションＩＤが「４」のアプリケーションプログラム５０の制御方法として「一時停止」を取得する。制御方法特定部４１ｃは、取得した制御方法と、負荷解析部４１ｂから通知されたアプリケーションＩＤとを制御部４１ｄに通知する。
【００７７】
制御部（制御手段）４１ｄは、制御方法特定部４１ｃからアプリケーションＩＤ及び制御方法を通知された場合、アプリケーションＩＤが示すアプリケーションプログラム５０の実行状態を、通知された制御方法で制御する処理を開始する。なお、このとき、制御部４１ｄは、対応するモニタ５１ａ（又は５２ａ，５３ａ）に、図７（ｂ）に示すような通知画面を表示させ、アプリケーションプログラム５０の実行制御（実行制限）が開始される旨をユーザに通知しておく。
【００７８】
図７（ｂ）に示した通知画面は、使用中のゲストＯＳ用ＶＭ４１における処理負荷が大きいので現在実行中のアプリケーションプログラム５０の動作を一時停止させる旨をユーザに通知する。これにより、ユーザは、アプリケーションプログラム５０の実行を制御（制限）する処理が開始される前にその旨を把握できる。
【００７９】
制御部４１ｄは、アプリケーションプログラム５０の実行制御を開始した後、アプリケーションプログラム５０における処理負荷（ＣＰＵ負荷）を検出し、実行プロセステーブル４ｈに格納されていた処理負荷からの負荷変動量を算出する。制御部４１ｄは、算出した負荷変動量を、図８（ｃ）に示すような制御状態管理テーブル４ｉに格納する。これにより、制御部４１ｄは、アプリケーションプログラム５０の実行状態が制御されることによって低減された処理負荷（負荷変動量）を制御状態管理テーブル４ｉで管理できる。
【００８０】
図８（ｃ）に示すように、制御状態管理テーブル４ｉには、制御部４１ｄによって動作状態が制御中のアプリケーションプログラム５０のアプリケーションＩＤと、実行状態を制御されることによって低減されている負荷変動量とが対応付けて格納されている。制御状態管理テーブル４ｉの格納内容は、制御部４１ｄがアプリケーションプログラム５０の実行制御を開始する都度、制御部４１ｄによって登録される。また、制御状態管理テーブル４ｉの格納内容は、制御部４１ｄがアプリケーションプログラム５０の実行制御を終了する都度、制御部４１ｄによって削除される。
【００８１】
制御部４１ｄは、アプリケーションプログラム５０の実行制御を開始した場合、その旨を管理ＯＳ用ＶＭ３１のＶＭ通知部３１ｆに通知する。ＶＭ通知部３１ｆは、アプリケーションプログラム５０の実行制御の開始を通知された場合、通知してきたゲストＯＳ用ＶＭ４１（又は４２，４３）に関してＶＭ管理テーブル４ｆに格納されている情報を更新する。具体的には、ＶＭ通知部３１ｆは、通知してきたゲストＯＳ用ＶＭ４１（又は４２，４３）の制御状態情報を「制御中」に更新する。
【００８２】
また、ＶＭ通知部３１ｆは、ゲストＯＳ用ＶＭ４１（又は４２，４３）に処理負荷の低減を要求する際に保持しておいたＣＰＵ負荷と、新たにＶＭ負荷監視部３１ｄがＶＭ負荷テーブル４ｇから取得したゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷との差分値を算出する。そして、ＶＭ通知部３１ｆは、ＶＭ負荷テーブル４ｇに格納されているゲストＯＳ用ＶＭ４１（又は４２，４３）の負荷変動量に、算出した差分値を加算して更新する。これにより、管理ＯＳ用ＶＭ３１は、各ゲストＯＳ用ＶＭ４１，４２，４３において実行制御中のアプリケーションプログラム５０があるか否かを管理でき、ある場合には実行状態が制御されることによって低減されている処理負荷を把握できる。
【００８３】
上述したように、いずれかのゲストＯＳ用ＶＭ４１，４２，４３で実行中のアプリケーションプログラム５０の実行状態が制御されているＰＣ１０において、管理ＯＳ用ＶＭ３１のＶＭ負荷判定部３１ｅは、いずれかのアプリケーションプログラム５０の実行制御を解除できるか否かを監視している。具体的には、ＶＭ負荷判定部３１ｅは、定期的（例えば１秒毎）にＶＭ負荷監視部３１ｄから取得する各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷の合計値と、ＶＭ管理テーブル４ｆの格納内容とに基づいて、実行制御を解除できるアプリケーションプログラム５０があるか否かを判断する。
【００８４】
ＶＭ負荷判定部３１ｅは、まず、ＶＭ管理テーブル４ｆに格納されている負荷変動量に基づいて、負荷変動量が最小のゲストＯＳ用ＶＭ４１（又は４２，４３）を特定する。ＶＭ負荷判定部３１ｅは、ＶＭ負荷監視部３１ｄから取得する各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷の合計値に、最小の負荷変動量を加算した加算値が、所定値（例えば９０％）以上となるか否かを判定する。ＶＭ負荷判定部３１ｅは、加算値が所定値以上となると判定した場合、実行制御を解除すればＰＣ１０が高負荷状態となると判断して何も行なわない。
【００８５】
ＶＭ負荷判定部３１ｅは、加算値が所定値未満となると判定した場合、実行制御を解除してもＰＣ１０が高負荷状態とはならないと判断する。そして、ＶＭ負荷判定部３１ｅは、最小の負荷変動量であると特定したゲストＯＳ用ＶＭ４１（又は４２，４３）を、動作制御の解除対象としてＶＭ通知部３１ｆに通知する。
【００８６】
ＶＭ通知部３１ｆは、動作制御の解除対象としてＶＭ負荷判定部３１ｅから通知されたゲストＯＳ用ＶＭ４１（又は４２，４３）のゲストＯＳ４１ａ（又は４２ａ，４３ａ）に対して、動作制御の解除を要求する。なお、このとき、ＶＭ通知部３１ｆは、ＶＭ負荷監視部３１ｄがＶＭ負荷テーブル４ｇから取得したゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷のうちで、動作制御の解除を要求するゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷を保持しておく。
【００８７】
ゲストＯＳ４１ａは、管理ＯＳ用ＶＭ３１のＶＭ通知部３１ｆから動作制御の解除を要求された場合、その旨を負荷解析部４１ｂに通知する。負荷解析部４１ｂは、動作制御の解除の要求を通知された場合、制御状態管理テーブル４ｉの格納内容に基づいて、実行制御中のアプリケーションプログラム５０のうちで、負荷変動量が最小のアプリケーションプログラム５０を特定する。
【００８８】
負荷解析部４１ｂは、特定したアプリケーションプログラム５０のアプリケーションＩＤを、実行制御の解除対象として制御方法特定部４１ｃに通知する。制御方法特定部４１ｃは、実行制御の解除対象としてアプリケーションＩＤを通知された場合、制御方法テーブル４ｄの格納内容に基づいて、負荷解析部４１ｂによって特定されたアプリケーションプログラム５０に対する制御方法を取得する。制御方法特定部４１ｃは、取得した制御方法と、負荷解析部４１ｂから通知されたアプリケーションＩＤとを、実行制御の解除対象として制御部４１ｄに通知する。
【００８９】
制御部４１ｄは、実行制御の解除対象として制御方法特定部４１ｃからアプリケーションＩＤ及び制御方法を通知された場合、通知された制御方法によってアプリケーションＩＤが示すアプリケーションプログラム５０に対して行なわれていた実行制御を解除する。なお、このとき、制御部４１ｄは、対応するモニタ５１ａ（又は５２ａ，５３ａ）に、図７（ｃ）に示すような通知画面を表示させ、アプリケーションプログラム５０の実行制御が解除される旨をユーザに通知しておく。
【００９０】
図７（ｃ）に示した通知画面は、実行可能となったので現在実行制御（制限）中のアプリケーションプログラム５０の動作を再開させる旨をユーザに通知する。これにより、ユーザは、アプリケーションプログラム５０の動作が再開される前にその旨を把握できる。
制御部４１ｄは、アプリケーションプログラム５０の実行制御を解除した後、実行制御を解除させたアプリケーションプログラム５０の情報を制御状態管理テーブル４ｉから削除する。
【００９１】
また、制御部４１ｄは、アプリケーションプログラム５０の実行制御を解除した場合、その旨を管理ＯＳ用ＶＭ３１のＶＭ通知部３１ｆに通知する。ＶＭ通知部３１ｆは、アプリケーションプログラム５０の実行制御の解除を通知された場合、通知してきたゲストＯＳ用ＶＭ４１（又は４２，４３）に関してＶＭ管理テーブル４ｆに格納されている情報を更新する。
【００９２】
ＶＭ通知部３１ｆは、まず、ゲストＯＳ用ＶＭ４１（又は４２，４３）におけるアプリケーションプログラム５０の実行制御を解除することによって増加する処理負荷（負荷変動量）を算出する。具体的には、ＶＭ通知部３１ｆは、ゲストＯＳ用ＶＭ４１（又は４２，４３）に動作制御の解除を要求する際に保持しておいたＣＰＵ負荷と、新たにＶＭ負荷監視部３１ｄがＶＭ負荷テーブル４ｇから取得したゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷との差分値（増加する負荷変動量）を算出する。そして、ＶＭ通知部３１ｆは、ＶＭ管理テーブル４ｆに格納されているゲストＯＳ用ＶＭ４１（又は４２，４３）の負荷変動量から、算出した差分値を減算してＶＭ管理テーブル４ｆを更新する。
【００９３】
更に、ＶＭ通知部３１ｆは、更新したゲストＯＳ用ＶＭ４１（又は４２，４３）の負荷変動量が０であれば、ＶＭ管理テーブル４ｆに格納されているゲストＯＳ用ＶＭ４１（又は４２，４３）の制御状態情報を「制御なし」に更新する。
これにより、管理ＯＳ用ＶＭ３１は、各ゲストＯＳ用ＶＭ４１，４２，４３について、アプリケーションプログラム５０の実行状態の制御、又は制御の解除によって増減する処理負荷をリアルタイムで把握できる。
【００９４】
上述したように、本実施形態１のＰＣ１０は、動作中の各ゲストＯＳ用ＶＭ４１，４２，４３の処理負荷が大きくなった場合に、いずれかのゲストＯＳ用ＶＭ４１，４２，４３が実行中のアプリケーションプログラム５０の動作を制御する。よって、ＰＣ１０全体としての処理負荷が低減され、各ゲストＯＳ用ＶＭ４１，４２，４３における操作性が確保できる。
【００９５】
以下に、本実施形態１のＰＣ１０において、管理ＯＳ用ＶＭ３１がゲストＯＳ用ＶＭ４１，４２，４３を起動させる際の処理についてフローチャートに基づいて説明する。図９は管理ＯＳ用ＶＭ３１によるゲストＯＳ用ＶＭ４１，４２，４３の起動処理の手順を示すフローチャートである。なお、以下の処理は、ＰＣ１０のＲＯＭ２又はＨＤＤ４に格納してある制御プログラムに従って管理ＯＳ用ＶＭ３１（管理ＯＳ３１ａ）及びＶＭＭ２１によって実行される。また、図９では、破線で区切った２つの領域において、左側の領域に管理ＯＳ用ＶＭ３１による処理を、右側の領域にＶＭＭ２１による処理をそれぞれ示している。
【００９６】
ＰＣ１０に電源が投入され、ＰＣ１０のハードウェア各部の起動が完了した後、ＣＰＵ１は、ＶＭＭプログラム２０を実行してＶＭＭ２１を起動させる。ＶＭＭ２１は、管理ＯＳプログラム３０を実行して管理ＯＳ用ＶＭ３１を起動させる。
【００９７】
管理ＯＳ用ＶＭ３１は、全てのモニタ５１ａ，５２ａ，５３ａに、図７（ａ）に示すようなログイン画面を表示させている。管理ＯＳ用ＶＭ３１は、いずれかの入出力デバイスセット５１（又は５２，５３）を介してユーザＩＤ及びパスワードのユーザ情報を取得したか否かを判断する（Ｓ１）。いずれの入出力デバイスセット５１，５２，５３からもユーザ情報を取得していないと判断した場合（Ｓ１：ＮＯ）、管理ＯＳ用ＶＭ３１は、他の処理を行ないつつ待機する。
【００９８】
いずれかの入出力デバイスセット５１（又は５２，５３）を介してユーザ情報を取得したと判断した場合（Ｓ１：ＹＥＳ）、管理ＯＳ用ＶＭ３１は、ユーザ情報を送出してきた入出力デバイスセット５１（又は５２，５３）を特定する（Ｓ２）。なお、このとき、管理ＯＳ用ＶＭ３１は、他の入出力デバイスセット５２，５３（又は５１）からのデータの取得を禁止する。管理ＯＳ用ＶＭ３１は、取得したユーザ情報の認証をユーザ情報テーブル４ｂの格納内容に基づいて行ない、認証されたか否かを判断する（Ｓ３）。
【００９９】
認証されなかったと判断した場合（Ｓ３：ＮＯ）、管理ＯＳ用ＶＭ３１は、認証されなかった旨を通知するエラー通知画面を、ユーザ情報を送出してきた入出力デバイスセット５１（又は５２，５３）のモニタ５１ａ（又は５２ａ，５３ａ）に表示させる（Ｓ４）。管理ＯＳ用ＶＭ３１は、図７（ａ）に示すようなログイン画面を表示させ、ステップＳ１に処理を戻す。なお、このとき、管理ＯＳ用ＶＭ３１は、データの取得を禁止していた他の入出力デバイスセット５２，５３（又は５１）からのデータの取得を再開する。
【０１００】
認証されたと判断した場合（Ｓ３：ＹＥＳ）、管理ＯＳ用ＶＭ３１は、取得したユーザＩＤに対応するＶＭ−ＩＤをＶＭ情報テーブル４ｃから読み出す（Ｓ５）。また、管理ＯＳ用ＶＭ３１は、ＶＭＭ２１によってゲストＯＳ用ＶＭ４１（又は４２，４３）に使用されるハードウェアの割り当て等を行ない、ゲストＯＳ用ＶＭ４１（又は４２，４３）を起動させる（Ｓ６）。管理ＯＳ用ＶＭ３１は、読み出したＶＭ−ＩＤに対応するゲストＯＳ用ＶＭを起動させ、ゲストＯＳプログラム４０をＨＤＤ４から読み出して実行し、ゲストＯＳ４１ａ（又は４２ａ，４３ａ）の動作を開始させる。
【０１０１】
管理ＯＳ用ＶＭ３１は、起動させたゲストＯＳ用ＶＭ４１（又は４２，４３）のＶＭ−ＩＤと、ゲストＯＳ用ＶＭ４１（又は４２，４３）に割り当てた入出力デバイスセット５１（又は５２，５３）の入出力デバイスＩＤとの対応をＶＭＭ２１に通知する（Ｓ７）。管理ＯＳ用ＶＭ３１は、起動させたゲストＯＳ用ＶＭ４１のＶＭ−ＩＤをＶＭ管理テーブル４ｆに登録する（Ｓ８）。このとき、管理ＯＳ用ＶＭ３１は、制御状態情報として「制御なし」を、負荷変動量として「０」をそれぞれＶＭ管理テーブル４ｆに格納させる。
【０１０２】
ＶＭＭ２１は、通知されたＶＭ−ＩＤと入出力デバイスＩＤとを対応付けてＶＭデバイス対応テーブル４ｅに格納させ（Ｓ９）、処理を終了する。
これにより、ステップＳ６で起動させたゲストＯＳ用ＶＭ４１（又は４２，４３）と、このゲストＯＳ用ＶＭ４１（又は４２，４３）に対応付けられた入出力デバイスセット５１（又は５２，５３）とのデータの送受信が開始される。従って、いずれかの入出力デバイスセット５１，５２，５３を用いてユーザ情報を入力してきたユーザは、自身専用のゲストＯＳ用ＶＭ４１，４２，４３の使用を開始できる。なお、管理ＯＳ用ＶＭ３１は、ステップＳ１に処理を戻し、データの取得を禁止していた他の入出力デバイスセット５２，５３（又は５１）からのデータの取得を再開する。
【０１０３】
次に、本実施形態１のＰＣ１０において、ゲストＯＳ用ＶＭ４１，４２，４３における処理負荷が大きくなった場合に管理ＯＳ用ＶＭ３１が行なう処理についてフローチャートに基づいて説明する。図１０及び図１１は実施形態１の負荷制御処理の手順を示すフローチャートである。なお、以下の処理は、ＰＣ１０のＲＯＭ２又はＨＤＤ４に格納してある制御プログラムに従って管理ＯＳ用ＶＭ３１（管理ＯＳ３１ａ）及びゲストＯＳ用ＶＭ４１，４２，４３（ゲストＯＳ４１ａ，４２ａ，４３ａ）によって実行される。また、図１０及び図１１では、破線で区切った２つの領域において、左側の領域に管理ＯＳ用ＶＭ３１による処理を、右側の領域にゲストＯＳ用ＶＭ４１，４２，４３による処理をそれぞれ示している。
【０１０４】
管理ＯＳ用ＶＭ３１は、所定時間を計時しており、所定時間（例えば１秒間）が経過したか否かを判断し（Ｓ１１）、経過していないと判断した場合（Ｓ１１：ＮＯ）、他の処理を行ないつつ待機する。所定時間が経過したと判断した場合（Ｓ１１：ＹＥＳ）、管理ＯＳ用ＶＭ３１は、ＶＭＭ２１が逐次更新するＶＭ負荷テーブル４ｇに格納された各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷を取得する（Ｓ１２）。管理ＯＳ用ＶＭ３１は、取得した各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷の合計値を算出し（Ｓ１３）、算出した合計値が所定値（例えば９０％）以上であるか否かを判定する（Ｓ１４）。
【０１０５】
ＣＰＵ負荷の合計値が所定値未満であると判定した場合（Ｓ１４：ＮＯ）、管理ＯＳ用ＶＭ３１は、ステップＳ１１に処理を戻す。ＣＰＵ負荷の合計値が所定値以上であると判定した場合（Ｓ１４：ＹＥＳ）、管理ＯＳ用ＶＭ３１は、ステップＳ１２で取得したＣＰＵ負荷に基づいて、ＣＰＵ負荷が最大のゲストＯＳ用ＶＭ４１（又は４２，４３）を特定する（Ｓ１５）。管理ＯＳ用ＶＭ３１は、特定したゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷を保持し（Ｓ１６）、特定したゲストＯＳ用ＶＭ４１（又は４２，４３）に対して、ＣＰＵ負荷の低減を要求する（Ｓ１７）。
【０１０６】
ゲストＯＳ用ＶＭ４１（又は４２，４３）は、ＣＰＵ負荷の低減を要求された場合、実行プロセステーブル４ｈの格納内容に基づいて、実行中のアプリケーションプログラム５０のうちで、ＣＰＵ負荷が最大のアプリケーションプログラム５０を特定する（Ｓ１８）。ゲストＯＳ用ＶＭ４１は、特定したアプリケーションプログラム５０におけるＣＰＵ負荷を低減させるための制御方法を制御方法テーブル４ｄから読み出す（Ｓ１９）。
【０１０７】
ゲストＯＳ用ＶＭ４１は、現在実行中のアプリケーションプログラム５０の実行状態が制御される旨をユーザに通知する通知画面を、対応するモニタ５１ａ（又は５２ａ，５３ａ）に表示させる（Ｓ２０）。ゲストＯＳ用ＶＭ４１は、通知画面によって通知されたアプリケーションプログラム５０の実行制御が開始されるまでの所定時間（例えば５秒間）が経過したか否かを判断する（Ｓ２１）。ゲストＯＳ用ＶＭ４１は、所定時間が経過していないと判断した場合（Ｓ２１：ＮＯ）、所定時間が経過するまで待機する。
【０１０８】
なお、アプリケーションプログラム５０の実行制御が開始されるまでの所定時間（例えば５秒間）は、例えばゲストＯＳ用ＶＭ４１に割り当てられたＨＤＤ４に予め格納されている。また、この所定値は、例えばＰＣ１０の管理者又はゲストＯＳ用ＶＭ４１のユーザ等によって変更可能である。
【０１０９】
ゲストＯＳ用ＶＭ４１は、所定時間が経過したと判断した場合（Ｓ２１：ＹＥＳ）、制御方法テーブル４ｄから読み出した制御方法で、ステップＳ１８で特定したアプリケーションプログラム５０の実行制御を開始する（Ｓ２２）。ゲストＯＳ用ＶＭ４１は、アプリケーションプログラム５０の実行制御を開始した後、このアプリケーションプログラム５０におけるＣＰＵ負荷を検出し、実行プロセステーブル４ｈに格納されていた処理負荷からの負荷変動量を算出する。ゲストＯＳ用ＶＭ４１は、算出した負荷変動量を制御状態管理テーブル４ｉに登録する（Ｓ２３）。
【０１１０】
ゲストＯＳ用ＶＭ４１は、アプリケーションプログラム５０の実行制御を開始した旨を管理ＯＳ用ＶＭ３１に通知する（Ｓ２４）。管理ＯＳ用ＶＭ３１は、アプリケーションプログラム５０の制御開始を通知された場合、ＶＭ負荷テーブル４ｇから新たにゲストＯＳ用ＶＭ４１のＣＰＵ負荷を取得する（Ｓ２５）。管理ＯＳ用ＶＭ３１は、ゲストＯＳ用ＶＭ４１のアプリケーションプログラム５０の実行状態が制御されることによって低減された負荷変動量を算出する（Ｓ２６）。具体的には、管理ＯＳ用ＶＭ３１は、ステップＳ２５で取得したゲストＯＳ用ＶＭ４１のＣＰＵ負荷と、ステップＳ１６で保持しておいたＣＰＵ負荷との差分値を算出する。
【０１１１】
管理ＯＳ用ＶＭ３１は、ＶＭ管理テーブル４ｆに格納されているゲストＯＳ用ＶＭ４１の制御状態情報を「制御中」に更新し、ゲストＯＳ用ＶＭ４１の負荷変動量に、算出した負荷変動量を加算してＶＭ管理テーブル４ｆを更新する（Ｓ２７）。管理ＯＳ用ＶＭ３１は、ステップＳ１１に処理を戻す。
これにより、管理ＯＳ用ＶＭ３１は、各ゲストＯＳ用ＶＭ４１，４２，４３について、アプリケーションプログラム５０の実行状態が制御されることによって低減されている処理負荷をＶＭ管理テーブル４ｆによって管理できる。
【０１１２】
次に、上述したように、いずれかのゲストＯＳ用ＶＭ４１，４２，４３で実行中のアプリケーションプログラム５０の実行状態が制御されているＰＣ１０において、管理ＯＳ用ＶＭ３１がゲストＯＳ用ＶＭ４１，４２，４３における処理負荷を監視する処理についてフローチャートに基づいて説明する。図１２及び図１３は実施形態１の負荷監視処理の手順を示すフローチャートである。
【０１１３】
なお、以下の処理は、ＰＣ１０のＲＯＭ２又はＨＤＤ４に格納してある制御プログラムに従って管理ＯＳ用ＶＭ３１（管理ＯＳ３１ａ）及びゲストＯＳ用ＶＭ４１，４２，４３（ゲストＯＳ４１ａ，４２ａ，４３ａ）によって実行される。また、図１２及び図１３では、破線で区切った２つの領域において、左側の領域に管理ＯＳ用ＶＭ３１による処理を、右側の領域にゲストＯＳ用ＶＭ４１，４２，４３による処理をそれぞれ示している。
【０１１４】
管理ＯＳ用ＶＭ３１は、所定時間を計時しており、所定時間（例えば１秒間）が経過したか否かを判断し（Ｓ３１）、経過していないと判断した場合（Ｓ３１：ＮＯ）、他の処理を行ないつつ待機する。所定時間が経過したと判断した場合（Ｓ３１：ＹＥＳ）、管理ＯＳ用ＶＭ３１は、ＶＭ管理テーブル４ｆの格納内容に基づいて、アプリケーションプログラム５０の実行を制御されているゲストＯＳ用ＶＭ４１，４２，４３が有るか否かを判断する（Ｓ３２）。アプリケーションプログラム５０の実行を制御されているゲストＯＳ用ＶＭ４１，４２，４３が無いと判断した場合（Ｓ３２：ＮＯ）、管理ＯＳ用ＶＭ３１は、ステップＳ３１に処理を戻す。
【０１１５】
アプリケーションプログラム５０の実行を制御されているゲストＯＳ用ＶＭ４１，４２，４３が有ると判断した場合（Ｓ３２：ＹＥＳ）、管理ＯＳ用ＶＭ３１は、ＶＭＭ２１が逐次更新するＶＭ負荷テーブル４ｇに格納された各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷を取得する（Ｓ３３）。管理ＯＳ用ＶＭ３１は、取得した各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷の合計値を算出する（Ｓ３４）。
【０１１６】
管理ＯＳ用ＶＭ３１は、ＶＭ管理テーブル４ｆに格納されている負荷変動量に基づいて、負荷変動量が最小のゲストＯＳ用ＶＭ４１（又は４２，４３）を特定する（Ｓ３５）。管理ＯＳ用ＶＭ３１は、ステップＳ３４で算出したＣＰＵ負荷の合計値と、ステップＳ３５で特定したゲストＯＳ用ＶＭ４１（又は４２，４３）の負荷変動量との加算値を算出する（Ｓ３６）。管理ＯＳ用ＶＭ３１は、算出した加算値が所定値（例えば９０％）未満であるか否かを判定する（Ｓ３７）。
【０１１７】
算出した加算値が所定値以上であると判定した場合（Ｓ３７：ＮＯ）、管理ＯＳ用ＶＭ３１は、ステップＳ３１に処理を戻す。算出した加算値が所定値未満であると判定した場合（Ｓ３７：ＹＥＳ）、管理ＯＳ用ＶＭ３１は、ステップＳ３５で特定したゲストＯＳ用ＶＭ４１（又は４２，４３）に対して制御解除を要求する（Ｓ３８）。なお、このとき、管理ＯＳ用ＶＭ３１は、制御解除を要求するゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷を保持しておく。
【０１１８】
ゲストＯＳ用ＶＭ４１（又は４２，４３）は、制御解除を要求された場合、実行プロセステーブル４ｈの格納内容に基づいて、実行状態が制御中のアプリケーションプログラム５０が有るか否かを判断する（Ｓ３９）。制御中のアプリケーションプログラム５０が無いと判断した場合（Ｓ３９：ＮＯ）、ゲストＯＳ用ＶＭ４１は、ステップＳ４５へ処理を移行する。制御中のアプリケーションプログラム５０が有ると判断した場合（Ｓ３９：ＹＥＳ）、ゲストＯＳ用ＶＭ４１は、実行状態が制御中のアプリケーションプログラム５０のうちで、負荷変動量が最小のアプリケーションプログラム５０を特定する（Ｓ４０）。
【０１１９】
ゲストＯＳ用ＶＭ４１は、特定したアプリケーションプログラム５０に対する制御方法を制御方法テーブル４ｄから読み出す（Ｓ４１）。ゲストＯＳ用ＶＭ４１は、現在制御中のアプリケーションプログラム５０の実行が再開される旨をユーザに通知する通知画面を、対応するモニタ５１ａ（又は５２ａ，５３ａ）に表示させる（Ｓ４２）。ゲストＯＳ用ＶＭ４１は、制御方法テーブル４ｄから読み出した制御方法で、ステップＳ４０で特定したアプリケーションプログラム５０の実行制御を解除する（Ｓ４３）。これにより、ステップＳ４０で特定したアプリケーションプログラム５０の動作が再開される。
【０１２０】
ゲストＯＳ用ＶＭ４１は、アプリケーションプログラム５０の動作を再開させた後、動作を再開させたアプリケーションプログラム５０の情報を制御状態管理テーブル４ｉから削除する（Ｓ４４）。ゲストＯＳ用ＶＭ４１は、アプリケーションプログラム５０の実行制御を解除した旨を管理ＯＳ用ＶＭ３１に通知する（Ｓ４５）。
【０１２１】
管理ＯＳ用ＶＭ３１は、アプリケーションプログラム５０の制御解除を通知された場合、ＶＭ負荷テーブル４ｇから新たにゲストＯＳ用ＶＭ４１のＣＰＵ負荷を取得する（Ｓ４６）。管理ＯＳ用ＶＭ３１は、ゲストＯＳ用ＶＭ４１のアプリケーションプログラム５０の実行制御が解除されることによって増加する負荷変動量を算出する（Ｓ４７）。具体的には、管理ＯＳ用ＶＭ３１は、ステップＳ４６で取得したゲストＯＳ用ＶＭ４１のＣＰＵ負荷と、ゲストＯＳ用ＶＭ４１に制御解除を要求する際に保持しておいたＣＰＵ負荷との差分値を算出する。
【０１２２】
管理ＯＳ用ＶＭ３１は、ＶＭ管理テーブル４ｆに格納されているゲストＯＳ用ＶＭ４１の負荷変動量から、算出した負荷変動量を減算してＶＭ管理テーブル４ｆを更新する（Ｓ４８）。なお、このとき、更新した負荷変動量が０となった場合、管理ＯＳ用ＶＭ３１は、ＶＭ管理テーブル４ｆに格納されているゲストＯＳ用ＶＭ４１の制御状態情報を「制御なし」に更新する。管理ＯＳ用ＶＭ３１は、ステップＳ３１に処理を戻す。
【０１２３】
これにより、管理ＯＳ用ＶＭ３１は、各ゲストＯＳ用ＶＭ４１，４２，４３について、アプリケーションプログラム５０の実行制御が解除されることによって変動する処理負荷をリアルタイムで把握できる。
【０１２４】
次に、上述したように、動作中のゲストＯＳ用ＶＭ４１，４２，４３の動作を終了させる際の処理についてフローチャートに基づいて説明する。図１４はゲストＯＳ用ＶＭ４１，４２，４３の終了処理の手順を示すフローチャートである。なお、以下の処理は、ＰＣ１０のＲＯＭ２又はＨＤＤ４に格納してある制御プログラムに従ってゲストＯＳ用ＶＭ４１，４２，４３（ゲストＯＳ４１ａ，４２ａ，４３ａ）、管理ＯＳ用ＶＭ３１（管理ＯＳ３１ａ）及びＶＭＭ２１によって実行される。また、図１４では、破線で区切った３つの領域において、左側の領域にゲストＯＳ用ＶＭ４１，４２，４３による処理を、中央の領域に管理ＯＳ用ＶＭ３１による処理を、右側の領域にＶＭＭ２１による処理をそれぞれ示している。
【０１２５】
ゲストＯＳ用ＶＭ４１，４２，４３は、対応する入出力デバイスセット５１，５２，５３を介して終了指示を受け付けたか否かを判断している（Ｓ５１）。終了指示を受け付けていないと判断した場合（Ｓ５１：ＮＯ）、ゲストＯＳ用ＶＭ４１，４２，４３は、他の処理を行ないつつ待機する。終了指示を受け付けたと判断した場合（Ｓ５１：ＹＥＳ）、ゲストＯＳ用ＶＭ４１，４２，４３は、終了処理を実行する（Ｓ５２）。終了処理が完了した場合、ゲストＯＳ用ＶＭ４１，４２，４３は、終了処理の完了を管理ＯＳ用ＶＭ３１に通知し（Ｓ５３）、動作を終了する。
【０１２６】
管理ＯＳ用ＶＭ３１は、終了処理の完了を通知された場合、終了処理の完了を通知してきたゲストＯＳ用ＶＭ４１（又は４２，４３）から、このゲストＯＳ用ＶＭ４１（又は４２，４３）に割り当てられている入出力デバイスセット５１（又は５２，５３）を剥奪する（Ｓ５４）。対象のゲストＯＳ用ＶＭ４１（又は４２，４３）の情報をＶＭ管理テーブル４ｆから削除する（Ｓ５５）。管理ＯＳ用ＶＭ３１は、ゲストＯＳ用ＶＭ４１（又は４２，４３）から入出力デバイスセット５１（又は５２，５３）を剥奪した旨をＶＭＭ２１に通知し（Ｓ５６）、処理を終了する。
【０１２７】
ＶＭＭ２１は、通知されたゲストＯＳ用ＶＭ４１（又は４２，４３）のＶＭ−ＩＤと、ゲストＯＳ用ＶＭ４１（又は４２，４３）から剥奪された入出力デバイスセット５１（又は５２，５３）の入出力デバイスＩＤとをＶＭデバイス対応テーブル４ｅから削除する（Ｓ５７）。ＶＭＭ２１は、処理を終了する。これ以降は、ゲストＯＳ用ＶＭ４１（又は４２，４３）から剥奪された入出力デバイスセット５１（又は５２，５３）は、管理ＯＳ３１ａに対応付けられる。
【０１２８】
上述したように、本実施形態１では、高負荷のゲストＯＳ用ＶＭ４１（又は４２，４３）で実行中の高負荷のアプリケーションプログラム５０の実行を制限することによって、このゲストＯＳ用ＶＭ４１（又は４２，４３）における処理負荷を低減させる。よって、他のゲストＯＳ用ＶＭ４２，４３（又は４１）には影響を与えずに、ＰＣ１０全体としての処理負荷を低減できる。従って、限られたリソースの中で、各ゲストＯＳ用ＶＭ４１，４２，４３の要求を満たしつつ、各ゲストＯＳ用ＶＭ４１，４２，４３に公平にリソースを割り当てることができ、各ユーザに高品質のゲストＯＳ用ＶＭ４１，４２，４３を提供できる。
【０１２９】
本実施形態１では、１つのＰＣ１０に３つのゲストＯＳ用ＶＭ４１，４２，４３を構築することによって３人のユーザによって１つのＰＣ１０を共用する構成を例に説明した。本願に開示する情報処理装置は、このような構成に限られないことは勿論である。ＰＣ１０に設けられたＵＳＢポート５ａ，５ａ…の数、モニタ接続ポート６ａ，６ａ…の数に応じて、構築するゲストＯＳ用ＶＭの数も適宜変更可能である。
【０１３０】
本実施形態１のＰＣ１０は、各ゲストＯＳ用ＶＭ４１，４２，４３におけるＣＰＵ負荷の合計値が所定値以上となった場合に、ＣＰＵ負荷が最大のゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷を低減させていた。しかし、ＰＣ１０全体としてのＣＰＵ負荷が低減されればよいので、ＣＰＵ負荷が最大のゲストＯＳ用ＶＭ４１（又は４２，４３）ではなく、ゲストＯＳ用ＶＭ４１，４２，４３のいずれかのＣＰＵ負荷を低減させてもよい。
【０１３１】
また、ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷を低減させる際に、本実施形態１のＰＣ１０は、ＣＰＵ負荷が最大のアプリケーションプログラム５０の実行状態を制御していた。しかし、各ゲストＯＳ用ＶＭ４１，４２，４３におけるＣＰＵ負荷が低減されればよいので、ＣＰＵ負荷が最大のアプリケーションプログラム５０ではなく、いずれかのアプリケーションプログラム５０の実行状態を制御すればよい。
【０１３２】
また、本実施形態１では、管理ＯＳ用ＶＭ３１が処理負荷を低減させるべきゲストＯＳ用ＶＭ４１，４２，４３を特定し、特定されたゲストＯＳ用ＶＭ４１，４２，４３が実行状態を制御されるべきアプリケーションプログラム５０を特定していた。このような構成に限られず、管理ＯＳ用ＶＭ３１が、各ゲストＯＳ用ＶＭ４１，４２，４３のどのアプリケーションプログラム５０の実行を制御すべきかを特定してもよい。
【０１３３】
また、本実施形態１では、管理ＯＳ用ＶＭ３１が動作制御を解除すべきゲストＯＳ用ＶＭ４１，４２，４３を特定し、特定されたゲストＯＳ用ＶＭ４１，４２，４３が実行制御を解除すべきアプリケーションプログラム５０を特定していた。このような構成に限られず、管理ＯＳ用ＶＭ３１が、各ゲストＯＳ用ＶＭ４１，４２，４３のどのアプリケーションプログラム５０の実行制御を解除すべきかを特定してもよい。なお、この場合、管理ＯＳ用ＶＭ３１が、各ゲストＯＳ用ＶＭ４１，４２，４３において実行制御中の各アプリケーションプログラム５０における負荷変動量を管理しておけばよい。
【０１３４】
また、本実施形態１では、実行制御を解除すべきアプリケーションプログラム５０として、処理負荷が最小のアプリケーションプログラム５０が選択されていた。このように、処理負荷が小さいアプリケーションプログラム５０から順に実行制御を解除することにより、処理負荷の急激な増加を防止できる。しかし、このような構成に限られない。例えば、処理負荷が最大のアプリケーションプログラム５０、制御開始が最も古いアプリケーションプログラム５０が、実行制御の解除対象として選択されてもよい。
【０１３５】
本実施形態１のＰＣ１０では、入出力デバイスセット５１，５２，５３を用いて各ユーザが入力したユーザＩＤ及びパスワードに基づいてユーザ認証を行なっていた。しかし、ユーザ認証は必ずしも必要ではない。例えば、入出力デバイスセット５１，５２，５３を用いて各ユーザがユーザＩＤのみを入力し、管理ＯＳ３１ａが、入力されたユーザＩＤに対応するゲストＯＳ４１ａ，４２ａ，４３ａを起動させてもよい。
【０１３６】
本実施形態１のＰＣ１０は、各ゲストＯＳ用ＶＭ４１，４２，４３における処理負荷としてＣＰＵ負荷（ＣＰＵ使用率）を用いていたが、これに限られない。例えば、各ゲストＯＳ用ＶＭ４１，４２，４３に割り当てられたＲＡＭ３の使用量（メモリ使用率）が処理負荷を示す情報に利用できる。また、各ゲストＯＳ用ＶＭ４１，４２，４３がネットワークに接続可能であればネットワークの使用率、アプリケーションプログラム５０を実行する際のアプリケーションの応答速度等が利用できる。
【０１３７】
本実施形態１のＰＣ１０は、ゲストＯＳ用ＶＭ４１，４２，４３とは別に管理ＯＳ用ＶＭ３１を備えていた。しかし、例えば、１つのゲストＯＳ用ＶＭ４１，４２，４３が、本実施形態１の管理ＯＳ用ＶＭ３１の機能を備えてもよい。この場合、管理ＯＳ３１ａのライセンス料、管理ＯＳ用ＶＭ３１に割り当てられる各リソースの削減が可能である。
【０１３８】
（実施形態２）
以下に、実施形態２に係るＰＣについて説明する。なお、本実施形態２のＰＣは、上述した実施形態１のＰＣ１０と同様の構成によって実現することができるので、同様の構成については同一の符号を付して説明を省略する。
【０１３９】
上述した実施形態１では、管理ＯＳ用ＶＭ３１は、定期的（例えば１秒毎）にＶＭ負荷テーブル４ｇから取得する各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷の合計値が所定値（例えば９０％）以上となった場合に、ＰＣ１０が高負荷状態であると判断していた。そして、管理ＯＳ用ＶＭ３１は、ＰＣ１０が高負荷状態であると判断した場合、ゲストＯＳ用ＶＭ４１，４２，４３のいずれかに対して処理負荷の低減を要求していた。
【０１４０】
本実施形態２では、管理ＯＳ用ＶＭ３１は、定期的（例えば１秒毎）にＶＭ負荷テーブル４ｇから取得する各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷の合計値が所定値（例えば９０％）以上である時間（高負荷状態継続時間）を計時する。そして、管理ＯＳ用ＶＭ３１は、計時した高負荷状態継続時間が所定時間（例えば５秒間）となった場合に、ＰＣ１０が高負荷状態であると判断する。
【０１４１】
本実施形態２のＰＣ１０において、ＣＰＵ１が、ＲＯＭ２又はＨＤＤ４に格納されている各種の制御プログラムを実行することによって、図５及び図６で示した機能と同様の機能を実現する。
【０１４２】
本実施形態２のＶＭ負荷判定部３１ｅは、ＶＭ負荷監視部３１ｄから取得したＣＰＵ負荷の合計値が所定値（例えば９０％）以上であるか否かを判定する。ＶＭ負荷判定部３１ｅは、ＣＰＵ負荷の合計値が所定値（例えば９０％）未満であると判定した場合、高負荷状態開始時刻として現在時刻を例えばＲＡＭ３に格納する。なお、現在時刻は、例えばＣＰＵ１が有する時計機能に基づいて取得される。
【０１４３】
ＶＭ負荷判定部３１ｅは、ＶＭ負荷監視部３１ｄから取得したＣＰＵ負荷の合計値が所定値（例えば９０％）以上であると判定した場合、現在時刻を取得する。ＶＭ負荷判定部３１ｅは、ＲＡＭ３に格納した高負荷状態開始時刻から現在時刻までの時間（高負荷状態継続時間）を算出する。ＶＭ負荷判定部３１ｅは、算出した高負荷状態継続時間が所定時間（例えば５秒間）以上であるか否かを判断し、高負荷状態継続時間が所定時間（例えば５秒間）以上となるまで上述した処理を繰り返す。
【０１４４】
ＶＭ負荷判定部３１ｅは、高負荷状態継続時間が所定時間（例えば５秒間）以上であると判断した場合、ＰＣ１０が高負荷状態であると判定する。ＰＣ１０が高負荷状態であると判定した場合、ＶＭ負荷判定部３１ｅは、各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷に基づいて、ＣＰＵ負荷が最大のゲストＯＳ用ＶＭ４１（又は４２，４３）を特定する。ＶＭ負荷判定部３１ｅは、特定したゲストＯＳ用ＶＭ４１（又は４２，４３）をＶＭ通知部３１ｆに通知する。
【０１４５】
なお、ここでＰＣ１０が高負荷状態であるか否かの基準となる所定時間（例えば５秒間）は、例えば管理ＯＳ用ＶＭ３１に割り当てられたＨＤＤ４に予め格納されている。また、この時間は、例えばＰＣ１０の管理者等によって変更可能である。
【０１４６】
ＶＭ通知部３１ｆは、ＶＭ負荷判定部３１ｅから通知されたゲストＯＳ用ＶＭ４１（又は４２，４３）のゲストＯＳ４１ａ（又は４２ａ，４３ａ）に対して、処理負荷の低減を要求する。処理負荷の低減を要求されたゲストＯＳ用ＶＭ４１，４２，４３は、実行中のアプリケーションプログラム５０のうちで、処理負荷が最大のアプリケーションプログラム５０の実行状態を制御する。これにより、ゲストＯＳ用ＶＭ４１，４２，４３における処理負荷が低減される。
【０１４７】
本実施形態２のＣＰＵ１が実現する各機能において、上述したＶＭ負荷判定部３１ｅ以外は、上述の実施形態１で説明した処理と同様の処理を行なうので説明を省略する。
【０１４８】
本実施形態２のＰＣ１０において、管理ＯＳ用ＶＭ３１がゲストＯＳ用ＶＭ４１，４２，４３を起動させる際の処理は、上述の実施形態１において図９で説明した処理と同一であるので説明を省略する。
【０１４９】
次に、本実施形態１のＰＣ１０において、ゲストＯＳ用ＶＭ４１，４２，４３における処理負荷が大きくなった場合に管理ＯＳ用ＶＭ３１が行なう処理についてフローチャートに基づいて説明する。図１５及び図１６は実施形態２の負荷制御処理の手順を示すフローチャートである。なお、以下の処理は、ＰＣ１０のＲＯＭ２又はＨＤＤ４に格納してある制御プログラムに従って管理ＯＳ用ＶＭ３１（管理ＯＳ３１ａ）及びゲストＯＳ用ＶＭ４１，４２，４３（ゲストＯＳ４１ａ，４２ａ，４３ａ）によって実行される。また、図１６では、破線で区切った２つの領域において、左側の領域に管理ＯＳ用ＶＭ３１による処理を、右側の領域にゲストＯＳ用ＶＭ４１，４２，４３による処理をそれぞれ示している。
【０１５０】
管理ＯＳ用ＶＭ３１は、所定時間を計時しており、所定時間（例えば１秒間）が経過したか否かを判断し（Ｓ６１）、経過していないと判断した場合（Ｓ６１：ＮＯ）、他の処理を行ないつつ待機する。所定時間が経過したと判断した場合（Ｓ６１：ＹＥＳ）、管理ＯＳ用ＶＭ３１は、ＶＭＭ２１が逐次更新するＶＭ負荷テーブル４ｇに格納された各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷を取得する（Ｓ６２）。管理ＯＳ用ＶＭ３１は、取得した各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷の合計値を算出し（Ｓ６３）、算出した合計値が所定値（例えば９０％）以上であるか否かを判定する（Ｓ６４）。
【０１５１】
ＣＰＵ負荷の合計値が所定値未満であると判定した場合（Ｓ６４：ＮＯ）、管理ＯＳ用ＶＭ３１は、高負荷状態開始時刻を消去した状態でＲＡＭ３等に格納し（Ｓ６５）、ステップＳ６１に処理を戻す。ＣＰＵ負荷の合計値が所定値以上であると判定した場合（Ｓ６４：ＹＥＳ）、管理ＯＳ用ＶＭ３１は、高負荷状態開始時刻が消去された状態か否かを判定する（Ｓ６６）。高負荷状態開始時刻が消去された状態であると判定した場合（Ｓ６６：ＹＥＳ）、管理ＯＳ用ＶＭ３１は、高負荷状態開始時刻として現在時刻をＲＡＭ３等に格納し（Ｓ６７）、現在時刻を取得する（Ｓ６８）。
【０１５２】
高負荷状態開始時刻が消去された状態でないと判定した場合（Ｓ６６：ＮＯ）、管理ＯＳ用ＶＭ３１は、ステップＳ６７の処理をスキップし、現在時刻を取得する（Ｓ６８）。管理ＯＳ用ＶＭ３１は、ステップＳ６７でＲＡＭ３等に格納した高負荷状態開始時刻から、ステップＳ６８で取得した現在時刻までの高負荷状態継続時間を算出する（Ｓ６９）。
【０１５３】
管理ＯＳ用ＶＭ３１は、算出した高負荷状態継続時間が所定時間（例えば５秒間）以上であるか否かを判断し（Ｓ７０）、所定時間以上でないと判断した場合（Ｓ７０：ＮＯ）、ステップＳ６１に処理を戻す。高負荷状態継続時間が所定時間以上であると判断した場合（Ｓ７０：ＹＥＳ）、管理ＯＳ用ＶＭ３１は、ステップＳ６２で取得したＣＰＵ負荷に基づいて、ＣＰＵ負荷が最大のゲストＯＳ用ＶＭ４１（又は４２，４３）を特定する（Ｓ７１）。管理ＯＳ用ＶＭ３１は、特定したゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷を保持し（Ｓ７２）、特定したゲストＯＳ用ＶＭ４１（又は４２，４３）に対して、ＣＰＵ負荷の低減を要求する（Ｓ７３）。
【０１５４】
以下のステップＳ７４からステップＳ８３までの処理は、上述の実施形態１において図１１で説明したステップＳ１８からステップＳ２７までの処理と同一であるので説明を省略する。これにより、管理ＯＳ用ＶＭ３１は、各ゲストＯＳ用ＶＭ４１，４２，４３について、アプリケーションプログラム５０の実行状態が制御されることによって低減されている処理負荷をＶＭ管理テーブル４ｆによって逐次管理できる。
【０１５５】
本実施形態２のＰＣ１０において、管理ＯＳ用ＶＭ３１がゲストＯＳ用ＶＭ４１，４２，４３における処理負荷を監視し、必要に応じて実行制御されているアプリケーションプログラム５０の制御を解除する処理は、上述の実施形態１において図１２及び図１３で説明した処理と同一であるので説明を省略する。また、本実施形態２のＰＣ１０において、動作中のゲストＯＳ用ＶＭ４１，４２，４３の動作を終了させる際の処理は、上述の実施形態１において図１４で説明した処理と同一であるので説明を省略する。
【０１５６】
上述したように、本実施形態２では、各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷の合計値が所定値（例えば９０％）以上となる高負荷状態が所定時間（例えば５秒間）以上継続した場合に、ＰＣ１０が高負荷状態であると判定する。よって、例えば、各アプリケーションプログラム５０の起動時のように瞬間的に高負荷状態となった場合であっても、ＰＣ１０が高負荷状態であるとは判定しない。従って、所定時間以上継続的に高負荷状態である場合にのみ、各ゲストＯＳ用ＶＭ４１，４２，４３における処理負荷を低減させる。よって、各ゲストＯＳ用ＶＭ４１，４２，４３で実行中のアプリケーションプログラム５０の実行状態の制御処理が頻繁に行なわれることを防止できる。
【０１５７】
（実施形態３）
以下に、実施形態３に係るＰＣについて説明する。なお、本実施形態３のＰＣは、上述した実施形態１のＰＣ１０と同様の構成によって実現することができるので、同様の構成については同一の符号を付して説明を省略する。
【０１５８】
上述した実施形態１では、管理ＯＳ用ＶＭ３１は、各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷の合計値が所定値（例えば９０％）以上となった場合に、ＣＰＵ負荷が最大のゲストＯＳ用ＶＭ４１（又は４２，４３）に対して処理負荷の低減を要求していた。
【０１５９】
本実施形態３では、ゲストＯＳ用ＶＭ４１，４２，４３のそれぞれに対して許容ＣＰＵ負荷を設定する。そして、ＣＰＵ負荷が許容ＣＰＵ負荷以上であり、他のゲストＯＳ用ＶＭ４１，４２，４３よりも大きいゲストＯＳ用ＶＭ４１，４２，４３に対して処理負荷の低減を要求する。即ち、ＣＰＵ負荷が最大であっても、そのＣＰＵ負荷が許容ＣＰＵ負荷未満であれば、そのゲストＯＳ用ＶＭ４１，４２，４３は処理負荷の低減を要求されない。
【０１６０】
本実施形態３のＰＣ１０において、ＣＰＵ１は、ＲＯＭ２又はＨＤＤ４に格納されている各種の制御プログラムを実行させることによって、図５及び図６に示した各機能を実現する。また、本実施形態３の管理ＯＳ用ＶＭ３１は、図５及び図６に示した各機能のほかに優先利用設定部３１ｇの機能を有し、本実施形態３のゲストＯＳ用ＶＭ４１は、図６に示した各機能のほかに優先利用要求部４１ｅの機能を有する。図１７は実施形態３のＰＣ１０の機能を示す機能ブロック図である。なお、図１７には、ＶＭＭ２１、管理ＯＳ用ＶＭ３１及びゲストＯＳ用ＶＭ４１の各機能の一部のみを記載している。
【０１６１】
本実施形態３のＰＣ１０では、ゲストＯＳ用ＶＭ４１，４２，４３の各ユーザは、他のユーザよりも優先的にＰＣ１０を使用したい場合、使用中の入出力デバイスセット５１，５２，５３を介して優先利用を要求する。優先利用を要求する方法としては、例えば、所定のボタン又はメニューの選択によって行なうことが考えられる。
【０１６２】
本実施形態３のゲストＯＳ用ＶＭ４１において、優先利用要求部４１ｅは、対応する入出力デバイスセット５１（又は５２，５３）を介して優先利用の要求を受け付ける。優先利用要求部４１ｅは、ユーザから優先利用を要求された場合、管理ＯＳ用ＶＭ３１の優先利用設定部３１ｇに優先利用の設定を要求する。
【０１６３】
本実施形態３の管理ＯＳ用ＶＭ３１において、優先利用設定部３１ｇは、ゲストＯＳ用ＶＭ４１，４２，４３から優先利用の設定を要求された場合、要求してきたゲストＯＳ用ＶＭ４１，４２，４３に対して優先利用を設定する。優先利用設定部３１ｇは、まず、図１８に示すような優先度テーブル４ｊの格納内容に基づいて、優先利用の設定を要求してきたゲストＯＳ用ＶＭ４１，４２，４３に対して優先利用が既に設定されているか否かを判断する。
【０１６４】
図１８は優先度テーブル４ｊの格納内容を示す模式図である。図１８に示すように、優先度テーブル４ｊには、各ゲストＯＳ用ＶＭ４１，４２，４３のＶＭ−ＩＤと、各ゲストＯＳ用ＶＭ４１，４２，４３に対する許容ＣＰＵ負荷とが対応付けて登録されている。優先度テーブル４ｊには、各ゲストＯＳ用ＶＭ４１，４２，４３に対する許容ＣＰＵ負荷として予め「３５」が格納されている。優先度テーブル４ｊに格納される各ゲストＯＳ用ＶＭ４１，４２，４３に対する許容ＣＰＵ負荷は、優先利用設定部３１ｇによって適宜更新される。
【０１６５】
優先利用設定部３１ｇは、優先利用の設定を要求してきたゲストＯＳ用ＶＭ４１，４２，４３に対する許容ＣＰＵ負荷として優先度テーブル４ｊに「６５」が格納されているか否かを判断する。許容ＣＰＵ負荷として「６５」が格納されていると判断した場合、優先利用設定部３１ｇは、優先利用の設定を要求してきたゲストＯＳ用ＶＭ４１，４２，４３に対して優先利用が既に設定されていると判断する。一方、許容ＣＰＵ負荷として「６５」が格納されていないと判断した場合、即ち、許容ＣＰＵ負荷として「３５」が格納されている場合、優先利用設定部３１ｇは、優先利用の設定を要求してきたゲストＯＳ用ＶＭ４１，４２，４３に対して優先利用がまだ設定されていないと判断する。
【０１６６】
優先利用設定部３１ｇは、優先利用の設定を要求してきたゲストＯＳ用ＶＭ４１，４２，４３に対して優先利用が既に設定されていると判断した場合、優先利用が既に設定されている旨を、要求してきたゲストＯＳ用ＶＭ４１，４２，４３に通知する。この場合、ゲストＯＳ用ＶＭ４１，４２，４３の優先利用要求部４１ｅは、優先利用が既に設定されているので優先利用の設定に失敗した旨を通知するエラーメッセージを、対応するモニタ５１ａ，５２ａ，５３ａに表示させる。
【０１６７】
優先利用設定部３１ｇは、優先利用の設定を要求してきたゲストＯＳ用ＶＭ４１，４２，４３に対して優先利用がまだ設定されていないと判断した場合、要求された優先利用の設定が可能であるか否かを判断する。例えば、優先利用設定部３１ｇは、既に優先利用が設定されたゲストＯＳ用ＶＭ４１，４２，４３が有るか否かに基づいて、要求された優先利用の設定が可能であるか否かを判断する。複数のゲストＯＳ用ＶＭ４１，４２，４３に対して６５％のＣＰＵ負荷を確保することは困難であるので、優先利用は１つのゲストＯＳ用ＶＭ４１，４２，４３に対してのみ設定可能とする。
【０１６８】
従って、優先利用設定部３１ｇは、既に優先利用が設定されたゲストＯＳ用ＶＭ４１が有る場合、要求された優先利用の設定が可能でないと判断する。優先利用設定部３１ｇは、要求された優先利用の設定が可能でないと判断した場合、優先利用の設定が可能でない旨を、要求してきたゲストＯＳ用ＶＭ４１，４２，４３に通知する。この場合、ゲストＯＳ用ＶＭ４１，４２，４３の優先利用要求部４１ｅは、優先利用の設定に失敗した旨を通知するエラーメッセージを、対応するモニタ５１ａ，５２ａ，５３ａに表示させる。
【０１６９】
優先利用設定部３１ｇは、要求された優先利用の設定が可能であると判断した場合、優先利用の設定を要求してきたゲストＯＳ用ＶＭ４１，４２，４３に対して優先度テーブル４ｊに格納されている許容ＣＰＵ負荷を「６５」に更新する。これにより、優先利用設定部３１ｇは、優先利用の設定を要求してきたゲストＯＳ用ＶＭ４１，４２，４３に対して、優先利用を設定したことになる。
【０１７０】
優先利用設定部３１ｇは、優先利用を設定した後、優先利用の設定完了を、優先利用の設定を要求してきたゲストＯＳ用ＶＭ４１，４２，４３に通知する。この場合、ゲストＯＳ用ＶＭ４１，４２，４３の優先利用要求部４１ｅは、優先利用が設定された旨を通知する通知画面を、対応するモニタ５１ａ，５２ａ，５３ａに表示させる。
【０１７１】
本実施形態３のＶＭ負荷判定部３１ｅは、ＶＭ負荷監視部３１ｄから取得したＣＰＵ負荷の合計値が所定値（例えば９０％）以上であるか否かを判定する。ＶＭ負荷判定部３１ｅは、ＣＰＵ負荷の合計値が所定値（例えば９０％）未満であると判定した場合、ＰＣ１０が高負荷状態ではないと判断して何も行なわない。ＶＭ負荷判定部３１ｅは、ＣＰＵ負荷の合計値が所定値（例えば９０％）以上であると判定した場合、ＰＣ１０が高負荷状態であると判断する。そして、ＶＭ負荷判定部３１ｅは、各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷に基づいて、ＣＰＵ負荷が最大のゲストＯＳ用ＶＭ４１（又は４２，４３）を特定する。
【０１７２】
ＶＭ負荷判定部３１ｅは、特定したゲストＯＳ用ＶＭ４１（又は４２，４３）に対して設定されている許容ＣＰＵ負荷を優先度テーブル４ｊから取得する。ＶＭ負荷判定部３１ｅは、特定したゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷が、優先度テーブル４ｊから取得した許容ＣＰＵ負荷よりも大きいか否かを判断する。特定したゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷が許容ＣＰＵ負荷以下であれば、ＶＭ負荷判定部３１ｅは、このゲストＯＳ用ＶＭ４１（又は４２，４３）には処理負荷の低減を要求しない。そして、ＶＭ負荷判定部３１ｅは、ＣＰＵ負荷が次に大きいゲストＯＳ用ＶＭ４２（又は４３）を特定する。
【０１７３】
ＶＭ負荷判定部３１ｅは、ＣＰＵ負荷が次に大きいゲストＯＳ用ＶＭ４２（又は４３）に対して設定されている許容ＣＰＵ負荷を優先度テーブル４ｊから取得する。ＶＭ負荷判定部３１ｅは、ＣＰＵ負荷が次に大きいゲストＯＳ用ＶＭ４２（又は４３）のＣＰＵ負荷が、優先度テーブル４ｊから取得した許容ＣＰＵ負荷よりも大きいか否かを判断する。ＣＰＵ負荷が次に大きいゲストＯＳ用ＶＭ４２（又は４３）のＣＰＵ負荷が許容ＣＰＵ負荷以下であれば、ＶＭ負荷判定部３１ｅは、このゲストＯＳ用ＶＭ４２（又は４３）には処理負荷の低減を要求しない。そして、ＶＭ負荷判定部３１ｅは、ＣＰＵ負荷が次に大きいゲストＯＳ用ＶＭ４３を特定する。
【０１７４】
なお、ＶＭ負荷判定部３１ｅは、特定したゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷が許容ＣＰＵ負荷より大きいと判断した場合、特定したゲストＯＳ用ＶＭ４１（又は４２，４３）をＶＭ通知部３１ｆに通知する。
【０１７５】
ＶＭ通知部３１ｆは、ＶＭ負荷判定部３１ｅから通知されたゲストＯＳ用ＶＭ４１（又は４２，４３）のゲストＯＳ４１ａ（又は４２ａ，４３ａ）に対して、処理負荷の低減を要求する。処理負荷の低減を要求されたゲストＯＳ用ＶＭ４１，４２，４３は、実行中のアプリケーションプログラム５０のうちで、処理負荷が最大のアプリケーションプログラム５０の実行状態を制御する。これにより、ゲストＯＳ用ＶＭ４１，４２，４３における処理負荷が低減される。
【０１７６】
上述したように、本実施形態３では、ＣＰＵ負荷が大きいゲストＯＳ用ＶＭ４１，４２，４３であっても、優先度テーブル４ｊで設定されている許容ＣＰＵ負荷未満であれば、ゲストＯＳ用ＶＭ４１，４２，４３における処理負荷を低減させない。よって、優先度テーブル４ｊに大きい値の許容ＣＰＵ負荷が設定されているゲストＯＳ用ＶＭ４１，４２，４３は、他のゲストＯＳ用ＶＭ４２，４３（又は４１）よりも優先的に処理負荷を確保できる。
【０１７７】
本実施形態３のＣＰＵ１が実現する各機能において、上述した優先利用設定部３１ｇ、ＶＭ負荷判定部３１ｅ及び優先利用要求部４１ｅ以外は、上述の実施形態１で説明した処理と同様の処理を行なうので説明を省略する。
【０１７８】
本実施形態３のＰＣ１０において、管理ＯＳ用ＶＭ３１がゲストＯＳ用ＶＭ４１，４２，４３を起動させる際の処理は、上述の実施形態１において図９で説明した処理と同一であるので説明を省略する。
【０１７９】
次に、本実施形態３のＰＣ１０において、ゲストＯＳ用ＶＭ４１，４２，４３に対して優先利用の設定を行なう際の処理についてフローチャートに基づいて説明する。図１９は優先利用の設定処理の手順を示すフローチャートである。なお、以下の処理は、ＰＣ１０のＲＯＭ２又はＨＤＤ４に格納してある制御プログラムに従ってゲストＯＳ用ＶＭ４１，４２，４３（ゲストＯＳ４１ａ，４２ａ，４３ａ）及び管理ＯＳ用ＶＭ３１（管理ＯＳ３１ａ）によって実行される。また、図１９では、破線で区切った２つの領域において、左側の領域にゲストＯＳ用ＶＭ４１，４２，４３による処理を、右側の領域に管理ＯＳ用ＶＭ３１による処理をそれぞれ示している。
【０１８０】
ゲストＯＳ用ＶＭ４１，４２，４３は、対応する入出力デバイスセット５１，５２，５３を介して優先利用を要求されたか否かを判断しており（Ｓ９１）、優先利用を要求されていないと判断した場合（Ｓ９１：ＮＯ）、他の処理を行ないつつ待機する。優先利用を要求されたと判断した場合（Ｓ９１：ＹＥＳ）、ゲストＯＳ用ＶＭ４１，４２，４３は、管理ＯＳ用ＶＭ３１に優先利用の設定を要求する（Ｓ９２）。
【０１８１】
管理ＯＳ用ＶＭ３１は、ゲストＯＳ用ＶＭ４１，４２，４３から優先利用の設定を要求された場合、優先度テーブル４ｊの格納内容に基づいて、要求してきたゲストＯＳ用ＶＭ４１，４２，４３に対して優先利用が既に設定されているか否かを判断する（Ｓ９３）。優先利用が既に設定されていると判断した場合（Ｓ９３：ＹＥＳ）、管理ＯＳ用ＶＭ３１は、優先利用が既に設定されている旨を、要求してきたゲストＯＳ用ＶＭ４１，４２，４３に通知する（Ｓ９４）。
【０１８２】
ゲストＯＳ用ＶＭ４１，４２，４３は、優先利用が既に設定されている旨を通知された場合、優先利用の設定に失敗した旨を通知するエラーメッセージを、対応するモニタ５１ａ，５２ａ，５３ａに表示させる（Ｓ９５）。そして、ゲストＯＳ用ＶＭ４１，４２，４３はステップＳ９１に処理を戻す。
【０１８３】
優先利用がまだ設定されていないと判断した場合（Ｓ９３：ＮＯ）、管理ＯＳ用ＶＭ３１は、要求された優先利用の設定が可能であるか否かを判断する（Ｓ９６）。要求された優先利用の設定が可能でないと判断した場合（Ｓ９６：ＮＯ）、管理ＯＳ用ＶＭ３１は、優先利用の設定が可能でない旨を、要求してきたゲストＯＳ用ＶＭ４１，４２，４３に通知する（Ｓ９７）。
【０１８４】
ゲストＯＳ用ＶＭ４１，４２，４３は、優先利用の設定が可能でない旨を通知された場合、優先利用の設定に失敗した旨を通知するエラーメッセージを、対応するモニタ５１ａ，５２ａ，５３ａに表示させる（Ｓ９５）。そして、ゲストＯＳ用ＶＭ４１，４２，４３はステップＳ９１に処理を戻す。
【０１８５】
管理ＯＳ用ＶＭ３１は、要求された優先利用の設定が可能であると判断した場合（Ｓ９６：ＹＥＳ）、優先利用の設定を要求してきたゲストＯＳ用ＶＭ４１，４２，４３に対して優先度テーブル４ｊに格納されている許容ＣＰＵ負荷を「６５」に更新する（Ｓ９８）。管理ＯＳ用ＶＭ３１は、優先度テーブル４ｊを更新した後、優先利用の設定完了を、優先利用の設定を要求してきたゲストＯＳ用ＶＭ４１，４２，４３に通知する（Ｓ９９）。
【０１８６】
ゲストＯＳ用ＶＭ４１，４２，４３は、優先利用の設定完了を通知された場合、優先利用が設定された旨を通知する通知画面を、対応するモニタ５１ａ，５２ａ，５３ａに表示させる（Ｓ１００）。そして、ゲストＯＳ用ＶＭ４１，４２，４３はステップＳ９１に処理を戻す。
【０１８７】
次に、本実施形態３のＰＣ１０において、ゲストＯＳ用ＶＭ４１，４２，４３における処理負荷が大きくなった場合に管理ＯＳ用ＶＭ３１が行なう処理についてフローチャートに基づいて説明する。図２０及び図２１は実施形態３の負荷制御処理の手順を示すフローチャートである。なお、以下の処理は、ＰＣ１０のＲＯＭ２又はＨＤＤ４に格納してある制御プログラムに従って管理ＯＳ用ＶＭ３１（管理ＯＳ３１ａ）及びゲストＯＳ用ＶＭ４１，４２，４３（ゲストＯＳ４１ａ，４２ａ，４３ａ）によって実行される。また、図２１では、破線で区切った２つの領域において、左側の領域に管理ＯＳ用ＶＭ３１による処理を、右側の領域にゲストＯＳ用ＶＭ４１，４２，４３による処理をそれぞれ示している。
【０１８８】
管理ＯＳ用ＶＭ３１は、所定時間を計時しており、所定時間（例えば１秒間）が経過したか否かを判断し（Ｓ１１１）、経過していないと判断した場合（Ｓ１１１：ＮＯ）、他の処理を行ないつつ待機する。所定時間が経過したと判断した場合（Ｓ１１１：ＹＥＳ）、管理ＯＳ用ＶＭ３１は、ＶＭＭ２１が逐次更新するＶＭ負荷テーブル４ｇに格納された各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷を取得する（Ｓ１１２）。管理ＯＳ用ＶＭ３１は、取得した各ゲストＯＳ用ＶＭ４１，４２，４３のＣＰＵ負荷の合計値を算出し（Ｓ１１３）、算出した合計値が所定値（例えば９０％）以上であるか否かを判定する（Ｓ１１４）。
【０１８９】
ＣＰＵ負荷の合計値が所定値未満であると判定した場合（Ｓ１１４：ＮＯ）、管理ＯＳ用ＶＭ３１は、ステップＳ１１１に処理を戻す。ＣＰＵ負荷の合計値が所定値以上であると判定した場合（Ｓ１１４：ＹＥＳ）、管理ＯＳ用ＶＭ３１は、ステップＳ１１２で取得したＣＰＵ負荷に基づいて、ＣＰＵ負荷が最大のゲストＯＳ用ＶＭ４１（又は４２，４３）を特定する（Ｓ１１５）。管理ＯＳ用ＶＭ３１は、特定したゲストＯＳ用ＶＭ４１（又は４２，４３）に対して設定されている許容ＣＰＵ負荷を優先度テーブル４ｊから取得する（Ｓ１１６）。
【０１９０】
管理ＯＳ用ＶＭ３１は、ステップＳ１１２で取得したゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷が、優先度テーブル４ｊから取得した許容ＣＰＵ負荷よりも大きいか否かを判断する（Ｓ１１７）。ゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷が許容ＣＰＵ負荷以下であると判断した場合（Ｓ１１７：ＮＯ）、管理ＯＳ用ＶＭ３１は、ＣＰＵ負荷が次に大きいゲストＯＳ用ＶＭ４２（又は４３）を特定する（Ｓ１１８）。
【０１９１】
管理ＯＳ用ＶＭ３１は、ＣＰＵ負荷が次に大きいゲストＯＳ用ＶＭを特定した結果、該当するゲストＯＳ用ＶＭが存在するか否かを判断する（Ｓ１１９）。ＣＰＵ負荷が次に大きいゲストＯＳ用ＶＭが存在しないと判断した場合（Ｓ１１９：ＮＯ）、管理ＯＳ用ＶＭ３１は、ステップＳ１１１に処理を戻す。ＣＰＵ負荷が次に大きいゲストＯＳ用ＶＭが存在すると判断した場合（Ｓ１１９：ＹＥＳ）、管理ＯＳ用ＶＭ３１は、ステップＳ１１６に処理を戻し、ステップＳ１１８で特定したゲストＯＳ用ＶＭ４２（又は４３）に対して設定されている許容ＣＰＵ負荷を優先度テーブル４ｊから取得する（Ｓ１１６）。管理ＯＳ用ＶＭ３１は、特定したゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷が許容ＣＰＵ負荷より大きいと判断するまで、又は、全てのゲストＯＳ用ＶＭのＣＰＵ負荷が許容ＣＰＵ負荷以下と判断するまで、ステップＳ１１６〜Ｓ１１９の処理を繰り返す。
【０１９２】
管理ＯＳ用ＶＭ３１は、特定したゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷が許容ＣＰＵ負荷より大きいと判断した場合（Ｓ１１７：ＹＥＳ）、特定したゲストＯＳ用ＶＭ４１（又は４２，４３）のＣＰＵ負荷を保持する（Ｓ１２０）。管理ＯＳ用ＶＭ３１は、特定したゲストＯＳ用ＶＭ４１（又は４２，４３）に対して、ＣＰＵ負荷の低減を要求する（Ｓ１２１）。
【０１９３】
以下のステップＳ１２２からステップＳ１３１までの処理は、上述の実施形態１において図１１で説明したステップＳ１８からステップＳ２７までの処理と同一であるので説明を省略する。これにより、管理ＯＳ用ＶＭ３１は、各ゲストＯＳ用ＶＭ４１，４２，４３について、アプリケーションプログラム５０の実行状態が制御されることによって低減されている処理負荷をＶＭ管理テーブル４ｆによって逐次管理できる。
【０１９４】
本実施形態３のＰＣ１０において、管理ＯＳ用ＶＭ３１がゲストＯＳ用ＶＭ４１，４２，４３における処理負荷を監視し、必要に応じて実行制御されているアプリケーションプログラム５０の制御を解除する処理は、上述の実施形態１において図１２及び図１３で説明した処理と同一であるので説明を省略する。また、本実施形態３のＰＣ１０において、動作中のゲストＯＳ用ＶＭ４１，４２，４３の動作を終了させる際の処理は、上述の実施形態１において図１４で説明した処理と同一であるので説明を省略する。
【０１９５】
上述したように、本実施形態３では、ＣＰＵ負荷が最大のゲストＯＳ用ＶＭ４１，４２，４３であっても、ＣＰＵ負荷が、設定されている許容ＣＰＵ負荷よりも小さい場合には、このゲストＯＳ用ＶＭ４１，４２，４３における処理負荷を低減させない。よって、各ゲストＯＳ用ＶＭ４１，４２，４３において、優先度テーブル４ｊに設定されている許容ＣＰＵ負荷の使用が確保される。従って、優先度テーブル４ｊに大きい値の許容ＣＰＵ負荷が設定されているゲストＯＳ用ＶＭ４１，４２，４３は、他のゲストＯＳ用ＶＭ４２，４３（又は４１）よりも高いＣＰＵ負荷が許容されるので、優先的に処理を実行することができる。
【０１９６】
本実施形態３のＰＣ１０は、上述した実施形態１のＰＣ１０の変形例として説明したが、本実施形態３の構成は、上述した実施形態２のＰＣ１０にも適用することができる。
【０１９７】
本実施形態３では、優先利用が設定されていないゲストＯＳ用ＶＭ４１，４２，４３に対しては許容ＣＰＵ負荷として３５％のＣＰＵ負荷が確保され、優先利用が設定されたゲストＯＳ用ＶＭ４１，４２，４３に対しては許容ＣＰＵ負荷として３５％のＣＰＵ負荷が確保されていた。しかし、各ゲストＯＳ用ＶＭ４１，４２，４３に対する許容ＣＰＵ負荷はこのような数値に限られず、例えば、ＰＣ１０の管理者によって任意に変更されてもよい。
【０１９８】
また、許容ＣＰＵ負荷は、「３５％」及び「６５％」の２段階に限られず、３段階以上に分割して設定してもよい。これにより、３段階以上の優先度を各ゲストＯＳ用ＶＭ４１，４２，４３に設定することができる。更に、ＰＣ１０を使用する際のサービス料金に応じて、許容ＣＰＵ負荷を変動させてもよい。
【０１９９】
本実施形態３では、管理ＯＳ用ＶＭ３１は、各ゲストＯＳ用ＶＭ４１，４２，４３から優先利用が要求された場合に、各ゲストＯＳ用ＶＭ４１，４２，４３を優先利用できるように設定していた。このような構成のほかに、例えば、予め優先的にＰＣ１０を使用できるユーザを登録しておき、登録してあるユーザから優先利用が要求された場合にのみ、このユーザのゲストＯＳ用ＶＭ４１，４２，４３を優先利用できるように設定してもよい。
【０２００】
また、各ユーザが時間帯を指定して優先利用を要求し、管理ＯＳ用ＶＭ３１が、要求された時間帯について、各ゲストＯＳ用ＶＭ４１，４２，４３に対する優先利用を設定してもよい。この場合、時間帯毎にゲストＯＳ用ＶＭ４１，４２，４３のそれぞれが優先的に処理を実行できるので、各ユーザの操作性を向上させることができる。
【０２０１】
（実施形態４）
以下に、実施形態４に係るＰＣについて説明する。なお、本実施形態４のＰＣは、上述した実施形態１のＰＣ１０と同様の構成によって実現することができるので、同様の構成については同一の符号を付して説明を省略する。
【０２０２】
上述した実施形態１では、各ゲストＯＳ用ＶＭ４１，４２，４３において実行中のアプリケーションプログラム５０の実行状態を制御する方法として、アプリケーションプログラム５０を「停止」又は「一時停止」させていた。本実施形態４では、アプリケーションプログラム５０の実行状態を制御する方法として、対応するモニタ５１ａ，５２ａ，５３ａに表示させる表示画面のサイズを半分（１／２）にする処理について説明する。
【０２０３】
図示しないが、本実施形態４の制御方法テーブル４ｄには、制御方法として、「停止」及び「一時停止」のほかに、「表示サイズ縮小（半分）」が格納されている。
本実施形態４のゲストＯＳ用ＶＭ４１，４２，４３において、制御部４１ｄは、制御方法特定部４１ｃからアプリケーションＩＤ及び制御方法を通知される。
【０２０４】
本実施形態４の制御部４１ｄは、「表示サイズ縮小（半分）」の制御方法を通知された場合、通知されたアプリケーションＩＤが示すアプリケーションプログラム５０に対して、表示サイズの縮小処理を行なう。制御部４１ｄが表示サイズの縮小処理を行なうことにより、アプリケーションプログラム５０における処理負荷が低減される。
【０２０５】
制御部４１ｄは、まず、現在表示中の表示画面のサイズを検出する。なお、表示画面のサイズは、アプリケーションプログラム５０において設定されており、制御部４１ｄは、現在表示中の表示画面のサイズをアプリケーションプログラム５０から取得できる。次に制御部４１ｄは、縮小後の表示画面のサイズを算出する。制御部４１ｄは、現在の表示サイズとして、例えば６４０pixel×４８０pixelを取得した場合、縮小後の表示サイズとして、３２０pixel×２４０pixelを算出する。そして、制御部４１ｄは、算出した縮小後の表示サイズでの表示画面の表示を開始する。なお、このとき、制御部４１ｄは、対応するモニタ５１ａ（又は５２ａ，５３ａ）に、表示サイズが縮小される旨を通知する通知画面を表示させ、ゲストＯＳ用ＶＭ４１，４２，４３のユーザに通知しておく。
【０２０６】
本実施形態４のＣＰＵ１が実現する各機能において、上述した処理以外は、上述の実施形態１で説明した処理と同様の処理であるので説明を省略する。
【０２０７】
また、本実施形態４のＰＣ１０において、管理ＯＳ用ＶＭ３１がゲストＯＳ用ＶＭ４１，４２，４３を起動させる際の処理は、上述の実施形態１において図９で説明した処理と同一であるので説明を省略する。
【０２０８】
また、本実施形態４のＰＣ１０において、ゲストＯＳ用ＶＭ４１，４２，４３における処理負荷が大きくなった場合に管理ＯＳ用ＶＭ３１が行なう処理は、上述の実施形態１において図１０及び図１１で説明した処理と同一であるので説明を省略する。なお、本実施形態４のゲストＯＳ用ＶＭ４１，４２，４３は、図１１のステップＳ１９において、アプリケーションプログラム５０の実行状態を制御する方法として「表示サイズ縮小」を読み出す場合がある。この場合、図１１のステップＳ２２において、ゲストＯＳ用ＶＭ４１，４２，４３は、アプリケーションプログラム５０を実行することによって表示される表示画面のサイズを半分（１／２）にする処理を行なう。
【０２０９】
本実施形態４のＰＣ１０において、管理ＯＳ用ＶＭ３１がゲストＯＳ用ＶＭ４１，４２，４３における処理負荷を監視し、必要に応じて実行制御されているアプリケーションプログラム５０の制御を解除する処理は、上述の実施形態１において図１２及び図１３で説明した処理と同一であるので説明を省略する。また、本実施形態４のＰＣ１０において、動作中のゲストＯＳ用ＶＭ４１，４２，４３の動作を終了させる際の処理は、上述の実施形態１において図１４で説明した処理と同一であるので説明を省略する。
【０２１０】
上述したように、本実施形態４では、各ゲストＯＳ用ＶＭ４１，４２，４３で実行中のアプリケーションプログラム５０における処理負荷を低減させる方法として、モニタ５１ａ，５２ａ，５３ａに表示させる表示画面のサイズを半分にする処理を行なう。これにより、アプリケーションプログラム５０の処理を停止又は一時停止させることなく、アプリケーションプログラム５０における処理負荷が低減される。よって、表示画面のサイズは縮小されるが、アプリケーションプログラム５０の処理は中断されないので、ゲストＯＳ用ＶＭ４１，４２，４３のユーザの操作性が向上する。
【０２１１】
なお、アプリケーションプログラム５０における処理負荷を低減させるために縮小される表示画面のサイズは、アプリケーションプログラム５０における処理負荷の大小に応じて適宜変更させてもよい。
本実施形態４のＰＣ１０は、上述した実施形態１のＰＣ１０の変形例として説明したが、本実施形態４の構成は、上述した実施形態２，３のＰＣ１０にも適用することができる。
【０２１２】
（実施形態５）
以下に、実施形態５に係るＰＣについて説明する。なお、本実施形態５のＰＣは、上述した実施形態１のＰＣ１０と同様の構成によって実現することができるので、同様の構成については同一の符号を付して説明を省略する。
【０２１３】
上述した実施形態１では、各ゲストＯＳ用ＶＭ４１，４２，４３において実行中のアプリケーションプログラム５０の実行状態を制御する方法として、アプリケーションプログラム５０を「停止」又は「一時停止」させていた。本実施形態５では、アプリケーションプログラム５０の実行状態を制御する方法として、アプリケーションプログラム５０を実行させるために必要なＣＰＵ１を割り当てる際の優先度を変動させる処理について説明する。
【０２１４】
図示しないが、本実施形態５の制御方法テーブル４ｄには、制御方法として、「停止」及び「一時停止」のほかに、「ＣＰＵを割り当てる際の優先度を下げる」が格納されている。
本実施形態５のゲストＯＳ用ＶＭ４１，４２，４３において、制御部４１ｄは、制御方法特定部４１ｃからアプリケーションＩＤ及び制御方法を通知される。
【０２１５】
本実施形態５の制御部４１ｄは、「ＣＰＵを割り当てる際の優先度を下げる」の制御方法を通知された場合、通知されたアプリケーションＩＤが示すアプリケーションプログラム５０に対して、ＣＰＵを割り当てる際の優先度を下げる処理を行なう。制御部４１ｄがＣＰＵを割り当てる際の優先度を下げる処理を行なうことにより、アプリケーションプログラム５０の実行速度が遅くなり、処理負荷が低減される。
【０２１６】
具体的には、制御部４１ｄは、例えば、マイクロソフト株式会社によって提供されているＷｉｎｄｏｗｓが提供する制御関数の一つであるSetPriorityClass（）関数を使用し、アプリケーションプログラム５０に対してＣＰＵを割り当てる際の優先度を下げる処理を行なう。より具体的には、制御部４１ｄは、通知されたアプリケーションＩＤが示すアプリケーションプログラム５０に対して、例えば、図２２に示すような設定情報を設定する。
【０２１７】
図２２はＣＰＵを割り当てる際の優先度を下げる処理に用いる設定情報を示す図である。図２２中の「hProcess」の箇所には、アプリケーションプログラム５０を特定するためのハンドルＩＤを記述する。なお、アプリケーションプログラム５０のハンドルＩＤは、アプリケーションプログラム５０に記述されており、制御部４１ｄは、ハンドルＩＤをアプリケーションプログラム５０から取得できる。
【０２１８】
なお、制御部４１ｄは、アプリケーションプログラム５０に対してＣＰＵを割り当てる際の優先度を下げる処理を行なう際にも、その旨を通知する通知画面を、対応するモニタ５１ａ（又は５２ａ，５３ａ）に表示させ、ゲストＯＳ用ＶＭ４１，４２，４３のユーザに通知しておく。
【０２１９】
本実施形態５のＣＰＵ１が実現する各機能において、上述した処理以外は、上述の実施形態１で説明した処理と同様の処理であるので説明を省略する。
【０２２０】
また、本実施形態５のＰＣ１０において、管理ＯＳ用ＶＭ３１がゲストＯＳ用ＶＭ４１，４２，４３を起動させる際の処理は、上述の実施形態１において図９で説明した処理と同一であるので説明を省略する。
【０２２１】
また、本実施形態５のＰＣ１０において、ゲストＯＳ用ＶＭ４１，４２，４３における処理負荷が大きくなった場合に管理ＯＳ用ＶＭ３１が行なう処理は、上述の実施形態１において図１０及び図１１で説明した処理と同一であるので説明を省略する。なお、本実施形態４のゲストＯＳ用ＶＭ４１，４２，４３は、図１１のステップＳ１９において、アプリケーションプログラム５０の実行状態を制御する方法として「ＣＰＵを割り当てる際の優先度を下げる」を読み出す場合がある。この場合、図１１のステップＳ２２において、ゲストＯＳ用ＶＭ４１，４２，４３は、アプリケーションプログラム５０に対して、ＣＰＵを割り当てる際の優先度を下げる処理を行なう。
【０２２２】
本実施形態５のＰＣ１０において、管理ＯＳ用ＶＭ３１がゲストＯＳ用ＶＭ４１，４２，４３における処理負荷を監視し、必要に応じて実行制御されているアプリケーションプログラム５０の制御を解除する処理は、上述の実施形態１において図１２及び図１３で説明した処理と同一であるので説明を省略する。また、本実施形態５のＰＣ１０において、動作中のゲストＯＳ用ＶＭ４１，４２，４３の動作を終了させる際の処理は、上述の実施形態１において図１４で説明した処理と同一であるので説明を省略する。
【０２２３】
上述したように、本実施形態５では、各ゲストＯＳ用ＶＭ４１，４２，４３で実行中のアプリケーションプログラム５０における処理負荷を低減させる方法として、アプリケーションプログラム５０にＣＰＵ１を割り当てる際の優先度を下げる処理を行なう。これにより、アプリケーションプログラム５０の処理を停止又は一時停止させることなく、アプリケーションプログラム５０における処理負荷が低減される。よって、アプリケーションプログラム５０の動作速度は遅くなるが、アプリケーションプログラム５０の処理は中断されないので、ゲストＯＳ用ＶＭ４１，４２，４３のユーザの操作性が向上する。
【０２２４】
なお、アプリケーションプログラム５０にＣＰＵ１を割り当てる際の優先度を下げる処理は、上述のSetPriorityClass（）関数を使用する方法に限られず、例えば、ＣＰＵ１の処理時間を分割して実行中の各アプリケーションプログラム５０に割り当てる際の割り当て率を下げてもよい。
本実施形態５のＰＣ１０は、上述した実施形態１のＰＣ１０の変形例として説明したが、本実施形態５の構成は、上述した実施形態２，３のＰＣ１０にも適用することができる。
【０２２５】
（実施形態６）
以下に、実施形態６に係るＰＣについて説明する。図２３は実施形態６のＰＣの構成を示すブロック図である。本実施形態６のＰＣ１０は、図２に示したハードウェア各部のほかに、外部記憶装置７を備える。外部記憶装置７は、例えば、ＣＤ−ＲＯＭドライブ又はＤＶＤドライブ等であり、ＣＤ−ＲＯＭ又はＤＶＤ−ＲＯＭ等である記録媒体７ａから、記録媒体７ａに格納されたデータを読み出す。
【０２２６】
記録媒体７ａは、上述の各実施形態で説明したＰＣ１０として動作するために必要な制御プログラムを記録している。外部記憶装置７は、記録媒体７ａから制御プログラムを読み出してＨＤＤ４に格納させる。ＣＰＵ１は、ＨＤＤ４に格納された制御プログラムをＲＡＭ３に読み出して順次実行し、これにより、本実施形態６のＰＣ１０は、上述の各実施形態で説明したＰＣ１０と同様の動作を行なう。
【０２２７】
記録媒体７ａとしては、ＣＤ−ＲＯＭ又はＤＶＤ−ＲＯＭのほかに、フレキシブルディスク、メモリカード、ＵＳＢメモリ等、各種の記録媒体を用いることができる。
【０２２８】
なお、ＰＣ１０は、インターネット又はＬＡＮ（Local Area Network）等のネットワークに接続するための通信部を有してもよい。この場合、ＰＣ１０は、上述の各実施形態で説明したＰＣ１０として動作するために必要な制御プログラムを、ネットワークを介してダウンロードしてＨＤＤ４に格納させればよい。
【０２２９】
上述した実施形態１〜６では、１つのＰＣ１０に仮想化技術を適用し、１つのＰＣ１０に複数の入出力デバイスセット５１，５２，５３を直接的に接続してＰＣ１０を共用する例について説明した。本願の情報処理装置は、例えば、１つのサーバ装置のハードウェアを仮想化し、このサーバ装置をネットワークを介して複数のユーザによって共用するシンクライアントシステムを提供するサーバ装置においても適用できる。
【符号の説明】
【０２３０】
１０  ＰＣ（情報処理装置）
１  ＣＰＵ
２１  ＶＭＭ
２４  負荷状態監視部（検出手段）
３１  管理ＯＳ用ＶＭ
３１ｅ  ＶＭ負荷判定部（判定手段、特定手段）
４１  第１ゲストＯＳ用ＶＭ
４２  第２ゲストＯＳ用ＶＭ
４３  第３ゲストＯＳ用ＶＭ
４１ａ  第１ゲストＯＳ（実行手段）
４１ｂ  負荷解析部（処理特定手段）
４１ｄ  制御部（制御手段）
４２ａ  第２ゲストＯＳ（実行手段）
４３ａ  第３ゲストＯＳ（実行手段）
【図１】
2010176413.tif 000003
【図２】
2010176413.tif 000004
【図３】
2010176413.tif 000005
【図４】
2010176413.tif 000006
【図５】
2010176413.tif 000007
【図６】
2010176413.tif 000008
【図７】
2010176413.tif 000009
【図８】
2010176413.tif 000010
【図９】
2010176413.tif 000011
【図１０】
2010176413.tif 000012
【図１１】
2010176413.tif 000013
【図１２】
2010176413.tif 000014
【図１３】
2010176413.tif 000015
【図１４】
2010176413.tif 000016
【図１５】
2010176413.tif 000017
【図１６】
2010176413.tif 000018
【図１７】
2010176413.tif 000019
【図１８】
2010176413.tif 000020
【図１９】
2010176413.tif 000021
【図２０】
2010176413.tif 000022
【図２１】
2010176413.tif 000023
【図２２】
2010176413.tif 000024
【図２３】
2010176413.tif 000025