(57)【要約】【課題】仮想計算機を使用するユーザ自身により、仮想計算機の再起動を実行させることができる情報処理装置、情報処理方法及びコンピュータプログラムを提供する。【解決手段】複数のＶＭが動作するＰＣ１０において、各ＶＭに、入出力デバイス５１，５２，５３，５４を割り当て、入出力デバイス５１，５２，５３，５４からＶＭそれぞれを操作可能にする。入出力デバイス５１，５２，５３，５４から、リセットキーの入力を随時監視し、リセットキーが入力された場合に、対応するＶＭのリセットを開始する。【選択図】図１
2011048819.tif 000002
【特許請求の範囲】
【請求項１】
物理資源を論理的に分割して複数の仮想計算機として動作させる手段と、
データを入出力する複数の入出力手段と、
該入出力手段の何れかを、動作している仮想計算機の何れかに割り当てる割当手段と、
前記入出力手段、及び該入出力手段が割り当てられた仮想計算機の一方から入力されたデータを他方へ出力する転送手段と、
前記入出力手段から所定データが入力されたことを検出する検出手段と、
該検出手段が検出した場合、動作している仮想計算機の何れかを停止する停止手段と、
該停止手段による停止後、停止した仮想計算機を起動する起動手段と
を備える情報処理装置。
【請求項２】
前記停止手段は、
前記検出手段が検出した場合、前記所定データを入力した入出力手段が割り当てられた仮想計算機を停止するようにしてある
請求項１に記載の情報処理装置。
【請求項３】
前記転送手段は、
前記入出力手段から前記所定データが入力されたときに、前記検出手段へ入力の通知を行うようにしてあり、
前記仮想計算機は、
定期的に信号を出力する手段
を有しており、
前記仮想計算機から前記信号が定期的に出力されているか否かを監視する監視手段
をさらに備え、
前記検出手段は、
前記仮想計算機から前記信号が出力されている場合、前記転送手段からの通知を受けることで入力を検出し、
前記仮想計算機から前記信号が出力されていない場合、前記入出力手段が入力した前記所定データを、前記入出力手段から直接取得することで入力を検出するようにしてある
請求項１又は２に記載の情報処理装置。
【請求項４】
前記検出手段が前記所定データが入力されたことを検出した場合、動作している複数の仮想計算機の何れかの選択を受け付ける選択受付手段
をさらに備え、
前記検出手段は、
前記選択受付手段が受け付けた仮想計算機に対応するデータが前記入出力手段から入力されたことを検出し、
前記停止手段は、
前記検出手段が入力を検出した場合、前記選択受付手段が受け付けた仮想計算機を停止するようにしてある
請求項１から３の何れか一つに記載の情報処理装置。
【請求項５】
仮想計算機を識別する識別情報を格納している記録媒体が接続可能な接続手段と、
該接続手段に前記記録媒体が接続された場合、前記記録情報を前記記録媒体から読み出す読出手段と
をさらに備え、
前記検出手段は、
前記読出手段が読み出した識別情報に係る仮想計算機に対応するデータが、前記入出力手段から入力されたことを検出し、
前記停止手段は、
前記検出手段が入力を検出した場合、前記識別情報に係る仮想計算機を停止するようにしてある
請求項１から４の何れか一つに記載の情報処理装置。
【請求項６】
データを入出力する複数の入出力手段を備え、物理資源を論理的に分割して複数の仮想計算機として動作させる情報処理装置で行う情報処理方法において、
前記入出力手段の何れかを、動作している仮想計算機の何れかに割り当てるステップと、
前記入出力手段、及び該入出力手段が割り当てられた仮想計算機の一方から入力されたデータを他方へ出力するステップと、
前記入出力手段から所定データが入力されたことを検出するステップと、
入力を検出した場合、動作している仮想計算機の何れかを停止するステップと、
停止した仮想計算機を起動するステップと、
を備える情報処理方法。
【請求項７】
物理資源を論理的に分割して複数の仮想計算機として動作させるコンピュータを、
データを入出力する複数の入出力手段の何れかを、動作している仮想計算機の何れかに割り当てる割当手段、
前記入出力手段、及び該入出力手段が割り当てられた仮想計算機の一方から入力されたデータを他方へ出力する転送手段、
前記入出力手段から所定データが入力されたことを検出する検出手段、
該検出手段が検出した場合、動作している仮想計算機の何れかを停止する停止手段、及び
該停止手段による停止後、停止した仮想計算機を起動する起動手段
として機能させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンに割り当てられた入出力デバイスから動作している仮想マシンのリセットを行うことができる情報処理装置、情報処理方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータ内のハードウェア資源、例えばCentral Processing Unit（ＣＰＵ
）又はメモリ等は高性能化が進んでおり、複雑な処理を短時間で実行できるようになっている。しかし、コンピュータが文書作成などの簡単な作業に用いられる場合、ハードウェア資源の性能は十分に利用されていないため、ハードウェア資源の余剰性能を効率よく利用することが望まれている。そこで、ハードウェア資源を仮想的に複数に分割する仮想化技術が提案されている。この仮想化技術では、ハードウェア資源を仮想的に複数のパーティションに分割し、各パーティションで擬似的にコンピュータが稼働しているようにコンピュータを構築する。即ち、１つのコンピュータ上で仮想的に複数のコンピュータを動作させることができる。この仮想的に動作するコンピュータを仮想マシン（ＶＭ：Virtual Machine）と言う。
【０００３】
また、コンピュータには、仮想マシン毎にマウス及びディスプレイ等のデバイスが接続されている。例えば１つのコンピュータ上で４つの仮想マシンが動作する場合、４組のデバイスがコンピュータに接続されている。各デバイスは、接続されたときにパーティション毎に割り当てる設定が行われる。これにより、各ユーザは、各デバイスから仮想マシンの操作が可能となる。
【０００４】
このように仮想化技術では、複数の仮想マシンを１つのコンピュータに集約することで、複数のユーザが一つのコンピュータを同時に利用することができ、省スペース化及び省電力化を図ることが可能となる。しかしながら、複数の仮想マシンが動作するコンピュータでは、仮想マシンの一つがハングアップ（誤動作又は停止等）した場合、そのコンピュータの管理者でなければ仮想マシンを再起動させる手段がなく、コンピュータのリセットボタンや電源ボタン等を押すことによってコンピュータを再起動する必要があるため、他の仮想マシンも一同に再起動されるといった問題がある。この場合、他の仮想マシンを使用中のユーザは、使用を一時的に中断する必要があり、各ユーザに与える影響が非常に大きい。
【０００５】
また、上述のようにコンピュータが再起動されることで、デバイスをパーティションに割り当てる設定もリセットされるといった問題もある。この場合、使用を一時的に中断させられたユーザが再起動前と同じ仮想マシンを使用できるようにするために、再起動後に再起動前と同じ設定を行う必要がある。
【０００６】
そこで、コンピュータを管理する管理者専用のコンソールを予め用意しておき、仮想マシンを再起動する際には、管理者が専用のコンソールから再起動を行う方法がある（例えば、特許文献１参照）。また、パーティションに割り当てた設定をデータベースに記憶しておき、再起動後に再起動前と同一の設定を行う方法もある（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００４−５２３０４８号公報
【特許文献２】特表２００７−５１０１９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述の特許文献１又は特許文献２等では、管理者専用のコンソールを設ける必要があり、またユーザが再起動を行いたい場合であっても、管理者に依頼する必要がある等、スムーズに再起動を行えないといった問題がある。
【０００９】
本発明はかかる事情に鑑みてなされたものであり、その目的とするところは、仮想計算機を使用するユーザ自身により、仮想計算機の再起動を実行させることができる情報処理装置、情報処理方法及びコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本願に開示する情報処理装置は、物理資源を論理的に分割して複数の仮想計算機として動作させる。また本願に開示する情報処理装置は、データを入出力する複数の入出力手段の何れかを、動作している仮想計算機の何れかに割り当て、入出力手段、及び入出力手段が割り当てられた仮想計算機の一方から入力されたデータを他方へ出力する。さらに本願に開示する情報処理装置は、入出力手段から所定データが入力されたことを検出した場合、動作している仮想計算機の何れかを停止し、その後、停止した仮想計算機を起動する。
【発明の効果】
【００１１】
本願に開示する情報処理装置では、仮想計算機を使用するユーザ自身が、仮想計算機に割り当てられた入出力手段から仮想計算機の再起動を実行させることができる。
【図面の簡単な説明】
【００１２】
【図１】実施形態１のＰＣの構成を示す模式図である。
【図２】実施形態１のＰＣの構成を示すブロック図である。
【図３】ＰＣに格納される各テーブルの内容を示す模式図である。
【図４】ＰＣに格納される各テーブルの内容を示す模式図である。
【図５】実施形態１のＰＣの機能を示す機能ブロック図である。
【図６】リセット通知画面の一例を示す模式図である。
【図７】実施形態１のＶＭＭ及び管理ＯＳが実行する処理手順を示すフローチャートである。
【図８】実施形態１のＶＭＭ及び管理ＯＳが実行する処理手順を示すフローチャートである。
【図９】実施形態１のＶＭＭ及び管理ＯＳが実行する処理手順を示すフローチャートである。
【図１０】Ｉ／Ｏ処理監視部が実行する処理手順を示すフローチャートである。
【図１１】キー入力監視部が実行する処理手順を示すフローチャートである。
【図１２】再起動制御部が実行する処理手順を示すフローチャートである。
【図１３】再起動制御部が実行する処理手順を示すフローチャートである。
【図１４】実施形態２のＰＣの構成を示す模式図である。
【図１５】実施形態２のＶＭＭ及び管理ＯＳが実行する処理手順を示すフローチャートである。
【図１６】実施形態２のＶＭＭ及び管理ＯＳが実行する処理手順を示すフローチャートである。
【図１７】実施形態３のリセットキーの設定画面の一例を示す模式図である。
【図１８】実施形態３のＶＭ管理テーブルの内容を示す模式図である。
【図１９】実施形態３のＰＣの機能を示す機能ブロック図である。
【図２０】入力キー設定部及び再起動制御部が実行する処理手順を示すフローチャートである。
【図２１】モニタに表示する認証画面の一例を示す模式図である。
【図２２】実施形態４のＶＭ管理テーブルの内容を示す模式図である。
【図２３】実施形態４のＰＣの機能を示す機能ブロック図である。
【図２４】モニタに表示する認証画面の別の例を示す模式図である。
【図２５】実施形態４のＶＭＭ、管理ＯＳ及びゲストＯＳが実行する処理手順を示すフローチャートである。
【図２６】実施形態４のＶＭＭ、管理ＯＳ及びゲストＯＳが実行する処理手順を示すフローチャートである。
【図２７】モニタに表示する認証画面の一例を示す模式図である。
【図２８】モニタに表示する認証画面の別の例を示す模式図である。
【図２９】実施形態５のＰＣの機能を示す機能ブロック図である。
【図３０】実施形態５のＶＭ管理テーブルの内容を示す模式図である。
【図３１】実施形態５のＶＭＭ、管理ＯＳ及びゲストＯＳが実行する処理手順を示すフローチャートである。
【図３２】実施形態５のＶＭＭ、管理ＯＳ及びゲストＯＳが実行する処理手順を示すフローチャートである。
【図３３】実施形態６のＰＣの機能を示す機能ブロック図である。
【図３４】実施形態６のＶＭ管理テーブルの内容を示す模式図である。
【図３５】実施形態６のＶＭＭ、管理ＯＳ及びゲストＯＳが実行する処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下に、本願に開示する情報処理装置、情報処理方法及びコンピュータプログラムについて、各実施形態を示す図面に基づいて詳述する。以下では、本願に開示する情報処理装置をパーソナルコンピュータ（以下、ＰＣという）に適用した各実施形態について説明する。なお、本願に開示する情報処理装置は、例えばLocal Area Network（ＬＡＮ）又はWide Area Network（ＷＡＮ）等に接続されるサーバ装置であってもよい。
【００１４】
（実施形態１）
以下に、実施形態１に係るＰＣについて説明する。図１は実施形態１のＰＣの構成を示す模式図である。
【００１５】
ＰＣ１０は、筺体に８つのUniversal Serial Bus（ＵＳＢ）ポート５ａ，５ａ…及び４つのモニタ接続ポート６ａ，６ａ…を有する。図１では、ＰＣ１０の側面の下方に水平方向に８つ並べて示したポートがＵＳＢポート５ａ，５ａ…であり、ＵＳＢポート５ａ，５ａ…の上方に水平方向に４つ並べて示したポートがモニタ接続ポート６ａ，６ａ…である。ＵＳＢポート５ａ，５ａ…には、ＵＳＢケーブルを介して４つのキーボード５１ｂ，５２ｂ，５３ｂ，５４ｂ及び４つのマウス５１ｃ，５２ｃ，５３ｃ，５４ｃが接続されている。また、モニタ接続ポート６ａ，６ａ…には、モニタ接続用ケーブルを介して４つのモニタ５１ａ，５２ａ，５３ａ，５４ａが接続されている。従って、ＰＣ１０は、モニタ５１ａ，５２ａ，５３ａ，５４ａ、キーボード５１ｂ，５２ｂ，５３ｂ，５４ｂ及びマウス５１ｃ，５２ｃ，５３ｃ，５４ｃをそれぞれ含む入出力デバイス５１，５２，５３，５４を設置することができる。
【００１６】
本実施形態１のＰＣ１０は、仮想化技術によりＶＭ４１，４２，４３，４４（図５参照）が動作する。ＶＭ４１，４２，４３，４４は、独自にオペレーティングシステム（以下、ＯＳ：Operating Systemと言う）及びアプリケーションを物理コンピュータと同じように実行させる仮想的なコンピュータである。ＶＭ４１（又は４２，４３，４４）には、設置された入出力デバイス５１（又は５２，５３，５４）が割り当てられる。従って、本実施形態１に係るＰＣ１０は４つのＰＣとして動作する。
【００１７】
ユーザは、入出力デバイス５１（又は５２，５３，５４）からＶＭ４１（又は４２，４３，４４）を使用することができる。以下の説明では、入出力デバイス５１（又は５２，５３，５４）のキーボード５１ｂ（又は５２ｂ，５３ｂ，５４ｂ）から、予め設定されたリセットキーが入力されて、ＶＭ４１（又は４２，４３，４４）が再起動（リセット）する場合について説明する。また以下の説明では、ＶＭ４１に入出力デバイス５１を割り当て、ＶＭ４２に入出力デバイス５２を割り当てるものとする。さらにＶＭ４３に入出力デバイス５３を割り当て、ＶＭ４４に入出力デバイス５４を割り当てるものとする。
【００１８】
なお本願に開示する情報処理装置を適用できるＰＣは、このような構成に限られない。例えば、ＵＳＢポート５ａ，５ａ…の数は８つに限られず、モニタ接続ポート６ａ，６ａ…の数は４つに限られない。また、１つのＵＳＢポート５ａにＵＳＢハブを接続し、ＵＳＢハブを介して複数のキーボード及びマウスを接続させたＰＣ１０にも、本願に開示する情報処理装置を適用することができる。また、ＰＣ１０で動作するＶＭの数は４つに限られないし、ＶＭ４１，４２，４３，４４に割り当てる入出力デバイス５１，５２，５３，５４の組み合わせは、適宜変更可能である。
【００１９】
図２は実施形態１のＰＣ１０の構成を示すブロック図である。
【００２０】
本実施形態１のＰＣ１０は、ＣＰＵ１、Read Only Memory（ＲＯＭ）２、Random Access Memory（ＲＡＭ）３、ハードディスクドライブ（以下、ＨＤＤという）４、ＵＳＢインタフェース５及びモニタインタフェース６等のハードウェア各部を備える。これらのハードウェア各部はバス１ａを介して相互に接続されている。
【００２１】
ＣＰＵ１は、ＲＯＭ２又はＨＤＤ４に予め格納されている制御プログラムを適宜ＲＡＭ３に読み出して実行すると共に、上述したハードウェア各部の動作を制御する。ＲＯＭ２は、ＰＣ１０を本願に開示する情報処理装置として動作させるために必要な種々の制御プログラム２ａを予め格納している。ＲＡＭ３は、例えばStatic ＲＡＭ（ＳＲＡＭ）、Dynamic ＲＡＭ（ＤＲＡＭ）、フラッシュメモリ等である。ＲＡＭ３は、ＣＰＵ１による制御プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００２２】
ＨＤＤ４は大容量の記憶装置である。ＨＤＤ４は、ＰＣ１０を本願に開示する情報処理装置として動作させるために必要な種々の制御プログラム及び各種のデータ等を格納している。ＨＤＤ４は、後述するVirtual Machine Monitor（ＶＭＭ）プログラム２０、管理
ＯＳプログラム３０、４つのゲストＯＳプログラム４０、アプリケーションプログラム５０等を格納している。各プログラム２０，３０，４０，５０は、ＣＰＵ１が読み出して実行する制御プログラムであって、ＣＰＵ１によりＲＡＭ３に読み出しされて実行される。また、ＨＤＤ４は、後述の図３及び図４で説明するユーザ情報テーブル４ａ、ＶＭ情報テーブル４ｂ、リソーステーブル４ｃ、及びＶＭ管理テーブル４ｄ等を格納している。
【００２３】
ＵＳＢインタフェース５には、８つのＵＳＢポート５ａ，５ａ…が接続されている。ＵＳＢインタフェース５は、ＵＳＢポート５ａ，５ａ…にそれぞれ接続されたＵＳＢケーブルを介して接続された機器との間でデータの送受信を行なう。本実施形態１のＵＳＢインタフェース５は、ＵＳＢケーブルを介してキーボード５１ｂ，５２ｂ，５３ｂ，５４ｂ及びマウス５１ｃ，５２ｃ，５３ｃ，５４ｃと接続されている。従って、ＵＳＢインタフェース５は、キーボード５１ｂ，５２ｂ，５３ｂ，５４ｂ及びマウス５１ｃ，５２ｃ，５３ｃ，５４ｃとの間でデータの送受信を行なう。
【００２４】
キーボード５１ｂ，５２ｂ，５３ｂ，５４ｂ及びマウス５１ｃ，５２ｃ，５３ｃ，５４ｃは、ユーザがＰＣ１０を操作するために必要な各種の操作検知装置を備えている。ユーザにより各操作キーが操作された場合、キーボード５１ｂ，５２ｂ，５３ｂ，５４ｂ及びマウス５１ｃ，５２ｃ，５３ｃ，５４ｃは、操作された操作キーに対応した制御信号を出力する。
【００２５】
モニタインタフェース６には、４つのモニタ接続ポート６ａ，６ａ…が接続されている。本実施形態１のモニタインタフェース６は、モニタ接続ポート６ａ，６ａ…にそれぞれ接続されたモニタ接続用ケーブルを介してモニタ５１ａ，５２ａ，５３ａ，５４ａと接続されている。従って、モニタインタフェース６は、モニタ５１ａ，５２ａ，５３ａ，５４ａとの間でデータの送受信を行なう。
【００２６】
モニタ５１ａ，５２ａ，５３ａ，５４ａは、液晶ディスプレイ又はＣＲＴ（Cathode Ray Tube）ディスプレイ等である。モニタ５１ａ，５２ａ，５３ａ，５４ａは、対応するＶＭ４１，４２，４３，４４から、モニタインタフェース６を介して送出されるデータに従って必要な情報を表示する。表示する内容としては、例えばＰＣ１０の動作状態、ユーザによって入力された情報、及びユーザに対して通知すべき情報等である。
【００２７】
次に、上述のＨＤＤ４に格納されている管理ＯＳプログラム３０、ゲストＯＳプログラム４０、及びアプリケーションプログラム５０、並びに各テーブルについて説明する。各プログラム２０，３０，４０，５０は、ＣＰＵ１によりＲＡＭ３に読み出されて実行される。
【００２８】
ＶＭＭプログラム２０は、ＰＣ１０でＶＭ４１，４２，４３，４４の動作を可能にする仮想化技術を実現するためのソフトウェアプログラムである。ＣＰＵ１は、ＰＣ１０の起動後にＶＭＭプログラム２０を実行することにより仮想マシンモニタ（以下、ＶＭＭと言う）としての動作を開始する。ＣＰＵ１がＶＭＭ２１として動作することにより、ＰＣ１０には、ＶＭ４１，４２，４３，４４が独立して動作可能な仮想環境が提供される。
【００２９】
管理ＯＳプログラム３０は、上述の仮想環境上でＶＭ４１，４２，４３，４４を起動及び停止する機能、及びＶＭ４１，４２，４３，４４に対してリソースを割り当て及び割り当てを解放する機能を実現するためのソフトウェアプログラムである。ＣＰＵ１は、ＶＭＭプログラム２０をＲＡＭ３にロードした後、管理ＯＳプログラム３０を実行することにより後述の管理ＯＳとしての動作を開始する。ＶＭ４１，４２，４３，４４に割り当てるリソースは、ＣＰＵ１、ＲＡＭ３、ＨＤＤ４、入出力デバイス５１，５２，５３，５４等である。
【００３０】
ＶＭディスクイメージ６１，６２，６３，…はゲストＯＳプログラム４０とアプリケーションプログラム５０を含む仮想マシン用のディスクイメージである。ＶＭディスクイメージ６１，６２，６３，…は起動する仮想マシンごとに必要となり、仮想マシンを使用する利用者によってもゲストＯＳプログラムやアプリケーションプログラムが異なる。ゲストＯＳプログラム４０は、ＶＭ４１，４２，４３，４４上でＯＳ（以下、ゲストＯＳと言う）を実行させるためのソフトウェアプログラムである。ＣＰＵ１は、ＶＭ４１，４２，４３，４４が起動した後、ＶＭディスクイメージ６１，６２，６３，…をＲＡＭ３にロードした後、ゲストＯＳプログラム４０を実行することで、ゲストＯＳとしての動作を開始する。ゲストＯＳは、例えばWindows（登録商標）又はLinux（登録商標）等である。ゲストＯＳは、実行した処理に応じて表示すべきCommand User Interface（ＣＵＩ）、Graphic User Interface（ＧＵＩ）等を含む表示画面を生成し、自身が動作しているＶＭ４１（又は４２，４３，４４）に割り当てたモニタ５１ａ（又は５２ａ，５３ａ，５４ａ）に表示させる。また、ゲストＯＳは、割り当てられたキーボード５１ｂ（又は５２ｂ，５３ｂ，５４ｂ）及びマウス５１ｃ（又は５２ｃ，５３ｃ，５４ｃ）からの制御信号を受け付ける。そして、ゲストＯＳは、受け付けた制御信号に応じて各種処理を実行する実行手段として機能する。
【００３１】
アプリケーションプログラム５０は、ゲストＯＳのそれぞれによって実行されるソフトウェアプログラムである。ＶＭ４１，４２，４３，４４は、アプリケーションプログラム５０が記録された外部メモリからアプリケーションプログラム５０を読み取ってＶＭディスクイメージ６１，６２，６３，…に格納してもよい。また、ＶＭ４１，４２，４３，４４がネットワークに接続するための通信部を備える場合、ＶＭ４１，４２，４３，４４は、ネットワークを介してアプリケーションプログラム５０をダウンロードしてＶＭディスクイメージ６１，６２，６３，…に格納してもよい。
【００３２】
図３及び図４は、ＰＣ１０に格納される各テーブルの内容を示す模式図である。図３はＶＭ管理テーブル４ｄの格納内容を、図４はリソーステーブル４ｃの格納内容をそれぞれ示す。
【００３３】
図３に示すように、ＶＭ管理テーブル４ｄには、ＶＭ４１，４２，４３，４４のＶＭ−ＩＤに、動作状態、監視先ポート情報、割当リソース数及び割当リソース一覧ポインタが対応付けられて格納されている。動作状態は、ＶＭ−ＩＤに対応するＶＭ４１（又は４２，４３，４４）の動作を示し、例えば「動作中」又は「停止」等が格納される。またＣＰＵ１は、ＶＭ４１（又は４２，４３，４４）の動作中、キーボード５１ｂ（又は５２ｂ，５３ｂ，５４ｂ）からのキー入力を監視する。そして監視先ポート情報は、キー入力を監視する対象となるＵＳＢポート５ａ，５ａ…に関する情報である。割当リソース数は、動作中のＶＭ４１（又は４２，４３，４４）に割り当てられたリソースの数である。例えばＶＭ４１（又は４２，４３，４４）にキーボード、マウス及びモニタが割り当てられている場合には、割当リソース数は「３」となる。割当リソース一覧ポインタは、リソース情報が格納されているリソーステーブル４ｃへアクセスするための位置情報である。動作中のＶＭ４１（又は４２，４３，４４）には、割当リソース一覧ポインタに基づいてリソーステーブル４ｃから取得されるリソース情報に係るリソース、例えばキーボード５１ｂ（又は５２ｂ，５３ｂ，５４ｂ）が割り当てられる。ＶＭ管理テーブル４ｄの格納内容は、ＰＣ１０の初期設定処理時に登録されると共に、ＶＭ４１（又は４２，４３，４４）が起動、停止した場合に更新される。
【００３４】
図４に示すように、リソーステーブル４ｃには、ＰＣ１０に接続されている全てのリソース情報の一覧が格納されている。リソース情報とは、入出力デバイス５１，５２，５３，５４に含まれるモニタ、キーボード及びマウス等に関する情報である。リソーステーブル４ｃには、リソースが接続されているバス番号、バス番号に接続されているリソースの番号、及びリソースを識別するための識別情報が対応付けて格納されている。リソーステーブル４ｃは、ＰＣ１０の初期設定処理時や入出力デバイスをＰＣ１０に接続した場合に登録される。
【００３５】
以下に、上述のＰＣ１０において、ＣＰＵ１が、ＲＯＭ２又はＨＤＤ４に格納されている各種の制御プログラムを実行することによって実現される機能について説明する。図５は実施形態１のＰＣ１０の機能を示す機能ブロック図である。
【００３６】
図５では、仮想化技術によりＰＣ１０において動作している４つのＶＭ４１，４２，４３，４４それぞれに、ゲストＯＳ４１ａ，４２ａ，４３ａ，４４ａが実行している原理を示している。また、ＵＳＢポート５ａ，５ａ…及びモニタ接続ポート６ａ，６ａ…をまとめて入出力ポート５１ｐ，５２ｐ，５３ｐ，５４ｐとして扱う。入出力ポート５１ｐ，５２ｐ，５３ｐ，５４ｐには、入出力デバイス５１，５２，５３，５４それぞれが接続される。図５では入出力デバイス５１，５２，５３，５４及び入出力ポート５１ｐ，５２ｐ，５３ｐ，５４ｐは、それぞれまとめて１つのブロックで示している。
【００３７】
本実施形態１のＰＣ１０に電源が投入され、ＰＣ１０のハードウェア各部の起動が完了した場合、ＣＰＵ１は、まず、ＶＭＭプログラム２０をＨＤＤ４から読み出して実行することによりＶＭＭ（仮想マシンモニタ）２１としての動作を開始する。ＶＭＭ２１としての動作を開始したＣＰＵ１は、管理ＯＳプログラム３０をＨＤＤ４から読み出して実行することにより管理ＯＳ３１としての動作を開始する。図５には、ＰＣ１０において、ＶＭＭ２１の動作により管理ＯＳ３１及びＶＭ４１，４２，４３，４４がそれぞれ独立して実行可能となっていることを示している。
【００３８】
ＶＭＭ２１は、ＶＭＭプログラム２０に含まれるモジュールによって、Input/Output（Ｉ／Ｏ）処理部２２（転送手段）、Ｉ／Ｏ処理監視部（監視手段）２３、キー入力監視部（検出手段）２４及び再起動制御部２５等の機能を有する。また、管理ＯＳ３１は、管理ＯＳプログラム３０に含まれるモジュールによって、ＶＭ制御部３２（割当手段、停止手段、起動手段）、デバイスエミュレータ３３ａ，３３ｂ，３３ｃ，３３ｄ及びリセット通知部３４等の機能を有する。なおデバイスエミュレータ３３ａ，３３ｂ，３３ｃ，３３ｄは、入出力ポート５１ｐ，５２ｐ，５３ｐ，５４ｐそれぞれに割り当てられる機能であって、図５では一つのブロックのみ示している。
【００３９】
ＶＭ制御部３２は、管理ＯＳ３１で動作する機能であって、ＶＭ４１（又は４２，４３，４４）の起動を指示する。起動指示が成功するとＶＭ制御部３２は再起動制御部２５に仮想マシンの起動指示が完了したことを通知する起動指示完了通知を送信する。仮想マシン起動指示によってＶＭ４１（又は４２，４３，４４）が起動するとＶＭディスクイメージ６１（又は６２，６３，…）がロード、ゲストＯＳプログラム４０が実行され、ゲストＯＳ４１ａ（又は４２ａ，４３ａ，４４ａ）が動作する。ＶＭ４１（又は４２，４３，４４）を起動する場合、ＶＭ制御部３２はユーザ認証を行う。例えばＶＭ制御部３２は、全ての入出力デバイス５１，５２，５３，５４のモニタにログイン画面（図示せず）を表示させる。ログイン画面では、入出力デバイス５１，５２，５３，５４のキーボード又はマウスからユーザＩＤ及びパスワードの入力が可能となっている。ＶＭ制御部３２は、ログイン画面で入力されたユーザＩＤ及びパスワードを取得する。ＶＭ制御部３２は、取得したユーザＩＤ及びパスワードを送出してきた入出力デバイス５１（又は５２，５３，５４）を特定し、取得したユーザＩＤ及びパスワードがユーザ情報テーブル４ａに格納されているか否かを判断する。格納されていると判断した場合、ＶＭ制御部３２はユーザ認証できたと判定する。
【００４０】
ユーザ認証できた場合、ＶＭ制御部３２は、取得したユーザＩＤに対応するＶＭ−ＩＤをＶＭ情報テーブル４ｂから読み出す。そして、ＶＭ制御部３２は、読み出したＶＭ−ＩＤに対応するＶＭ４１（又は４２，４３，４４）を起動する。これにより、ＰＣ１０では、ユーザＩＤ等を入力したユーザに割り当てられてあるＶＭ４１（又は４２，４３，４４）が起動する。そして、ＶＭ制御部３２は、ＶＭ４１（又は４２，４３，４４）の起動が完了したことを通知する起動指示完了通知を、読み出したＶＭ−ＩＤと共に再起動制御部２５へ送信する。
【００４１】
ＶＭ制御部３２は、起動指示完了通知の送信先である再起動制御部２５からリソース割当依頼通知を受信する。リソース割当依頼通知は、再起動制御部２５がＶＭ制御部３２に対して、起動したＶＭ４１（又は４２，４３，４４）にリソースの割り当てを開始させる通知である。リソース割当依頼通知を受信する際、ＶＭ制御部３２は、再起動制御部２５から仮想マシンに割り当てるリソース情報も共に受信する。ＶＭ制御部３２は、リソース情報に基づく入出力デバイス５１等を起動したＶＭ４１（又は４２，４３，４４）に対して割り当てる。リソースの割り当てが完了した場合、ＶＭ制御部３２は、再起動制御部２５にリソース割当完了通知を送信する。
【００４２】
ゲストＯＳ４１ａ（又は４２ａ，４３ａ，４４ａ）では、モニタ５１ａ（又は５２ａ，５３ａ，５４ａ）、キーボード５１ｂ（又は５２ｂ，５３ｂ，５４ｂ）及びマウス５１ｃ（５２ｃ，５３ｃ，５４ｃ）等を動作させるためのディスプレイドライバ、キーボードドライバ及びマウスドライバ等が動作する。なお以下の説明では、ＶＭ４１が割り当てられたユーザが、入出力デバイス５１を使用する場合について説明する。
【００４３】
ＶＭ制御部３２は、再起動制御部２５から停止依頼通知を受信する。停止依頼通知は、ＶＭ４１をリセットするリセット処理を開始した再起動制御部２５から送信される通知である。停止依頼通知を受信したＶＭ制御部３２は、起動したＶＭ４１を停止する。停止が完了した場合、ＶＭ制御部３２は、再起動制御部２５に対して停止完了通知を送信する。ＶＭ制御部３２は、停止完了通知を受信した再起動制御部２５から割当リソース解放依頼通知を受信する。割当リソース解放依頼通知は、再起動制御部２５がＶＭ制御部３２に対して、ＶＭ４１に割り当てられていたリソースを解放させるための通知である。割当リソース解放依頼通知を受信したＶＭ制御部３２は、ＶＭ４１に割り当てたリソースを解放し、解放が完了した場合、再起動制御部２５に対して割当リソース解放完了通知を送信する。ＶＭ制御部３２は、割当リソース解放完了通知を送信した後、再起動制御部２５から起動指示通知を受信する。起動指示通知は、ＶＭ制御部３２にＶＭ４１を起動させるための通知である。起動指示通知を受信したＶＭ制御部３２は、停止したＶＭ４１を起動する。
【００４４】
デバイスエミュレータ３３ａは、ＶＭ制御部３２によりＶＭ４１に割り当てられる。これにより、デバイスエミュレータ３３ａは、入出力デバイス５１から入力されたデータを、Ｉ／Ｏ処理部２２を介してＶＭ４１に転送する。またデバイスエミュレータ３３ａは、ＶＭ４１が発行するデータをＩ／Ｏ処理部２２を介して取得し、入出力デバイス５１へ出力する。
【００４５】
リセット通知部３４は、再起動制御部２５からリセット処理の開始が通知される。リセット処理の開始が通知されたリセット通知部３４は、モニタ５１ａにリセット通知画面を表示する。図６は、リセット通知画面の一例を示す模式図である。リセット通知画面には、リセット処理の対象のＶＭ４１の名称が表示され、リセット処理中である旨のメッセージが表示される。ＶＭ４１の名称は、上述のＶＭ−ＩＤであってもよいし、ユーザにより設定される名前であってもよい。なおリセット開始を通知する方法としては、画面表示以外に、例えばスピーカからの音により報知するようにしてもよい。
【００４６】
Ｉ／Ｏ処理部２２は、ＶＭ４１，４２，４３，４４と入出力デバイス５１，５２，５３，５４（具体的にはデバイスエミュレータ３３ａ，３３ｂ，３３ｃ，３３ｄ）との間でデータ処理を行う。Ｉ／Ｏ処理部２２は、例えばＶＭ４１が発行したデータをデバイスエミュレータ３３ａを介して入出力デバイス５１に出力する。ＶＭ４１が発行するデータは、例えばＩ／Ｏ要求である。本実施形態１では、入出力デバイス５１はＵＳＢデバイスであり、ＶＭ４１にはＵＳＢドライバが動作する。そして、ＶＭ４１のＵＳＢドライバが入出力デバイス５１に対して定期的にＩ／Ｏ要求を発行する。Ｉ／Ｏ処理部２２は、発行されたＩ／Ｏ要求を入出力デバイス５１に出力する。Ｉ／Ｏ要求を入力した入出力デバイス５１からは、Ｉ／Ｏ要求に対する応答が出力される。Ｉ／Ｏ処理部２２は、その応答をデバイスエミュレータ３３ａを介して取得した場合、ＶＭ４１に出力する。
【００４７】
Ｉ／Ｏ処理部２２は、ＶＭ４１からＩ／Ｏ要求が入力された場合、入力されたことをＩ／Ｏ処理監視部２３へ通知する。これにより、Ｉ／Ｏ処理監視部２３では、定期的にＶＭ４１がＩ／Ｏ要求を発行しているか否かが監視される。なおＩ／Ｏ処理部２２からＩ／Ｏ処理監視部２３への通知方法は、Ｉ／Ｏ要求のコピーをＩ／Ｏ処理監視部２３へ出力してもよいし、単に信号（例えば、「０」、「１」の信号」を出力するようにしてもよい。
【００４８】
Ｉ／Ｏ処理部２２は、入出力デバイス５１のキーボード５１ｂ及びマウス５１ｃなどから入力された入力データをＶＭ４１へ出力する。またＩ／Ｏ処理部２２は、入出力デバイス５１のキーボード５１ｂから入力された入力キーをキー入力監視部２４へ出力する。Ｉ／Ｏ処理部２２が入力キーを出力するキー入力監視部２４では、入力キーがリセットキーであるか否かが判定される。リセットキーとは、リセット処理を開始させるために設定されたキーであり、リセットキーが入力された場合、ＶＭ４１がリセットされる。
【００４９】
Ｉ／Ｏ処理監視部２３は、再起動制御部２５からＩ／Ｏ要求監視開始通知を受信する。Ｉ／Ｏ要求監視開始通知は、リソース割当完了通知を受信した再起動制御部２５が、Ｉ／Ｏ処理監視部２３に対して、ＶＭ４１から定期的に発行されるＩ／Ｏ要求の監視を開始させる通知である。Ｉ／Ｏ要求監視開始通知を受信する際、Ｉ／Ｏ処理監視部２３は、再起動制御部２５から監視先ポート情報も共に受信する。監視先ポート情報は、起動したＶＭ４１に対応する入出力ポート５１ｐに関する情報であって、再起動制御部２５によりＶＭ管理テーブル４ｄから取得する。Ｉ／Ｏ要求監視開始通知を受信した場合、Ｉ／Ｏ処理監視部２３は、Ｉ／Ｏ処理部２２に対して、監視先ポート情報及びＩ／Ｏ要求監視開始通知をさらに送信する。Ｉ／Ｏ要求監視開始通知を受信したＩ／Ｏ処理部２２は、ＶＭ４１が発行した監視先Ｉ／Ｏポート番号宛のＩ／Ｏ要求を受信した場合、Ｉ／Ｏ要求を受信したことをＩ／Ｏ処理監視部２３へ通知（以下、Ｉ／Ｏ要求受信通知と言う）する。
【００５０】
Ｉ／Ｏ処理監視部２３は、Ｉ／Ｏ処理部２２からＩ／Ｏ要求受信通知を受信することで、ＶＭ４１から定期的にＩ／Ｏ要求が発行されているかを確認する。一定時間Ｉ／Ｏ処理部２２からのＩ／Ｏ要求受信通知がない場合には、Ｉ／Ｏ処理監視部２３は、ＶＭ４１が異常停止（ハングアップ）しているとみなす。またＩ／Ｏ処理監視部２３は、Ｉ／Ｏ処理部２２からのＩ／Ｏ要求受信通知が再開された場合、ＶＭ４１が正常な状態に復帰したと判定する。Ｉ／Ｏ処理監視部２３は、ＶＭ４１が異常停止しているか否かに応じて、キー入力監視部２４に対してキー入力の監視先を切り替えさせる切替通知を送信する。後述するが、入出力デバイス５１からのキー入力を監視するキー入力監視部２４は、Ｉ／Ｏ処理部２２又は入出力ポート５１ｐを監視先としている。Ｉ／Ｏ処理監視部２３は、ＶＭ４１が異常停止しているとみなした場合、キー入力監視部２４に対してキー入力の監視先を入出力ポート５１ｐに切り替えるよう、監視先情報（ここでは入出力ポート５１ｐ）と共に切替通知を送信する。ＶＭ４１が正常な状態に復帰したと判定した場合、Ｉ／Ｏ処理監視部２３は、キー入力監視部２４に対してキー入力の監視先をＩ／Ｏ処理部２２に切り替えるよう、監視先情報（ここではＩ／Ｏ処理部２２）と共に切替通知を送信する。
【００５１】
またＩ／Ｏ処理監視部２３は、再起動制御部２５からＩ／Ｏ要求監視停止通知を受信する。Ｉ／Ｏ要求監視停止通知は、再起動制御部２５がＩ／Ｏ処理監視部２３に対して、Ｉ／Ｏ要求の監視を停止させるための通知である。Ｉ／Ｏ要求監視停止通知を受信した場合、Ｉ／Ｏ処理監視部２３は、Ｉ／Ｏ処理部２２に対して、Ｉ／Ｏ要求監視停止通知をさらに送信する。Ｉ／Ｏ要求監視停止通知を受信したＩ／Ｏ処理部２２は、Ｉ／Ｏ処理監視部２３に対するＩ／Ｏ要求受信通知を停止する。
【００５２】
キー入力監視部２４は、リソース割当完了通知を受信した再起動制御部２５から入力監視開始通知を受信する。入力監視開始通知は、再起動制御部２５がキー入力監視部２４に対して、入出力デバイス５１のキーボードから入力される入力キーの監視を開始させるための通知である。リソース割当完了通知を受信する際、キー入力監視部２４は、Ｉ／Ｏ処理監視部２３と同様に、監視先Ｉ／Ｏポート情報を受信する。キー入力監視部２４は、Ｉ／Ｏ処理部２２に対して、監視先Ｉ／Ｏポート情報及び入力監視開始通知をさらに送信する。入力監視開始通知を受信したＩ／Ｏ処理部２２は、監視先ポート情報に係る入出力ポート５１ｐから入力された入力キーデータの複製をキー入力監視部２４に送出する。
【００５３】
キー入力監視部２４は、Ｉ／Ｏ処理部２２から取得した入力キーがリセットキーであるか否かを監視する。リセットキーは、特定の単独キーであってもよいし、複数のキーの組み合わせであってもよい。リセットキーが入力された場合、キー入力監視部２４は、再起動制御部２５へリセットキー入力通知を送信する。
【００５４】
また、Ｉ／Ｏ処理監視部２３から監視先情報を入出力ポート５１ｐとする切替通知を受信した場合、キー入力監視部２４は、キー入力の監視先をＩ／Ｏ処理部２２から入出力ポート５１ｐに切り替える。これにより、キー入力監視部２４は、入出力デバイス５１からの入力キーデータの複製を入出力ポート５１ｐから直接取得する。このときキー入力監視部２４は、Ｉ／Ｏ処理部２２に対してキー入力の監視を停止させる入力監視停止通知を送信する。入力監視停止通知を受信したＩ／Ｏ処理部２２は、入力キーデータの複製をキー入力監視部２４に送出することを停止する。
【００５５】
Ｉ／Ｏ処理監視部２３から監視先情報をＩ／Ｏ処理部２２とする切替通知を受信した場合、キー入力監視部２４は、キー入力の監視先を入出力ポート５１ｐからＩ／Ｏ処理部２２に切り替える。このときキー入力監視部２４は、Ｉ／Ｏ処理部２２に対して上述の入力監視開始通知を再び送信し、Ｉ／Ｏ処理部２２から入力キーデータの複製を取得する。
【００５６】
再起動制御部２５は、ＶＭ制御部３２から起動指示完了通知を受信した場合、ＶＭ管理テーブル４ｄの格納内容を更新し、必要な情報を取得する。例えば、再起動制御部２５は、ＶＭ４１の動作状態を「停止」から「動作中」に更新する。また再起動制御部２５は、ＶＭ４１に対応する監視先Ｉ／Ｏポート情報、及びリソース情報を取得する。リソース情報は、ＶＭ４１に割り当てるリソースに関する情報であって、ＶＭ管理テーブル４ｄに格納されてある割当リソース一覧ポインタに基づいてリソーステーブル４ｃから取得される。再起動制御部２５は、取得したリソース情報と共にリソース割当依頼通知をＶＭ制御部３２へ送信する。
【００５７】
再起動制御部２５は、リソース割当依頼通知を送信したＶＭ制御部３２からリソース割当完了通知を受信する。リソース割当完了通知を受信した場合、再起動制御部２５は、Ｉ／Ｏ処理監視部２３に対して、取得した監視先ポート情報と共にＩ／Ｏ要求監視開始通知を送信する。これにより、上述したようにＩ／Ｏ処理監視部２３は、ＶＭ４１から定期的にＩ／Ｏ要求が発行されているかの監視を開始する。また再起動制御部２５は、キー入力監視部２４に対して、取得した監視先Ｉ／Ｏポート情報を出力すると共に入力監視開始通知を送信する。これにより、上述したようにキー入力監視部２４は、入出力デバイス５１のキーボード５１ｂから入力された入力キーの監視を開始する。
【００５８】
再起動制御部２５は、キー入力監視部２４からリセットキー入力通知を受信した場合、リセット処理を開始する。再起動制御部２５は、ＶＭ制御部３２に対して、リセット処理の対象となるＶＭ４１をリセットするためのリセット依頼通知を送信する。リセット依頼通知を受信したＶＭ制御部３２は、上述のように、起動したＶＭ４１を停止する。再起動制御部２５は、ＶＭ４１を停止したＶＭ制御部３２からリセット完了通知を受信する。そして再起動制御部２５は、Ｉ／Ｏ処理監視部２３に対してＩ／Ｏ要求監視停止通知を送信し、キー入力監視部２４に対してキー入力監視停止通知を送信する。
【００５９】
また再起動制御部２５は、ＶＭ制御部３２からからリセット完了通知を受信した場合、割当リソース解放依頼通知をＶＭ制御部３２に送信する。割当リソース解放依頼通知を受信したＶＭ制御部３２は、ＶＭ４１に割り当てたリソースを解放し、割当リソース解放完了通知を再起動制御部２５に送信する。割当リソース解放完了通知を受信した再起動制御部２５は、ＶＭ管理テーブル４ｄを更新し、ＶＭ４１を起動させる起動指示通知をＶＭ制御部３２へ送信する。
【００６０】
以下に、本実施形態１係るＰＣ１０の処理についてフローチャートに基づいて説明する。
【００６１】
図７、図８及び図９は、実施形態１のＶＭＭ２１及び管理ＯＳ３１が実行する処理手順を示すフローチャートである。以下の処理は、ＣＰＵ１がＲＯＭ２又はＨＤＤ４に格納してある制御プログラム２ａに従ってＶＭＭ２１及び管理ＯＳ３１として動作することによって実行される。また、図７、図８及び図９では、破線で区切った２つの領域において、左側の領域に管理ＯＳ３１による処理を、右側の領域にＶＭＭ２１による処理をそれぞれ示している。
【００６２】
ＰＣ１０に電源が投入され、ＰＣ１０のハードウェア各部の起動が完了した後、ＣＰＵ１は、ＶＭＭプログラム２０を実行してＶＭＭ２１を起動する。ＶＭＭ２１の起動後、ＣＰＵ１は、管理ＯＳプログラム３０を実行して管理ＯＳ３１を起動する。
【００６３】
管理ＯＳ３１では、ＶＭ制御部３２がユーザ認証を行い、ユーザ認証が成功したか否かを判定する（Ｓ１０１）。具体的には、ＶＭ制御部３２は、全てのモニタ５１ａ，５２ａ，５３ａ，５４ａにログイン画面を表示させる。そして、ＶＭ制御部３２は、何れかの入出力デバイス５１（又は５２，５３，５４）を介してユーザＩＤ及びパスワードのユーザ情報を取得したか否かを判断する。ユーザ情報を取得した場合、ＶＭ制御部３２は、ユーザ情報を送出してきた入出力デバイス５１を特定する。ＶＭ制御部３２は、取得したユーザ情報の認証をユーザ情報テーブル４ａの格納内容に基づいて行ない、認証されたか否かを判断する。
【００６４】
ユーザ認証が成功していない場合（Ｓ１０１：ＮＯ）、ＶＭ制御部３２は、ユーザ認証が成功するまで繰り返す。成功していない場合とは、例えば取得したユーザ情報がユーザ情報テーブル４ａに格納されていない場合、またはユーザ情報を取得しない（できない）場合である。このとき、管理ＯＳ３１は、認証されなかった旨を通知するエラー通知画面を、ユーザ情報を送出してきた入出力デバイス５１のモニタ５１ａに表示させるようにしてもよい。
【００６５】
ユーザ認証が成功した場合（Ｓ１０１：ＹＥＳ）、管理ＯＳ３１では、ＶＭ制御部３２が、取得したユーザ情報に対応するＶＭ４１を起動する（Ｓ１０２）。まずＶＭ制御部３２は、取得したユーザＩＤに対応するＶＭ−ＩＤをＶＭ情報テーブル４ｂから読み出す。そしてＶＭ制御部３２は、読み出したＶＭ−ＩＤに対応するＶＭ４１を起動する。これにより、ＰＣ１０では、ユーザに割り当てられたＶＭ４１が起動する。ＶＭ４１の起動後、ＶＭ制御部３２は、読み出したＶＭ−ＩＤと共に、ＶＭ制御部３２はＶＭ４１の起動指示通知を受信するとＶＭ４１を起動し、ＶＭＭ２１の再起動制御部２５に起動指示完了通知を送信する。
【００６６】
ＶＭＭ２１では、ＶＭ−ＩＤ及び起動指示完了通知を受信した再起動制御部２５が、ＶＭ−ＩＤに基づいてＶＭ管理テーブル４ｄを更新する（Ｓ１０３）。またＶＭ４１を起動するのに必要な情報をＶＭ管理テーブル４ｄから取得する（Ｓ１０４）。具体的には、再起動制御部２５は、ＶＭ−ＩＤから起動したＶＭ４１を特定し、ＶＭ４１に対応する動作状態を「停止」から「動作中」に変更する。そして再起動制御部２５は、更新後のＶＭ管理テーブル４ｄから、ＶＭ４１に対応する監視先ポート情報及びリソース情報を取得する。再起動制御部２５は、取得したリソース情報と共にリソース割当依頼通知を管理ＯＳ３１のＶＭ制御部３２へ送信する。
【００６７】
管理ＯＳ３１では、リソース割当依頼通知を受信したＶＭ制御部３２が、受信したリソース情報に基づくリソース、例えば入出力デバイス５１を、起動したＶＭ４１に割り当てる（Ｓ１０５）。リソースの割り当て完了後、ＶＭ制御部３２は、再起動制御部２５にリソース割当完了通知を送信する。
【００６８】
ＶＭＭ２１では、リソース割当完了通知を受信した再起動制御部２５が、ＶＭ管理テーブル４ｄに格納されている割当リソース数、リソーステーブル４ｃに格納されている割当リソース情報を更新する（Ｓ１０６）。そしてＶＭＭ２１では、再起動制御部２５がＩ／Ｏ要求の監視を開始させる（Ｓ１０７）。具体的には、再起動制御部２５は、Ｓ１０４で取得した監視先Ｉ／Ｏポート情報と共にＩ／Ｏ要求監視開始通知をＩ／Ｏ処理監視部２３へ送信する。Ｉ／Ｏ処理監視部２３は、さらにＩ／Ｏ処理部２２へＩ／Ｏ要求監視開始通知を送信する。これによりＩ／Ｏ処理部２２は、ＶＭ４１が発行したＩ／Ｏ要求を受信した場合、Ｉ／Ｏ処理監視部２３へのＩ／Ｏ要求受信通知を開始する。
【００６９】
ＶＭＭ２１では、再起動制御部２５がＩ／Ｏ処理監視部２３をキー入力の監視先として、キー入力の監視を開始させる（Ｓ１０８）。具体的には、再起動制御部２５は、Ｓ１０４で取得した監視先Ｉ／Ｏポート情報と共に入力監視開始通知をキー入力監視部２４へ送信する。キー入力監視部２４は、さらにＩ／Ｏ処理部２２へ入力監視開始通知を送信する。これによりＩ／Ｏ処理部２２は、キー入力監視部２４に対して、入出力デバイス５１から入力された入力キーデータの複製の送出を開始する。なお、Ｓ１０７からＳ１０８の処理は、略同時に実行され、処理の順番は上述の説明に限定されることはない。
【００７０】
次に、ＶＭＭ２１では、再起動制御部２５が仮想マシンの停止通知を受信したか否かを判定する（Ｓ１０９）。ここで再起動制御部２５が受信する停止通知は、例えばユーザが使用中のＶＭ４１を正常に終了させる操作を行った場合に（Ｓ１０８ａ）、管理ＯＳ３１のＶＭ制御部３２から送信される通知である。従って、Ｓ１０９で停止通知を受信した場合には、ＶＭＭ２１では動作中のＶＭ４１を正常に停止する動作が開始される。
【００７１】
仮想マシンの停止通知を受信していない場合、（Ｓ１０９：ＮＯ）、ＶＭ４１の使用は継続されており、ＶＭＭ２１では、Ｉ／Ｏ処理監視部２３がＩ／Ｏ処理部２２からＩ／Ｏ要求受信通知を受信したか否かを判定する（Ｓ１１０）。ＶＭ４１が正常に動作している場合、ＶＭ４１からはＩ／Ｏ要求が定期的に発行されるため、Ｉ／Ｏ処理監視部２３には、定期的にＩ／Ｏ処理部２２からＩ／Ｏ要求の受信が通知される。従って、Ｉ／Ｏ処理監視部２３は、ＶＭ４１がＩ／Ｏ要求を発行する間隔よりも長い時間通知されない場合に、Ｉ／Ｏ要求が途絶したと判定する。
【００７２】
Ｉ／Ｏ処理部２２からＩ／Ｏ要求受信通知を受信している場合（Ｓ１１０：ＹＥＳ）、ＶＭ４１が異常停止していないとみなし、Ｓ１１５を実行する。Ｉ／Ｏ要求受信通知を受信していない場合（Ｓ１１０：ＮＯ）、Ｉ／Ｏ処理監視部２３は、ＶＭ４１が異常停止しているとみなし、キー入力監視部２４に監視先情報（ここでは入出力ポート５１ｐ）と共に切替通知を送信する。Ｉ／Ｏ処理監視部２３をキー入力の監視先としているキー入力監視部２４は、切替通知を受信することで、監視先を入出力ポート５１ｐに切り替える（Ｓ１１１）。これにより、キー入力監視部２４は、入出力ポート５１ｐから入力キーを取得して、キー入力の監視を開始する。
【００７３】
キー入力監視部２４は、入出力ポート５１ｐから取得した入力キーがリセットキーであるか否かを判定する（Ｓ１１２）。リセットキーでない場合（Ｓ１１２：ＮＯ）、Ｉ／Ｏ処理監視部２３は、Ｉ／Ｏ処理部２２からＩ／Ｏ要求受信通知を受信したか否かを判定する（Ｓ１１３）。Ｉ／Ｏ要求受信通知を受信していない場合（Ｓ１１３：ＮＯ）、Ｉ／Ｏ処理監視部２３は、ＶＭ４１は異常停止が続いていると判定し、Ｓ１１２の処理を実行する。
【００７４】
Ｉ／Ｏ要求受信通知を受信した場合（Ｓ１１３：ＹＥＳ）、Ｉ／Ｏ処理監視部２３は、ＶＭ４１は異常停止から回復したと判定し、キー入力監視部２４に監視先情報（ここではＩ／Ｏ処理部２２）と共に切替通知を送信する。切替通知を受信したキー入力監視部２４は、キー入力の監視先を入出力ポート５１ｐからＩ／Ｏ処理部２２に切り替える（Ｓ１１４）。そして、キー入力監視部２４は、Ｉ／Ｏ処理部２２から送出された入力キーがリセットキーであるか否かを判定する（Ｓ１１５）。リセットキーでない場合（Ｓ１１５：ＮＯ）、Ｉ／Ｏ処理監視部２３は、Ｓ１１０の処理を実行し、ＶＭ４１が異常停止していないかを再び判定する。
【００７５】
キー入力監視部２４は、入出力ポート５１ｐ又はＩ／Ｏ処理部２２から取得した入力キーが、リセットキーであると判定した場合（Ｓ１１２又はＳ１１５：ＹＥＳ）、再起動制御部２５にリセットキー入力通知を送信する。これにより、ＶＭＭ２１及び管理ＯＳ３１では、リセット処理を開始する。リセットキー入力通知を受信した再起動制御部２５は、リセット通知部３４へリセット処理の開始を通知し、リセット通知部３４は、モニタ５１ａにリセット通知画面を表示させる（Ｓ１１６）。
【００７６】
再起動制御部２５へリセットキー入力通知を送信したキー入力監視部２４は、キー入力の監視を停止する（Ｓ１１７）。このときキー入力監視部２４がキー入力の監視先をＩ／Ｏ処理部２２としている場合、キー入力監視部２４は、Ｉ／Ｏ処理部２２へ入力監視停止通知を送信する。これにより、Ｉ／Ｏ処理部２２は、キー入力監視部２４への入力キーデータの複製を送出することを停止する。
【００７７】
ＶＭＭ２１では、リセットキー入力通知を受信した再起動制御部２５が、管理ＯＳ３１のＶＭ制御部３２へリセット依頼通知を送信する。管理ＯＳ３１では、リセット依頼通知を受信したＶＭ制御部３２が、ＶＭ４１を停止し（Ｓ１１８）、ＶＭＭ２１の再起動制御部２５へリセット完了通知を送信する。
【００７８】
ＶＭＭ２１では、リセット完了通知を受信した再起動制御部２５が、ＶＭ管理テーブル４ｄから停止したＶＭ４１に対応するリソース情報を取得する（Ｓ１１９）。そして再起動制御部２５は、そのリソース情報と共に割当リソース解放依頼通知を、管理ＯＳ３１のＶＭ制御部３２へ送信する。管理ＯＳ３１では、割当リソース解放依頼通知を受信したＶＭ制御部３２が、リソース情報に基づいて、ＶＭ４１に割り当てていたリソースを解放する（Ｓ１２０）。解放の完了後、ＶＭ制御部３２は、ＶＭＭ２１の再起動制御部２５に対して割当リソース解放完了通知を送信する。ＶＭＭ２１では、割当リソース解放完了通知を受信した再起動制御部２５が、ＶＭ管理テーブル４ｄを更新する（Ｓ１２１）。例えば、再起動制御部２５は、停止したＶＭ４１に対応する動作状態を「動作中」から「停止」に変更する。その後、再起動制御部２５は、管理ＯＳ３１のＶＭ制御部３２に対して起動指示通知を送信することで、ＶＭ制御部３２がＳ１０２の処理を実行し、ＶＭ４１が再び起動する。これにより、ＶＭ４１が異常停止した場合に、リセットキーが入力されたときのＶＭ４１のリセット処理が完了する。
【００７９】
一方、Ｓ１０９において、仮想マシンの停止通知を受信した場合（Ｓ１０９：ＹＥＳ）、ＶＭ４１の使用を正常に終了させるため、ＶＭＭ２１では、まず再起動制御部２５がＩ／Ｏ要求の監視を停止させる（Ｓ１２２）。具体的には、再起動制御部２５は、Ｉ／Ｏ要求監視停止通知をＩ／Ｏ処理監視部２３へ送信する。Ｉ／Ｏ要求監視停止通知を受信したＩ／Ｏ処理監視部２３は、さらにＩ／Ｏ処理部２２に対してＩ／Ｏ要求監視停止通知を送信する。これによりＩ／Ｏ処理部２２は、Ｉ／Ｏ処理監視部２３へのＩ／Ｏ要求受信通知を停止する。
【００８０】
ＶＭＭ２１では、再起動制御部２５がキー入力の監視を停止させる（Ｓ１２３）。まず再起動制御部２５は、入力監視停止通知をキー入力監視部２４へ送信する。このときキー入力監視部２４がキー入力の監視先をＩ／Ｏ処理部２２としている場合、入力監視停止通知を受信したキー入力監視部２４は、Ｉ／Ｏ処理部２２へ入力監視停止通知をさらに送信する。これにより、Ｉ／Ｏ処理部２２は、キー入力監視部２４への入力キーデータの複製の送出を停止する。
【００８１】
管理ＯＳ３１では、ＶＭ４１を停止し（Ｓ２１４）、仮想マシンの停止を検知したＶＭ制御部３２が、ＶＭＭ２１の再起動制御部２５へ停止完了通知を送信する。ＶＭＭ２１では、停止完了通知を受信した再起動制御部２５が、ＶＭ管理テーブル４ｄから停止したＶＭ４１に対応するリソース情報を取得する（Ｓ１２５）。そして再起動制御部２５は、そのリソース情報と共に割当リソース解放依頼通知を、管理ＯＳ３１のＶＭ制御部３２へ送信する。
【００８２】
管理ＯＳ３１では、割当リソース解放依頼通知を受信したＶＭ制御部３２が、リソース情報に基づいて、ＶＭ４１に割り当てていたリソースを解放する（Ｓ１２６）。解放の完了後、ＶＭ制御部３２は、ＶＭＭ２１の再起動制御部２５に対して割当リソース解放完了通知を送信する。ＶＭＭ２１では、割当リソース解放完了通知を受信した再起動制御部２５が、ＶＭ管理テーブル４ｄを更新する（Ｓ１２７）。例えば、再起動制御部２５は、停止したＶＭ４１に対応する動作状態を「動作中」から「停止」に変更する。以上により、起動したＶＭ４１が正常に停止する動作が完了する。
【００８３】
次に、上述のように動作するＶＭＭ２１において、Ｉ／Ｏ処理監視部２３、キー入力監視部２４及び再起動制御部２５の機能が実行する動作について詳述する。図１０は、Ｉ／Ｏ処理監視部２３が実行する処理手順を示すフローチャートである。
【００８４】
Ｉ／Ｏ処理監視部２３は、再起動制御部２５からＩ／Ｏ要求監視開始通知を受信したか否かを判定する（Ｓ２０１）。Ｉ／Ｏ要求監視開始通知を受信していない場合（Ｓ２０１：ＮＯ）、Ｉ／Ｏ処理監視部２３は、受信するまで待機する。Ｉ／Ｏ要求監視開始通知を受信した場合（Ｓ２０１：ＹＥＳ）、Ｉ／Ｏ処理監視部２３は、Ｉ／Ｏ処理部２２へＩ／Ｏ要求監視開始通知を送信する（Ｓ２０２）。これにより、Ｉ／Ｏ処理部２２は、Ｉ／Ｏ処理監視部２３へのＩ／Ｏ要求受信通知を開始する。
【００８５】
Ｉ／Ｏ処理監視部２３は、Ｉ／Ｏ処理部２２からＩ／Ｏ要求受信通知を受信したか否かを判定する（Ｓ２０３）。Ｉ／Ｏ要求受信通知を受信した場合（Ｓ２０３：ＹＥＳ）、Ｉ／Ｏ処理監視部２３は、再起動制御部２５からＩ／Ｏ要求監視停止通知を受信したか否かを判定する（Ｓ２０４）。Ｉ／Ｏ要求監視停止通知は、ＶＭ４１が停止した場合に再起動制御部２５から送信される。Ｉ／Ｏ要求監視停止通知を受信していない場合（Ｓ２０４：ＮＯ）、Ｉ／Ｏ処理監視部２３は、Ｓ２０３の処理を実行し、Ｉ／Ｏ処理部２２からの通知があったか否かを判定する。Ｉ／Ｏ要求監視停止通知を受信した場合（Ｓ２０４：ＹＥＳ）、Ｉ／Ｏ処理監視部２３は、Ｉ／Ｏ処理部２２へＩ／Ｏ要求監視停止通知をさらに送信する（Ｓ２０５）。これにより、Ｉ／Ｏ処理部２２は、Ｉ／Ｏ処理監視部２３へのＩ／Ｏ要求受信通知を停止する。
【００８６】
Ｉ／Ｏ要求受信通知を受信していない場合（Ｓ２０３：ＮＯ）、Ｉ／Ｏ処理監視部２３は、一定時間経過したか否かを判定する（Ｓ２０６）。例えばＩ／Ｏ処理監視部２３は、直前にＩ／Ｏ要求受信通知された時間と、現在の時間との差分が、ＶＭ４１がＩ／Ｏ要求を発行する間隔以上であるか否かを判定する。一定時間としては、Ｉ／Ｏ要求の受信間隔のｎ倍を設定しておく。ｎは、Ｉ／Ｏ要求が何回連続で受信されなければ、異常として判断するかを決め、設定する。例えば、Ｉ／Ｏ要求の受信間隔が２００ｍｓであり、Ｉ／Ｏ要求が連続して１０回受信されなければ、異常と判断するとした場合、直前に受信された時間と、現在の時間との差分が２０００ｍｓ以上であるか否かを判定する。一定時間経過していない場合（Ｓ２０６：ＮＯ）、Ｉ／Ｏ処理監視部２３は、Ｓ２０４の処理を実行する。一定時間経過した場合（Ｓ２０６：ＹＥＳ）、Ｉ／Ｏ処理監視部２３は、ＶＭ４１は異常停止しているとみなし、キー入力監視部２４へ監視先情報として入出力ポート５１ｐを設定して切替通知を送信する（Ｓ２０７）。これにより、キー入力監視部２４は、キー入力の監視先を、Ｉ／Ｏ処理部２２から入出力ポート５１ｐに切り替える。
【００８７】
切替通知の送信後、Ｉ／Ｏ処理監視部２３は、Ｉ／Ｏ処理部２２からＩ／Ｏ要求受信通知を受信したか否かを判定する（Ｓ２０８）。Ｉ／Ｏ要求受信通知を受信していない場合（Ｓ２０８：ＮＯ）、Ｉ／Ｏ処理監視部２３は、再起動制御部２５からＩ／Ｏ要求監視停止通知を受信したか否かを判定する（Ｓ２０９）。Ｉ／Ｏ要求監視停止通知を受信していない場合（Ｓ２０９：ＮＯ）、Ｉ／Ｏ処理監視部２３は、Ｓ２０８の処理を実行し、再びＩ／Ｏ要求受信通知を受信したか否かを判定する。Ｉ／Ｏ要求監視停止通知を受信した場合（Ｓ２０９：ＹＥＳ）、Ｉ／Ｏ処理監視部２３は、Ｉ／Ｏ処理部２２へＩ／Ｏ要求監視停止通知をさらに送信し（Ｓ２０５）、Ｉ／Ｏ要求の監視を停止する。
【００８８】
Ｓ２０８において、Ｉ／Ｏ処理部２２からＩ／Ｏ要求受信通知を受信した場合（Ｓ２０８：ＹＥＳ）、Ｉ／Ｏ処理監視部２３は、ＶＭ４１が正常な状態に復帰したと判定し、キー入力監視部２４へ監視先情報としてＩ／Ｏ処理部２２を設定して切替通知を送信する（Ｓ２１０）。これにより、キー入力監視部２４は、キー入力の監視先を、入出力ポート５１ｐからＩ／Ｏ処理部２２に切り替える。その後、Ｉ／Ｏ処理監視部２３は、Ｓ２０４以降の処理を実行する。
【００８９】
以上により、Ｉ／Ｏ処理監視部２３は、Ｉ／Ｏ要求の監視を行うことで、ＶＭ４１が異常停止しているか否かを判定する。そしてＩ／Ｏ処理監視部２３は、判定結果に応じて、キー入力監視部２４に対してキー入力の監視先を切り替える。
【００９０】
図１１は、キー入力監視部２４が実行する処理手順を示すフローチャートである。
【００９１】
キー入力監視部２４は、監視先Ｉ／Ｏポート情報と共に入力監視開始通知を再起動制御部２５から受信したか否かを判定する（Ｓ３０１）。入力監視開始通知を受信していない場合（Ｓ３０１：ＮＯ）、キー入力監視部２４は、受信するまで待機する。入力監視開始通知を受信した場合（Ｓ３０１：ＹＥＳ）、キー入力監視部２４は、Ｉ／Ｏ処理部２２へ監視先Ｉ／Ｏポート情報と共に入力監視開始通知を送信する（Ｓ３０２）。これにより、監視先Ｉ／Ｏポートから入力キーを取得したＩ／Ｏ処理部２２から、キー入力監視部２４へ入力キーデータの複製の送出が開始される。
【００９２】
キー入力監視部２４は、再起動制御部２５から入力監視停止通知を受信したか否かを判断する（Ｓ３０３）。再起動制御部２５から入力監視停止通知を受信した場合（Ｓ３０３：ＹＥＳ）、Ｉ／Ｏ処理部２２に入力監視停止通知を送信する（Ｓ３１０）。これによりＩ／Ｏ処理部２２がキー入力監視部２４に入力キーデータの複製を送出することを停止する。入力監視停止通知を受信していない場合（Ｓ３０３：ＮＯ）、キー入力監視部２４は、Ｉ／Ｏ処理監視部２３から監視先情報と共に切替通知を受信したか否かを判定する（Ｓ３０４）。切替通知を受信した場合（Ｓ３０４：ＹＥＳ）、キー入力監視部２４は、切り替える監視先として入出力ポート５１ｐが監視先情報により指定されているか否かを判定する（Ｓ３０５）。
【００９３】
切り替える監視先として入力ポート５１ｐが指定されている場合（Ｓ３０５：ＹＥＳ）、Ｉ／Ｏ処理監視部２３は、ＶＭ４１が異常状態であるとみなし、キー入力監視部２４は、キー入力の監視先を入出力ポート５１ｐへ切り替える（Ｓ３０６）。そしてキー入力監視部２４は、Ｉ／Ｏ処理部２２へ入力監視停止通知を送信する（Ｓ３０７）。これによりＩ／Ｏ処理部２２からキー入力監視部２４への入力キーデータの複製の送出が停止される。キー入力監視部２４が切替通知を受信していない場合（Ｓ３０４：ＮＯ）、キー入力監視部２４は、Ｉ／Ｏ処理部２２から入力キーを取得したか否かを判定する（Ｓ３０８）。
【００９４】
切替通知と共に受信した切替先情報としてＩ／Ｏ処理部２２が指定されており、切替先が入出力ポートでない場合（Ｓ３０５：ＮＯ）、Ｉ／Ｏ処理監視部２３は、ＶＭ４１が正常状態に戻ったとみなし、キー入力監視部２４は、キー入力の監視先としてＩ／Ｏ処理部２２に切り替える（Ｓ３１３）。そして、キー入力監視部２４は、Ｉ／Ｏ処理部２２に入力監視開始通知を送信する（Ｓ３１４）。これにより、Ｉ／Ｏ処理部２２からキー入力監視部２４への入力キーデータの複製の送出が再開される。Ｓ３１４の処理を実行後、キー入力監視部２４は、Ｓ３０８に処理を移す。
【００９５】
入力キーを取得した場合（Ｓ３０８：ＹＥＳ）、キー入力監視部２４は、入力キーがリセットキーであるか否かを判定する（Ｓ３０９）。リセットキーである場合（Ｓ３０９：ＹＥＳ）、キー入力監視部２４は、再起動制御部２５へリセットキー入力通知を送信し、リセットキーが入力されたことを通知する（Ｓ３１０）。一方、入力キーを取得していない場合（Ｓ３０８：ＮＯ）、又は入力キーがリセットキーでない場合（Ｓ３０９：ＮＯ）、キー入力監視部２４は、Ｓ３０３に処理を戻す。Ｓ３１０の処理の実行後、キー入力監視部２４は、キー入力の監視先として入出力ポートが指定されているか否かを判定する（Ｓ３１１）。
【００９６】
キー入力監視部２４の監視先として入出力ポートが指定されていない場合（Ｓ３１１：ＮＯ）、キー入力監視部２４は、Ｉ／Ｏ処理部２２へ入力監視停止通知を送信する（Ｓ３１２）。これにより、キー入力監視部２４への入力キーデータの複製の送出が停止される。Ｓ３１２の処理を実行後、又はキー入力監視部２４の監視先として入出力ポートが指定されている場合（Ｓ３１１：ＹＥＳ）、キー入力監視部２４は、キー入力の監視を停止する。そして、Ｉ／Ｏ処理監視部２３は、異常停止したＶＭ４１が正常な状態に復帰した場合のキー入力監視部２４の処理を終了する。
【００９７】
以上のように、キー入力監視部２４は、リセットキーが入力されたか否かを監視する監視先を、ＶＭ４１が異常停止しているか否かに応じて切り替える。
【００９８】
図１２及び図１３は、再起動制御部２５が実行する処理手順を示すフローチャートである。
【００９９】
再起動制御部２５は、ＶＭ制御部３２から起動指示完了通知を受信したか否かを判定する（Ｓ４０１）。起動指示完了通知は、ＶＭ４１を起動が完了したＶＭ制御部３２から送信される。起動指示完了通知を受信していない場合（Ｓ４０１：ＮＯ）、再起動制御部２５は、受信するまで待機する。起動指示完了通知を受信した場合（Ｓ４０１：ＹＥＳ）、再起動制御部２５は、ＶＭ管理テーブル４ｄを更新し（Ｓ４０２）、必要な情報を取得する（Ｓ４０３）。例えば再起動制御部２５は、起動指示完了通知と共に、起動したＶＭ４１を識別するＶＭ−ＩＤを受信する。再起動制御部２５は、ＶＭ−ＩＤに基づいて、対応するＶＭ４１の動作状態を「停止」から「動作中」に更新し、ＶＭ４１に対応する監視先Ｉ／Ｏポート情報、及びリソース情報を取得する。
【０１００】
再起動制御部２５は、取得したリソース情報と共に、ＶＭ制御部３２にリソース割当依頼通知を送信する（Ｓ４０４）。リソース割当依頼通知を受信したＶＭ制御部３２は、起動したＶＭ４１にリソースを割り当て、リソース割当完了通知を送信する。再起動制御部２５は、リソース割当完了通知を受信したか否かを判定する（Ｓ４０５）。リソース割当完了通知を受信していない場合（Ｓ４０５：ＮＯ）、再起動制御部２５は、受信するまで待機する。リソース割当完了通知を受信した場合（Ｓ４０５：ＹＥＳ）、再起動制御部２５は、ＶＭ管理テーブル４ｄを更新する（Ｓ４０６）。例えば再起動制御部２５は、ＶＭ４１に割り当てられたリソースに関する情報を更新する。
【０１０１】
再起動制御部２５は、Ｓ４０３で取得した監視先Ｉ／Ｏポート情報と共にＩ／Ｏ要求監視開始通知をＩ／Ｏ処理監視部２３へ送信する（Ｓ４０７）。これによりＩ／Ｏ処理監視部２３は、Ｉ／Ｏ処理部２２からのＩ／Ｏ要求の監視を開始する。次に、再起動制御部２５は、監視先Ｉ／Ｏポート情報と共に入力監視開始通知をキー入力監視部２４へ送信する（Ｓ４０８）。入力監視開始通知を受信したキー入力監視部２４は、キー入力の監視を開始する。
【０１０２】
再起動制御部２５は、キー入力監視部２４からリセットキー入力通知を受信したか否かを判定する（Ｓ４０９）。リセットキー入力通知は、リセットキーが入力された場合にキー入力監視部２４から送信される。リセットキー入力通知を受信した再起動制御部２５は、ＶＭ４１の再起動処理を開始する。リセットキー入力通知を受信していない場合（Ｓ４０９：ＮＯ）、再起動制御部２５は、ＶＭ制御部３２から停止完了通知を受信したか否かを判定する（Ｓ４１８）。ここで受信する停止完了通知は、例えばユーザにより停止操作が行われ、ＶＭ４１が停止した場合にＶＭ制御部３２から送信される。停止完了通知を受信していない場合（Ｓ４１８：ＮＯ）、再起動制御部２５は、処理をＳ４０９に戻す。停止完了通知を受信した場合（Ｓ４１８：ＹＥＳ）、再起動制御部２５は、入力監視停止通知をキー入力監視部２４へ送信する（Ｓ４１９）。これにより、キー入力監視部２４は、キー入力の監視を停止する。
【０１０３】
一方Ｓ４０９において、リセットキー入力通知を受信した場合（Ｓ４０９：ＹＥＳ）、即ちリセットキーが入力された場合、再起動制御部２５はＶＭ４１のリセット処理を開始し、仮想マシンのリセット依頼通知をＶＭ制御部３２へ送信する（Ｓ４１０）。リセット依頼通知を受信したＶＭ制御部３２は、ＶＭ４１を停止し、リセット完了通知を再起動制御部２５へ送信する。再起動制御部２５は、リセット完了通知を受信したか否かを判定する（Ｓ４１１）。リセット完了通知を受信していない場合（Ｓ４１１：ＮＯ）、再起動制御部２５は、受信するまで待機する。リセット完了通知を受信した場合（Ｓ４１１：ＹＥＳ）、再起動制御部２５は、Ｉ／Ｏ処理監視部２３へＩ／Ｏ要求監視停止通知を送信する（Ｓ４１２）。これにより、Ｉ／Ｏ処理監視部２３は、Ｉ／Ｏ要求の監視を停止する。
【０１０４】
再起動制御部２５は、ＶＭ管理テーブル４ｄから停止したＶＭ４１に割り当てられているリソース情報を取得し（Ｓ４１４）、ＶＭ制御部３２にリソース情報と共に割当リソース解放依頼通知を送信する（Ｓ４１５）。割当リソース解放依頼通知を受信したＶＭ制御部３２は、停止したＶＭ４１に割り当てられていたリソースを開放し、割当リソース解放完了通知を再起動制御部２５へ送信する。再起動制御部２５は、割当リソース解放完了通知を受信したか否かを判定する（Ｓ４１６）。
【０１０５】
割当リソース解放完了通知を受信していない場合（Ｓ４１６：ＮＯ）、再起動制御部２５は、受信するまで待機する。割当リソース解放完了通知を受信した場合（Ｓ４１６：ＹＥＳ）、再起動制御部２５は、ＶＭ管理テーブル４ｄのＶＭ４１に対応する動作状態を「動作中」から「停止」に更新する（Ｓ４１７）。再起動制御部２５は、ＶＭ制御部３２へ起動指示通知を送信する（Ｓ４１８）。これにより、ＶＭ４１が再び起動する。その後、再起動制御部２５は、Ｓ４０１以降の処理を実行することで、ＶＭ４１を再起動させることができる。
【０１０６】
以上のように、再起動制御部２５は、ＶＭ４１の起動時にＶＭ４１にリソースを割り当てて、停止時にＶＭ４１に割り当てたリソースを解放する。そして再びＶＭ４１起動する際には、停止前のリソースをＶＭ４１に割り当てる。
【０１０７】
上述したように、本実施形態１では、ＶＭ４１（又は４２，４３，４４）が異常停止した場合に、ＶＭ４１（又は４２，４３，４４）に割り当てられた入出力デバイス５１（又は５２，５３，５４）からＶＭ４１（又は４２，４３，４４）をリセットさせることができる。従って、ＰＣ１０にリセットさせるための専用のコンソール等を予め用意しておく必要がなくなる。
【０１０８】
（実施形態２）
以下に、実施形態２に係るＰＣについて説明する。なお、本実施形態２のＰＣは、上述した実施形態１のＰＣ１０と同様の構成によって実現することができるので、同様の構成については同一の符号を付して説明を省略する。
【０１０９】
上述した実施形態１では、管理ＯＳ３１は、デバイスエミュレータ３３ａ，３３ｂ，３３ｃ，３３ｄの機能を備えている。これに対して、本実施形態２では、管理ＯＳ３１は、デバイスエミュレータ３３ａ，３３ｂ，３３ｃ，３３ｄの機能を備えておらず、ＶＭ４１，４２，４３，４４が直接入出力デバイス５１，５２，５３，５４それぞれを制御する。また実施形態１では、ＶＭ４１（又は４２，４３，４４）を起動した後にリソースを割り当てているが、本実施形態２では、ＶＭ４１（又は４２，４３，４４）を起動する前にリソースを割り当てる。
【０１１０】
図１４は、実施形態２のＰＣの構成を示す模式図である。
【０１１１】
本実施形態２では、管理ＯＳ３１は、ＶＭ制御部３２の機能を備えており、実施形態１のデバイスエミュレータ３３ａ，３３ｂ，３３ｃ，３３ｄの機能を備えていない。従って、入出力ポート５１ｐ（又は５２ｐ，５３ｐ，５４ｐ）から入力されたデータは、Ｉ／Ｏ処理部２２を介してＶＭ４１（又は４２，４３，４４）へ送信される。また、ＶＭ４１（又は４２，４３，４４）が発行するデータは、Ｉ／Ｏ処理部２２を介して、入出力ポート５１ｐ（又は５２ｐ，５３ｐ，５４ｐ）へ送信される。
【０１１２】
図１５及び図１６は、実施形態２のＶＭＭ２１及び管理ＯＳ３１が実行する処理手順を示すフローチャートである。なお図１５及び図１６では、破線で区切った２つの領域において、左側の領域に管理ＯＳ３１による処理を、右側の領域にＶＭＭ２１による処理をそれぞれ示している。
【０１１３】
ＰＣ１０に電源が投入され、ＰＣ１０のハードウェア各部の起動が完了した後、ＣＰＵ１は、ＶＭＭプログラム２０を実行してＶＭＭ２１を起動する。ＶＭＭ２１の起動後、ＣＰＵ１は、管理ＯＳプログラム３０を実行して管理ＯＳ３１を起動する。
【０１１４】
管理ＯＳ３１は、ＶＭ制御部３２がユーザ認証を行い、ユーザ認証が成功したか否かを判定する（Ｓ５０１）。ユーザ認証が成功していない場合（Ｓ５０１：ＮＯ）、ＶＭ制御部３２は、ユーザ認証が成功するまで繰り返す。ユーザ認証が成功した場合（Ｓ５０１：ＹＥＳ）、ＶＭ制御部３２は、ユーザ認証時に取得したユーザＩＤに対応するＶＭ−ＩＤを取得する（Ｓ５０２）。ＶＭ制御部３２は、ＶＭ−ＩＤと共に、ＶＭＭ２１にリソース情報の取得依頼を行う。
【０１１５】
ＶＭＭ２１では、再起動制御部２５が、受信したＶＭ−ＩＤに基づいて、ＶＭ４１に割り当てるリソース情報をＶＭ管理テーブル４ｄから取得する（Ｓ５０３）。再起動制御部２５は、取得したリソース情報をＶＭ制御部３２へ送信する。ＶＭ制御部３２は、リソース情報に基づいてリソースを割り当てて、ＶＭ４１を起動する（Ｓ５０４）。ＶＭ制御部３２は、ＶＭ４１を起動した後、再起動制御部２５に起動指示完了通知を送信する。
【０１１６】
ＶＭＭ２１では、再起動制御部２５が、ＶＭ管理テーブル４ｄを更新し（Ｓ５０５）、必要な情報をＶＭ管理テーブル４ｄから取得する（Ｓ５０６）。例えば再起動制御部２５は、ＶＭ４１の動作状態を「停止」から「動作中」に更新する。そして再起動制御部２５は、ＶＭ４１に対応する監視先Ｉ／Ｏポート情報を取得する。
【０１１７】
ＶＭＭ２１では、再起動制御部２５が取得した監視先Ｉ／Ｏポート情報に基づいて、Ｉ／Ｏ要求の監視を開始し（Ｓ５０７）、キー入力の監視を開始する（Ｓ５０８）。これによりＩ／Ｏ処理部２２は、Ｉ／Ｏ処理監視部２３へのＩ／Ｏ要求受信通知を開始すると共に、キー入力監視部２４に対して、入出力デバイス５１から入力された入力キーデータの複製の送出を開始する。
【０１１８】
ＶＭＭ２１では、Ｉ／Ｏ処理監視部２３が、Ｉ／Ｏ処理部２２からＩ／Ｏ要求受信通知を受信しているか否かを判定する（Ｓ５０９）。Ｉ／Ｏ要求受信通知を受信している場合（Ｓ５０９：ＹＥＳ）、キー入力監視部２４は、Ｓ５１８の処理を実行する。Ｉ／Ｏ要求受信通知を受信していない場合（Ｓ５０９：ＮＯ）、Ｉ／Ｏ処理監視部２３は、ＶＭ４１が異常停止しているとみなし、ＶＭＭ２１では、キー入力監視部２４のキー入力の監視先を切り替える処理を開始する。このとき、キー入力監視部２４は、Ｉ／Ｏ処理部２２をキー入力の監視先としている。
【０１１９】
まず、ＶＭＭ２１では、再起動制御部２５が、ＶＭ管理テーブル４ｄから、ＶＭ４１に割り当てているリソース情報を取得し（Ｓ５１０）、取得したリソース情報と共に割当リソース解放通知をＶＭ制御部３２へ送信する。割当リソース解放通知を受信したＶＭ制御部３２は、リソース情報に基づいて、ＶＭ４１に割り当てていたリソースを解放する（Ｓ５１１）。解放の完了後、ＶＭ制御部３２は、ＶＭＭ２１の再起動制御部２５に対して割当リソース解放完了通知を送信する。ＶＭＭ２１では、割当リソース解放完了通知を受信した再起動制御部２５が、キー入力監視部２４に監視先情報として入出力ポート５１ｐを指定した切替通知を送信することで、キー入力監視部２４は、監視先を入出力ポート５１ｐに切り替える（Ｓ５１２）。
【０１２０】
ＶＭＭ２１では、キー入力監視部２４が、入出力ポート５１ｐから取得した入力キーがリセットキーであるか否かを判定する（Ｓ５１３）。リセットキーでない場合（Ｓ５１３：ＮＯ）、Ｉ／Ｏ処理監視部２３は、Ｉ／Ｏ処理部２２からＩ／Ｏ要求受信通知を受信しているか否かを判定する（Ｓ５１４）。Ｉ／Ｏ要求受信通知を受信していない場合（Ｓ５１４：ＮＯ）、Ｉ／Ｏ処理監視部２３は、ＶＭ４１は異常停止が続いていると判定する。そしてキー入力監視部２４は、Ｓ５１３の処理を実行する。
【０１２１】
Ｉ／Ｏ要求受信通知を受信している場合（Ｓ５１４：ＹＥＳ）、Ｉ／Ｏ処理監視部２３は、ＶＭ４１が異常停止から回復したと判定し、ＶＭＭ２１ではキー入力の監視先を入出力ポート５１ｐからＩ／Ｏ処理部２２に戻す処理を開始する。まず再起動制御部２５は、ＶＭ４１に対するリソース情報をＶＭ管理テーブル４ｄから取得し（Ｓ５１５）、取得したリソース情報と共にリソース割当依頼通知を管理ＯＳ３１のＶＭ制御部３２へ送信する。管理ＯＳ３１では、リソース割当依頼通知を受信したＶＭ制御部３２が、受信したリソース情報に基づくリソースをＶＭ４１に割り当てる（Ｓ５１６）。リソースの割り当てが完了した場合、ＶＭ制御部３２は、再起動制御部２５にリソース割当完了通知を送信する。ＶＭＭ２１では、リソース割当完了通知を受信した再起動制御部２５が、キー入力監視部２４に監視先情報としてＩ／Ｏ処理部２２を指定して切替通知を送信することで、キー入力監視部２４は、キー入力の監視先をＩ／Ｏ処理部２２に切り替える（Ｓ５１７）。
【０１２２】
ＶＭＭ２１では、キー入力監視部２４が、Ｉ／Ｏ処理部２２から取得した入力キーがリセットキーであるか否かを判定する（Ｓ５１８）。リセットキーでない場合（Ｓ５１８：ＮＯ）、Ｉ／Ｏ処理監視部２３は、Ｉ／Ｏ処理部２２からＩ／Ｏ要求受信通知を受信しているか否かを判定する（Ｓ５０９）。リセットキーである場合（Ｓ５１８：ＹＥＳ）、キー入力監視部２４は、再起動制御部２５にリセットキー入力通知を送信し、キー入力の監視を停止する（Ｓ５１９）。リセットキー入力通知を受信した再起動制御部２５は、管理ＯＳ３１のＶＭ制御部３２へ仮想マシンのリセット依頼通知を送信する。なおＳ５１３において、キー入力監視部２４が、入出力ポート５１ｐから取得した入力キーがリセットキーであるか否かを判定した場合にも（Ｓ５１３：ＹＥＳ）、キー入力監視部２４は、Ｓ５１９を実行する。
【０１２３】
管理ＯＳ３１では、リセット依頼通知を受信したＶＭ制御部３２が、ＶＭ４１を停止し（Ｓ５２０）、ＶＭＭ２１の再起動制御部２５へリセット指示完了通知を送信する。ＶＭＭ２１では、リセット指示完了通知を受信した再起動制御部２５が、ＶＭ管理テーブル４ｄから停止したＶＭ４１に対応するリソース情報を取得する（Ｓ５２１）。そして再起動制御部２５は、そのリソース情報と共に割当リソース解放依頼通知を、管理ＯＳ３１のＶＭ制御部３２へ送信する。
【０１２４】
管理ＯＳ３１では、割当リソース解放依頼通知を受信したＶＭ制御部３２が、リソース情報に基づいて、ＶＭ４１に割り当てていたリソースを解放する（Ｓ５２２）。解放の完了後、ＶＭ制御部３２は、ＶＭＭ２１の再起動制御部２５に対して割当リソース解放完了通知を送信する。
【０１２５】
ＶＭＭ２１では、割当リソース解放完了通知を受信した再起動制御部２５が、ＶＭ管理テーブル４ｄを更新する（Ｓ５２３）。その後、再起動制御部２５は、Ｓ５０２以降の処理を実行し、ＶＭ４１を再び起動する。これにより、ＶＭ４１が異常停止した場合に、リセットキーが入力されたときのＶＭ４１の再起動が完了する。
【０１２６】
上述したように、本実施形態２では、実施形態１と同様に、ＶＭ４１（又は４２，４３，４４）に割り当てられた入出力デバイス５１（又は５２，５３，５４）からＶＭ４１（又は４２，４３，４４）をリセットさせることができる。従って、ＶＭ４１（又は４２，４３，４４）が異常停止した場合であっても、ＰＣ１０にリセットさせるための専用のコンソール等を予め用意しておかなくても、ＶＭ４１（又は４２，４３，４４）をリセットすることができる。
【０１２７】
（実施形態３）
以下に、実施形態３のＰＣについて説明する。本実施形態３のＰＣでは、リセットキーの内容をユーザが設定することができる。
【０１２８】
図１７は、実施形態３のリセットキーの設定画面の一例を示す模式図である。
【０１２９】
図１７に示す設定画面は、リセットキーを設定又は変更するための画面であり、モニタ５１ａ（又は５２ａ，５３ａ，５４ａ）に表示される。設定画面では、例えば、リセットキーの入力方法、入力監視時間、入力キー及び入力回数等の設定情報が設定できる。入力方法では、キーボード５１ｂ（又は５２ｂ，５３ｂ，５４ｂ）から同時に押されたキーの組み合わせをリセットキーとするのか、又は連続して入力されたキーの順序の組み合わせをリセットキーとするのかを設定する。入力監視時間では、ユーザが最初にキーを押してから何秒間キー入力を監視するかを最初のキー入力から入力監視時間以内に最後のキーを入力しないとリセットキーとして認識しない。入力キーでは、どのキーを押せばリセットキーと認識させるのかを設定する。入力回数は、設定した入力キーを何回入力すれば、リセットキーと認識させるのかを設定する。
【０１３０】
設定情報は、ＶＭ管理テーブル４ｅに格納される。図１８は、実施形態３のＶＭ管理テーブル４ｅの内容を示す模式図である。ＶＭ管理テーブル４ｅは、実施形態１に係るＶＭ管理テーブル４ｄの内容に加え、図１７に示す設定画面から入力された設定情報がさらに格納されている。なお、設定画面から設定情報を入力する前には、設定情報に初期値が格納されていてもよいし、初期値が格納されていなくてもよい。
【０１３１】
図１９は、実施形態３のＰＣの機能を示す機能ブロック図である。なお図１９では、ＶＭ４１のみを図示しており、他のＶＭ４２，４３，４４は、ＶＭ４１と同様の機能を備えるため省略している。
【０１３２】
本実施形態３では、ゲストＯＳ４１ａは、リセットキーを設定するためのアプリケーションが実行されることで、入力キー設定部４１ｂの機能を備える。入力キー設定部４１ｂは、ＶＭ４１を識別する識別情報（ＶＭ−ＩＤ）と共に、リセットキー設定情報要求通知を再起動制御部２５へ送信する。リセットキー設定情報要求通知は、リセットキーの設定情報を再起動制御部２５に要求する通知である。リセットキー設定情報要求通知を受信した再起動制御部２５は、ＶＭ管理テーブル４ｅから、ＶＭ−ＩＤに対応するＶＭ４１のリセットキー設定情報を取得し、入力キー設定部４１ｂへ送信する。入力キー設定部４１ｂは、再起動制御部２５から取得したリセットキー設定情報に基づいて、図１７の入力キー設定画面をモニタ５１ａに表示させる。そして、入力キー設定部４１ｂは、入力キー設定画面に従って入力された設定情報を再起動制御部２５へ送信する。
【０１３３】
再起動制御部２５は、入力キー設定部４１ｂからリセットキー設定情報を取得し、ＶＭ管理テーブル４ｅに格納する。再起動制御部２５は、ＶＭ４１の起動時、入力キーの監視先Ｉ／Ｏポート情報、割り当てるリソース情報、及びリセットキーの設定情報をＶＭ管理テーブル４ｅから取得する。再起動制御部２５は、取得した情報を、入力監視開始通知と共にキー入力監視部２４へ送信する。キー入力監視部２４は、入力キーを監視する場合には、再起動制御部２５から取得したリセットキー設定情報に基づいて、入力キーがリセットキーであるか否かの判定を行う。
【０１３４】
図２０は、入力キー設定部４１ｂ及び再起動制御部２５が実行する処理手順を示すフローチャートである。入力キー設定部４１ｂは、ユーザがリセットキーを設定又は変更するアプリケーションを開始させることで、図２０の処理を開始する。なお図２０では、破線で区切った２つの領域において、左側の領域に入力キー設定部４１ｂによる処理を、右側の領域に再起動制御部２５による処理をそれぞれ示している。
【０１３５】
入力キー設定部４１ｂは、再起動制御部２５に対してリセットキー設定情報要求通知を送信する（Ｓ６０１）。リセットキー設定情報要求通知を受信した再起動制御部２５は、ＶＭ管理テーブル４ｅからリセットキー設定情報を取得し（Ｓ６０２）、入力キー設定部４１ｂへ送信する。入力キー設定部４１ｂは、再起動制御部２５からリセットキー設定情報を取得したか否かを判定する（Ｓ６０３）。リセットキー設定情報を取得していない場合（Ｓ６０３：ＮＯ）、入力キー設定部４１ｂは、取得するまで待機する。
【０１３６】
リセットキー設定情報を取得した場合（Ｓ６０３：ＹＥＳ）、入力キー設定部４１ｂは、取得した設定情報に基づいて、入力キー設定画面をモニタ５１ａに表示させる（Ｓ６０４）。次に、入力キー設定部４１ｂは、入力キー設定画面に従って入力を受け付けたか否かを判定する（Ｓ６０５）。入力を受け付けていない場合（Ｓ６０５：ＮＯ）、入力キー設定部４１ｂは、入力を受け付けるまで待機する。入力を受け付けた場合（Ｓ６０５：ＹＥＳ）、入力キー設定部４１ｂは、受け付けた入力が入力キー設定画面に従った入力内容であるか否かを判定する（Ｓ６０６）。
【０１３７】
入力キー設定画面に従った入力内容でない場合（Ｓ６０６：ＮＯ）、入力キー設定部４１ｂは、Ｓ６０５の処理を再実行する。設定画面に従った入力内容でない場合とは、例えば数値を入力すべき箇所に英字を入力した場合や、ユーザがシステム上回避すべきキーをリセットキーに割り当てた場合等がある。なお入力キー設定画面に従った入力内容でない場合、ユーザに再度設定し直すよう促すメッセージを表示するようにしてもよい。
【０１３８】
入力キー設定画面に従った入力内容である場合（Ｓ６０６：ＹＥＳ）、入力キー設定部４１ｂは、入力キー設定画面に従って入力された設定情報を再起動制御部２５へ送信する（Ｓ６０７）。再起動制御部２５は、入力キー設定情報をＶＭ管理テーブル４ｅに格納する（Ｓ６０８）。その後、再起動制御部２５は、ＶＭ管理テーブル４ｅへの格納完了を通知するリセットキー設定完了通知を送信する（Ｓ６０９）。
【０１３９】
入力キー設定部４１ｂは、リセットキー設定完了通知を受信したか否かを判定する（Ｓ６１０）。リセットキー設定完了通知を受信していない場合（Ｓ６１０：ＮＯ）、入力キー設定部４１ｂは、受信するまで待機する。リセットキー設定完了通知を受信した場合（Ｓ６１０：ＹＥＳ）、入力キー設定部４１ｂは、リセットキーの設定が完了したことをモニタ５１ａに表示させ（Ｓ６１１）、処理を終了する。なお、起動したＶＭ４１（又は４２，４３，４４）をリセットする動作等は、実施形態１，２と同様であるため説明は省略する。
【０１４０】
以上のように、本実施形態３では、ユーザがリセットキーを設定又は変更することが可能となり、例えばユーザの覚えやすいパスワードなどを適宜設定することができる。またユーザ各自が設定することで、他のユーザによる不正な操作を防止することができる。
【０１４１】
（実施形態４）
以下に、実施形態４に係るＰＣについて説明する。本実施形態４では、ＶＭ４１（又は４２，４３，４４）に割り当てられた入出力デバイス５１（又は５２，５３，５４）から、他のＶＭ４２，４３，４４（又は４１）をリセットさせることができる。なお以下の説明では、ＶＭ４１に割り当てられた入出力デバイス５１を用いて、ＶＭ４２（又は４３，４４）をリセットする場合について説明する。
【０１４２】
図２１は、モニタ５１ａに表示する認証画面の一例を示す模式図である。
【０１４３】
図２１に示す認証画面は、ＶＭ４１に割り当てられたキーボード５１ｂからリセットキーが入力されたときに表示される。認証画面には、ＰＣ１０で動作中のＶＭ４２（又は４１，４３，４４）の名称（例えば、ＶＭ−ＩＤ）が表示され、選択可能となっている。また認証画面には、キーボード５１ｂからパスワードが入力可能となっている。認証画面において、リセットさせるＶＭ４２（又は４１，４３，４４）の名称が選択され、選択されたＶＭ４２（又は４１，４３，４４）に対応するパスワードが入力されることで、選択したＶＭ４２（又は４１，４３，４４）がリセットされる。
【０１４４】
図２２は、実施形態４のＶＭ管理テーブル４ｆの内容を示す模式図である。ＶＭ管理テーブル４ｆは、実施形態１に係るＶＭ管理テーブル４ｄの内容に加え、リセット用パスワードがさらに格納されている。リセット用パスワードは、図２０に示す認証画面において、選択するＶＭ４２（又は４１，４３，４４）に対応するパスワードである。
【０１４５】
図２３は、実施形態４のＰＣの機能を示す機能ブロック図である。なお図２３では、ＶＭ４１のみを図示しており、他のＶＭ４２，４３，４４は、ＶＭ４１と同様の機能を備えるため省略している。本実施形態４では、ＶＭ４１のゲストＯＳ４１ａでは、リセット用アプリケーション（以下、リセット用ＡＰと言う）４１ｃが動作する。リセット用ＡＰ４１ｃは、動作中のＶＭをリセットさせるためのアプリケーションである。
【０１４６】
再起動制御部２５は、ＶＭ４１のキーボード５１ｂからリセットキーが入力され、キー入力監視部２４からリセットキー入力通知を受信した場合、ＶＭ管理テーブル４ｆから動作状態が「動作中」となっているすべてのＶＭのＶＭ−ＩＤを取得する。再起動制御部２５は、ＶＭ４１に対して動作中のＶＭのＶＭ−ＩＤを通知すると共に、リセット用ＡＰ４１ｃの起動指示を行う。
【０１４７】
リセット用ＡＰ４１ｃの起動指示を受けたＶＭ４１では、ゲストＯＳ４１ａがリセット用ＡＰ４１ｃを起動し、モニタ５１ａに図２１の認証画面を表示させる。このとき、ゲストＯＳ４１ａは、動作中のＶＭ４２（又は４１，４３，４４）の一覧を認証画面に表示する。ユーザが認証画面に従い、リセットするＶＭ４２（又は４１，４３，４４）を選択し、対応するパスワードを入力した場合、ゲストＯＳ４１ａは、入力された情報（以下、認証情報と言う）を再起動制御部２５へ送信する。
【０１４８】
再起動制御部２５は、取得した認証情報と、ＶＭ管理テーブル４ｆから取得する認証情報とに基づく認証を行う。まず再起動制御部２５は、認証情報から、認証画面で選択されたＶＭ４２（又は４１，４３，４４）を特定する。そして再起動制御部２５は、特定したＶＭ４２（又は４１，４３，４４）に対応するリセット用パスワードをＶＭ管理テーブル４ｆから取得する。再起動制御部２５は、認証情報から認証画面で入力されたパスワードがＶＭ管理テーブル４ｆから取得したリセット用パスワードと一致するか否かを判定する。再起動制御部２５は、パスワードが一致する場合には、認証成功と判定する。認証成功した場合には、再起動制御部２５は、ＶＭ４２（又は４１，４３，４４）のリセット処理を開始する。
【０１４９】
なおリセットする際の認証は、ユーザが所有するデバイスを用いて行うようにしてもよい。例えば、ＰＣ１０に赤外線受光部を設け、ユーザが所有する携帯電話機から、赤外線により携帯電話機内の情報、例えば自身のプロフィールを送信することで、リセットの認証を行うようにしてもよい。図２４は、モニタ５１ａに表示する認証画面の別の例を示す模式図である。図２４の認証画面では、ＰＣ１０で動作中のＶＭ４２（又は４１，４３，４４）の名称が選択可能に表示される。また認証画面には、携帯電話機からの赤外線の送信を促すメッセージが表示される。
【０１５０】
図２５及び図２６は、実施形態４のＶＭＭ２１、管理ＯＳ３１及びゲストＯＳ４１ａが実行する処理手順を示すフローチャートである。なお図２５及び図２６では、破線で区切った３つの領域において、左側の領域に管理ＯＳ３１による処理を、真ん中の領域にＶＭＭ２１の処理を、右側の領域にゲストＯＳ４１ａによる処理をそれぞれ示している。
【０１５１】
ＶＭＭ２１において、キー入力監視部２４はリセットキーが入力されたか否かを判定する（Ｓ７０１）。リセットキーが入力されていない場合（Ｓ７０１：ＮＯ）、キー入力監視部２４は、入力されるまで待機する。リセットキーが入力された場合（Ｓ７０１：ＹＥＳ）、キー入力監視部２４は、再起動制御部２５にリセットキー入力通知を送信する。再起動制御部２５は、ＶＭ管理テーブル４ｆから動作中のＶＭ４２（又は４１，４３，４４）の識別情報を取得する（Ｓ７０２）。その後再起動制御部２５は、取得したＶＭ４２（又は４１，４３，４４）の識別情報をゲストＯＳ４１ａに通知すると共に、リセット用ＡＰ４１ｃの起動指示を行う。
【０１５２】
ゲストＯＳ４１ａは、リセット用ＡＰ４１ｃを起動する（Ｓ７０３）。リセット用ＡＰ４１ｃは、モニタ５１ａに認証画面を表示させる（Ｓ７０４）。リセット用ＡＰ４１ｃは、認証画面に従って、認証情報が入力されたか否かを判定する（Ｓ７０５）。認証情報が入力されていない場合（Ｓ７０５：ＮＯ）、リセット用ＡＰ４１ｃは、認証情報が入力されるまで待機する。認証情報が入力された場合（Ｓ７０５：ＹＥＳ）、リセット用ＡＰ４１ｃは、入力された認証情報を再起動制御部２５へ送信する。
【０１５３】
ＶＭＭ２１では、再起動制御部２５が、取得した認証情報に基づく認証を行う（Ｓ７０６）。具体的には、再起動制御部２５は、取得した認証情報から、認証画面で選択されたＶＭ４２（又は４１，４３，４４）を特定し、対応するリセット用パスワードをＶＭ管理テーブル４ｆから取得する。再起動制御部２５は、認証情報から認証画面で入力されたパスワードが、リセット用パスワードと一致するか否かを判定する。
【０１５４】
再起動制御部２５は、パスワードが一致するか否かを判定することで、認証成功したか否かを判定する（Ｓ７０７）。認証成功に失敗した場合（Ｓ７０７：ＮＯ）、再起動制御部２５は、認証失敗をリセット用ＡＰ４１ｃへ通知し、リセット用ＡＰ４１ｃは、認証失敗をモニタ５１ａに表示させる（Ｓ７０８）。その後、リセット用ＡＰ４１ｃは、Ｓ７０５の処理を実行する。
【０１５５】
認証に成功した場合（Ｓ７０７：ＹＥＳ）、再起動制御部２５は、ＶＭ４２（又は４１，４３，４４）に対するキー入力の監視を停止し（Ｓ７０９）、Ｉ／Ｏ要求の監視を停止する（Ｓ７１０）。その後、管理ＯＳ３１では、ＶＭ制御部３２がＶＭ４２（又は４１，４３，４４）を停止する（Ｓ７１１）。ＶＭＭ２１では、再起動制御部２５が、停止したＶＭ４２（又は４１，４３，４４）に対応するリソース情報を取得する（Ｓ７１２）。そして再起動制御部２５は、取得したリソース情報と共に割当リソース解放依頼通知を、管理ＯＳ３１のＶＭ制御部３２へ送信する。管理ＯＳ３１では、割当リソース解放依頼通知を受信したＶＭ制御部３２が、リソース情報に基づいて、ＶＭ４２（又は４１，４３，４４）に割り当てていたリソースを解放する（Ｓ７１３）。解放の完了後、ＶＭ制御部３２は、ＶＭＭ２１の再起動制御部２５に対して割当リソース解放完了通知を送信する。ＶＭＭ２１では、割当リソース解放完了通知を受信した再起動制御部２５が、ＶＭ管理テーブル４ｆを更新する（Ｓ７１４）。
【０１５６】
ＶＭＭ２１では、再起動制御部２５がリセット用ＡＰ４１ｃにリセットの完了を通知し、リセット用ＡＰ４１ｃは、モニタ５１ａにリセットが成功した内容を表示させる（Ｓ７１５）。そしてゲストＯＳ４１ａは、リセット用ＡＰ４１ｃを停止する（Ｓ７１６）。
【０１５７】
一方、ＶＭＭ２１では、再起動制御部２５が、ＶＭ４２（又は４１，４３，４４）に割り当てるリソース情報をＶＭ管理テーブル４ｆから取得する（Ｓ７１７）。再起動制御部２５は、取得したリソース情報を管理ＯＳ３１へ送信する。管理ＯＳ３１では、ＶＭ制御部３２がリソース情報に基づいてリソースを割り当てて、ＶＭ４２（又は４１，４３，４４）を起動する（Ｓ７１８）。ＶＭ制御部３２は、ＶＭ４２（又は４１，４３，４４）を起動した後、ＶＭＭ２１に起動指示完了通知を送信する。
【０１５８】
ＶＭＭ２１では、再起動制御部２５が、ＶＭ管理テーブル４ｆを更新し（Ｓ７１９）、必要な情報をＶＭ管理テーブル４ｆから取得する（Ｓ７２０）。ＶＭＭ２１では、再起動制御部２５が、取得した監視先ポート情報に基づいて、キー入力の監視を開始させ（Ｓ７２１）、Ｉ／Ｏ要求の監視を開始させる（Ｓ７２２）。これにより、ＶＭ４１に割り当てられた入出力デバイス５１から、ＶＭ４２（又は４１，４３，４４）をリセットさせる処理が完了する。
【０１５９】
上述のように、本実施形態４では、ＶＭ４１（又は４２，４３，４４）のリセット処理を、別のＶＭ４２，４３，４４（又は４１）から行うことができる。これにより、ＶＭ４１（又は４２，４３，４４）に異常が発生して、入出力デバイス５１（又は５２，５３，５４）からリセット処理ができない場合であっても、他の入出力デバイス５２，５３，５４（又は５１）からリセット処理を行うことができる。
【０１６０】
（実施形態５）
以下に、実施形態５に係るＰＣについて説明する。本実施形態５では、ＰＣにＵＳＢメモリ等の記録媒体が接続可能となっており、記録媒体が接続されたときに、実施形態４で説明したリセット用ＡＰの起動を開始する。
【０１６１】
本実施形態に係るＰＣは、モニタ５１ａ，５２ａ，５３ａ，５４ａ等を接続するＵＳＢポート５ａ，５ａ…を、さらに４つ多く備えている。ＵＳＢポート５ａ，５ａ…に接続する記録媒体には、リセット用ＡＰのプログラム、及びＶＭ４１（又は４２，４３，４４）の識別情報（ＶＭ−ＩＤ）が格納されている。ＰＣは、ＵＳＢポート５ａ，５ａ…に記録媒体が接続されたとき、格納されてあるＶＭ−ＩＤに対応するＶＭ４１（又は４２，４３，４４）のリセット処理を開始する。
【０１６２】
図２７は、モニタ５１ａ（又は５２ａ，５３ａ，５４ａ）に表示する認証画面の一例を示す模式図である。
【０１６３】
図２７に示す認証画面は、記録媒体が接続された場合に、モニタ５１ａ（又は５２ａ，５３ａ，５４ａ）に表示される。認証画面には、記録媒体に格納されてあるＶＭ−ＩＤに対応するＶＭ４１（又は４２，４３，４４）をリセットする旨のメッセージが表示される。また認証画面は、キーボード５１ｂ（又は５２ｂ，５３ｂ，５４ｂ）からパスワードが入力可能となっている。この認証画面において、ＶＭ４１（又は４２，４３，４４）に対応するパスワードが入力されることで、ＶＭ４１（又は４２，４３，４４）のリセット処理が開始される。
【０１６４】
なお、記録媒体を接続するＵＳＢポート５ａ，５ａ…は、ＶＭ４１，４２，４３，４４それぞれに割り当てられている。そして、記録媒体が接続されたとき、どのＶＭ４１，４２，４３，４４に対応するＵＳＢポート５ａ，５ａ…に接続されたかが特定される。そして、図２７に示す認証画面は、特定されたＶＭ４１（又は４２，４３，４４）のモニタ５１ａ（又は５２ａ，５３ａ，５４ａ）に表示される。
【０１６５】
また実施形態４と同様に、リセット処理を開始する際の認証において、ユーザが入力するパスワードを用いる代わりに、ユーザが所有するデバイスを用いて行うようにしてもよい。図２８は、モニタ５１ａ（又は５２ａ，５３ａ，５４ａ）に表示する認証画面の別の例を示す模式図である。図２８に示すように、認証画面には、携帯電話機からの赤外線の送信を促すメッセージを表示する。
【０１６６】
図２９は、実施形態５のＰＣの機能を示す機能ブロック図である。なお図２９では、ＶＭ４１のみを図示しており、他のＶＭ４２，４３，４４は、ＶＭ４１と同様の機能を備えるため省略している。
【０１６７】
本実施形態５では、入出力ポート５１ｐ，５２ｐ，５３ｐ，５４ｐは、それぞれＵＳＢメモリ等の記録媒体５６を接続する入力ポート（接続手段）５１ｄ，５２ｄ，５３ｄ，５４ｄを含んでいる。記録媒体５６には、リセット用ＡＰのプログラム、及びＶＭ４１（又は４２，４３，４４）の識別情報（ＶＭ−ＩＤ）が格納されている。
【０１６８】
管理ＯＳ３１は、接続監視部３５の機能をさらに備えている。接続監視部３５は、入力ポート５１ｄ，５２ｄ，５３ｄ，５４ｄへの接続を監視する。記録媒体５６を入力ポートに接続すると、接続監視部３５は記録媒体５６が接続された入力ポートのポート情報を取得する。ポート情報とは、入力ポート５１ｄ，５２ｄ，５３ｄ，５４ｄを特定する情報である。接続監視部３５は、取得したポート情報と共に入力ポート割当依頼通知を再起動制御部２５に通知する。
【０１６９】
入力ポート割当要求を受信した再起動制御部２５は、ＶＭ管理テーブル４ｇから、ポート情報に対応するＶＭ４１，４２，４３，４４を特定する。図３０は、実施形態５のＶＭ管理テーブル４ｇの内容を示す模式図である。ＶＭ管理テーブル４ｇは、実施形態４に係るＶＭ管理テーブル４ｆの内容に加え、割当ポート情報がさらに格納されている。割当ポート情報は、入力ポート５１ｄ，５２ｄ，５３ｄ，５４ｄを特定するための情報である。まず再起動制御部２５は、接続監視部３５から取得したポート情報に対応するＶＭ４１（又は４２，４３，４４）を特定する。そして、再起動制御部２５は、特定したＶＭ４１（又は４２，４３，４４）とポート情報と共に入力ポート割当依頼通知をＶＭ制御部３２へ送信する。
【０１７０】
ＶＭ制御部３２は、ＶＭ４１（又は４２，４３，４４）に、記録媒体５６が接続された入力ポート５１ｄ（又は５２ｄ，５３ｄ，５４ｄ）を割り当てる。ＶＭ制御部３２により割り当てられたＶＭ４１（又は４２，４３，４４）は、記録媒体５６に格納されているリセット用ＡＰのプログラムを読み出し、ゲストＯＳ４１ａ（又は４２ａ，４３ａ，４４ａ）上で、リセット用ＡＰ４ｃを起動する。
【０１７１】
リセット用ＡＰ４１ｃを起動したゲストＯＳ４１ａは、記録媒体５６からＶＭ−ＩＤを読み出し、リセットさせるＶＭ４２（又は４１，４３，４４）を特定する。そしてゲストＯＳ４１ａ（又は４２ａ，４３ａ，４４ａ）上で起動したリセット用ＡＰ４１ｃは、モニタ５１ａ（又は５２ａ，５３ａ，５４ａ）に認証画面を表示させる。リセット用ＡＰ４１ｃは、認証画面から入力されたパスワードを再起動制御部２５へ送信する。そして、再起動制御部２５では、実施形態４と同様に、リセットを開始する際の認証を行う。
【０１７２】
図３１及び図３２は、実施形態５のＶＭＭ２１、管理ＯＳ３１及びゲストＯＳ４１ａ（又は４２ａ，４３ａ，４４ａ）が実行する処理手順を示すフローチャートである。
【０１７３】
管理ＯＳ３１では、接続監視部３５がリセット用の記録媒体５６が入力ポート５１ｄ（又は５２ｄ，５３ｄ，５４ｄ）に接続されたか否かを判定する（Ｓ８０１）。リセット用の記録媒体５６とは、リセット用ＡＰのプログラム、及びＶＭ４２（又は４１，４３，４４）の識別情報が格納されてある記録媒体である。リセット用の記録媒体５６が接続されていない場合（Ｓ８０１：ＮＯ）、接続監視部３５は、接続されるまで待機する。接続された場合（Ｓ８０１：ＹＥＳ）、接続監視部３５は、記録媒体５６が接続された入力ポート５１ｄ（又は５２ｄ，５３ｄ，５４ｄ）のポート情報を取得する（Ｓ８０２）。そして接続監視部３５は、取得したポート情報と共に入力ポート割当依頼通知を再起動制御部２５に通知する。
【０１７４】
ＶＭＭ２１では、再起動制御部２５が、ＶＭ管理テーブル４ｇから、ポート情報に対応するＶＭ４１（又は４２，４３，４４）を特定する（Ｓ８０３）。そして、再起動制御部２５は、特定したＶＭ４１（又は４２，４３，４４）とポート情報と共に入力ポート割当依頼通知をＶＭ制御部３２へ通知する。管理ＯＳ３１では、ＶＭ制御部３２がＶＭ４１（又は４２，４３，４４）に、記録媒体５６が接続された入力ポート５１ｄ（又は５２ｄ，５３ｄ，５４ｄ）を割り当てる（Ｓ８０４）。
【０１７５】
ＶＭ制御部３２により割り当てられたＶＭ４１（又は４２，４３，４４）は、記録媒体５６に格納されているリセット用ＡＰのプログラムを読み出し、ゲストＯＳ４１ａ（又は４２ａ，４３ａ，４４ａ）上で、リセット用ＡＰを起動する（Ｓ８０５）。ゲストＯＳ４１ａ（又は４２ａ，４３ａ，４４ａ）上で起動したリセット用ＡＰ４１ｃは、記録媒体５６からＶＭ−ＩＤを読み出す（Ｓ８０６）。これにより、リセット用ＡＰ４１ｃは、リセットするＶＭ４２（又は４１，４３，４４）を特定する。そしてリセット用ＡＰ４１ｃは、モニタ５１ａ（又は５２ａ，５３ａ，５４ａ）に認証画面を表示させる（Ｓ８０７）。Ｓ８０８以降の処理は、図２５のＳ７０５以降の処理と同様であるため説明は省略する。
【０１７６】
上述のように、本実施形態５では、記録媒体５６を接続することで、ＶＭ４２（又は４１，４３，４４）のリセット処理を開始させることができる。これにより、記録媒体５６を所持しない第三者により、リセット処理が勝手に開始されることを防止することができる。
【０１７７】
なお本実施形態５では、記録媒体５６をＵＳＢメモリとして説明しているが、記録媒体を用いてもよい。例えば、Compact Disc（ＣＤ）又はDigital Video Disc（ＤＶＤ）等が装着でき、装着したＣＤ等から記録内容を自動読み出しすることで、上述のリセット処理を開始させるようにしてもよい。
【０１７８】
（実施形態６）
以下に、実施形態６に係るＰＣについて説明する。本実施形態６では、ＶＭ４１，４２，４３，４４の停止途中で異常が発生し、正常に停止しなかった場合に、リセットキーの入力を受け付けて、ＶＭ４１，４２，４３，４４を強制停止する。
【０１７９】
図３３は、実施形態６のＰＣの機能を示す機能ブロック図である。なお図３３では、ＶＭ４１のみを図示しており、他のＶＭ４２，４３，４４は、ＶＭ４１と同様の機能を備えるため省略している。また以下の説明では、ＶＭ４１について説明するが、他のＶＭ４２，４３，４４の機能及び動作は、ＶＭ４１と同様である。
【０１８０】
本実施形態６では、ゲストＯＳ４１ａは、停止イベント検出部４１ｄの機能を備える。停止イベント検出部４１ｄは、ＶＭ４１に対する停止イベントを検出する。停止イベントは、例えばユーザによる終了操作、又はアプリケーションによる終了命令の開始である。停止イベント検出部４１ｄは、停止イベントを検出した場合、再起動制御部２５へ停止イベント検出を通知する。
【０１８１】
再起動制御部２５は、停止イベント検出部４１ｄから停止イベント検出が通知された場合、ＶＭ管理テーブル４ｈに格納されている停止イベント検出情報を更新する。図３４は、本実施形態６のＶＭ管理テーブル４ｈの内容を示す模式図である。ＶＭ管理テーブル４ｈは、実施形態１に係るＶＭ管理テーブル４ｄの内容に加え、停止イベント検出情報がさらに格納されている。停止イベント検出情報は、停止イベント検出部４１ｄが停止イベントを検出したか否かの情報を格納する。再起動制御部２５は、停止イベント検出部４１ｄから停止イベント検出が通知された場合には、停止イベント検出情報を「検出」にする。また再起動制御部２５は、停止イベント検出部４１ｄから停止イベント検出が通知されていない場合には、停止イベント検出情報は「未検出」となる。
【０１８２】
リセットキーの入力によってＶＭ４１のリセット処理でＶＭ４１を停止し、割当リソースの解放依頼通知をＶＭ制御部３２に送信した再起動制御部２５は、ＶＭ制御部３２から割当リソース解放完了通知を受信した場合、ＶＭ管理テーブル４ｈの停止イベント検出情報を参照し、「未検出」であるか否かを判定する。停止イベント検出情報が「検出」である場合、ＶＭ４１の停止処理中にリセットキーが入力されたと判断してＶＭ４１の起動処理を実行しないようにする。停止イベント検出情報が「未検出」である場合、リセットキーが入力されたのは停止処理中ではないと判断して再起動制御部２５はＶＭ制御部３２にＶＭ４１の起動指示依頼を送信し、ＶＭ４１を起動する。これによってＶＭ４１の停止処理中にリセットキーが入力された場合はＶＭ４１を停止し、ＶＭ４１の運用中（停止処理以外）にリセットキーが入力された場合はＶＭ４１を再起動することが可能となる。
【０１８３】
図３５は、実施形態６のＶＭＭ２１、管理ＯＳ３１及びゲストＯＳ４１ａが実行する処理手順を示すフローチャートである。なお図３５では、破線で区切った３つの領域において、左側の領域に管理ＯＳ３１による処理を、真ん中の領域にＶＭＭ２１による処理を、右側の領域にゲストＯＳ４１ａによる処理をそれぞれ示している。
【０１８４】
ゲストＯＳ４１ａでは、停止イベント検出部４１ｄが停止イベントを検出したか否かを判定する（Ｓ９０１）。停止イベントを検出した場合（Ｓ９０１：ＹＥＳ）、停止イベント検出部４１ｄは、ＶＭＭ２１の再起動制御部２５へ停止イベント検出を通知する。ＶＭＭ２１では、再起動制御部２５が、ＶＭ管理テーブル４ｈを更新し（Ｓ９０２）、ＶＭ４１に対応する停止イベント検出情報を「検出」にする。
【０１８５】
ＶＭＭ２１では、キー入力監視部２４がリセットキーが入力されたか否かを判定する（Ｓ９０３）。リセットキーが入力されていない場合（Ｓ９０３：ＮＯ）、キー入力監視部２４は、リセットキーが入力されるまで待機する。リセットキーが入力された場合（Ｓ９０３：ＹＥＳ）、ＶＭＭ２１及び管理ＯＳ３１ではＶＭ４１のリセット処理が開始される。再起動制御部２５は、キー入力の監視、及びＩ／Ｏ要求の監視を停止する（Ｓ９０４）。そして、管理ＯＳ３１では、ＶＭ制御部３２がＶＭ４１を停止する（Ｓ９０５）。ＶＭＭ２１では、再起動制御部２５がＶＭ管理テーブル４ｈからリソース情報を取得し（Ｓ９０６）、管理ＯＳ３１では、リソース情報に基づいて、ＶＭ４１に割り当てられていたリソースを解放する（Ｓ９０７）。再起動制御部２５は、ＶＭ制御部３２から割当リソース解放完了通知を受信すると、ＶＭ管理テーブル４ｈを更新する（Ｓ９０８）。
【０１８６】
ＶＭＭ２１では、再起動制御部２５がＶＭ管理テーブル４ｈの停止イベント検出情報を参照し、「検出」であるか否かを判定する（Ｓ９０９）。停止イベント検出部４１ｄが停止イベントを検出した場合、Ｓ９０２で停止イベント検出情報は「検出」となっている。従って、「検出」であるかを判定することで、再起動制御部２５は、Ｓ９０３でリセットキーが入力されるまでに、ＶＭ４１の停止処理が行われていたか否かを判定することができる。
【０１８７】
停止イベント検出情報が「検出」でない場合（Ｓ９０９：ＮＯ）、即ち停止イベント検出情報が「未検出」である場合、再起動制御部２５は、リセットキーの入力以前に、ＶＭ４１の停止処理が行われていないと判定する。従って、再起動制御部２５は、リセットキーが入力されたことによるリセット処理を継続し、停止したＶＭ４１を起動する（Ｓ９１０）。以上により、リセットキーの入力によるリセット処理が終了する。
【０１８８】
停止イベント検出情報が「検出」の場合（Ｓ９０９：ＹＥＳ）、再起動制御部２５は、リセットキーの入力以前に、ＶＭ４１の停止処理が行われていたと判定する。この場合、再起動制御部２５は、Ｓ９０５でＶＭ４１を停止した状態で、本処理を終了する。この場合には、停止処理中になんらかの原因によりＶＭ４１がハングアップしたと考えられることからリセットキーが入力されていても、ＶＭ４１は再起動しない。
【０１８９】
上述のように、本実施形態６では、ＶＭ４１（又は４２，４３，４４）の停止中に異常が発生し、停止処理が中断している場合、リセットキーが入力されることで、ＶＭ４１（又は４２，４３，４４）を強制的に停止させることができる。
【０１９０】
以上、本発明の実施形態について、具体的に説明したが、各構成及び動作等は適宜変更可能であって、上述の実施形態に限定されることはない。
【０１９１】
以下に、上述の実施形態を含む実施形態に関し、更に付記を開示する。
【０１９２】
（付記１）
物理資源を論理的に分割して複数の仮想計算機として動作させる手段と、
データを入出力する複数の入出力手段と、
該入出力手段の何れかを、動作している仮想計算機の何れかに割り当てる割当手段と、
前記入出力手段、及び該入出力手段が割り当てられた仮想計算機の一方から入力されたデータを他方へ出力する転送手段と、
前記入出力手段から所定データが入力されたことを検出する検出手段と、
該検出手段が検出した場合、動作している仮想計算機の何れかを停止する停止手段と、
該停止手段による停止後、停止した仮想計算機を起動する起動手段と
を備える情報処理装置。
【０１９３】
（付記２）
前記停止手段は、
前記検出手段が検出した場合、前記所定データを入力した入出力手段が割り当てられた仮想計算機を停止するようにしてある
付記１に記載の情報処理装置。
【０１９４】
（付記３）
前記転送手段は、
前記入出力手段から前記所定データが入力されたときに、前記検出手段へ入力の通知を行うようにしてあり、
前記仮想計算機は、
定期的に信号を出力する手段
を有しており、
前記仮想計算機から前記信号が定期的に出力されているか否かを監視する監視手段
をさらに備え、
前記検出手段は、
前記仮想計算機から前記信号が出力されている場合、前記転送手段からの通知を受けることで入力を検出し、
前記仮想計算機から前記信号が出力されていない場合、前記入出力手段が入力した前記所定データを、前記入出力手段から直接取得することで入力を検出するようにしてある
付記１又は２に記載の情報処理装置。
【０１９５】
（付記４）
前記入出力手段が有する機能を擬似的に実現するエミュレート手段
をさらに備え、
前記エミュレート手段は、
前記入出力手段から入力されたデータを前記転送手段へ出力し、前記転送手段から入力されたデータを前記入出力手段へ出力するようにしてある
付記３に記載の情報処理装置。
【０１９６】
（付記５）
前記入出力手段は、着脱可能に接続されるＵＳＢデバイスであって、
前記仮想計算機は、
割り当てられた前記入出力手段が接続された場合、通信接続のための要求信号を前記入出力手段へ出力する手段
を有し、
前記入出力手段は、
前記要求信号に対する応答信号を前記仮想計算機へ出力し、
前記仮想計算機は、
前記入出力手段から前記応答信号が入力されたとき、前記入出力手段との通信接続を確立する手段
をさらに有し、
前記監視手段は、
前記仮想計算機から前記要求信号が定期的に出力されているか否かを監視するようにしてある
付記３又は４に記載の情報処理装置。
【０１９７】
（付記６）
所定データを設定する設定手段
をさらに備え、
前記検出手段は、
前記設定手段により設定された所定データが、前記入出力手段から入力されたことを検出するようにしてある
付記１から５の何れか一つに記載の情報処理装置。
【０１９８】
（付記７）
前記検出手段が前記所定データが入力されたことを検出した場合、動作している複数の仮想計算機の何れかの選択を受け付ける選択受付手段
をさらに備え、
前記検出手段は、
前記選択受付手段が受け付けた仮想計算機に対応するデータが前記入出力手段から入力されたことを検出し、
前記停止手段は、
前記検出手段が入力を検出した場合、前記選択受付手段が受け付けた仮想計算機を停止するようにしてある
付記１から６の何れか一つに記載の情報処理装置。
【０１９９】
（付記８）
仮想計算機を識別する識別情報を格納している記録媒体が接続可能な接続手段と、
該接続手段に前記記録媒体が接続された場合、前記識別情報を前記記録媒体から読み出す読出手段と
をさらに備え、
前記検出手段は、
前記読出手段が読み出した識別情報に係る仮想計算機に対応するデータが、前記入出力手段から入力されたことを検出し、
前記停止手段は、
前記検出手段が入力を検出した場合、前記識別情報に係る仮想計算機を停止するようにしてある
付記１から６の何れか一つに記載の情報処理装置。
【０２００】
（付記９）
動作している仮想計算機の停止を受け付ける停止受付手段と、
該停止受付手段が停止を受け付け、かつ、前記停止手段が仮想マシンを停止した場合、前記起動手段による起動を禁止する禁止手段と
をさらに備える付記１から８の何れか一つに記載の情報処理装置。
【０２０１】
（付記１０）
前記停止手段が仮想計算機を停止した場合、前記割当手段による割り当てを解放する解放手段と、
前記起動手段が前記仮想計算機を起動した場合、前記停止手段による停止前に前記割当手段が割り当てた入出力手段を、前記仮想計算機に割り当てる再割当手段と
をさらに備える付記１から９の何れか一つに記載の情報処理装置。
【０２０２】
（付記１１）
前記停止手段が仮想計算機の停止を開始した場合、停止を報知する報知手段
をさらにさらに備える付記１から１０の何れか一つに記載の情報処理装置。
【０２０３】
（付記１２）
データを入出力する複数の入出力手段を備え、物理資源を論理的に分割して複数の仮想計算機として動作させる情報処理装置で行う情報処理方法において、
前記入出力手段の何れかを、動作している仮想計算機の何れかに割り当てるステップと、
前記入出力手段、及び該入出力手段が割り当てられた仮想計算機の一方から入力されたデータを他方へ出力するステップと、
前記入出力手段から所定データが入力されたことを検出するステップと、
入力を検出した場合、動作している仮想計算機の何れかを停止するステップと、
停止した仮想計算機を起動するステップと、
を備える情報処理方法。
【０２０４】
（付記１３）
物理資源を論理的に分割して複数の仮想計算機として動作させるコンピュータを、
データを入出力する複数の入出力手段の何れかを、動作している仮想計算機の何れかに割り当てる割当手段、
前記入出力手段、及び該入出力手段が割り当てられた仮想計算機の一方から入力されたデータを他方へ出力する転送手段、
前記入出力手段から所定データが入力されたことを検出する検出手段、
該検出手段が検出した場合、動作している仮想計算機の何れかを停止する停止手段、及び
該停止手段による停止後、停止した仮想計算機を起動する起動手段
として機能させるコンピュータプログラム。
【符号の説明】
【０２０５】
２２  Ｉ／Ｏ処理部（転送手段）
２３  Ｉ／Ｏ処理監視部（監視手段）
２４  キー入力監視部（検出手段）
２５  再起動制御部（割当手段、停止手段、起動手段、設定手段、選択受付手段、禁止手段、解放手段、再割当手段）
３２  ＶＭ制御部（割当手段、停止手段、起動手段、解放手段、再割当手段）
３３  デバイスエミュレータ（エミュレート手段）
４１，４２，４３，４４  ＶＭ（仮想計算機）
５１，５２，５３，５４  入出力デバイス（入出力手段、停止受付手段、選択受付手段）
５１ａ，５２ａ，５３ａ，５４ａ  モニタ（報知手段）
５５  入力ポート（接続手段）
【図１】
2011048819.tif 000003
【図２】
2011048819.tif 000004
【図３】
2011048819.tif 000005
【図４】
2011048819.tif 000006
【図５】
2011048819.tif 000007
【図６】
2011048819.tif 000008
【図７】
2011048819.tif 000009
【図８】
2011048819.tif 000010
【図９】
2011048819.tif 000011
【図１０】
2011048819.tif 000012
【図１１】
2011048819.tif 000013
【図１２】
2011048819.tif 000014
【図１３】
2011048819.tif 000015
【図１４】
2011048819.tif 000016
【図１５】
2011048819.tif 000017
【図１６】
2011048819.tif 000018
【図１７】
2011048819.tif 000019
【図１８】
2011048819.tif 000020
【図１９】
2011048819.tif 000021
【図２０】
2011048819.tif 000022
【図２１】
2011048819.tif 000023
【図２２】
2011048819.tif 000024
【図２３】
2011048819.tif 000025
【図２４】
2011048819.tif 000026
【図２５】
2011048819.tif 000027
【図２６】
2011048819.tif 000028
【図２７】
2011048819.tif 000029
【図２８】
2011048819.tif 000030
【図２９】
2011048819.tif 000031
【図３０】
2011048819.tif 000032
【図３１】
2011048819.tif 000033
【図３２】
2011048819.tif 000034
【図３３】
2011048819.tif 000035
【図３４】
2011048819.tif 000036
【図３５】
2011048819.tif 000037