(57)【特許請求の範囲】
【請求項１】
デバイスを利用するプロセッサと、当該プロセッサが実行すべきプログラムを記憶するメモリとを備え、当該プロセッサが、当該メモリに記憶されるプログラムを実行することで、１以上の仮想計算機と、仮想計算機の動作を停止する動作停止装置とを実現する仮想計算機システムであって、
前記動作停止装置は、前記１以上の仮想計算機のそれぞれに対して、当該仮想計算機を停止する旨を示す停止信号を送出する停止信号出力部を有し、
前記１以上の仮想計算機のそれぞれは、前記デバイスを利用する処理であり、かつ、実行開始後は完了するまで仮想計算機の動作停止が許可されていない処理であるところの停止不許可処理を実行中の期間に、自仮想計算機の動作停止が許可されていない旨を示す停止不許可信号を、前記停止信号出力部から送出された前記停止信号への応答として出力する出力部を有し、
前記動作停止装置は、前記動作の停止において、（１）前記停止信号が受信されており、かつ、当該停止信号への応答としての前記停止不許可信号が出力されていない仮想計算機の動作を停止して、（２）前記停止信号が受信されており、かつ、当該停止信号への応答としての前記停止不許可信号が出力されている仮想計算機の動作を停止しないように、仮想計算機の前記動作停止を行う
ことを特徴とする仮想計算機システム。
【請求項２】
前記仮想計算機は、前記停止信号を受信した場合において、停止不許可処理を実行中のときに、当該停止不許可処理を完了するまでの時間を短縮するための短縮処理を行う短縮処理部を有する
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項３】
前記短縮処理部は、実行中の停止不許可処理について、仮想計算機内での実行優先度を最優先とする処理を、前記短縮処理として行う
ことを特徴とする請求項２記載の仮想計算機システム。
【請求項４】
前記１以上の仮想計算機のうちの少なくとも１つは、前記停止信号を受信した場合において、停止不許可処理を実行中のときに、当該停止不許可処理が完了しないことにより前記デバイスに生じる異常状態を解消するための解消処理を実行する解消処理実行部を有し、
前記動作停止装置は、仮想計算機に前記停止信号を送出した場合において、解消処理を開始しなかった仮想計算機について、前記停止不許可信号が出力されていない仮想計算機の動作を停止して、前記停止不許可信号が出力されている仮想計算機の動作を停止しないように、仮想計算機の前記動作停止を行い、仮想計算機に前記停止信号を送出した場合において、解消処理を開始した仮想計算機について、当該解消処理が完了すれば当該仮想計算機の動作を停止するように、仮想計算機の前記動作停止を行い
前記解消処理は、対応する実行中の停止不許可処理と同等の実行優先度で実行された場合に、当該停止不許可処理が完了するよりも早く完了する処理である
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項５】
前記解消処理実行部は、解消処理を実行する場合には、当該解消処理を、仮想計算機内において最優先となる実行優先度で実行する
ことを特徴とする請求項４記載の仮想計算機システム。
【請求項６】
前記プロセッサは、前記デバイスの利用を、前記プロセッサと前記デバイスとの間の通信路を介して行い、
前記解消処理は、前記通信路に、通信の終了を一方的に通知する旨の信号を送出する処理を含む
ことを特徴とする請求項５記載の仮想計算機システム。
【請求項７】
前記デバイスは、前記プロセッサが利用するデータを記憶するストレージデバイスであり、
前記停止不許可処理は、前記デバイスにおけるファイルシステム管理情報の更新処理と、前記デバイスへのデータの書き込み処理とを含み、
前記解消処理は、前記更新処理を含み、前記書き込み処理を含まない処理である
ことを特徴とする請求項５記載の仮想計算機システム。
【請求項８】
前記デバイスは、前記プロセッサが利用するデータを記憶するためのストレージデバイスであり、
前記動作停止装置は、前記デバイスの状態に係る情報を記憶する状態記憶部を有し、
前記解消処理は、前記デバイスの状態に係る情報を、前記状態記憶部に記憶させる処理を含む
ことを特徴とする請求項５記載の仮想計算機システム。
【請求項９】
前記プロセッサへの電力供給を制御する電力制御装置を備え、
前記動作停止装置は、前記プロセッサで実現される仮想計算機が全て停止された場合に、前記プロセッサに、前記プロセッサへの電力供給を停止する旨を示す電力停止信号を前記電力制御装置に送出させる電力停止部を有し、
前記電力制御装置は、前記プロセッサから前記電力停止信号が送出されると、前記プロセッサへの電力供給を停止する
ことを特徴とする請求項２記載の仮想計算機システム。
【請求項１０】
デバイスを利用するプロセッサと、当該プロセッサが利用するプログラムを記憶するメモリとを備え、当該プロセッサが、当該メモリに記憶されるプログラムを実行することで、１以上の仮想計算機と、当該仮想計算機の動作を停止する動作停止装置とを実現する仮想計算機システムを制御する仮想計算機システム制御方法であって、
前記動作停止装置に、前記１以上の仮想計算機のそれぞれに対して、当該仮想計算機を停止する旨を示す停止信号を送出させる停止信号出力ステップと、
前記仮想計算機に、自機が、前記デバイスを利用する処理であり、かつ、実行開始後は完了するまで仮想計算機の動作停止が許可されていない処理であるところの停止不許可処理を実行中の期間に、自仮想計算機の動作停止が許可されていない旨を示す停止不許可信号を、前記停止信号出力ステップによって送出された前記停止信号への応答として出力させる出力ステップと、
前記動作停止装置に、前記動作の停止において、（１）前記停止信号が受信されており、かつ、当該停止信号への応答としての前記停止不許可信号が出力されていない仮想計算機の動作を停止して、（２）前記停止信号が受信されており、かつ、当該停止信号への応答としての前記停止不許可信号が出力されている仮想計算機の動作を停止しないように、仮想計算機の前記動作停止を行わせる停止ステップとを有する
ことを特徴とする仮想計算機システム制御方法。
【請求項１１】
デバイスを利用するプロセッサと、当該プロセッサが利用するプログラムを記憶するメモリとを備え、当該プロセッサが、当該メモリに記憶されるプログラムを実行することで、１以上の仮想計算機と、当該仮想計算機の動作を停止する動作停止装置とを実現する仮想計算機システムに、自システムを制御する仮想計算機システム制御処理を実行させるための仮想計算機システム制御プログラムであって、
前記仮想計算機システム制御処理は、
前記動作停止装置に、前記１以上の仮想計算機のそれぞれに対して、当該仮想計算機を停止する旨を示す停止信号を送出させる停止信号出力ステップと、
前記仮想計算機に、自機が、前記デバイスを利用する処理であり、かつ、実行開始後は完了するまで仮想計算機の動作停止が許可されていない処理であるところの停止不許可処理を実行中の期間に、自仮想計算機の動作停止が許可されていない旨を示す停止不許可信号を、前記停止信号出力ステップによって送出された前記停止信号への応答として出力させる出力ステップと、
前記動作停止装置に、前記動作の停止において、（１）前記停止信号が受信されており、かつ、当該停止信号への応答としての前記停止不許可信号が出力されていない仮想計算機の動作を停止して、（２）前記停止信号が受信されており、かつ、当該停止信号への応答としての前記停止不許可信号が出力されている仮想計算機の動作を停止しないように、仮想計算機の前記動作停止を行わせる停止ステップとを有する
ことを特徴とする仮想計算機システム制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイスを利用する仮想計算機の実行制御を行う仮想計算機システムに関する。
【背景技術】
【０００２】
デバイスを利用する仮想計算機の実行制御を行う仮想計算機システムが知られている。【０００３】
例えば、特許文献１には、仮想計算機の動作を停止しようとする場合において、その仮想計算機がデバイスを利用する処理を実行しているときには、その処理の実行が完了するまで待ってから、その仮想計算機の動作を停止する仮想計算機システムについて記載されている。【０００４】
この仮想計算機システムにおいて、デバイスを利用する処理を実行している仮想計算機は、その処理の実行中に動作が停止されることはない。このため、デバイスを利用する処理の実行中にその処理が停止されてしまうことによって生じる不都合を発生させることなく、安全にその仮想計算機の動作停止を行う。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−４３０９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１記載の仮想計算機システムにおいて、短期間に仮想計算機を動作停止したい場合であっても、その仮想計算機がデバイスを利用する処理を実行していれば、その処理が完了するまでの期間が経過しなければ、その仮想計算機の動作を停止することができない。【０００７】
そこで、本発明は係る問題に鑑みてなされたものであり、デバイスを利用する仮想計算機が存在する仮想計算機システムおいて、その仮想計算機の安全な動作停止を、従来よりも短期間で実現する可能性を高くする仮想計算機システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の一態様である仮想計算機システムは、デバイスを利用するプロセッサと、当該プロセッサが実行すべきプログラムを記憶するメモリとを備え、当該プロセッサが、当該メモリに記憶されるプログラムを実行することで、１以上の仮想計算機と、仮想計算機の動作を停止する動作停止装置とを実現する仮想計算機システムであって、前記１以上の仮想計算機のそれぞれは、前記デバイスを利用する処理であり、かつ、実行開始後は完了するまで仮想計算機の動作停止が許可されていない処理であるところの停止不許可処理を実行中の期間に、自仮想計算機の動作停止が許可されていない旨を示す停止不許可信号を出力する出力部を有し、前記動作停止装置は、前記停止不許可信号が出力されていない仮想計算機の動作を停止して、前記停止不許可信号が出力されている仮想計算機の動作を停止しないように、仮想計算機の前記動作停止を行うことを特徴とする。
【発明の効果】
【０００９】
一般に、仮想計算機がデバイスを利用する処理は、必ずしも、実行完了前に停止されることで不都合が生じてしまう処理であるとは限らない。このため、仮想計算機がデバイスを利用する処理を実行している期間中であっても、その処理が、実行完了前に停止されることで不都合が生じてしまう処理でなければ、その処理の実行が完了するまで待たずにその仮想計算機の動作が停止されたとしても、不都合が生じてしまうことがない。【００１０】
上述の構成を備える本発明の一態様である仮想計算機システムによると、デバイスを利用する処理を実行している仮想計算機であっても、その処理が停止不許可処理でなければ、その仮想計算機は、動作停止装置によって動作停止されることとなる。このことにより、実行完了前に停止されることで不都合が生じてしまう処理に限って、停止不許可処理と扱うことで、この仮想計算機システムは、デバイスを利用する仮想計算機の安全な動作停止を、従来よりも短期間で実現する可能性を高くすることができる。
【図面の簡単な説明】
【００１１】
【図１】仮想計算機システム１００の主要なハードウエア構成を示すブロック図
【図２】プログラムモジュール群２００を模式的に示す模式図
【図３】制御情報３００のデータ構成図
【図４】停止不許可処理情報４００のデータ構成図
【図５】ＶＭ停止要求処理のフローチャート
【図６】応答処理のフローチャート
【図７】利用期間短縮処理のフローチャート
【図８】電力状態変更処理のフローチャート
【図９】デバイス停止処理のフローチャート
【図１０】仮想計算機システム１０００の主要なハードウエア構成を示すブロック図
【図１１】プログラムモジュール群１１００を模式的に示す模式図
【図１２】解消処理情報１２００のデータ構成図
【図１３】第１変形利用期間短縮処理のフローチャート
【図１４】第１変形デバイス停止処理のフローチャート
【図１５】仮想計算機システム１５００の主要なハードウエア構成を示すブロック図
【図１６】プログラムモジュール群１６００を模式的に示す模式図
【図１７】第１変形解消処理情報１７００のデータ構成図
【図１８】第２変形利用期間短縮処理のフローチャート
【図１９】第２変形デバイス停止処理のフローチャート
【図２０】モジュール群２０００を模式的に示す模式図
【図２１】第２変形解消処理情報２１００のデータ構成図
【図２２】第３変形利用期間短縮処理のフローチャート
【図２３】仮想計算機システム２３００の構成を示すブロック図
【発明を実施するための形態】
【００１２】
＜実施の形態１＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、デバイスを利用する処理を行う１以上の仮想計算機の実行制御を行う仮想計算機システムについて説明する。
【００１３】
この仮想計算機システムは、仮想計算機の実行制御を行うハイパーバイザを備える。そして、ハイパーバイザによって実行制御される各仮想計算機は、デバイスを利用する処理のうち、予め定められた、実行が完了するまでに仮想計算機の動作停止が許可されていない停止不許可処理の実行中であるか否かを示す状態フラグを保持する。
【００１４】
ハイパーバイザは、仮想計算機の動作を停止しようと試みる場合において、その仮想計算機の保持する状態フラグが、停止不許可処理の実行中でない旨を示すとき、その仮想計算機の動作を停止する。そして、仮想計算機の動作を停止しようと試みる場合において、その仮想計算機の保持する状態フラグが、停止不許可処理の実行中である旨を示すとき、その仮想計算機の動作を停止せずに、その仮想計算機に、デバイスを利用する期間を短縮させる旨を示す利用期間短縮信号を送出する。
【００１５】
仮想計算機は、ハイパーバイザから利用期間短縮信号を受けると、実行中の停止不許可処理に係るタスクの処理を短期間で終了させるために、それらのタスクを最大の実行優先度で実行する。そして、停止不許可処理が完了すると、ハイパーバイザに、自仮想計算機が動作停止可能状態になった旨を示すＶＭ（Virtual Machine）停止不可解除信号を送出する。
【００１６】
ハイパーバイザは、仮想計算機からＶＭ停止不可解除信号を受けると、その仮想計算機の動作を停止する。
【００１７】
以下、本実施の形態１に係る仮想計算機システムの構成について図面を参照しながら説明する。
【００１８】
＜構成＞
図１は、仮想計算機システム１００の主要なハードウエア構成を示すブロック図である。
【００１９】
同図に示されるように、仮想計算機システム１００は、ハードウエアとしてはコンピュータシステムであり、集積回路１１０と入力装置１５１と出力装置１５２と電力制御装置１６０とクロックジェネレータ１７０とから構成され、第１デバイス１８０と第２デバイス１９０とに接続される。そして、集積回路１１０は、さらに、プロセッサ１２０とメモリ１３０とバス１４０と第１Ｉ／Ｆ（インターフェース）１４１と第２Ｉ／Ｆ１４２と第３Ｉ／Ｆ１４３と第４Ｉ／Ｆ１４４と第５Ｉ／Ｆ１４５とから構成される。
【００２０】
メモリ１３０は、ＲＯＭ（Read Only Memory）とＲＡＭ（Random Access Memory）とフラッシュメモリとから構成され、バス１４０に接続され、プロセッサ１２０の動作を規定するプログラムと、プロセッサ１２０が利用するデータとを記憶する。
【００２１】
バス１４０は、プロセッサ１２０とメモリ１３０と第１Ｉ／Ｆ１４１と第２Ｉ／Ｆ１４２と第３Ｉ／Ｆ１４３と第４Ｉ／Ｆ１４４と第５Ｉ／Ｆ１４５とに接続され、接続される回路間の信号を伝達する機能を有する。
【００２２】
第１Ｉ／Ｆ１４１と第２Ｉ／Ｆ１４２と第３Ｉ／Ｆ１４３と第４Ｉ／Ｆ１４４と第５Ｉ／Ｆ１４５とは、それぞれ、バス１４０と入力装置１５１、バス１４０と出力装置１５２、バス１４０と第１デバイス１８０、バス１４０と第２デバイス１９０、バス１４０と電力制御装置１６０に接続され、それぞれ、接続される回路間の信号のやりとりを仲介する機能を有する。
【００２３】
入力装置１５１は、キーボード、マウス等から構成され、第１Ｉ／Ｆ１４１に接続され、プログラムを実行するプロセッサ１２０によって制御され、仮想計算機システム１００を利用するユーザからの操作コマンドを受け付ける機能を有する。
【００２４】
出力装置１５２は、ディスプレイ等から構成され、第２Ｉ／Ｆ１４２に接続され、プログラムを実行するプロセッサ１２０によって制御され、プロセッサ１２０から送られる信号に基づく、文字列、画像等を表示する機能を有する。
【００２５】
電力制御装置１６０は、第５Ｉ／Ｆ１４５とクロックジェネレータ１７０と第１デバイス１８０と第２デバイス１９０と集積回路１１０とに接続され、プログラムを実行するプロセッサ１２０によって制御され、集積回路１１０を構成する各回路（プロセッサ１２０、メモリ１３０等）に供給する電力を制御する機能と、第１デバイス１８０に供給する電力を制御する機能と、第２デバイス１９０に供給する電力を制御する機能とを有し、下記第１状態と下記第２状態とのいずれか一方の動作状態となる。
【００２６】
第１状態：集積回路１１０を構成する各回路（プロセッサ１２０、メモリ１３０等）に、電位が第１電圧（例えば１．２Ｖ）となる電力を供給し、第１デバイス１８０に、電位が第１デバイス１８０が動作するに適した第２電圧（例えば、３Ｖ）となる電力を供給し、第２デバイス１９０に、電位が第２デバイス１９０が動作するに適した第３電圧（例えば、３Ｖ）となる電力を供給する状態。
【００２７】
第２状態：集積回路１１０を構成する各回路（プロセッサ１２０、メモリ１３０等）と第１デバイス１８０と第２デバイス１９０とに、電力を供給しない状態。
【００２８】
また、電力制御装置１６０は、プロセッサ１２０から、消費電力を抑制する準備が整った旨を示す低電力遷移レディ信号を受けると、自装置の動作状態を第１状態から第２状態へと変化させる。
【００２９】
クロックジェネレータ１７０は、電力制御装置１６０と集積回路１１０とに接続され、（１）電力制御装置１６０の動作状態が第１状態である場合に、動作周波数が第１周波数（集積回路１１０を構成する各回路に、電位が第１電圧となる電力が供給されている場合において、各回路が正常に動作することができる周波数、例えば、１ＧＨｚ）となるクロック信号を生成して、集積回路１１０に供給し、（２）電力制御装置１６０の動作状態が第２状態である場合に、集積回路１１０にクロック信号を供給しない機能を有する。
【００３０】
プロセッサ１２０は、バス１４０に接続され、メモリ１３０に記憶されるプログラムを実行することで、入力装置１５１と出力装置１５２と電力制御装置１６０とクロックジェネレータ１７０と第１デバイス１８０と第２デバイス１９０とを制御して、仮想計算機システム１００を、１以上の仮想計算機を実行制御するコンピュータシステムとして機能させる機能を有する。ここで、プロセッサ１２０は、メモリ１３０に記憶されるプログラムを実行することで、仮想計算機システム１００を制御して、仮想計算機システム１００に、その特徴的な動作である、ＶＭ停止要求処理と応答処理と利用期間短縮処理と電力状態変更処理とデバイス停止処理とを実現させる。これら、ＶＭ停止要求処理と応答処理と利用期間短縮処理と電力状態変更処理とデバイス停止処理とについては、後程、フローチャートを用いて詳細に説明する。
【００３１】
第１デバイス１８０は、第３Ｉ／Ｆ１４３と電力制御装置１６０とに接続され、プログラムを実行するプロセッサ１２０によって制御され、電力制御装置１６０から供給される電力によって動作する、例えば、音声出力デバイスであって、プロセッサ１２０から送られて来る信号に基づく音声を生成して外部に出力する機能を有する。
【００３２】
第２デバイス１９０は、第４Ｉ／Ｆ１４４と電力制御装置１６０とに接続され、プログラムを実行するプロセッサ１２０によって制御され、電力制御装置１６０から供給される電力によって動作する、例えば、外付けハードディスク装置であって、内蔵するハードディスクにデータを書き込む機能と、内蔵するハードディスクからデータを読み出す機能とを備える。
【００３３】
上記ハードウエア構成を備える仮想計算機システム１００について、以下、機能面から見た機能構成について図面を参照しながら説明する。
【００３４】
図２は、プロセッサ１２０上で実行対象となるプログラムモジュール（以下、単に「モジュール」と呼ぶ。）群２００を模式的に示す模式図である。
【００３５】
同図に示されるように、プロセッサ１２０上で実行対象となるプログラムモジュールには、ハイパーバイザ２１０と、ハイパーバイザ２１０によって実行制御される、第１ＯＳ２４０と第２ＯＳ２６０と、第１ＯＳ２４０によって実行制御されるタスクＡ２５６〜タスクＫ２５８と、第２ＯＳ２６０によって実行制御されるタスクＬ２７６〜タスクＺ２７８とが含まれる。ここで、第１ＯＳ２４０は、自ＯＳと、実行制御しているモジュール群とからなるシステムを、第１仮想計算機２２０として機能させ、第２Ｏ２６０Ｓは、自ＯＳと、実行制御しているモジュール群とからなるシステムを、第２仮想計算機２３０として機能させる。
【００３６】
ハイパーバイザ２１０は、実行制御部２１１とＶＭスケジューラ２１２と電力制御部２１３とから構成され、第１ＯＳ２４０と第２ＯＳ２６０との実行制御を行う機能、すなわち、第１仮想計算機２２０と第２仮想計算機２３０との実行制御を行う機能を有する。
【００３７】
第１ＯＳ２４０は、スケジューラ２４１と停止処理制御部２４２と電力イベント受付部２４３と実行制御部２４４と第１デバイスドライバ２５０とから構成され、第１デバイス１８０に接続され、タスクＡ２５６〜タスクＫ２５８を実行制御する機能を有する。そして、第１デバイスドライバ２５０は、デバイス制御部２５１とデバイス状態管理部２５２と状態フラグ保持部２５３と制御情報保持部２５４と停止不許可処理情報保持部２５５とから構成される。
【００３８】
第２ＯＳ２６０は、接続するデバイスが第１デバイス１８０から第２デバイス１９０へと変更されている部分を除けば、第１ＯＳと同等の機能を有する。よってここではその説明を省略する。
【００３９】
ＶＭスケジューラ２１２は、実行制御部２１１と電力制御部２１３とに接続され、ハイパーバイザ２１０の実行制御対象となるＯＳ（ここでは、第１ＯＳ２４０と第２ＯＳ２６０）についてのスケジューリングを行うスケジューリング機能を有する。
【００４０】
実行制御部２１１は、ＶＭスケジューラ２１２に接続され、ＶＭスケジューラ２１２によってなされたスケジューリングに基づいて、実行制御対象となる各ＯＳに、仮想計算機システム１００におけるハードウエア資源を時分割で割り当てて、各ＯＳが互いに独立に動作するよう動的に実行制御する機能を有する。ここで、実行制御部２１１の行うＯＳの動的な実行制御機能には、新たなＯＳの起動（すなわち、新たな仮想計算機の生成）、実行中のＯＳの動作停止（すなわち、実行中の仮想計算機の動作停止）等が含まれる。
【００４１】
電力制御部２１３は、実行制御対象となる各ＯＳ（ここでは、第１ＯＳ２４０と第２ＯＳ２６０）の電力イベント受付部（ここでは、電力イベント受付部２４３と電力イベント受付部２６３）と停止処理制御部（ここでは、停止処理制御部２４２と停止処理制御部２６２）と、電力制御装置１６０とに接続され、以下の５つの機能を有する。
【００４２】
ＶＭ停止指示機能：実行制御対象となるＯＳのうちのいずれかのＯＳ（ここでは、第１ＯＳ２４０又は第２ＯＳ２６０）の電力イベント受付部（ここでは、電力イベント受付部２４３又は電力イベント受付部２６３）から、プロセッサ１２０の消費電力の抑制を要求する旨を示す電力抑制信号を受けると、実行制御対象となる全てのＯＳの停止処理制御部（ここでは、停止処理制御部２４２及び停止処理制御部２６２）に、ＯＳの実行停止（すなわち、仮想計算機の動作停止）準備を指示する旨を示すＶＭ停止指示信号を送出する機能。
【００４３】
第１ＶＭ停止処理機能：一のＯＳの停止処理制御部（ここでは、停止処理制御部２４２又は停止処理制御部２６２）から、ＶＭ停止指示信号に呼応して送出された、仮想計算機を停止する準備が整った旨を示すＶＭ停止レディ信号を受けると、そのＯＳの動作を停止させる旨を示す信号をＶＭスケジューラ２１２に送出する機能。
【００４４】
利用期間短縮信号送出機能：一のＯＳの停止処理制御部（ここでは、停止処理制御部２４２又は停止処理制御部２６２）から、ＶＭ停止指示信号に呼応して送出された、仮想計算機を停止することができない旨を示すＶＭ停止不可信号を受けると、その停止処理制御部に、利用期間短縮信号を送出する機能。
【００４５】
第２ＶＭ停止処理機能：一のＯＳの停止処理制御部（ここでは、停止処理制御部２４２又は停止処理制御部２６２）から、利用期間短縮信号に呼応して送出された、ＶＭ停止不可解除信号を受けると、そのＯＳの動作を停止させる旨を示す信号をＶＭスケジューラ２１２に送出する機能。
【００４６】
低電力遷移レディ信号送出機能：実行制御部２１１が全てのＯＳの実行を停止した場合に、プロセッサ１２０のコンテキストを、メモリ１３０に含まれるフラッシュメモリの所定記憶領域に退避させて、プロセッサ１２０に、低電力遷移レディ信号を電力制御装置１６０へ出力させる機能。
【００４７】
デバイス制御部２５１は、第１デバイス１８０とデバイス状態管理部２５２と停止処理制御部２４２とに接続され、以下の２つの機能を有する。
【００４８】
デバイス制御機能：第１ＯＳ２４０が実行制御するタスクのうちの、第１デバイス１８０を利用する処理を行うタスク（ここでは、タスクＡ２５６〜タスクＫ２５８のいずれか）からの信号に基づいて、第１デバイス１８０を制御する機能。
【００４９】
デバイス停止処理機能：停止処理制御部２４２から、第１デバイス１８０について電源をオフにすることができる状態にする旨のデバイス停止処理信号を受けると、第１デバイス１８０を操作して、第１デバイス１８０を、電源をオフにすることができる状態にするデバイス停止処理を行う機能。
【００５０】
制御情報保持部２５４は、デバイス状態管理部２５２と停止処理制御部２４２とに接続され、制御情報３００を記憶する機能を有する。
【００５１】
図３は、制御情報保持部２５４が記憶する制御情報３００のデータ構成の一例を示すデータ構成図である。
【００５２】
同図に示されるように、制御情報３００は、デバイス制御処理ＩＤ３１０とタスクＩＤ３２０と関連タスクＩＤ３３０が対応付けられて構成される。
【００５３】
デバイス制御処理ＩＤ３１０は、対応するタスクＩＤ３２０によって識別されるタスクが実行中の、第１デバイス１８０を利用する処理を識別する識別子である。
【００５４】
タスクＩＤ３２０は、第１ＯＳ２４０が実行制御するタスク（ここでは、タスクＡ２５６〜タスクＫ２５８）のうちの、第１デバイス１８０を利用する処理を実行中のタスクを識別する識別子である。
【００５５】
関連タスクＩＤ３３０は対応付けられているタスクＩＤ３２０によって識別されるタスクが、対応付けられているデバイス制御処理ＩＤ３１０によって識別される処理を実行する場合において、その処理が完了されるまでの間に実行されることとなるタスクを識別する識別子である。ここで、タスクＩＤ３２０によって識別されるタスクが、対応付けられているデバイス制御処理ＩＤ３１０によって識別される処理を実行する場合に、その処理が完了されるまでの間に実行されることとなるタスクが存在しなければ、このタスクに対応付けられた関連タスクＩＤ３３０はヌル値となる。
【００５６】
図３に示される例によると、タスクＩＤが“１６”となるタスク（タスクＡ２５６）が、第１デバイス１８０を利用する、デバイス処理ＩＤが“００９”となる処理（音源切替処理）を実行中であって、その処理が完了されるまでの間に、関連タスクＩＤが“１７”となるタスク（タスクＢ２５７）が実行されることとなることがわかる。
【００５７】
停止不許可処理情報保持部２５５は、デバイス状態管理部２５２に接続され、停止不許可処理情報４００を記憶する機能を有する。
【００５８】
図４は、停止不許可処理情報保持部２５５が記憶する停止不許可処理情報４００のデータ構成の一例を示すデータ構成図である。
【００５９】
同図に示されるように、停止不許可処理情報４００は、１以上の停止不許可処理ＩＤ４１０から構成される。
【００６０】
停止不許可処理ＩＤ４１０は、第１デバイス１８０を利用する処理のうち、予め定められた、実行が完了するまでに仮想計算機の動作停止が許可されていない停止不許可処理を識別する識別子である。
【００６１】
ここで、停止不許可処理として定められる処理としては、例えば、実行が完了するまでに処理が停止してしまうと、利用するデバイスに物理的なダメージを与えてしまう処理、実行が完了するまでに処理が停止してしまうと、次回実行を開始するときに不整合が生じてしまう処理、実行が完了するまでに処理が停止してしまうと、仮想計算機システム１００を利用するユーザに不快感や違和感を与えてしまう処理等が該当する。一例として、図４中の停止不許可処理ＩＤ４１０が“００９”となる音源切替処理は、その処理の実行中に処理が停止してしまうと、音声出力デバイスである第１デバイス１８０が、ユーザにとって不快な雑音を発生させてしまう可能性があるため、停止不許可処理として定められている。
【００６２】
状態フラグ保持部２５３は、デバイス状態管理部２５２と停止処理制御部２４２とに接続され、状態フラグを記憶する機能を有する。ここで、この状態フラグは、停止不許可処理が実行中である場合に論理値が“１”となり、停止不許可処理が実行中でない場合に論理値が“０”となる１ビットのフラグである。すなわち、実行が完了するまでに仮想計算機の動作停止が許可されていない処理が実行されている場合に論理値が“１”となり、実行が完了するまでに仮想計算機の動作停止が許可されていない処理が実行されていない場合に論理値が“０”となるフラグである。
【００６３】
デバイス状態管理部２５２は、デバイス制御部２５１と状態フラグ保持部２５３と制御情報保持部２５４と停止不許可処理情報保持部２５５とに接続され、以下の４つの機能を有する。
【００６４】
デバイス利用処理管理機能：、第１ＯＳ２４０が実行制御するタスク（ここでは、タスクＡ２５６〜タスクＫ２５８）のいずれかが第１デバイス１８０を利用する処理を実行する場合に、そのタスクから送られて来る、その処理を識別する識別子と、そのタスクを識別する識別子と、その処理が完了されるまでの間に、その処理と関連して実行されることとなるタスクを識別する識別子とを受け取る機能。
【００６５】
制御情報書込機能：第１デバイス１８０を利用するタスクが、停止不許可処理情報保持部２５５が記憶する停止不許可処理情報４００に含まれる停止不許可処理ＩＤ４１０によって識別される停止不許可処理を開始した場合に、その停止不許可処理の識別子をデバイス制御処理ＩＤ３１０とし、そのタスクの識別子をタスクＩＤ３２０とし、その処理が完了するまでの間に、その処理と関連して実行されることとなるタスクの識別子を関連タスクＩＤ３３０として対応付けて制御情報３００を生成し、制御情報保持部２５４に記憶させる機能。
【００６６】
制御情報削除機能：制御情報保持部２５４が制御情報３００を記憶している場合において、その制御情報３００に含まれるデバイス制御処理ＩＤで識別される停止不許可処理が完了したときに、制御情報保持部２５４が記憶する制御情報３００を削除する機能。
【００６７】
状態フラグ更新機能：（１）第１デバイス１８０を利用するタスクが、停止不許可処理情報保持部２５５が記憶する停止不許可処理情報４００に含まれる停止不許可処理ＩＤ４１０によって識別される停止不許可処理を開始した場合に、状態フラグ保持部２５３が記憶する状態フラグを論理値“１”に更新し、（２）第１デバイス１８０を利用するタスクが、停止不許可処理情報保持部２５５が記憶する停止不許可処理情報４００に含まれる停止不許可処理ＩＤ４１０によって識別される停止不許可処理を完了した場合に、状態フラグ保持部２５３が記憶する状態フラグを論理値“０”に更新する機能。
【００６８】
スケジューラ２４１は、実行制御部２４４と停止処理制御部２４２とに接続され、第１ＯＳ２４０の実行制御対象となるタスク（ここでは、タスクＡ２５６〜タスクＫ２５８）についての実行優先順位を管理し、管理する実行優先順位に従ってタスクのスケジューリングを行うスケジューリング機能を有する。
【００６９】
実行制御部２４４は、スケジューラ２４１に接続され、スケジューラ２４１によってなされたスケジューリングに基づいて、各タスクを時分割で実行制御する機能を有する。
【００７０】
電力イベント受付部２４３は、電力制御部２１３に接続され、（１）第１仮想計算機２２０を利用するユーザから、入力装置１５１を通じて、プロセッサ１２０の消費電力を抑制する旨のコマンドが入力された場合と、（２）第１仮想計算機２２０が、所定時間（例えば、１０秒）アイドル状態が続いた場合とに、電力制御部２１３に電力抑制信号を送出する機能を有する。
【００７１】
停止処理制御部２４２は、スケジューラ２４１とデバイス制御部２５１とデバイス状態管理部２５２と状態フラグ保持部２５３と制御情報保持部２５４と電力制御部２１３とに接続され、以下の３つの機能を有する。
【００７２】
応答機能：電力制御部２１３からＶＭ停止指示信号が送られて来た場合に、状態フラグ保持部２５３が保持する状態フラグを調べて、（１）状態フラグが論理値“１”のとき（すなわち、停止不許可処理が実行中であることを示すとき）に、電力制御部２１３にＶＭ停止不可信号を送出し、（２）状態フラグが論理値“０”のとき（すなわち、停止不許可処理が実行中でないことを示すとき）に、デバイス制御部２５１にデバイス停止処理信号を送出し、その後、送出したデバイス停止処理信号に呼応してデバイス制御部２５１が行うデバイス停止処理が完了すると、電力制御部２１３にＶＭ停止レディ信号を出力する機能。
【００７３】
優先順位変更機能：電力制御部２１３から利用期間短縮信号を受けると、制御情報保持部２５４が記憶する制御情報３００（図３参照）を参照して、タスクＩＤ３２０で識別されるタスク（以下、「デバイス利用タスク」と呼ぶ。）と、関連タスクＩＤ３３０で識別されるタスク（以下、「関連タスク」と呼ぶ。）とについて、スケジューラ２４１が管理する実行優先順位を最大の優先順位に変更させる旨を示す優先順位変更信号を、スケジューラ２４１に送出する機能。
【００７４】
ＶＭ停止不可解除機能：優先順位変更信号をスケジューラ２４１に送出した場合において、実行中の停止不許可処理が完了したとき、デバイス制御部２５１にデバイス停止処理信号を送出し、その後、送出したデバイス停止処理信号に呼応してデバイス制御部２５１が行うデバイス停止処理が完了すると、電力制御部２１３にＶＭ停止不可解除信号を出力する機能。
【００７５】
タスクＡ２５６〜タスクＫ２５８は、第１ＯＳ２４０によって実行制御されるタスクである。
【００７６】
これらのタスクは、第１デバイス１８０を利用する処理を実行する場合に、デバイス制御部２５１に第１デバイス１８０を制御させることで実現する。また、これらのタスクは、第１デバイス１８０を利用する処理を開始する場合に、デバイス状態管理部２５２に、その処理を識別する識別子と、自タスクを識別する識別子と、その処理が完了されるまでの間に、その処理と関連して実行されることとなるタスクを識別する識別子とを送出する。
【００７７】
以上のように構成される仮想計算機システム１００の行う動作について、以下図面を参照しながら説明する。
【００７８】
＜動作＞
仮想計算機システム１００は、一の仮想計算機からハイパーバイザ２１０に電力抑制信号が送られて来ると、ＶＭ停止要求処理を開始して、ハイパーバイザ２１０が、各仮想計算機にＶＭ停止信号を送出する。
【００７９】
各仮想計算機は、ＶＭ停止信号が送られて来ると、応答処理を開始して、状態フラグ保持部２５３が保持する状態フラグを参照して、停止不許可処理が実行中でない場合にＶＭ停止レディ信号を返信して、停止不許可処理が実行中である場合にＶＭ停止不許可信号を返信する。
【００８０】
ハイパーバイザ２１０は、そのＶＭ停止要求処理において、ＶＭレディ信号を返信した仮想計算機の動作を停止し、ＶＭ停止不許可信号を返信した仮想計算機の動作を停止せずに、その仮想計算機に利用期間短縮信号を送信する。
【００８１】
利用期間短縮信号を受けた仮想計算機は、利用期間短縮処理を開始して、比較的短い期間で実行中の停止不許可処理を完了させて、ハイパーバイザ２１０に、ＶＭ停止不許可解除信号を返信する。
【００８２】
そして、ＶＭ停止要求処理に引き続いて仮想計算機システム１００の行う電力状態変更処理において、ハイパーバイザ２１０は、ＶＭ停止不許可解除信号を返信した仮想計算機の動作を停止する。そして、全ての仮想計算機の動作を停止すると、プロセッサ１２０に、電力制御装置１６０へ低電力遷移レディ信号を出力させる。
【００８３】
電力制御装置１６０は、低電力遷移レディ信号を受けると、デバイス停止処理を開始して、集積回路１１０と第１デバイス１８０と第２デバイス１９０とへの電力供給を停止する。
【００８４】
以下、上記ＶＭ停止要求処理と応答処理と利用期間短縮処理と電力状態変更処理とデバイス停止処理とについて、フローチャートを用いて詳細に説明する。
【００８５】
＜ＶＭ停止要求処理＞
ＶＭ停止要求処理は、ハイパーバイザ２１０と、ハイパーバイザ２１０によって実行制御されるＯＳ（ここでは、第１ＯＳ２４０と第２ＯＳ２６０）とが主体となって行う処理であって、ハイパーバイザ２１０が、各ＯＳにＶＭ停止信号を送出し、送出したＶＭ停止指示信号に呼応してＶＭ停止レディ信号を送出したＯＳの実行を停止（すなわち、そのＯＳに対応する仮想計算機の動作を停止）し、送出したＶＭ停止指示信号に呼応してＶＭ停止不可信号を送出したＯＳの実行を停止しない（すなわち、そのＯＳに対応する仮想計算機の動作を停止しない）で、そのＯＳに利用期間短縮信号を送出する処理である。
【００８６】
図５は、ＶＭ停止要求処理のフローチャートである。
【００８７】
ＶＭ停止要求処理は、ハイパーバイザ２１０によって実行制御されるＯＳに含まれる電力イベント受付部（ここでは、電力イベント受付部２４３又は電力イベント受付部２６３）が、（１）自部を含む仮想計算機を利用するユーザから、入力装置１５１を通じて、プロセッサ１２０の消費電力を抑制する旨のコマンドが入力される場合、又は（２）自部を含む仮想計算機が、所定時間（例えば、１時間）アイドル状態が続いた場合に開始される。
【００８８】
ＶＭ停止処理が開始されると、電力イベント受付部（ここでは、電力イベント受付部２４３又は電力イベント受付部２６３）は、電力制御部２１３に、電力抑制信号を送出する（ステップＳ５００）。
【００８９】
電力制御部２１３は、送出された電力抑制信号を受けると、全てのＯＳにおける停止処理制御部（ここでは、停止処理制御部２４２及び停止処理制御部２６２）にＶＭ停止指示信号を送出する（ステップＳ５１０）。
【００９０】
ＶＭ停止指示信号を送出すると、電力制御部２１３は、一のＯＳの停止処理制御部（ここでは、停止処理制御部２４２又は停止処理制御部２６２）から、ＶＭ停止指示信号に呼応して送出されたＶＭ停止レディ信号を受けたか否かを調べる（ステップＳ５２０）。
【００９１】
ステップＳ５２０の処理において、ＶＭ停止指示信号に呼応して送出されたＶＭ停止レディ信号を受けていた場合に（ステップＳ５２０：Ｙｅｓ）、電力制御部２１３は、そのＶＭ停止レディ信号を送出したＯＳの実行を停止させる旨を示す信号をＶＭスケジューラ２１２に送出する。すると、ＶＭスケジューラ２１２は、そのＯＳの実行を停止するようにスケジューリングする。そして、実行制御部２１１は、スケジューラ２４１によってなされたスケジューリングに基づいて、そのＯＳによって実現される仮想計算機のコンテキストを、メモリ１３０に含まれるフラッシュメモリの所定記憶領域に退避させて、そのＯＳの実行を停止（すなわち、そのＯＳによって実現される仮想計算機の動作を停止）させる（ステップＳ５３０）。
【００９２】
ステップＳ５３０の処理が終了した場合、又は、ステップＳ５２０の処理において、ＶＭ停止指示信号に呼応して送出されたＶＭ停止レディ信号を受けていなかった場合に（ステップＳ５２０：Ｎｏ）、電力制御部２１３は、一のＯＳの停止処理制御部（ここでは、停止処理制御部２４２又は停止処理制御部２６２）から、ＶＭ停止指示信号に呼応して送出されたＶＭ停止不許可信号を受けたか否かを調べる（ステップＳ５４０）。
【００９３】
ステップＳ５４０の処理において、ＶＭ停止指示信号に呼応して送出されたＶＭ停止不許可信号を受けていた場合に（ステップＳ５４０：Ｙｅｓ）、電力制御部２１３は、そのＶＭ停止不許可信号を送出した停止処理制御部へ、利用期間短縮信号を送出する（ステップＳ５５０）。
【００９４】
ステップＳ５５０の処理が終了した場合、又は、ステップＳ５４０の処理において、ＶＭ停止指示信号に呼応して送出されたＶＭ停止不許可信号を受けていなかった場合に（ステップＳ５４０：Ｎｏ）、電力制御部２１３は、全てのＯＳから、ＶＭ停止レディ信号又はＶＭ停止不許可信号を受信したか否かを調べる（ステップＳ５６０）。
【００９５】
ステップＳ５６０の処理において、全てのＯＳから、ＶＭ停止レディ信号又はＶＭ停止不許可信号を受信していなかった場合に（ステップＳ５６０：Ｎｏ）、仮想計算機システム１００は、ステップＳ５２０の処理に戻って、ステップＳ５２０以下の処理を繰り返す。
【００９６】
ステップＳ５６０の処理において、全てのＯＳから、ＶＭ停止レディ信号又はＶＭ停止不許可信号とのいずれかを受信していた場合に（ステップＳ５６０：Ｙｅｓ）、仮想計算機システム１００は、そのＶＭ停止要求処理を終了する。
【００９７】
＜応答処理＞
応答処理は、ハイパーバイザ２１０によって実行制御されるＯＳ（ここでは、第１ＯＳ２４０と第２ＯＳ２６０）が主体となって行う処理であって、電力制御部２１３からＶＭ停止信号が送られて来た場合に、状態フラグ保持部２５３が保持する状態フラグを参照して、電力制御部２１３に、ＶＭ停止レディ信号とＶＭ停止不許可信号とのうちのいずれかを送出する処理である。
【００９８】
ここでは、ハイパーバイザ２１０によって制御されるＯＳが第１ＯＳ２４０であるとして説明するが、第２ＯＳ２６０であるとしても同様である。
【００９９】
図６は、応答処理のフローチャートである。
【０１００】
応答処理は、停止処理制御部２４２が、電力制御部２１３から送出されたＶＭ停止信号を受けることで開始される。
【０１０１】
応答処理が開始されると、停止処理制御部２４２は、状態フラグ保持部２５３が保持する状態フラグが論理値“１”であるか否か（すなわち、停止不許可処理が実行中であることを示しているか否か）を調べる（ステップＳ６００）。
【０１０２】
ステップＳ６００の処理において、状態フラグ保持部２５３が保持する状態フラグが、停止不許可処理が実行中であることを示している場合に（ステップＳ６００：Ｙｅｓ）、停止処理制御部２４２は、電力制御部２１３にＶＭ停止不可信号を送出する（ステップＳ６１０）。
【０１０３】
ステップＳ６００の処理において、状態フラグ保持部２５３が保持する状態フラグが、停止不許可処理が実行中であることを示していない場合に（ステップＳ６００：Ｎｏ）、停止処理制御部２４２は、デバイス制御部２５１にデバイス停止処理信号を送出する。そして、デバイス制御部２５１は、デバイス停止処理を実行し（ステップＳ６２０）、第１デバイス１８０を、電源をオフにすることができる状態にする。すると、停止処理制御部２４２は、電力制御部２１３にＶＭ停止レディ信号を出力する（ステップＳ６３０）。
【０１０４】
ステップＳ６１０の処理が終了した場合、又は、ステップＳ６３０の処理が終了した場合に、仮想計算機システム１００は、その応答処理を終了する。
【０１０５】
＜利用期間短縮処理＞
利用期間短縮処理は、ハイパーバイザ２１０によって実行制御されるＯＳ（ここでは、第１ＯＳ２４０と第２ＯＳ２６０）が主体となって行う処理であって、電力制御部２１３から利用期間短縮信号を受けた場合に、制御情報保持部２５４が記憶する制御情報３００（図３参照）を参照して、タスクＩＤ３２０で識別されるデバイス利用タスクと、関連タスクＩＤ３３０で識別される関連タスクとについて、実行優先順位を最大の優先順位に変更して実行制御を行う処理である。
【０１０６】
ここでは、ハイパーバイザ２１０によって制御されるＯＳが第１ＯＳ２４０であるとして説明するが、第２ＯＳ２６０であるとしても同様である。
【０１０７】
図７は、利用期間短縮処理のフローチャートである。
【０１０８】
利用期間短縮処理は、停止処理制御部２４２が、電力制御部２１３から送出された利用期間短縮信号を受けることで開始される。
【０１０９】
利用期間短縮処理が開始されると、停止処理制御部２４２は、制御情報保持部２５４が記憶する制御情報３００（図３参照）を参照して、タスクＩＤ３２０で識別されるデバイス利用タスクと、関連タスクＩＤ３３０で識別される関連タスクとについて、スケジューラ２４１が管理する実行優先順位を最大の優先順位に変更させる旨を示す優先順位変更信号を、スケジューラ２４１に送出する。そして、スケジューラ２４１は、それら、デバイス利用タスクと関連タスクとについて、管理する実行優先順位を最大の優先順位に変更して、実行制御対象タスクのスケジューリングを行う（ステップＳ７００）。すると、実行制御部２４４は、スケジューラ２４１によってなされたスケジューリングに基づいて、それら、デバイス利用タスクと関連タスクとを、最大の実行優先順位で実行制御する。
【０１１０】
その後、停止不許可処理が完了すると（ステップＳ７１０：Ｎｏを繰り返した後、ステップＳ７１０：Ｙｅｓ）、デバイス制御部２５１は、デバイス停止処理を実行し（ステップＳ７２０）、第１デバイス１８０を、電源をオフにすることができる状態にする。そして、停止処理制御部２４２は、電力制御部２１３にＶＭ停止不許可解除信号を出力する（ステップＳ７３０）。
【０１１１】
ステップＳ７３０の処理が終了すると、仮想計算機システム１００は、その利用期間短縮処理を終了する。
【０１１２】
＜電力状態変更処理＞
電力状態変更処理は、ＶＭ停止要求処理に引き続いて行われる、ハイパーバイザ２１０が主体となって行う処理であって、プロセッサ１２０を停止するための準備を行う処理である。
【０１１３】
図８は、電力状態変更処理のフローチャートである。
【０１１４】
電力状態変更処理は、先立って行われるＶＭ停止要求処理が終了することで開始される。
【０１１５】
電力状態変更処理が開始されると、電力制御部２１３は、先立て行われたＶＭ停止要求処理において、利用期間短縮信号を送信したＯＳが存在したか否かを調べる（ステップＳ８００）。
【０１１６】
ステップＳ８００の処理において、利用期間短縮信号を送信したＯＳが存在していた場合にステップＳ８００：Ｙｅｓ）、電力制御部２１３は、利用期間短縮信号を送信したＯＳのうちの一のＯＳから送信されたＶＭ停止不可解除信号を受信すると（ステップＳ８１０：Ｎｏを繰り返した後、ステップＳ８１０：Ｙｅｓ）、そのＶＭ停止不可解除信号を送出したＯＳの実行を停止させる旨を示す信号をＶＭスケジューラ２１２に送出する。すると、ＶＭスケジューラ２１２は、そのＯＳの実行を停止するようにスケジューリングする。そして、実行制御部２１１は、スケジューラ２４１によってなされたスケジューリングに基づいて、そのＯＳによって実現される仮想計算機のコンテキストを、メモリ１３０に含まれるフラッシュメモリの所定記憶領域に退避させて、そのＯＳの実行を停止（すなわち、そのＯＳによって実現される仮想計算機の動作を停止）させる（ステップＳ８２０）。
【０１１７】
ステップＳ８２０の処理が終わると、電力制御部２１３は、利用期間短縮信号を送信したＯＳの全てからＶＭ停止不可解除信号を受信しているか否かを調べる（ステップＳ８３０）。
【０１１８】
ステップＳ８３０の処理において、利用期間短縮信号を送信したＯＳの全てからＶＭ停止不可解除信号を受信していない場合に（ステップＳ８３０：Ｎｏ）、電力制御部２１３は、ステップＳ８１０の処理に戻って、ステップＳ８１０以下の処理を繰り返す。
【０１１９】
ステップＳ８３０の処理において、利用期間短縮信号を送信したＯＳの全てからＶＭ停止不可解除信号を受信している場合と（ステップＳ８３０：Ｙｅｓ）、ステップＳ８００の処理において、利用期間短縮信号を送信したＯＳが存在していなかった場合に（ステップＳ８００：Ｎｏ）、電力制御部２１３は、プロセッサ１２０のコンテキストを、メモリ１３０に含まれるフラッシュメモリの所定記憶領域に退避させて（ステップＳ８４０）、プロセッサ１２０に、低電力遷移レディ信号を電力制御装置１６０へ出力させる（ステップＳ８５０）。
【０１２０】
ステップＳ８５０の処理が終了すると、仮想計算機システム１００は、その電力状態変更処理を終了する。
【０１２１】
＜デバイス停止処理＞
デバイス停止処理は、電力制御装置１６０とクロックジェネレータ１７０とが主体となって行う処理であって、プロセッサ１２０と第１デバイス１８０と第２デバイス１９０への電力供給と、プロセッサ１２０へのクロック信号供給とを停止する処理である。
【０１２２】
図９は、デバイス停止処理のフローチャートである。
【０１２３】
デバイス停止処理は、プロセッサ１２０が、動作状態が第１状態となる電力制御装置１６０へ、低電力遷移レディ信号を送信することで開始される。
【０１２４】
デバイス停止処理が開始されると、動作状態が第１状態となる電力制御装置１６０は、プロセッサ１２０から送信された低電力遷移レディ信号を受信する（ステップＳ９００）。すると、電力制御装置１６０は、自装置の動作状態を第１状態から第２状態へと変更する。そして、電力制御装置１６０は、集積回路１１０を構成する各回路（プロセッサ１２０、メモリ１３０等）と第１デバイス１８０と第２デバイス１９０とへの電力供給を停止する（ステップＳ９１０）。
【０１２５】
電力制御装置１６０の動作状態が第２状態へと変更されると、クロックジェネレータは、集積回路１１０へのクロック信号の供給を停止する（ステップＳ９２０）。
【０１２６】
ステップＳ９２０の処理が終了すると、仮想計算機システム１００は、そのデバイス停止処理を終了する。
【０１２７】
＜考察＞
上記構成の仮想計算機システム１００は、実行制御中の仮想計算機の動作を停止しようとする場合において、一の仮想計算機における一のタスクがデバイスを利用する処理を実行しているときであっても、その処理が停止不許可処理でなければ、その仮想計算機の動作を停止する。
【０１２８】
また、仮想計算機システム１００が実行制御中の仮想計算機の動作を停止しようとする場合において、一の仮想計算機における一のタスクがデバイスを利用する停止不許可処理を実行しているときに、その仮想計算機は、そのタスクと、そのタスクに関連して実行されることとなるタスクとを、最大の実行優先度で実行する。そして、このことによって、仮想計算機システム１００は、その仮想計算機の動作停止を比較的短期間に行う。
＜実施の形態２＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態１に係る仮想計算機システム１００の一部を変形した仮想計算機システム１０００について説明する。
【０１２９】
仮想計算機システム１０００は、ネットワークを介して外部のサーバに接続する。そして、仮想計算機システム１０００において実行制御される仮想計算機は、停止不許可処理である、外部のサーバからの応答信号を待つ応答待ち処理を行っている場合において、ハイパーバイザから利用期間短縮信号を受けると、応答待ち処理の終了を待たずとも自仮想計算機を安全に終了できる状態にするために、自仮想計算機システムとネットワークとの接続を終了させるネットワーク切断処理を最大の実行優先度で実行する。そして、このネットワーク切断処理が完了すると、ハイパーバイザにＶＭ停止解除信号を送信する。
【０１３０】
以下、本実施の形態２に係る仮想計算機システム１０００の構成について、図面を参照しながら、実施の形態１に係る仮想計算機システム１００との相違点を中心に説明する。
【０１３１】
＜構成＞
図１０は、仮想計算機システム１０００の主要なハードウエア構成を示すブロックである。
【０１３２】
同図に示されるように、仮想計算機システム１０００は、実施の形態１に係る仮想計算機システム１００から、電力制御装置１６０が電力制御装置１０６０に変更され、通信装置１０８０が追加されるように変形されている。また、集積回路１１０は、ハードウエアとしては、実施の形態１に係る仮想計算機システム１００から変更されていないが、メモリ１３０に記憶されるソフトウエアの一部が変更されている。
【０１３３】
実施の形態１に係る仮想計算機システム１００は、第１デバイス１８０と第２デバイス１９０とに接続される構成の例であった。これに対して、実施の形態２に係る仮想計算機システム１０００は、第１デバイス１８０の代わりに、ネットワーク接続装置１０３０とネットワーク１０４０とを介してサーバ１０５０に接続される構成の例である。
【０１３４】
電力制御装置１０６０は、実施の形態１に係る電力制御装置１６０から、供給する電力の制御対象が、実施の形態１に係る第１デバイス１８０から実施の形態２に係る通信装置１０８０へと変更するように変形されたものであって、第５Ｉ／Ｆ１４５とクロックジェネレータ１７０と通信装置１０８０と第２デバイス１９０と集積回路１１０とに接続される。
【０１３５】
通信装置１０８０は、第３Ｉ／Ｆ１４３と電力制御装置１６０とネットワーク接続装置とに接続され、プログラムを実行するプロセッサ１２０によって制御され、電力制御装置１６０から供給される電力によって動作し、ネットワーク接続装置１０３０と通信する機能と、ネットワーク接続装置１０３０とネットワーク１０４０とを介してサーバ１０５０と通信する機能とを有する。
【０１３６】
ネットワーク接続装置１０３０は、通信装置１０８０とネットワーク１０４０とに接続され、通信装置１０８０から送られて来る信号に基づいて、通信装置１０８０とネットワーク１０４０とを、互いに接続する接続状態と、互いに接続しない切断状態とのいずれかの状態に切り替える機能を有する。
【０１３７】
ネットワーク１０４０は、ネットワーク接続装置１０３０とサーバ１０５０とに接続され、接続される機器間の信号を伝達する機能を有する。
【０１３８】
サーバ１０５０は、ネットワーク１０４０に接続され、ネットワーク接続装置１０３０とネットワーク１０４０とを介して仮想計算機システム１０００と通信する機能と、仮想計算機システム１０００から依頼された処理を実行する機能と、仮想計算機システム１０００から依頼された処理を完了すると、仮想計算機システム１０００に、依頼された処理が完了した旨の応答信号を送信する機能と、ネットワーク接続装置１０３０を介して、ネットワーク１０４０と通信装置１０８０とが接続状態にあるか否かを認識する機能とを有する。
【０１３９】
このサーバ１０５０は、仮想計算機システム１０００に応答信号を送信した場合において、ネットワーク１０４０と通信装置１０８０とが接続状態にあると認識しているとき、仮想計算機システム１０００から、その応答信号を受信した旨の返信信号を所定期間（例えば、１秒）以内に受信しなければ、応答信号を送信してから所定時間以内に返信信号を受信するまで、繰り返し応答信号を送信する。
【０１４０】
上記ハードウエア構成を備える仮想計算機システム１０００について、以下、機能面から見た機能構成について図面を参照しながら説明する。
【０１４１】
図１１は、プロセッサ１２０上で実行対象となるモジュール群１１００を模式的に示す模式図である。
【０１４２】
同図に示されるように、モジュール群１１００は、実施の形態１に係るモジュール群２００から、停止処理制御部２４２が停止処理制御部１１４２に変更され、解消処理情報保持部１１５６が追加されるように変形されている。そして、これらの変更、追加に伴って、第１デバイスドライバ２５０が第１デバイスドライバ１１５０に変形され、第１ＯＳ２４０が第１ＯＳ１１４０に変形され、第１仮想計算機２２０が第１仮想計算機１１２０に変形されている。
【０１４３】
解消処理情報保持部１１５６は、デバイス状態管理部２５２に接続され、解消処理情報１２００を記憶する機能を有する。
【０１４４】
図１２は、解消処理情報保持部１１５６が記憶する解消処理情報１２００のデータ構成の一例を示すデータ構成図である。
【０１４５】
同図に示されるように、解消処理情報１２００は、停止不許可処理ＩＤ１２１０と解消処理ＩＤ１２２０とが対応付けられて構成される。
【０１４６】
停止不許可処理ＩＤ１２１０は、停止不許可処理情報保持部２５５が記憶する停止不許可処理情報４００（図４参照）に含まれる停止不許可処理ＩＤ４１０で識別される停止不許可処理のうちの、予め解消処理（後述）に対応付けられている停止不許可処理を識別する識別子である。この例では、停止不許可処理ＩＤ１２１０によって識別される停止不許可処理が、サーバからの応答待ち処理となっている。ここで、サーバからの応答待ち処理とは、仮想計算機システム１０００がサーバ１０５０に処理の実行を依頼した場合において仮想計算機システム１０００が行う処理であって、サーバ１０５０から、その依頼した処理が完了した旨の応答信号が送信されて来るのを待ち、応答信号が送信されて来たら、サーバ１０５０に返信信号を送信する処理である。サーバ１０５０は、応答信号を送信した場合において、ネットワーク１０４０と通信装置１０８０とが接続状態にあると認識しているとき、その応答信号に呼応して送信される返信信号を受信するまで、応答信号の再送信を繰り返す。従って、サーバ１０５０が、ネットワーク１０４０と通信装置１０８０とが接続状態にあると認識している場合において、仮想計算機システム１０００におけるサーバからの応答待ち処理が完了する前に仮想計算機１１２０の動作が停止してしまうと、サーバ１０５０が返信信号を受信することが無くなってしまうため、サーバ１０５０が応答信号の再送信を繰り返してしまうこととなり、（１）サーバ１０５０とネットワーク１０４０とに、不要な負荷がかかってしまうという不都合な状態、（２）サーバ１０５０からの通信により仮想計算機システム１０００が不要な起床をしてしまうという不都合な状態等が発生してしまう。
【０１４７】
解消処理ＩＤ１２２０は、対応する停止不許可処理ＩＤ１２１０によって識別される停止不許可処理が実行中の場合において、その停止不許可処理の終了を待たずとも、自仮想計算機（ここでは第１仮想計算機１１２０）を安全に終了することができる状態にするための、その停止不許可処理に対応付けられて予め定められた処理を識別する識別子である。この例では、解消処理ＩＤ１２２０によって識別される解消処理は、ネットワーク切断処理となっている。ここで、ネットワーク切断処理とは、ネットワーク接続装置１０３０を制御して、通信装置１０８０とネットワーク１０４０とを、接続状態から切断状態へと切り替える処理である。仮想計算機システム１０００の行うサーバからの応答待ち処理が完了していない場合において、仮想計算機システム１０００がネットワーク切断処理を実行して、通信装置１０８０とネットワーク１０４０とを切断状態とするとき、サーバ１０５０は、通信装置１０８０とネットワーク１０４０とが接続状態でないことを認識するため、仮想計算機システム１０００から依頼された処理が完了したときに、応答信号の送信を繰り返し行うことがない。
【０１４８】
停止処理制御部１１４２は、実施の形態１に係る停止処理制御部２４２から、その一部が変形されたモジュールであり、スケジューラ２４１とデバイス制御部２５１とデバイス状態管理部２５２と状態フラグ保持部２５３と制御情報保持部２５４と解消処理情報保持部１１５６と電力制御部２１３とに接続され、実施の形態１に係る停止処理制御部２４２の有する応答機能に加えて、以下の２つの機能を有する。
【０１４９】
第１変形優先順位変更機能：電力制御部２１３から利用期間短縮信号を受けた場合に、制御情報保持部２５４が記憶する制御情報３００（図３参照）と解消処理情報保持部１１５６が記憶する解消処理情報１２００（図１２参照）とを参照して、（１）タスクＩＤ３２０が、停止不許可処理ＩＤ１２１０と一致するとき（すなわち、タスクＩＤ３２０で識別されるデバイス制御処理が、サーバからの応答待ち処理であるとき）に、解消処理ＩＤ１２２０で識別される解消処理（すなわち、ネットワーク切断処理）を、最大の実行優先順位で実行させる旨を示す解消処理実行信号をスケジューラ２４１に送出し、（２）タスクＩＤ３２０が、停止不許可処理ＩＤ１２１０と一致しないとき（すなわち、タスクＩＤ３２０で識別されるデバイス制御処理が、サーバからの応答待ち処理でないとき）に、タスクＩＤ３２０で識別されるデバイス利用タスクと、関連タスクＩＤ３３０で識別される関連タスクとについて、スケジューラ２４１が管理する実行優先順位を最大の優先順位に変更させる旨を示す優先順位変更信号を、スケジューラ２４１に送出する機能。
【０１５０】
変形ＶＭ停止不可解除機能：（１）解消処理実行信号をスケジューラ２４１に送出した場合において、解消処理の実行が完了したとき、又は、（２）優先順位変更信号をスケジューラ２４１に送出した場合において、実行中の停止不許可処理が完了したとき、デバイス制御部２５１にデバイス停止処理信号を送出し、その後、送出したデバイス停止処理信号に呼応してデバイス制御部２５１が行うデバイス停止処理が完了すると、電力制御部２１３にＶＭ停止不可解除信号を出力する機能。
【０１５１】
以上のように構成される仮想計算機システム１０００の行う動作について、以下図面を参照しながら説明する。
【０１５２】
＜動作＞
仮想計算機システム１０００は、その特徴的な動作として、実施の形態１に係るＶＭ停止要求処理と応答処理と電力状態変更処理とに加えて、第１変形利用期間短縮処理と第１変形デバイス停止処理とを実行する。ここでは、これら第１変形利用期間短縮処理と、第１変形デバイス停止処理とについて説明する。
【０１５３】
＜第１変形利用期間短縮処理＞
第１変形利用期間短縮処理は、実施の形態１に係る利用期間短縮処理から、その一部が変形された処理である。この第１変形利用期間短縮処理は、第１ＯＳ１１４０が主体となって行う処理であって、電力制御部２１３から利用期間短縮処理を受けた場合に、制御情報保持部２５４が記憶する制御情報３００（図３参照）と、解消処理情報保持部１１５６が記憶する解消処理情報１２００（図１２参照）とを参照して、実行中の停止不許可処理が、（１）停止不許可処理ＩＤ１２１０によって識別される処理であるときには、その停止不許可処理に対応付けられた解消処理を最大の実行優先順位で実行するように実行制御を行い、（２）停止不許可処理ＩＤ１２１０によって識別される処理でないときには、タスクＩＤ３２０で識別されるデバイス利用タスクと、関連タスクＩＤ３３０で識別される関連タスクとについて、実行優先順位を最大の優先順位に変更して実行制御を行う処理である。
【０１５４】
図１３は、第１変形利用期間短縮処理のフローチャートである。
【０１５５】
ステップＳ１３３０〜ステップＳ１３６０の処理は、それぞれ、実施の形態１に係る利用期間短縮処理（図７参照）のおける、ステップＳ７００〜ステップＳ７３０の処理のそれぞれと同等の処理である。よってここでは、これらの処理についての説明を省略し、これらの処理以外の処理を中心に説明する。
【０１５６】
第１変形利用期間短縮処理は、停止処理制御部１１４２が、電力制御部２１３から送出された利用期間短縮信号を受けることで開始される。
【０１５７】
第１変形利用期間短縮処理が開始されると、停止処理制御部１１４２は、制御情報保持部２５４が記憶する制御情報３００（図３参照）と解消処理情報保持部１１５６が記憶する解消処理情報１２００（図１２参照）とを参照して、タスクＩＤ３２０が、停止不許可処理ＩＤ１２１０と一致するか否か（すなわち、タスクＩＤ３２０で識別されるデバイス制御処理が、サーバからの応答待ち処理であるか否か）を調べる（ステップＳ１３００）。
【０１５８】
ステップＳ１３００の処理において、サーバからの応答待ち処理である場合に（ステップＳ１３００：Ｙｅｓ）、停止処理制御部１１４２は、解消処理ＩＤ１２２０で識別される解消処理（すなわち、ネットワーク切断処理）を、最大の実行優先順位で実行させる旨を示す解消処理実行信号をスケジューラ２４１に送出する。そして、スケジューラ２４１は、ネットワーク切断処理が最大の実行優先順位となるように、実行制御対象タスクのスケジューリングを行う。すると、実行制御部２４４は、スケジューラ２４１によってなされたスケジューリングに基づいて、そのネットワーク切断処理を最大の実行優先順位で実行制御する（ステップＳ１３１０）。
【０１５９】
ステップＳ１３００の処理において、サーバからの応答待ち処理でない場合に（ステップＳ１３００：Ｎｏ）、仮想計算機システム１０００は、ステップＳ１３３０の処理〜ステップＳ１３４０の処理を行う。
【０１６０】
ステップＳ１３１０の処理が終了した後、ネットワーク切断処理が完了した場合と（ステップＳ１３２０：Ｎｏを繰り返した後、ステップＳ１３２０：Ｙｅｓ）、ステップＳ１３４０の処理において、停止不許可処理が完了した場合（ステップＳ１３４０：Ｙｅｓ）とに、仮想計算機システム１０００は、ステップＳ１３５０〜ステップＳ１３６０の処理を行う。
【０１６１】
ステップＳ１３６０の処理が終了すると、仮想計算機システム１０００は、その第１変形期間短縮処理を終了する。
【０１６２】
＜第１変形デバイス停止処理＞
第１変形デバイス停止処理は、実施の形態１に係るデバイス停止処理から、その一部が変形された処理である。この第１変形デバイス停止処理は、電力制御装置１０６０とクロックジェネレータ１７０とが主体となって行う処理であって、プロセッサ１２０と通信装置１０８０と第２デバイス１９０への電力供給と、プロセッサ１２０へのクロック信号供給とを停止する処理である。
【０１６３】
図１４は、第１変形デバイス停止処理のフローチャートである。
【０１６４】
ステップＳ１４００の処理とステップＳ１４２０の処理とは、それぞれ、実施の形態１に係るデバイス停止処理（図９参照）における、ステップＳ９００の処理とステップＳ９２０の処理とのそれぞれと同等の処理である。よってここでは、これらの処理についての説明を省略し、これらの処理以外の処理を中心に説明する。
【０１６５】
第１変形デバイス停止処理は、プロセッサ１２０が、動作状態が第１状態となる電力制御装置１０６０へ、低電力遷移レディ信号を送信することで開始される。
【０１６６】
第１変形デバイス停止処理が開始されると、仮想計算機システム１０００は、ステップＳ１４００の処理を開始する。
【０１６７】
ステップＳ１４００の処理が終了すると、電力制御装置１０６０は、集積回路１１０を構成する各回路（プロセッサ１２０、メモリ１３０等）と通信装置１０８０と第２デバイス１９０とへの電力供給を停止する（ステップＳ１４１０）。
【０１６８】
ステップＳ１４１０の処理が終了すると、仮想計算機システム１０００は、ステップＳ１４２０の処理を行う。
【０１６９】
ステップＳ１４２０の処理が終了すると、仮想計算機システム１０００は、その第１変形デバイス停止処理を終了する。
【０１７０】
＜考察＞
上記構成の仮想計算機システム１０００によれば、仮想計算機システム１０００が、実行制御中の仮想計算機の動作を停止しようとする場合において、一の仮想計算機における一のタスクが、サーバからの応答待ち処理を行っているときに、その仮想計算機は、そのサーバからの応答待ち処理が終了していなくても、自機の動作停止を可能とする状態とするためのネットワーク切断処理を最大の実行優先度で行う。そして、このことによって、仮想計算機システム１０００は、その仮想計算機の動作停止を比較的短期間に行う。
＜実施の形態３＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態１に係る仮想計算機システム１００の一部を変形した仮想計算機システム１５００について説明する。
【０１７１】
実施の形態１に係る仮想計算機システム１００は、第１デバイス１８０と第２デバイス１９０とに接続される構成の例であった。これに対して、実施の形態３に係る仮想計算機システム１５００は、第１デバイス１８０に代えて、ストレージデバイス１５８０に接続される構成の例となっている。
【０１７２】
この仮想計算機システム１５００は、実行制御される仮想計算機が、ストレージデバイス１５８０に対して、ファイルシステム管理情報の更新を含むデータの書き込みを行う処理を行っている場合において、ファイルシステム管理情報の更新が完了していないとき、ハイパーバイザから利用期間短縮信号を受けると、このデータ書込処理の終了を待たずとも自仮想計算機を安全に終了することができる状態にするために、ファイルシステム管理情報の更新のみを行うリカバリ処理を最大の実行優先度で実行する。そして、このリカバリ処理が完了すると、ハイパーバイザにＶＭ停止解除信号を送信する。
【０１７３】
以下、本実施の形態３に係る仮想計算機システム１５００の構成について、図面を参照しながら、実施の形態１に係る仮想計算機システム１００との相違点を中心に説明する。
【０１７４】
＜構成＞
図１５は、仮想計算機システム１５００の主要なハードウエア構成を示すブロックである。
【０１７５】
同図に示されるように、仮想計算機システム１５００は、実施の形態１に係る仮想計算機システム１００から、電力制御装置１６０が電力制御装置１５６０に変更されるように変形されている。また、集積回路１１０は、ハードウエアとしては、実施の形態１に係る仮想計算機システム１００から変更されていないが、メモリ１３０に記憶されるソフトウエアの一部が変更されている。
【０１７６】
実施の形態１に係る仮想計算機システム１００は、第１デバイス１８０と第２デバイス１９０とに接続される構成の例であった。これに対して、実施の形態３に係る仮想計算機システム１５００は、実施の形態１に係る第１デバイス１８０の代わりに、実施の形態３に係るストレージデバイス１５８０に接続される構成の例である。
【０１７７】
電力制御装置１５６０は、実施の形態１に係る電力制御装置１６０から、供給する電力の制御対象を、第１デバイス１８０からストレージデバイス１５８０へと変更するように変形されたものであって、第５Ｉ／Ｆ１４５とクロックジェネレータ１７０と通信装置１０８０と第２デバイス１９０と集積回路１１０とに接続される。
【０１７８】
ストレージデバイス１５８０は、第３Ｉ／Ｆ１４３と電力制御装置１６０とに接続され、プログラムを実行するプロセッサ１２０によって制御され、電力制御装置１６０から供給される電力によって動作する、例えば、メモリカードリーダライタであって、内挿される不揮発性メモリカードからデータを読み出す機能と、内挿される不揮発性メモリカードにデータを書き込む機能とを備える。
【０１７９】
上記ハードウエア構成を備える仮想計算機システム１５００について、以下、機能面から見た機能構成について図面を参照しながら説明する。
【０１８０】
図１６は、プロセッサ１２０上で実行対象となるモジュール群１６００を模式的に示す模式図である。
【０１８１】
同図に示されるように、モジュール群１６００は、実施の形態１に係るモジュール群２００から、停止処理制御部２４２が停止処理制御部１６４２に変更され、解消処理情報保持部１６５６が追加されるように変形されている。そして、これらの変更、追加に伴って、第１デバイスドライバ２５０が第１デバイスドライバ１６５０に変形され、第１ＯＳ２４０が第１ＯＳ１６４０に変形され、第１仮想計算機２２０が第１仮想計算機１６２０に変形されている。
【０１８２】
解消処理情報保持部１６５６は、デバイス状態管理部２５２に接続され、第１変形解消処理情報１７００を記憶する機能を有する。
【０１８３】
図１７は、解消処理情報保持部１６５６が記憶する第１変形解消処理情報１７００のデータ構成の一例を示すデータ構成図である。
【０１８４】
同図に示されるように、第１変形解消処理情報１７００は、停止不許可処理ＩＤ１７１０と解消処理ＩＤ１７２０とが対応付けられて構成される。
【０１８５】
停止不許可処理ＩＤ１７１０は、停止不許可処理情報保持部２５５が記憶する停止不許可処理情報４００（図４参照）に含まれる停止不許可処理ＩＤ４１０で識別される停止不許可処理のうちの、予め解消処理に対応付けられている停止不許可処理を識別する識別子である。この例では、停止不許可処理ＩＤ１７１０によって識別される停止不許可処理が、ファイルシステム管理情報の更新を含むデータ書込処理となっている。ここで、ファイルシステム管理情報の更新を含むデータ書込処理とは、ストレージデバイス１５８０に内蔵される不揮発性メモリカードに、ファイルシステム管理情報の更新を含むデータの書き込みを行う処理である。仮想計算機システム１５００は、ファイルシステム管理情報の更新を含むデータ書込処理を実行している期間において、未だファイルシステム管理情報の更新が完了していないときに、そのファイルシステム管理情報の更新を含むデータ書込処理を中断して終了してしまうと、ファイルシステム管理情報の更新が正しく行われていないことが起こってしまう可能性がある。そして、このようなことが起こってしまうと、その後、その不揮発性メモリカードが記憶する全てのデータについて、そのデータが、そのファイルシステム管理情報の更新を含むデータ書込処理の対象となっているデータ以外のデータであったとしても、ストレージデバイス１５８０に内蔵される不揮発性メモリカードから、正しくデータの読み出しができなくなってしまうという不都合な状況が発生してしまう。
【０１８６】
解消処理ＩＤ１７２０は、対応する停止不許可処理ＩＤ１７１０によって識別される停止不許可処理が実行中の場合において、その停止不許可処理の終了を待たずとも、自仮想計算機（ここでは第１仮想計算機１６２０）を安全に終了することができる状態にするための、その停止不許可処理に対応付けられて予め定められた処理を識別する識別子である。この例では、解消処理ＩＤ１７２０によって識別される解消処理は、リカバリ処理となっている。ここで、リカバリ処理とは、対応付けられているファイルシステム管理情報の更新を含むデータ書込処理のうちの、ファイルシステム管理情報の更新処理のみからなる処理である。仮想計算機システム１５００は、実行中のファイルシステム管理情報の更新を含むデータ書込処理の実行が完了しない場合において、未だファイルシステム管理情報の更新が完了していないときに、このリカバリ処理を実行することで、少なくともファイルシステム管理情報の更新を実行することができる。よって、ファイルシステム管理情報の更新を含むデータ書込処理が完了していなくても、リカバリ処理が完了していれば、その不揮発性メモリカードが記憶する全てのデータのうち、そのファイルシステム管理情報の更新を含むデータ書込処理の対象となっているデータ以外のデータについての、正しくデータの読み出しができなくなってしまうという不都合な状況が発生しない。
【０１８７】
停止処理制御部１６４２は、実施の形態１に係る停止処理制御部２４２から、その一部が変形されたモジュールであり、スケジューラ２４１とデバイス制御部２５１とデバイス状態管理部２５２と状態フラグ保持部２５３と制御情報保持部２５４と解消処理情報保持部１６５６と電力制御部２１３とに接続され、実施の形態１に係る停止処理制御部２４２の有する応答機能と、実施の形態２に係る停止処理制御部１１４２の有する変形ＶＭ停止不可解除機能とに加えて、以下の第１変形優先順位変更機能を有する。
【０１８８】
第１変形優先順位変更機能：電力制御部２１３から利用期間短縮信号を受けた場合に、制御情報保持部２５４が記憶する制御情報３００（図３参照）と解消処理情報保持部１６５６が記憶する第１変形解消処理情報１７００（図１７参照）とを参照して、（１）タスクＩＤ３２０が、停止不許可処理ＩＤ１７１０と一致するとき（すなわち、タスクＩＤ３２０で識別されるデバイス制御処理が、ファイルシステム管理情報の更新を含むデータ書込処理であるとき）において、ファイルシステム管理情報の更新が完了していなければ、停止不許可処理ＩＤ１７１０で識別される停止不許可処理を停止した上で、解消処理ＩＤ１７２０で識別される解消処理（すなわち、リカバリ処理）を最大の実行優先順位で実行させる旨を示す解消処理実行信号をスケジューラ２４１に送出し、（２）タスクＩＤ３２０が、停止不許可処理ＩＤ１７１０と一致しないとき（すなわち、タスクＩＤ３２０で識別されるデバイス制御処理が、ファイルシステム管理情報の更新を含むデータ書込処理でないとき）に、タスクＩＤ３２０で識別されるデバイス利用タスクと、関連タスクＩＤ３３０で識別される関連タスクとについて、スケジューラ２４１が管理する実行優先順位を最大の優先順位に変更させる旨を示す優先順位変更信号を、スケジューラ２４１に送出する機能。
【０１８９】
以上のように構成される仮想計算機システム１５００の行う動作について、以下図面を参照しながら説明する。
【０１９０】
＜動作＞
仮想計算機システム１５００は、その特徴的な動作として、実施の形態１に係るＶＭ停止要求処理と応答処理と電力状態変更処理とに加えて、第２変形利用期間短縮処理と第２変形デバイス停止処理とを実行する。ここでは、これら第２変形利用期間短縮処理と、第２変形デバイス停止処理とについて説明する。
【０１９１】
＜第２変形利用期間短縮処理＞
第２変形利用期間短縮処理は、実施の形態１に係る利用期間短縮処理から、その一部が変形された処理である。この第２変形利用期間短縮処理は、第１ＯＳ１６４０が主体となって行う処理であって、電力制御部２１３から利用期間短縮処理を受けた場合に、制御情報保持部２５４が記憶する制御情報３００（図３参照）と、解消処理情報保持部１１５６が記憶する解消処理情報１２００（図１２参照）とを参照して、実行中の停止不許可処理が、（１）タスクＩＤ３２０が、停止不許可処理ＩＤ１７１０と一致するときにおいて、ファイルシステム管理情報の更新が完了していなければ、停止不許可処理ＩＤ１７１０で識別される停止不許可処理が停止され、解消処理ＩＤ１７２０で識別される解消処理が最大の実行優先順位で実行されるように実行制御を行い、（２）タスクＩＤ３２０が、停止不許可処理ＩＤ１７１０と一致しないときに、タスクＩＤ３２０で識別されるデバイス利用タスクと、関連タスクＩＤ３３０で識別される関連タスクとについて、実行優先順位を最大の優先順位に変更して実行制御を行う処理である。
【０１９２】
図１８は、第２変形利用期間短縮処理のフローチャートである。
【０１９３】
ステップＳ１８５０〜ステップＳ１８８０の処理は、実施の形態１に係る利用期間短縮処理（図７参照）における、ステップＳ７００〜ステップＳ７３０の処理のそれぞれと同等の処理である。よってここでは、これらの処理についての説明を省略し、これらの処理以外の処理を中心に説明する。
【０１９４】
第２変形利用期間短縮処理は、停止処理制御部１６４２が、電力制御部２１３から送出された利用期間短縮信号を受けることで開始される。
【０１９５】
第２変形利用期間短縮処理が開始されると、停止処理制御部１６４２は、制御情報保持部２５４が記憶する制御情報３００（図３参照）と解消処理情報保持部１６５６が記憶する第１変形解消処理情報１７００（図１７参照）とを参照して、タスクＩＤ３２０が、停止不許可処理ＩＤ１２１０と一致するか否か（すなわち、タスクＩＤ３２０で識別されるデバイス制御処理が、ファイルシステム管理情報の更新を含むデータ書込処理であるか否か）を調べる（ステップＳ１８００）。
【０１９６】
ステップＳ１８００の処理において、ファイルシステム管理情報の更新を含むデータ書込処理である場合に（ステップＳ１８００：Ｙｅｓ）、停止処理制御部１６４２は、その処理において、ファイルシステム管理情報の更新が完了しているか否かを調べる（ステップＳ１８１０）。
【０１９７】
ステップＳ１８１０の処理において、ファイルシステム管理情報の更新が完了していない場合に（ステップＳ１８１０：Ｎｏ）、停止処理制御部１６４２は、停止不許可処理ＩＤ１７１０で識別されるファイルシステムの更新を含むデータ書込処理を停止した上で、解消処理ＩＤ１７２０で識別されるリカバリ処理を最大の実行優先順位で実行させる旨を示す解消処理実行信号をスケジューラ２４１に送出する。そして、スケジューラ２４１は、ファイルシステムの更新を含むデータ書込処理が停止された上で、リカバリ処理が最大の優先順位となるように、実行制御対象タスクのスケジューリングを行う。すると、実行制御部２４４は、スケジューラ２４１によってなされたスケジューリングに基づいて、ファイルシステムの更新を含むデータ書込処理を停止して（ステップＳ１８２０）、リカバリ処理を最大の実行優先順位で実行制御する（ステップＳ１８３０）。
【０１９８】
ステップＳ１８００の処理において、ファイルシステム管理情報の更新を含むデータ書込処理でない場合に（ステップＳ１８００：Ｎｏ）、仮想計算機システム１５００は、ステップＳ１８５０の処理〜ステップＳ１８６０の処理を行う。
【０１９９】
ステップＳ１８１０の処理において、ファイルシステム管理情報の更新が完了している場合と（ステップＳ１８１０：Ｙｅｓ）、ステップＳ１８３０の処理が終了した後、リカバリ処理が完了した場合と（ステップＳ１８４０：Ｎｏを繰り返した後、ステップＳ１８４０：Ｙｅｓ）、ステップＳ１８６０の処理において、停止不許可処理が完了した場合（ステップＳ１８６０：Ｙｅｓ）とに、仮想計算機システム１５００は、ステップＳ１８７０〜ステップＳ１８８０の処理を行う。
【０２００】
ステップＳ１８８０の処理が終了すると、仮想計算機システム１５００は、その第２変形期間短縮処理を終了する。
【０２０１】
＜第２変形デバイス停止処理＞
第２変形デバイス停止処理は、実施の形態１に係るデバイス停止処理から、その一部が変形された処理である。この第２変形デバイス停止処理は、電力制御装置１５６０とクロックジェネレータ１７０とが主体となって行う処理であって、プロセッサ１２０とストレージデバイス１５８０と第２デバイス１９０への電力供給と、プロセッサ１２０へのクロック信号供給とを停止する処理である。
【０２０２】
図１９は、第２変形デバイス停止処理のフローチャートである。
【０２０３】
ステップＳ１９００の処理とステップＳ１９２０の処理とは、それぞれ、実施の形態１に係るデバイス停止処理（図９参照）における、ステップＳ９００の処理とステップＳ９２０の処理とのそれぞれと同等の処理である。よってここでは、これらの処理についての説明を省略し、これらの処理以外の処理を中心に説明する。
【０２０４】
第２変形デバイス停止処理は、プロセッサ１２０が、動作状態が第１状態となる電力制御装置１５６０へ、低電力遷移レディ信号を送信することで開始される。
【０２０５】
第２変形デバイス停止処理が開始されると、仮想計算機システム１５００は、ステップＳ１９００の処理を開始する。
【０２０６】
ステップＳ１９００の処理が終了すると、電力制御装置１５６０は、集積回路１１０を構成する各回路（プロセッサ１２０、メモリ１３０等）とストレージデバイス１５８０と第２デバイス１９０とへの電力供給を停止する（ステップＳ１９１０）。
【０２０７】
ステップＳ１９１０の処理が終了すると、仮想計算機システム１５００は、ステップＳ１９２０の処理を行う。
【０２０８】
ステップＳ１９２０の処理が終了すると、仮想計算機システム１５００は、その第２変形デバイス停止処理を終了する。
【０２０９】
＜考察＞
上記構成の仮想計算機システム１５００によれば、仮想計算機システム１５００が、実行制御中の仮想計算機の動作を停止しようとする場合において、一の仮想計算機における一のタスクが、ファイルシステム管理情報の更新を含むデータ書込処理を行っているときに、その仮想計算機は、そのファイルシステム管理情報の更新を含むデータ書込処理が終了していなくても、自機の動作停止を可能とする状態とするためのリカバリ処理を最大の実行優先度で行う。そして、このことによって、仮想計算機システム１５００は、その仮想計算機の動作停止を比較的短期間に行う。
＜実施の形態４＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態３に係る仮想計算機システム１５００の一部を変形した変形仮想計算機システムについて説明する。
【０２１０】
変形仮想計算機システムは、実施の形態３に係る仮想計算機システム１５００と、そのハードウエア構成は同一であるが、メモリ１３０に記憶されるソフトウエアの一部が変更されている。そして、このために、変形仮想計算機システムによって実現される機能のうちの一部は、仮想計算機システム１５００によって実現される機能から変形されている。
【０２１１】
この変形仮想計算機システムは、実行制御される仮想計算機が、ストレージデバイス１５８０に対して、ファイルシステムの管理情報の更新を含まないデータの書き込み処理（以下この処理を、単に「データ書込処理」と呼ぶ。）を行っている場合において、ハイパーバイザから利用期間短縮信号を受けると、その信号を受けた時点でデータ書込処理を停止し、代わりに、ストレージデバイス１５８０に内挿される不揮発性メモリカードに書き込まれたデータの状態を、メモリ１３０に含まれるフラッシュメモリの所定記憶領域に記録するストレージ状態記録処理を最大の実行優先度で実行する。そして、このストレージ状態記録処理が完了すると、ハイパーバイザにＶＭ停止解除信号を送信する。
【０２１２】
以下、機能面から見た機能構成について図面を参照しながら説明する。
【０２１３】
図２０は、プロセッサ１２０上で実行対象となるモジュール群２０００を模式的に示す模式図である。
【０２１４】
同図に示されるように、モジュール群２０００は、実施の形態３に係るモジュール群１６００から、停止処理制御部１６４２が停止処理制御部２０４２に変更され、解消処理情報保持部１６５６が解消処理情報保持部２０５６に変更されるように変形されている。そして、これらの変更に伴って、第１デバイスドライバ１６５０が第１デバイスドライバ２０５０に変形され、第１ＯＳ１６４０が第１ＯＳ２０４０に変形され、第１仮想計算機１６２０が第１仮想計算機２０２０に変形されている。
【０２１５】
解消処理情報保持部２０５６は、デバイス状態管理部２５２に接続され、第２変形解消処理情報２１００を記憶する機能を有する。
【０２１６】
図２１は、解消処理情報保持部２０５６が記憶する第２変形解消処理情報２１００のデータ構成の一例を示すデータ構成図である。
【０２１７】
同図に示されるように、第２変形解消処理情報２１００は、停止不許可処理ＩＤ２１１０と解消処理ＩＤ２１２０とが対応付けられて構成される。
【０２１８】
停止不許可処理ＩＤ２１１０は、実施の形態２に係る第２変形解消処理情報１７００（図１７参照）における停止不許可処理ＩＤ２１１０と同等のものであるが、この例では、停止不許可処理ＩＤ２１１０によって識別される停止不許可処理が、データ書込処理（すなわち、ファイルシステム管理情報の更新を含まないデータ書込処理）となっている。変形仮想計算機システムは、データ書込処理を行っている期間において、そのデータ書込処理を中断して終了してしまうと、次回そのデータ書込処理を行おうとする場合に、どこまでの書き込みが終了していたかがわからないため、既に書き込みが終了している部分についても、再度書き込みをやりなおさなければならなくなってしまうという不都合な状況が発生してしまう。
【０２１９】
解消処理ＩＤ２１２０は、実施の形態２に係る第２変形解消処理情報１７００における停止不許可処理ＩＤ２１１０と同等のものであるが、この例では、解消処理ＩＤ１７２０によって識別される解消処理が、ストレージ状態記録処理となっている。ここで、このストレージ状態記録処理は、前述したように、対応付けられているデータ書込処理の実行中において、ハイパーバイザから利用期間短縮信号を受け取ったときに、その受け取った時点における、ストレージデバイス１５８０に内挿される不揮発性メモリカードに書き込まれたデータの状態を、メモリ１３０に含まれるフラッシュメモリの所定記憶領域に記録する処理のことである。
【０２２０】
変形仮想計算機システムは、データ書込処理の実行中において、ハイパーバイザから利用期間短縮信号を受け取ったことによって、そのデータ書込処理を中断して終了する場合であっても、このストレージ状態記録処理を実行することで、その中断されたデータ書込処理において、どこまでの書き込みが終了しているかがわかるため、既に書き込みが終了している部分について、再度書き込みをやりなおす必要が再度書き込みをやりなおさなければならなくなってしまうという不都合な状況が発生しない。
【０２２１】
停止処理制御部２０４２は、実施の形態３に係る停止処理制御部１６４２から、その一部が変形されたモジュールであり、スケジューラ２４１とデバイス制御部２５１とデバイス状態管理部２５２と状態フラグ保持部２５３と制御情報保持部２５４と解消処理情報保持部２０５６と電力制御部２１３とに接続され、実施の形態１に係る停止処理制御部２４２の有する応答機能と、実施の形態２に係る停止処理制御部１１４２の有する変形ＶＭ停止不可解除機能とに加えて、以下の第２変形優先順位変更機能を有する。
【０２２２】
第２変形優先順位変更機能：電力制御部２１３から利用期間短縮信号を受けた場合に、制御情報保持部２５４が記憶する制御情報３００（図３参照）と解消処理情報保持部２０５６が記憶する第２変形解消処理情報２１００（図２１参照）とを参照して、（１）タスクＩＤ３２０が、停止不許可処理ＩＤ２１１０と一致するとき（すなわち、タスクＩＤ３２０で識別されるデバイス制御処理がデータ書込処理であるとき）に、停止不許可処理ＩＤ２１１０で識別される停止不許可処理を停止した上で、解消処理ＩＤ２１２０で識別される解消処理（すなわち、ストレージ状態記録処理）を最大の実行優先順位で実行させる旨を示す解消処理実行信号をスケジューラ２４１に送出し、（２）タスクＩＤ３２０が、停止不許可処理ＩＤ２１１０と一致しないとき（すなわち、タスクＩＤ３２０で識別されるデバイス制御処理がデータ書込処理でないとき）に、タスクＩＤ３２０で識別されるデバイス利用タスクと、関連タスクＩＤ３３０で識別される関連タスクとについて、スケジューラ２４１が管理する実行優先順位を最大の優先順位に変更させる旨を示す優先順位変更信号を、スケジューラ２４１に送出する機能。
【０２２３】
以上のように構成される変形仮想計算機システムの行う動作について、以下図面を参照しながら説明する。
【０２２４】
＜動作＞
変形仮想計算機システムは、その特徴的な動作として、実施の形態１に係るＶＭ停止要求処理と応答処理と電力状態変更処理と、実施の形態３に係る第２変形デバイス停止処理とに加えて、第３変形利用期間短縮処理を実行する。ここでは、この第３変形利用期間短縮処理について説明する。
【０２２５】
＜第３変形利用期間短縮処理＞
第３変形利用期間短縮処理は、実施の形態１に係る利用期間短縮処理から、その一部が変形された処理である。この第３変形利用期間短縮処理は、第１ＯＳ２０４０が主体となって行う処理であって、電力制御部２１３から利用期間短縮信号を受けた場合に、制御情報保持部２５４が記憶する制御情報３００（図３参照）と解消処理情報保持部２０５６が記憶する第１変形解消処理情報２１００（図２１参照）とを参照して、（１）タスクＩＤ３２０が、停止不許可処理ＩＤ２１１０と一致するときに、停止不許可処理ＩＤ２１１０で識別される停止不許可処理が停止され、解消処理ＩＤ２１２０で識別される解消処理が最大の実行優先順位で実行されるように実行制御を行い、（２）タスクＩＤ３２０が、停止不許可処理ＩＤ２１１０と一致しないときに、タスクＩＤ３２０で識別されるデバイス利用タスクと、関連タスクＩＤ３３０で識別される関連タスクとについて、実行優先順位を最大の優先順位に変更して実行制御を行う処理である。
【０２２６】
図２２は、第３変形利用期間短縮処理のフローチャートである。
【０２２７】
ステップＳ２２４０〜ステップＳ２２７０の処理は、実施の形態１に係る利用期間短縮処理（図７参照）における、ステップＳ７００〜ステップＳ７３０の処理のそれぞれと同等の処理である。よってここでは、これらの処理についての説明を省略し、これらの処理以外の処理を中心に説明する。
【０２２８】
第３変形利用期間短縮処理は、停止処理制御部２０４２が、電力制御部２１３から送出された利用期間短縮信号を受けることで開始される。
【０２２９】
第３変形利用期間短縮処理が開始されると、停止処理制御部２０４２は、制御情報保持部２５４が記憶する制御情報３００（図３参照）と解消処理情報保持部２０５６が記憶する第１変形解消処理情報２１００（図２１参照）とを参照して、タスクＩＤ３２０が、停止不許可処理ＩＤ１２１０と一致するか否か（すなわち、タスクＩＤ３２０で識別されるデバイス制御処理がデータ書込処理であるか否か）を調べる（ステップＳ２２００）。
【０２３０】
ステップＳ２２００の処理において、データ書込処理である場合に（ステップＳ２２００：Ｙｅｓ）、停止処理制御部２０４２は、停止不許可処理ＩＤ２１１０で識別されるデータ書込処理を停止した上で、解消処理ＩＤ２１２０で識別されるストレージ状態記録処理を最大の実行優先順位で実行させる旨を示す解消処理実行信号をスケジューラ２４１に送出する。そして、スケジューラ２４１は、データ書込処理が停止された上で、ストレージ状態記録処理が最大の優先順位となるように、実行制御対象タスクのスケジューリングを行う。すると、実行制御部２４４は、スケジューラ２４１によってなされたスケジューリングに基づいて、データ書込処理を停止して（ステップＳ２２１０）、ストレージ状態記録処理を最大の実行優先順位で実行制御する（ステップＳ２２２０）。
【０２３１】
ステップＳ２０００の処理において、データ書込処理でない場合に（ステップＳ２０００：Ｎｏ）、変形仮想計算機システムは、ステップＳ２２４０の処理〜ステップＳ２２５０の処理を行う。
【０２３２】
ステップＳ２２２０の処理が終了した後、ストレージ状態記録処理が完了した場合と（ステップＳ２２３０：Ｎｏを繰り返した後、ステップＳ２２３０：Ｙｅｓ）、ステップＳ２２５０の処理において、停止不許可処理が完了した場合（ステップＳ２２５０：Ｙｅｓ）とに、変形仮想計算機システムは、ステップＳ２２６０〜ステップＳ２２７０の処理を行う。
【０２３３】
ステップＳ２２７０の処理が終了すると、変形仮想計算機システムは、その第３変形期間短縮処理を終了する。
【０２３４】
＜考察＞
上記構成の変形仮想計算機システムによれば、変形仮想計算機システムが、実行制御中の仮想計算機の動作を停止しようとする場合において、一の仮想計算機における一のタスクが、データ書込処理を行っているときに、その仮想計算機は、そのデータ書込処理が終了していなくても、自機の動作停止を可能とする状態とするためのストレージ状態記録処理を最大の実行優先度で行う。そして、このことによって、変形仮想計算機システムは、その仮想計算機の動作停止を比較的短期間に行う。
＜補足＞
以上、本発明に係る仮想計算機システムの一実施形態として、実施の形態１〜実施の形態４において、４つの仮想計算機システムの例について説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示した通りの仮想計算機システムに限られないことはもちろんである。
【０２３５】
（１）実施の形態１において、電力制御装置１６０は、その動作状態が第２状態である場合に、集積回路１１０を構成する各回路（プロセッサ１２０、メモリ１３０等）に電力を供給しない構成の例について説明した。しかしながら、電力制御装置１６０が第１状態である場合における、集積回路１１０を構成する各回路に供給する電力の電位よりも、電力制御装置１６０が第２状態である場合において、集積回路１１０を構成する各回路に供給する電力の電位を低くすることができれば、すなわち、電力制御装置１６０が第１状態である場合における、集積回路１１０の消費電力よりも、電力制御装置１６０が第２状態である場合における、集積回路１１０の消費電力を小さくすることができれば、必ずしも、電力制御装置１６０は、その動作状態が第２状態である場合に、集積回路１１０を構成する各回路に電力を供給しない構成である必要はない。
【０２３６】
一例として、電力制御装置１６０は、その動作状態が第２状態である場合に、集積回路１１０を構成する各回路に、メモリ１３０がデータを保持し続けることができる下限の電圧となる電位（例えば、０．５Ｖ）を供給する構成の例が考えられる。この例の場合には、電力制御装置１６０が第２状態となると、クロックジェネレータ１７０からクロック信号の供給が停止されることとなるため、プロセッサ１２０は、その処理を停止することとなるが、メモリ１３０はデータを保持する状態を維持し続ける。
【０２３７】
また、別の一例として、電力制御装置１６０は、その動作状態が第２状態である場合に、集積回路１１０が５００ＭＨｚの周波数で正常に動作する下限の電圧となる電位（例えば０．９Ｖ）の電力を、集積回路１１０に供給し、クロックジェネレータ１７０が、集積回路１１０に５００ＭＨｚの動作周波数のクロック信号を供給する構成の例等が考えられる。この例の場合には、電力制御装置１６０が第２状態となると、集積回路１１０は、５００ＭＨｚの動作周波数で動作することとなる。
【０２３８】
（２）実施の形態１において、ハイパーバイザ２１０は、第１ＯＳ２４０と第２ＯＳ２６０との２つのＯＳの実行制御を行う構成の例を説明した。しかしながら、ハイパーバイザ２１０は、１以上のＯＳの実行制御を行うことができれば、必ずしも、実行制御を行うＯＳの数が２つである構成に限られず、例えば、４つのＯＳの実行制御を行う構成であっても構わない。
【０２３９】
（３）実施の形態１において、第１デバイスドライバ２５０は、第１仮想計算機２２０において、停止許可処理の実行中であるか否かを示す状態フラグを保持する状態フラグ保持部２５３を備え、停止処理制御部２４２は、状態フラグ保持部２５３の保持する状態フラグを参照して、第１仮想計算機２２０が停止不許可処理の実行中であるか否かを判定する構成の例について説明した。しかしながら、停止処理制御部２４２は、必要とするタイミングにおいて、第１仮想計算機２２０が停止不許可処理の実行中であるか否かを判定することができる情報を得ることができれば、必ずしも、第１デバイスドライバ２５０は、状態フラグ保持部２５３を備え、停止処理制御部２４２は、状態フラグ保持部２５３の保持する状態フラグを参照して、第１仮想計算機２２０が停止不許可処理の実行中であるか否かを判定する構成である必要はない。
【０２４０】
一例として、停止処理制御部２４２は、必要とするタイミング毎に、デバイス状態管理部２５２に、第１仮想計算機２２０が停止不許可処理の実行中であるか否かの問い合わせを行い、デバイス状態管理部２５２は、その問い合わせが行われた毎に、停止処理制御部２４２に、第１仮想計算機２２０が停止不許可処理の実行中であるか否かを示す信号を出力する構成等が考えられる。
【０２４１】
（４）実施の形態１において、第１ＯＳ２４０は、利用期間短縮信号を受け取ると、実行中の停止不許可処理が終了するまでの期間を短くするために、デバイス利用タスクと関連タスクとを最大の実行優先度で実行する構成の例について説明した。しかしながら、実行中の停止不許可処理が終了するまでの期間を短くすることができれば、必ずしも、デバイス利用タスクと関連タスクとを最大の実行優先度で実行する構成に限られない。一例として、停止不許可処理の実行と関係のない処理の内の一部の処理を実行しないことで、実行中の停止不許可処理が終了するまでの期間を短くする構成の例等が考えられる。
【０２４２】
（５）実施の形態４において、解消処理は、中断して終了したデータ書込処理を再実行する場合に、その中断したデータ書込処理において、どこまでの書き込みが終了していたかをわかるようにするためのストレージ状態記録処理である構成の例について説明したが、中断して終了したデータ書込処理を再実行するときに、中断したデータ書込処理において、どこまでの書き込みが終了していたかがわかるようにすることができる処理であれば、必ずしもストレージ状態記録処理である構成に限られない。一例として、利用期間短縮信号を受け取ったときに、その受け取った時点における、ストレージデバイス１５８０に内挿される不揮発性メモリカードに書き込まれたデータの状態を、その不揮発性メモリカードの所定記憶領域に記録する処理である構成の例等が考えられる。
【０２４３】
（６）実施の形態１において、プロセッサ１２０とメモリ１３０とバス１４０と第１Ｉ／Ｆ（インターフェース）１４１と第２Ｉ／Ｆ１４２と第３Ｉ／Ｆ１４３と第４Ｉ／Ｆ１４４と第５Ｉ／Ｆ１４５が、集積回路１１０に集積されている構成の例について説明した。しかしながら、集積回路１１０と同様の機能を実現することができれば、これらは、必ずしも１つの集積回路に集積される必要はなく、複数の集積回路に集積されていても構わない。一般に、集積回路は、その集積度の違いにより、ＩＣ（Integrated Circuit）、システムＬＳＩ（Large Scale Integration）、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧA（Field Programmable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてあり得る。
【０２４４】
（７）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【０２４５】
（８）仮想計算機システム１００、仮想計算機システム１０００、仮想計算機システム１５００、及び、変形仮想計算機システムのそれぞれは、１以上の仮想計算機を実行制御するシステムであれば、計算機、電子機器、情報機器、ＡＶ（Audio Visual）機器、通信機器、家電機器等に適用することができる。一例として、これらの仮想計算機システムは、パーソナルコンピュータ、携帯通信端末（携帯電話機、スマートフォン、ＰＤＡ（Personal Digital Assistant）等）、テレビ、ハードディスクレコーダ、光ディスクレコーダ、光ディスクプレイヤ、カーナビゲーションシステム等に適用可能である。
【０２４６】
（９）以下、さらに本発明の一実施形態に係る計算機システムの構成及びその変形例と各効果について説明する。
【０２４７】
（ａ）本発明の一実施形態に係る仮想計算機システムは、デバイスを利用するプロセッサと、当該プロセッサが実行すべきプログラムを記憶するメモリとを備え、当該プロセッサが、当該メモリに記憶されるプログラムを実行することで、１以上の仮想計算機と、仮想計算機の動作を停止する動作停止装置とを実現する仮想計算機システムであって、前記１以上の仮想計算機のそれぞれは、前記デバイスを利用する処理であり、かつ、実行開始後は完了するまで仮想計算機の動作停止が許可されていない処理であるところの停止不許可処理を実行中の期間に、自仮想計算機の動作停止が許可されていない旨を示す停止不許可信号を出力する出力部を有し、前記動作停止装置は、前記停止不許可信号が出力されていない仮想計算機の動作を停止して、前記停止不許可信号が出力されている仮想計算機の動作を停止しないように、仮想計算機の前記動作停止を行うことを特徴とする。
【０２４８】
一般に、仮想計算機がデバイスを利用する処理は、必ずしも、実行が完了するまでに実行を停止されることで不都合が生じてしまう処理であるとは限らない。このため、仮想計算機がデバイスを利用する処理を実行している期間中であっても、その処理が、実行が完了するまでに実行を停止されることで不都合が生じてしまう処理でなければ、その処理の実行が完了するまで待たずにその仮想計算機の動作が停止されたとしても、不都合が生じてしまうことがない。
【０２４９】
上述の構成を備える本実施形態に係る仮想計算機システムによると、デバイスを利用する処理を実行している仮想計算機であっても、その処理が停止不許可処理でなければ、その仮想計算機は、動作停止装置によって動作停止されることとなる。このことにより、実行が完了するまでに実行を停止することで不都合が生じてしまう処理を停止不許可処理とすることで、この仮想計算機システムは、デバイスを利用する仮想計算機の安全な動作停止を、従来よりも短期間で実現する可能性を高くすることができる。
【０２５０】
図２３は、上記変形例における仮想計算機システム２３００の構成を示すブロック図である。
【０２５１】
同図に示されるように、仮想計算機システム２３００は、ハードウエアとして、プロセッサ２３１０とメモリ２３２０とから構成され、プロセッサ２３１０がメモリ２３２０に記憶されるプログラムを実行することで実現される、仮想計算機２３３０と動作停止装置２３４０とを含む。そして、仮想計算機２３３０は、出力部２３３５を含む。また、仮想計算機システム２３００はデバイス２３５０と接続する。
【０２５２】
プロセッサ２３１０は、デバイス２３５０を利用し、メモリ２３２０に記憶されるプログラムを実行することで、仮想計算機２３３０と動作停止装置２３４０とを実現する。一例として、実施の形態１におけるプロセッサ１２０として実現される。
【０２５３】
メモリ２３２０は、プロセッサ２３１０が利用するプログラムを記憶する。一例として、実施の形態１におけるメモリ１３０として実現される。
【０２５４】
デバイス２３５０は、プロセッサ２３１０によって利用される。一例として、実施の形態１における第１デバイス１８０として実現される。
【０２５５】
仮想計算機２３３０は、プロセッサ２３１０が、メモリ２３２０に記憶されるプログラムを実行することで実現される。一例として、実施の形態１における第１仮想計算機２２０として実現される。
【０２５６】
出力部２３３５は、デバイス２３５０を利用する処理であり、かつ、実行開始後は完了するまで仮想計算機２３３０の動作停止が許可されていない処理であるところの停止不許可処理を、仮想計算機２３３０が実行中の期間に、自仮想計算機の動作停止が許可されていない旨を示す停止不許可信号を出力する機能を有する。一例として、実施の形態１における第１デバイスドライバ２５０として実現される。
【０２５７】
動作停止装置２３４０は、プロセッサ２３１０が、メモリ２３２０に記憶されるプログラムを実行することで実現され、仮想計算機２３３０の動作を停止する機能を有する。ここで、動作停止装置２３４０は、停止不許可信号が出力されていない仮想計算機２３３０の動作を停止して、停止不許可信号が出力されている仮想計算機２３３０の動作を停止しないように、仮想計算機２３３０の動作停止を行う。一例として、実施の形態１におけるハイパーバイザ２１０として実現される。
【０２５８】
（ｂ）また、前記動作停止装置は、前記停止不許可信号を出力する仮想計算機に、当該仮想計算機は停止されるべきである旨を示す停止信号を送出する停止信号出力部を有し、前記仮想計算機は、前記動作停止装置から前記停止信号が送出された場合において、停止不許可処理を実行中のときに、当該停止不許可処理を完了するまでの時間を短縮するための短縮処理を行う短縮処理部を有するとしてもよい。
【０２５９】
このような構成にすることで、停止不許可処理を実行中の仮想計算機について、その停止不許可処理の実行期間を短縮させることができるようになる。
【０２６０】
（ｃ）また、前記短縮処理部は、実行中の停止不許可処理について、仮想計算機内での実行優先度を最優先とする処理を、前記短縮処理として行うとしてもよい。
【０２６１】
このような構成にすることで、仮想計算機における停止不許可処理の実行時間の短縮を、その仮想計算機におけるその停止不許可処理の実行優先度を最優先とすることで実現できるようになる。
【０２６２】
（ｄ）また、前記動作停止装置は、前記停止不許可信号を出力する仮想計算機に、当該仮想計算機は停止されるべきである旨を示す停止信号を送出する停止信号出力部を有し、前記１以上の仮想計算機のうちの少なくとも１つは、前記動作停止装置から前記停止信号が送出された場合において、停止不許可処理を実行中のときに、当該停止不許可処理が完了しないことにより前記デバイスに生じる異常状態を解消するための解消処理を実行する解消処理実行部を有し、前記動作停止装置は、仮想計算機に前記停止信号を送出した場合において、解消処理を開始しなかった仮想計算機について、前記停止不許可信号が出力されていない仮想計算機の動作を停止して、前記停止不許可信号が出力されている仮想計算機の動作を停止しないように、仮想計算機の前記動作停止を行い、仮想計算機に前記停止信号を送出した場合において、解消処理を開始した仮想計算機について、当該解消処理が完了すれば当該仮想計算機の動作を停止するように、仮想計算機の前記動作停止を行い
前記解消処理は、対応する実行中の停止不許可処理と同等の実行優先度で実行された場合に、当該停止不許可処理が完了するよりも早く完了する処理であるとしてもよい。
【０２６３】
このような構成にすることで、停止不許可処理を実行中の仮想計算機について、その停止不許可処理の実行が完了することによって、その仮想計算機が動作停止可能な状態となるよりも早く、その仮想計算機を動作停止可能な状態とすることができるようになる。
【０２６４】
（ｅ）また、前記解消処理実行部は、解消処理を実行する場合には、当該解消処理を、仮想計算機内において最優先となる実行優先度で実行するとしてもよい。
【０２６５】
このような構成にすることで、停止不許可処理を実行中の仮想計算機について、解消処理を実行することでその仮想計算機を動作停止可能な状態とするまでの期間を、さらに短縮することができるようになる。
【０２６６】
（ｆ）また、前記プロセッサは、前記デバイスの利用を、前記プロセッサと前記デバイスとの間の通信路を介して行い、前記解消処理は、前記通信路に、通信の終了を一方的に通知する旨の信号を送出する処理を含むとしてもよい。
【０２６７】
このような構成にすることで、停止不許可処理として、デバイスとの間の通信を実行中仮想計算機について、その通信が完了することによって、その仮想計算機が動作停止可能な状態となるよりも早く、その仮想計算機を動作停止可能な状態とすることができるようになる。
【０２６８】
（ｇ）また、前記デバイスは、前記プロセッサが利用するデータを記憶するストレージデバイスであり、前記停止不許可処理は、前記デバイスにおけるファイルシステム管理情報の更新処理と、前記デバイスへのデータの書き込み処理とを含み、前記解消処理は、前記更新処理を含み、前記書き込み処理を含まない処理であるとしてもよい。
【０２６９】
このような構成にすることで、停止不許可処理として、デバイスにおけるファイルシステム管理情報の更新処理と、デバイスへのデータの書き込み処理とを含む処理を実行中の仮想計算機について、その処理が完了することによって、その仮想計算機が動作停止可能な状態となるよりも早く、その仮想計算機を動作停止可能な状態とすることができるようになる。
【０２７０】
（ｈ）また、前記デバイスは、前記プロセッサが利用するデータを記憶するためのストレージデバイスであり、前記動作停止装置は、前記デバイスの状態に係る情報を記憶する状態記憶部を有し、前記解消処理は、前記デバイスの状態に係る情報を、前記状態記憶部に記憶させる処理を含むとしてもよい。
【０２７１】
このような構成にすることで、停止不許可処理として、デバイスへのデータの書き込み処理を実行中仮想計算機について、その書き込みが完了することによって、その仮想計算機が動作停止可能な状態となるよりも早く、その仮想計算機を動作停止可能な状態とすることができるようになる。
【０２７２】
（ｉ）また、前記プロセッサへの電力供給を制御する電力制御装置を備え、前記動作停止装置は、前記プロセッサで実現される仮想計算機が全て停止された場合に、前記プロセッサに、前記プロセッサへの電力供給を停止する旨を示す電力停止信号を前記電力制御装置に送出させる電力停止部を有し、前記電力制御装置は、前記プロセッサから前記電力停止信号が送出されると、前記プロセッサへの電力供給を停止するとしてもよい。
【０２７３】
このような構成にすることで、仮想計算機が全て動作停止状態となると、プロセッサとデバイスとの電力供給を停止して、プロセッサとデバイスとが消費する電力を削減することができる。
【産業上の利用可能性】
【０２７４】
本発明は、仮想計算機システムに広く利用することができる。
【符号の説明】
【０２７５】
１００  仮想計算機システム
１１０  集積回路
１２０  プロセッサ
１３０  メモリ
１６０  電力制御装置
１７０  クロックジェネレータ
１８０  第１デバイス
１９０  第２デバイス
２００  モジュール群
２１０  ハイパーバイザ
２１１  実行制御部
２１２  ＶＭスケジューラ
２１３  電力制御部
２２０  第１仮想計算機
２４０  第１ＯＳ
２４１  スケジューラ
２４２  停止処理実行部
２４３  電力イベント受付部
２４４  実行制御部
２５０  第１デバイスドライバ
２５１  デバイス制御部
２５２  デバイス状態管理部
２５３  状態フラグ保持部
２５４  制御情報保持部
２５５  停止不許可処理情報保持部
【図１】
0005864529.tif 000002
【図２】
0005864529.tif 000003
【図３】
0005864529.tif 000004
【図４】
0005864529.tif 000005
【図５】
0005864529.tif 000006
【図６】
0005864529.tif 000007
【図７】
0005864529.tif 000008
【図８】
0005864529.tif 000009
【図９】
0005864529.tif 000010
【図１０】
0005864529.tif 000011
【図１１】
0005864529.tif 000012
【図１２】
0005864529.tif 000013
【図１３】
0005864529.tif 000014
【図１４】
0005864529.tif 000015
【図１５】
0005864529.tif 000016
【図１６】
0005864529.tif 000017
【図１７】
0005864529.tif 000018
【図１８】
0005864529.tif 000019
【図１９】
0005864529.tif 000020
【図２０】
0005864529.tif 000021
【図２１】
0005864529.tif 000022
【図２２】
0005864529.tif 000023
【図２３】
0005864529.tif 000024