(57)【要約】  実行中の仮想計算機において、予め定められた特定のアプリケーションプルグラムが実行対象となる場合に、その実行中の仮想計算機を親仮想計算機として、その特定のアプリケーションプログラムを実行させるための子仮想計算機をフォーク方式で生成する。そして、生成された子仮想計算機は、その特定のアプリケーションプログラム以外のアプリケーションプログラムが実行されないように設定する。一方、親仮想計算機は、その特定のアプリケーションプログラムを実行する代わりに、ダミーアプリケーションプログラムを実行する。
2012147252.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるためのハイパバイザとを備える仮想計算機システムであって、
前記ハイパバイザは、
仮想計算機において、所定のアプリケーションプログラムが新たに実行されようとすることを検知するための実行検知部と、
前記プロセッサによって実行される前記実行検知部が、第１仮想計算機において、前記所定のアプリケーションプログラムが新たに実行されようとすることを検知した場合に、当該第１仮想計算機に基づいて、前記所定のアプリケーションプログラムを実行するための新たな第２仮想計算機を生成するための仮想計算機生成部とを有し、
前記プロセッサによって実行制御される複数の仮想計算機のそれぞれは、
前記第２仮想計算機において、前記プロセッサに、前記所定のアプリケーションプログラムを含む特定プログラム群に限って実行させ、前記第１仮想計算機において、前記プロセッサに、前記所定のアプリケーションプログラムの代わりに、所定のダミープログラムを実行させるための実行制御部を有する
ことを特徴とする仮想計算機システム。
【請求項２】
前記仮想計算機生成部は、前記第１仮想計算機に基づいて、新たな前記第２仮想計算機を生成する場合において、前記第２仮想計算機に対する記憶領域の割り当てを、前記第１仮想計算機に割り当てられている記憶領域に基づくフォーク方式で行う
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項３】
前記ハイパバイザは、前記プロセッサの実行対象となっている前記第１仮想計算機において前記所定のダミープログラムが実行を開始された場合において、前記第２仮想計算機が生成されているときに、前記プロセッサの実行対象となる仮想計算機を、前記第１仮想計算機から前記第２仮想計算機へ変更するための仮想計算機スケジュール部とを有する
ことを特徴とする請求項２記載の仮想計算機システム。
【請求項４】
前記仮想計算機スケジュール部は、前記プロセッサの実行対象となっている前記第２仮想計算機において前記所定のアプリケーションプログラムの実行が終了した場合に、前記プロセッサの実行対象となる仮想計算機を、前記第２仮想計算機から前記第１仮想計算機へ変更する
ことを特徴とする請求項３記載の仮想計算機システム。
【請求項５】
前記ハイパバイザは、
前記プロセッサの実行対象となっている前記第２仮想計算機において前記所定のアプリケーションプログラムの実行が終了した場合において、前記仮想計算機スケジュール部が、前記プロセッサの実行対象仮想計算機を、前記第２仮想計算機から前記第１仮想計算機へ変更したときに、前記第２仮想計算機を消滅させるための仮想計算機消滅部を有する
ことを特徴とする請求項４記載の仮想計算機システム。
【請求項６】
前記実行制御部は、前記プロセッサに、タイムスライス値を用いて行うマルチタスク実行制御方法で、プログラムの実行制御を実行させるためのマルチタスク実行制御部を有し、
前記マルチタスク実行制御部は、前記プロセッサによって実行される前記実行制御部が、前記プロセッサに、前記所定のアプリケーションプログラムの代わりに、前記所定のダミープログラムを実行させる場合に、前記所定のアプリケーションプログラムに割り当てるタイムスライス値と同じ値のタイムライス値を、前記所定のダミープログラムに割り当て、
前記仮想計算機スケジュール部は、前記第１仮想計算機において、前記所定のダミープログラムが前記プロセッサの実行対象となった時点から、前記所定のダミープログラムに割り当てられているタイムスライス値で示される時間が経過した場合において、前記第２仮想計算機が前記プロセッサの実行対象仮想計算機となっているとき、前記プロセッサの実行対象仮想計算機を、前記第２仮想計算機から前記第１仮想計算機へ変更する
ことを特徴とする請求項５記載の仮想計算機システム。
【請求項７】
前記プロセッサによって実行される前記仮想計算機生成部が、前記第２仮想計算機を生成した場合に、前記第２仮想計算機の前記実行制御部に、子仮想計算機である旨の通知を行うための子仮想計算機通知部を有し、
前記実行制御部は、前記第２仮想計算機において、前記子仮想計算機通知部から子仮想計算機である旨を通知されることで、前記プロセッサに、前記第２仮想計算機において、前記所定のアプリケーションプログラムを起動させるための実行開始部を有する
ことを特徴とする、請求項６記載の仮想計算機システム。
【請求項８】
前記特定プログラム群は、前記所定のアプリケーションプログラムを攻撃するマルウエアを含まないプログラムのみで構成されている
ことを特徴とする請求項７記載の仮想計算機システム。
【請求項９】
前記プロセッサによって実行制御される複数の仮想計算機のそれぞれは、自仮想計算機において、前記所定のアプリケーションプログラムが新たに実行されようとすることを検知して、前記所定のアプリケーションプログラムが新たに実行されようとする旨を、前記実行検知部へ通知する通知部を有し、
前記実行検知部は、前記プロセッサによって実行される前記通知部から、前記所定のアプリケーションプログラムが新たに実行されようとする旨を通知されることで、前記所定のアプリケーションプログラムが新たに実行されようとすることの検知を行う
ことを特徴とする請求項７記載の仮想計算機システム。
【請求項１０】
前記プロセッサによって実行制御される複数の仮想計算機のそれぞれは、自仮想計算機において、前記所定のダミープログラムが前記プロセッサによって実行を開始された場合に、前記仮想計算機スケジュール部に、自仮想計算機において、前記所定のダミープログラムが前記プロセッサによって実行を開始された旨を通知するためのダミープログラム実行開始通知部を有し、
前記仮想計算機スケジュール部は、前記プロセッサによって実行される、前記第１仮想計算機の前記ダミープログラム実行開始通知部から、自仮想計算機において、前記所定のダミープログラムが前記プロセッサによって実行を開始された旨を通知されることで、前記第１仮想計算機において、前記所定のダミープログラムが実行を開始されたことを検知する
ことを特徴とする請求項７記載の仮想計算機システム。
【請求項１１】
前記プロセッサによって実行制御される複数の仮想計算機のそれぞれは、自仮想計算機において、前記所定のアプリケーションプログラムの実行が終了した場合に、前記仮想計算機スケジュール部に、自仮想計算機において、前記所定のアプリケーションプログラムの実行が終了した旨を通知するための実行終了通知部を有し、
前記仮想計算機スケジュール部は、前記プロセッサによって実行される、前記第２仮想計算機の前記実行終了通知部から、自仮想計算機において、前記所定のアプリケーションプログラムの実行が終了した旨が通知されることで、前記第２仮想計算機において、前記所定のアプリケーションプログラムの実行が終了したことを検知する
ことを特徴とする請求項７記載の仮想計算機システム。
【請求項１２】
プロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるためのハイパバイザとを備える仮想計算機システムを制御する仮想計算機制御方法であって、
前記ハイパバイザが、仮想計算機において、所定のアプリケーションプログラムが新たに実行されようとすることを検知する実行検知ステップと、
前記ハイパバイザが、前記プロセッサによって実行される前記実行検知ステップにおいて、第１仮想計算機において、前記所定のアプリケーションプログラムが新たに実行されようとすることを検知した場合に、当該第１仮想計算機に基づいて、前記所定のアプリケーションプログラムを実行するための新たな第２仮想計算機を生成する仮想計算機生成ステップと、
前記プロセッサによって実行制御される複数の仮想計算機のそれぞれが、前記第２仮想計算機において、前記プロセッサに、前記所定のアプリケーションプログラムを含む特定プログラム群に限って実行させ、前記第１仮想計算機において、前記プロセッサに、前記所定のアプリケーションプログラムの代わりに、所定のダミープログラムを実行させる実行制御ステップとを含む
ことを特徴とする仮想計算機制御方法。
【請求項１３】
プロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるためのハイパバイザとを備える仮想計算機システムを制御する仮想計算機制御プログラムであって、
前記ハイパバイザが、仮想計算機において、所定のアプリケーションプログラムが新たに実行されようとすることを検知する実行検知ステップと、
前記ハイパバイザが、前記プロセッサによって実行される前記実行検知ステップにおいて、第１仮想計算機において、前記所定のアプリケーションプログラムが新たに実行されようとすることを検知した場合に、当該第１仮想計算機に基づいて、前記所定のアプリケーションプログラムを実行するための新たな第２仮想計算機を生成する仮想計算機生成ステップと、
前記プロセッサによって実行制御される複数の仮想計算機のそれぞれが、前記第２仮想計算機において、前記プロセッサに、前記所定のアプリケーションプログラムを含む特定プログラム群に限って実行させ、前記第１仮想計算機において、前記プロセッサに、前記所定のアプリケーションプログラムの代わりに、所定のダミープログラムを実行させる実行制御ステップとを含む
ことを特徴とする仮想計算機制御プログラム。
【請求項１４】
プロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるためのハイパバイザとを備える半導体集積回路であって、
前記ハイパバイザは、
仮想計算機において、所定のアプリケーションプログラムが新たに実行されようとすることを検知するための実行検知部と、
前記プロセッサによって実行される前記実行検知部が、第１仮想計算機において、前記所定のアプリケーションプログラムが新たに実行されようとすることを検知した場合に、当該第１仮想計算機に基づいて、前記所定のアプリケーションプログラムを実行するための新たな第２仮想計算機を生成するための仮想計算機生成部とを有し、
前記プロセッサによって実行制御される複数の仮想計算機のそれぞれは、
前記第２仮想計算機において、前記プロセッサに、前記所定のアプリケーションプログラムを含む特定プログラム群に限って実行させ、前記第１仮想計算機において、前記プロセッサに、前記所定のアプリケーションプログラムの代わりに、所定のダミープログラムを実行させるための実行制御部を有する
ことを特徴とする半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機システムに関し、特に、特定のアプリケーションプログラムを、マルウエアによる攻撃から保護するための技術に関する。
【背景技術】
【０００２】
従来、親となる仮想計算機を複製することで子となる仮想計算機を生成し、生成した仮想計算機を動的に実行制御する仮想計算機システムが知られている。【０００３】
例えば、特許文献１には、それぞれの仮想計算機上で実行されるタスクの重要性を考慮して、動作させる仮想計算機を切り替えて実行する仮想計算機システムが記載され、例えば、特許文献２には、最も優先度の高いタスクを実行対象とする仮想計算機が実行されるように、実行する仮想計算機を切り替えて実行する仮想計算機システムが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２４２５１２号公報
【特許文献２】ＷＯ  ２００９／１３３６６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、仮想計算機システムにおいて、実行対象となるアプリケーションプログラム群の中に、マルウエアが含まれていないと認定されているアプリケーションプログラム（以下、「認定済アプリケーションプログラム」と呼ぶ。）と、マルウエアが含まれている可能性のあるアプリケーションプログラム（以下、「未認定アプリケーションプログラム」と呼ぶ。）とが混在している場合がある。【０００６】
このような場合において、未認定アプリケーションプログラムにマルウエアが含まれているとき、このマルウエアが実行されてしまうことで、認定済アプリケーションプログラムが攻撃されることがある。【０００７】
認定済アプリケーションプログラムが攻撃される場合の例としては、例えば、認定済アプリケーションプログラムが不適切な方法で実行され、外部に対して秘匿されるべき情報、例えば、システムに保存された有料コンテンツ、個人情報、暗号キー等が読み出されてしまう場合等がある。【０００８】
従来の、仮想計算機を動的に生成する仮想計算機システムでは、新たな認定済アプリケーションプログラムを実行させるために新たな子仮想計算機を生成したとしても、その子仮想計算機は、親仮想計算機の複製であるため、親仮想計算機の実行対象となるアプリケーションプログラム群の中に、未認定アプリケーションプログラムが含まれている場合には、子仮想計算機において実行対象となるアプリケーションプログラム群の中に、未認定アプリケーションプログラムが含まれてしまうこととなる。【０００９】
従って、従来の仮想計算機システムでは、親仮想計算機の実行対象となる未認定アプリケーションプログラムの中にマルウエアが含まれてしまっている場合に、認定済アプリケーションプログラムを実行させるために生成された子仮想計算機において、そのマルウエアから、認定済アプリケーションプログラムが攻撃されてしまうことがある。【００１０】
そこで、本発明は係る問題に鑑みてなされたものであり、仮想計算機が実行対象とするアプリケーションプログラム群の中に、認定済アプリケーションプログラムと、未認定アプリケーションプログラムとが混在している場合であっても、未認定アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、認定済アプリケーションプログラムが攻撃されてしまう危険性を従来よりも低く抑えることができる仮想計算機システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために本発明に係る仮想計算機システムは、プロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるためのハイパバイザとを備える仮想計算機システムであって、前記ハイパバイザは、仮想計算機において、所定のアプリケーションプログラムが新たに実行されようとすることを検知するための実行検知部と、前記プロセッサによって実行される前記実行検知部が、第１仮想計算機において、前記所定のアプリケーションプログラムが新たに実行されようとすることを検知した場合に、当該第１仮想計算機に基づいて、前記所定のアプリケーションプログラムを実行するための新たな第２仮想計算機を生成するための仮想計算機生成部とを有し、前記プロセッサによって実行制御される複数の仮想計算機のそれぞれは、前記第２仮想計算機において、前記プロセッサに、前記所定のアプリケーションプログラムを含む特定プログラム群に限って実行させ、前記第１仮想計算機において、前記プロセッサに、前記所定のアプリケーションプログラムの代わりに、所定のダミープログラムを実行させるための実行制御部を有することを特徴とする。
【発明の効果】
【００１２】
上述の構成を備える本発明に係る仮想計算機システムによると、認定済アプリケーションプログラムを所定のアプリケーションプログラムとし、未認定アプリケーションプログラムを特定プログラム群に含めないとした場合には、認定済アプリケーションプログラムが実行される子仮想計算機では、未認定アプリケーションプログラムが実行されることがなく、さらに、未認定アプリケーションプログラムが実行される可能性のある親仮想計算機では、認定済アプリケーションプログラムは実行されることがない。【００１３】
従って、仮想計算機が実行対象とするアプリケーションプログラムの中に、認定済アプリケーションプログラムと、未認定アプリケーションプログラムとが混在している場合であっても、未認定アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、認定済アプリケーションプログラムが攻撃されてしまう危険性を従来よりも低く抑えることができる。
【図面の簡単な説明】
【００１４】
【図１】仮想計算機システム１００の主要なハードウエア構成を示すブロック図
【図２】プロセッサ１０１が有する動作モードを示す動作モード図
【図３】プロセッサ１０１上で実行対象となるプログラムモジュールを示すブロック図
【図４】保護タスク対応表４００のデータ構造図
【図５】子仮想計算機生成処理のフローチャート
【図６】子仮想計算機消滅処理のフローチャート
【図７】保護タスク実行処理のフローチャート
【図８】仮想計算機システム１００で実行されるタスクを示す模式図
【図９】プロセッサ１０１上で実行対象となるプログラムモジュールを示すブロック図
【図１０】プロセッサ１０１上で実行対象となるプログラムモジュールを示すブロック図
【図１１】（ａ）ダミープログラム１１１３のプログラム構成図、（ｂ）スケジュールプログラム１１１７のプログラム構成図
【図１２】変形子仮想計算機生成処理のフローチャート
【図１３】変形保護タスク実行処理のフローチャート
【図１４】仮想計算機システム１００で実行されるタスクを示す模式図
【図１５】仮想計算機システム１５００の構成図
【発明を実施するための形態】
【００１５】
＜実施の形態１＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、アプリケーションプログラムを実行するユーザモードと、ユーザモードより上位のスーパバイザモードとの２つのプログラム実行モードを有するプロセッサを備え、プロセッサのスーパバイザモードで実行される複数のオペレーティングシステムを、プロセッサのスーパバイザモードで実行されるハイパバイザが時分割実行制御する仮想計算機システムについて説明する。
【００１６】
この仮想計算機システムは、実行中の仮想計算機において、予め定められた、マルウエアによる攻撃からの保護対象となる特定のアプリケーションプログラムが実行されようとする場合に、その実行中の仮想計算機を親仮想計算機として、その特定のアプリケーションプログラムを実行させるための子仮想計算機をフォーク方式（後述）で生成する。そして、生成された子仮想計算機を、その特定のアプリケーションプログラム以外のアプリケーションプログラムが実行されないように設定する。一方、親仮想計算機は、その特定のアプリケーションプログラムの代わりに、ダミーアプリケーションプログラムを実行する。これによって、この仮想計算機システムの実行対象となるアプリケーションプログラムの中に、上記特定のアプリケーションプログラムを攻撃するマルウエアが含まれていたとしても、その特定のアプリケーションプログラムは、マルウエアから攻撃されることがない。
【００１７】
以下、本実施の形態１に係る仮想計算機システムの構成について図面を参照しながら説明する。
【００１８】
＜ハードウエア構成＞
図１は、仮想計算機システム１００の主要なハードウエア構成を示すブロック図である。
【００１９】
同図に示す通り、仮想計算機システム１００は、ハードウエアとしてはコンピュータ装置であり、集積回路１１０と入力装置１３１と出力装置１３２とハードディスク装置１３３とから構成される。
【００２０】
集積回路１１０は、プロセッサ１０１とＲＯＭ（Read Only Memory）１０２とＲＡＭ（Random Access Memory）１０３とタイマ１０４と内部バス１２０と第１インタフェース１２１と第２インタフェース１２２と第３インタフェース１２３とを集積した半導体集積回路であって、入力装置１３１と出力装置１３２とハードディスク装置１３３とに接続する。
【００２１】
プロセッサ１０１は、内部バス１２０に接続され、ＲＯＭ１０２又はＲＡＭ１０３に記憶されているプログラムを実行することで、ＲＯＭ１０２、ＲＡＭ１０３、タイマ１０４、入力装置１３１、出力装置１３２、ハードディスク装置１３３を制御する機能を有する。
【００２２】
図２は、プロセッサ１０１の備える動作モードを示す動作モード図である。
【００２３】
同図に示されるように、プロセッサ１０１は、アプリケーションプログラム（図中のタスクＡ２３１、タスクＫ２３２、タスクＬ２３３等）を実行するユーザモード２３０と、オペレーティングシステム（図中の第１ＯＳ（Operating System）２２１、第２ＯＳ２２２、第ＮＯＳ２２３等）とハイパバイザ（図中のハイパバイザ２１１）とを実行する特権モードであるスーパバイザモード２２０とを有する。
【００２４】
ユーザモード２３０で実行されるアプリケーションプログラムのそれぞれは、スーパバイザモード２２０で実行されるオペレーティングシステムによって時分割実行制御され、スーパバイザモード２２０で実行されるオペレーティングシステムのそれぞれは、同じくスーパバイザモード２２０で実行されるハイパバイザによって時分割実行制御される。
【００２５】
再び図１に戻って、仮想計算機システム１００の構成についての説明を続ける。
【００２６】
ＲＯＭ１０２とＲＡＭ１０３とは、それぞれ、内部バス１２０に接続され、プロセッサ１０１の動作を規定するプログラムと、プロセッサ１０１が利用するデータとを記憶する。
【００２７】
タイマ１０４は、内部バス１２０に接続され、プロセッサ１０１によって制御される。
【００２８】
内部バス１２０は、プロセッサ１０１とＲＯＭ１０２とＲＡＭ１０３とタイマ１０４と第１インタフェース１２１と第２インタフェース１２２と第３インタフェース１２３に接続され、これら接続される回路間の信号を伝達する機能を有する。
【００２９】
第１インタフェース１２１と第２インタフェース１２２と第３インタフェース１２３とは、それぞれ内部バス１２０に接続され、それぞれ内部バス１２０と入力装置１３１との間の信号のやり取りを仲介する機能、内部バス１２０と出力装置１３２との間の信号のやり取りを仲介する機能、内部バス１２０とハードディスク装置１３３との間の信号のやり取りを仲介する機能を有する。
【００３０】
入力装置１３１は、キーボード、マウス、カメラ、センサー等を含み、第１インタフェース１２１に接続され、プロセッサ１０１によって制御され、キーボード、マウス、カメラ、センサー等を通じてなされるユーザ操作等に応じたデータを生成し、ユーザ操作等が発生したこと示す通知や、生成したデータをプロセッサ１０１に送る機能を有する。
【００３１】
出力装置１３２は、ディスプレイ、スピーカー等を含み、第２インタフェース１２２に接続され、プロセッサ１０１によって制御され、ディスプレイ、スピーカー等を用いて文字列、画像、音声等を表示、出力する機能を有する。
【００３２】
ハードディスク装置１３３は、プロセッサ１０１が利用するデータを記憶するハードディスクを内蔵し、第３インタフェース１２３に接続され、プロセッサ１０１によって制御され、内蔵するハードディスクにデータを書き込む機能と、内蔵するハードディスクからデータを読み出す機能とを有する。
【００３３】
＜プログラムモジュール構成＞
図３は、ある時刻ｔ０において、プロセッサ１０１上で実行対象となるプログラムモジュール（以下、単に「モジュール」と呼ぶ。）を示すブロック図である。
【００３４】
同図において、モジュール群３００は、プロセッサ１０１において実行対象となっているモジュールの集合であって、モジュール群３００に含まれるモジュールのそれぞれは、ＲＯＭ１０２又はＲＡＭ１０３の記憶領域に格納されている。
【００３５】
タスクＡ３１１〜タスクＫ３１２、ダミータスク３１３、タスクＬ３１４〜タスクＰ３１５、保護タスク３１６等のそれぞれは、プロセッサ１０１のユーザモードで実行されるタスクである。
【００３６】
第１ＯＳ３２１と第２ＯＳ３２２とは、それぞれ、プロセッサ１０１のスーパバイザモードにおいて実行されるマルチタスク対応オペレーティングシステムである。
【００３７】
ハイパバイザ３５１は、プロセッサ１０１のスーパバイザモードで実行されるハイパバイザである。
【００３８】
タスクは、予め用意されたオペレーティングステム呼び出しルーチンを呼び出すことで、オペレーティングシステムに対して、予め定められた処理を依頼することができる。また、オペレーティングシステムは、予め用意されたハイパバイザ呼び出しルーチンを呼び出すことで、ハイパバイザに対して、予め定められた処理を依頼することができる。
【００３９】
また、仮想計算機システムの実行に際して発生した例外や、入力装置等から発生した割込みは、ハイパバイザで処理し、必要に応じて仮想計算機上のオペレーティングシステムに対して通知される。
【００４０】
保護タスク３１６は、予め定められた保護対象アプリケーションプログラムが、オペレーティングシステム（ここでは第２ＯＳ３２２）によって起動されることで生成されたタスクである。この保護対象アプリケーションプログラムは、マルウエアによる攻撃からの保護対象となるアプリケーションプログラムであって、後述の保護タスク対応表３４６によって、予め保護対象となることが設定されているものである。
【００４１】
保護対象アプリケーションプログラムの一例としては、例えば、個人情報を取り扱うアプリケーションプログラム、金銭情報を取り扱うアプリケーションプログラム、著作権保護の対象となる映像データを取り扱うアプリケーションプログラム等がある。
【００４２】
ダミータスク３１３は、予め定められたダミープログラムが、オペレーティングシステム（ここでは第１ＯＳ３２１）によって起動されることで生成されたタスクである。このダミープログラムは、例えば、ＮＯＰ（No OPeration）を繰り返す無限ループからなるプログラムであって、新たなタスクを発生させることのないプログラムである。
【００４３】
第１ＯＳ３２１は、複数のタスク（ここではタスクＡ３１１〜タスクＫ３１２とダミータスク３１３と）を、タイムスライス値を用いて時分割実行制御する。そして、ハイパバイザ３５１は、第１ＯＳ３２１とタスクＡ３１１〜タスクＫ３１２とダミータスク３１３とからなるシステムを仮想計算機３０１として制御する。
【００４４】
第２ＯＳ３２２は、複数のタスク（ここではタスクＬ３１４〜タスクＰ３１５と保護タスク３１６と）を、タイムスライス値を用いて時分割実行制御する。そして、ハイパバイザ３５１は、第２ＯＳ３２２とタスクＬ３１４〜タスクＰ３１５と保護タスク３１６とからなるシステムを子仮想計算機３０２として制御する。
【００４５】
ここで、子仮想計算機３０２は、仮想計算機３０１を親仮想計算機として、フォーク方式で生成された仮想計算機である。フォーク方式での仮想計算機の生成については後述する。
【００４６】
第１ＯＳ３２１は、一般のマルチタスクオペレーティングシステムとしての機能を実現するモジュール群（図示せず）に加えて、内部に、起動要求検知モジュール３３１と保護タスク生成モジュール３３２とタスクスケジュール変更モジュール３３３と保護タスク終了通知モジュール３３４とダミータスク実行通知モジュール３３５との５つのモジュールを含み、起動要求検知モジュール３３１は、内部に、予め定められた保護タスク対応表３３６を記憶している。
【００４７】
図４は、起動要求検知モジュール３３１及び起動要求検知モジュール３４１によって記憶される保護タスク対応表４００（図３中では、保護タスク対応表３３６及び保護タスク対応表３４６）のデータ構造図である。
【００４８】
同図に示されるように、保護タスク対応表４００は、アプリケーションプログラムＩＤ４１０と保護対象フラグ４２０とが対応付けられて構成されている。そして、この保護タスク対応表４００は、システム設計時に予め定められたものとなっている。
【００４９】
アプリケーションプログラムＩＤは、アプリケーションプログラムを識別するためのＩＤである。
【００５０】
保護対象フラグ４２０は、対応するアプリケーションプログラムＩＤによって識別されるアプリケーションプログラムが、マルウエアからの攻撃に対して保護対象となる保護対象アプリケーションプログラムであるか否かを示す１ビットのフラグである。
【００５１】
ここでは、保護対象フラグ４２０は、論理値“１”の場合に、対応するアプリケーションプログラムＩＤによって識別されるアプリケーションプログラムが、マルウエアからの攻撃に対する保護対象となる保護対象アプリケーションプログラムであることを示し、論理値“０”の場合に、対応するアプリケーションプログラムＩＤによって識別されるアプリケーションプログラムが、マルウエアからの攻撃に対する保護対象とならないアプリケーションプログラムであることを示す。
【００５２】
この保護対象フラグ４２０によると、例えば、アプリケーションプログラムＩＤ４１０が“０００２”で識別されるアプリケーションプログラムは、保護対象アプリケーションプログラムであることがわかる。
【００５３】
再び図３に戻って、プロセッサ１０１上で実行対象となるモジュール群の説明を続ける。
【００５４】
起動要求検知モジュール３３１は、内部に、予め定められた保護タスク対応表３３６を記憶し、以下の２つの機能を有する。
【００５５】
機能１：自オペレーティングシステム（ここでは第１ＯＳ３２１）で実行制御されているタスクから、新たなアプリケーションプログラムの起動が要求された場合に、記憶する保護タスク対応表３３６を参照して、起動が要求されたアプリケーションプログラムが、保護対象アプリケーションプログラムであるか否かを判定する機能。
【００５６】
機能２：起動が要求されたアプリケーションプログラムが、保護対象アプリケーションプログラムであった場合に、自オペレーティングシステムに含まれる保護タスク生成モジュール（ここでは保護タスク生成モジュール３３２）と、ハイパバイザ３５１に含まれる仮想計算機生成モジュール３６１（後述）とに、保護対象アプリケーションプログラムの起動が要求された旨の通知を行う機能。
【００５７】
保護タスク生成モジュール３３２は、以下の３つの機能を有する。
【００５８】
機能１：ハイパバイザ３５１に含まれる子仮想計算機通知モジュール３６２（後述）から、自オペレーティングシステムが属する仮想計算機（ここでは仮想計算機３０１）が子仮想計算機である旨の通知を受けた場合に、保護対象アプリケーションプログラムを起動して、自オペレーティングシステムが属する仮想計算機（ここでは仮想計算機３０１）内に、保護タスクを生成する機能。
【００５９】
機能２：ハイパバイザ３５１に含まれる子仮想計算機通知モジュール３６２（後述）から、自オペレーティングシステムが属する仮想計算機（ここでは仮想計算機３０１）が子仮想計算機である旨の通知を受けていなかった場合において、自オペレーティングシステムに含まれる起動要求検知モジュール（ここでは起動要求検知モジュール３３１）から保護対象アプリケーションプログラムの起動が要求された旨の通知が行われたときに、保護対象アプリケーションプログラムの代わりにダミープログラムを起動して、自オペレーティングシステムが属する仮想計算機（ここでは仮想計算機３０１）内に、ダミータスクを生成する機能。
【００６０】
機能３：ダミータスクを生成する場合に、オペレーティングシステムがタスク切替制御に用いるタイムスライス値として、対応する保護タスクに割り当てるタイムスライス値を、ダミータスクに割り当てる機能。
【００６１】
タスクスケジュール変更モジュール３３３は、ハイパバイザ３５１に含まれる子仮想計算機通知モジュール３６２（後述）から、自オペレーティングシステムが属する仮想計算機（ここでは仮想計算機３０１）が子仮想計算機である旨の通知を受けていた場合において、自オペレーティングシステムに含まれる保護タスク生成モジュール（ここでは保護タスク生成モジュール３３２）によって保護タスクが生成されたとき、自オペレーティングシステム（ここでは第１ＯＳ３２１）によって実行されるタスクを、保護タスクに限定する機能を有する。
【００６２】
自オペレーティングシステムによって実行されるタスクを保護タスクに限定するには、例えば、保護タスクの優先度を、他のタスクの優先度よりも高くする、例えば、他のタスクの優先度を、保護タスクの優先度よりも低くする、また、例えば、自オペレーティングシステムが、実行するタスクを、所定のタスクに限定する機能有する場合には、保護タスクをその所定のタスクと設定する等で実現することができる。
【００６３】
保護タスク終了通知モジュール３３４は、自オペレーティングシステム（ここでは第１ＯＳ３２１）で実行制御されている保護タスクの実行が終了したことを検知して、ハイパバイザ３５１に含まれる仮想計算機スケジューリングモジュール３６３（後述）に、保護タスクの実行が終了した旨の通知を行う機能を有する。
【００６４】
ダミータスク実行通知モジュール３３５は、以下の２つの機能を有する。
【００６５】
機能１：自オペレーティングシステムが属する仮想計算機（ここでは仮想計算機３０１）でダミータスクの実行が開始されたことを検知して、ハイパバイザ３５１に含まれる仮想計算機スケジューリングモジュール３６３（後述）に、ダミータスクの実行が開始された旨の通知を行う機能。
【００６６】
機能２：自オペレーティングシステムが属する仮想計算機（ここでは仮想計算機３０１）でダミータスクの実行が中断されたことを検知して、ハイパバイザ３５１に含まれる仮想計算機スケジューリングモジュール３６３（後述）に、ダミータスクの実行が中断された旨の通知を行う機能。
【００６７】
第２ＯＳ３２２は、一般のマルチタスクオペレーティングシステムとしての機能を実現するモジュール群（図示せず）に加えて、内部に、起動要求検知モジュール３４１と保護タスク生成モジュール３４２とタスクスケジュール変更モジュール３４３と保護タスク終了通知モジュール３４４とダミータスク実行通知モジュール３４５との５つのモジュールを含み、起動要求検知モジュール３３１は、内部に、予め定められた保護タスク対応表３４６を記憶している。
【００６８】
これら、起動要求検知モジュール３４１と保護タスク生成モジュール３４２とタスクスケジュール変更モジュール３４３と保護タスク終了通知モジュール３４４とダミータスク実行通知モジュール３４５と保護タスク対応表３４６とは、それぞれ、第１ＯＳ３２１に含まれる、起動要求検知モジュール３３１と保護タスク生成モジュール３３２とタスクスケジュール変更モジュール３３３と保護タスク終了通知モジュール３３４とダミータスク実行通知モジュール３３５と保護タスク対応表３３６と同様の機能を有するものである。よって、ここでは、これらの説明を省略する。
【００６９】
但し、これらのうちの、保護タスク生成モジュール３４２とタスクスケジュール変更モジュール３４３とは、子仮想計算機通知モジュール３６２から、自オペレーティングシステムが属する仮想計算機が子仮想計算機である旨の通知を受けていたか否かに応じて、それぞれ、保護タスク生成モジュール３３２とタスクスケジュール変更モジュール３３３とは、互いに異なる動作を行うこととなる。
【００７０】
ハイパバイザ３５１は、内部に、仮想計算機生成モジュール３６１と子仮想計算機通知モジュール３６２と仮想計算機スケジューリングモジュール３６３と仮想計算機消滅モジュール３６４とを含む。
【００７１】
仮想計算機生成モジュール３６１は、仮想計算機（ここでは仮想計算機３０１）の起動要求検知モジュール３３１から、保護対象アプリケーションプログラムの起動が要求された旨の通知が行われた場合に、仮想計算機３０１を基にして、フォーク方式で新たな子仮想計算機（ここでは子仮想計算機３０２）を生成する機能を有する。
【００７２】
ここで、フォーク方式での仮想計算機の生成とは、親となる仮想計算機に割り当てられている記憶領域と、新たに生成する仮想計算機に割り当てる記憶領域とが、１対１に対応するように、親となる仮想計算機に割り当てられている記憶領域を、新たに生成する仮想計算機の記憶領域にマッピングすることによって、新たな仮想計算機を生成することである。なお、新たに仮想計算機が生成された後は、親となる仮想計算機の記憶領域と、新たに生成された仮想計算機の記憶領域とは、コピーオンライト方式で管理されることとなる。
【００７３】
子仮想計算機通知モジュール３６２は、仮想計算機生成モジュール３６１が、新たな子仮想計算機（ここでは子仮想計算機３０２）を生成した場合に、子仮想計算機３０２上で動作する保護タスク生成モジュール３４２とタスクスケジュール変更モジュール３４３とに、仮想計算機が子仮想計算機である旨の通知を行う機能を有する。
【００７４】
これらのモジュールに、仮想計算機が子仮想計算機である旨の通知を行う方法の一例としては、例えば、子仮想計算機通知モジュール３６２が、特定のメモリ領域に子仮想計算機である旨の情報を記録して、仮想計算機に対する割込みを発生し、これらのモジュールに、上述の特定の領域に記録されている情報を参照させる方法、例えば、これらのモジュールが、呼び出されて動作する際に、予め定められた関数をコールすることで、自モジュールが属する仮想計算機が子仮想計算機であることを通知される方法等がある。
【００７５】
仮想計算機スケジューリングモジュール３６３は、以下の３つの機能を有する。
【００７６】
機能１：親仮想計算機（ここでは仮想計算機３０１）が実行対象仮想計算機となっている場合において、ダミータスク実行通知モジュール３３５から、ダミータスク３１３の実行が開始された旨の通知が行われるときに、実行対象仮想計算機を、仮想計算機３０１から、その子仮想計算機（ここでは子仮想計算機３０２）に切り替える機能。
【００７７】
機能２：子仮想計算機（ここでは子仮想計算機３０２）が実行対象仮想計算機となっている場合において、その親仮想計算機（ここでは仮想計算機３０１）のダミータスク実行通知モジュール３３５から、ダミータスク３１３の実行が中断された旨の通知が行われるときに、実行対象仮想計算機を、子仮想計算機３０２から、その親仮想計算機（ここでは仮想計算機３０１）に切り替える機能。
【００７８】
機能３：子仮想計算機（ここでは子仮想計算機３０２）が実行対象仮想計算機となっている場合において、実行中の子仮想計算機３０２の保護タスク終了通知モジュール３４４から、保護タスク３１６の実行が終了した旨の通知が行われるときに、実行対象仮想計算機を、子仮想計算機３０２から、その親仮想計算機（ここでは仮想計算機３０１）に切り替えて、仮想計算機３０１におけるオペレーティングシステム（ここでは第１ＯＳ３２１）に、保護タスク３１６の実行が終了した旨の通知を行う機能。
【００７９】
仮想計算機消滅モジュール３６４は、子仮想計算機（ここでは子仮想計算機３０２）が実行対象仮想計算機となっている場合において、仮想計算機スケジューリングモジュール３６３に、保護タスク終了通知モジュール３４４から、保護タスク３１６の実行が終了した旨の通知が行われるときに、仮想計算機スケジューリングモジュール３６３が、実行対象仮想計算機を、子仮想計算機３０２から、その親仮想計算機（ここでは仮想計算機３０１）に切り替えると、子仮想計算機３０２を消滅させる機能を有する。
【００８０】
ここで、仮想計算機を消滅させるとは、対象となる仮想計算機を、時分割実行処理対象から除外し、その仮想計算機に割り当てられている記憶領域を解放することをいう。
【００８１】
以下、図面を参照しながら、上記構成の仮想計算機システム１００の行う動作について説明する。
【００８２】
＜動作＞
ここでは、仮想計算機システム１００の行う動作のうち、特徴的な動作である、子仮想計算機生成処理と子仮想計算機消滅処理と保護タスク実行処理とについて説明する。
【００８３】
以下、仮想計算機３０１は、子仮想計算機通知モジュール３６２から、子仮想計算機である旨の通知を受けていないものとして説明する。
【００８４】
＜子仮想計算機生成処理＞
子仮想計算機生成処理は、仮想計算機システム１００が、保護タスクを実行させるための新たな子仮想計算機を生成する処理である。
【００８５】
図５は、子仮想計算機生成処理のフローチャートである。
【００８６】
子仮想計算機生成処理は、仮想計算機（ここでは仮想計算機３０１）において実行制御されているタスクから、その仮想計算機に含まれるオペレーティングシステム（ここでは第１ＯＳ３２１）に対して、保護対象アプリケーションプログラムの起動が要求されることによって開始される。
【００８７】
実行制御されているタスクからの保護対象アプリケーションプログラムの起動要求は、例えば、仮想計算機システム１００を利用するユーザによって、入力装置１３１（図１参照）が操作されること等で発生する。
【００８８】
子仮想計算機生成処理が開始されると、起動要求検知モジュール３３１（図３参照）は、記憶する保護タスク対応表３３６を参照して、起動要求されたアプリケーションプログラムが、保護対象アプリケーションプログラムであることを検知する（ステップＳ５００）。
【００８９】
すると、起動要求検知モジュール３３１は、保護タスク生成モジュール３３２と仮想計算機生成モジュール３６１とに、保護対象アプリケーションプログラムの起動が要求された旨の通知を行う（ステップＳ５１０）。
【００９０】
仮想計算機生成モジュール３６１は、起動要求検知モジュール３３１から、保護対象アプリケーションプログラムの起動が要求された旨の通知が行われると、仮想計算機３０１を基にして、フォーク方式で新たな子仮想計算機３０２を生成する。そして、ハイパバイザ３５１は、生成された子仮想計算機３０２を、実行制御対象仮想計算機に追加する（ステップＳ５２０）。
【００９１】
その後、子仮想計算機通知モジュール３６２は、子仮想計算機３０２の保護タスク生成モジュール３４２とタスクスケジュール変更モジュール３４３とに、自オペレーティングシステムが属する仮想計算機が子仮想計算機である旨の通知を行う（ステップＳ５３０）。
【００９２】
一方、仮想計算機３０１の保護タスク生成モジュール３３２は、子仮想計算機通知モジュール３６２から、自オペレーティングシステムが属する仮想計算機が子仮想計算機である旨の通知を受けていないため、起動要求検知モジュール３３１から、保護対象アプリケーションプログラムの起動が要求された旨の通知が行われると、ダミープログラムを起動して、仮想計算機３０１内に、ダミータスク３１３を生成する（ステップＳ５４０）。
【００９３】
これに対して、子仮想計算機３０２の保護タスク生成モジュール３４２は、子仮想計算機通知モジュール３６２から、自オペレーティングシステムが属する仮想計算機が子仮想計算機である旨の通知を行われると、保護対象アプリケーションプログラムを起動して、子仮想計算機３０２内に、保護タスク３１６を生成する（ステップＳ５５０）。そして、タスクスケジュール変更モジュール３４３は、保護タスク生成モジュール３４２が、保護タスク３１６を生成すると、第２ＯＳ３２２によって実行されるタスクを、保護タスク３１６に限定する（ステップＳ５６０）。
【００９４】
ステップＳ５６０の処理が終了すると、仮想計算機システム１００は、その子仮想計算機生成処理を終了する。
【００９５】
＜子仮想計算機消滅処理＞
子仮想計算機消滅処理は、仮想計算機システム１００が、保護タスクを実行させるために生成された子仮想計算機を消滅させる処理である。
【００９６】
図６は、子仮想計算機消滅処理のフローチャートである。
【００９７】
子仮想計算機消滅処理は、子仮想計算機（ここでは子仮想計算機３０２）において実行されている保護タスク（ここでは保護タスク３１６）が、その処理を終えて終了したことを保護タスク終了通知モジュール３４４が検知することによって開始される。
【００９８】
子仮想計算機消滅処理が開始されると、保護タスク終了通知モジュール３４４は、保護タスク３１６の実行が終了したことを検知して（ステップＳ６００）、仮想計算機スケジューリングモジュール３６３に、保護タスクの実行が終了した旨の通知を行う（ステップＳ６１０）。
【００９９】
仮想計算機スケジューリングモジュール３６３は、保護タスク終了通知モジュール３４４から保護タスクの実行が終了した旨が通知されると、実行対象仮想計算機を、子仮想計算機３０２から、仮想計算機３０１に切り替えて、第１ＯＳ３２１に、保護タスク３１６の実行が終了した旨の通知を行う。そして、ハイパバイザ３５１は、子仮想計算機３０２を、実行制御対象仮想計算機として管理している仮想計算機群の中から削除する（ステップＳ６２０）。
【０１００】
仮想計算機消滅モジュール３６４は、仮想計算機スケジューリングモジュール３６３が、実行対象仮想計算機を、子仮想計算機３０２から、仮想計算機３０１に切り替えると、子仮想計算機３０２に割り当てられている記憶領域を解放することで、子仮想計算機３０２を消滅させる（ステップＳ６３０）。
【０１０１】
一方、第１ＯＳ３２１は、仮想計算機スケジューリングモジュール３６３から、保護タスク３１６の実行が終了した旨が通知されると、実行するタスクを、ダミータスク３１３から他のタスクへ切り替えて、ダミータスク３１３を実行制御対象タスクから削除する（ステップＳ６４０）。
【０１０２】
ステップＳ６４０の処理が終了すると、仮想計算機システム１００は、その子仮想計算機消滅処理を終了する。
【０１０３】
＜保護タスク実行処理＞
保護タスク実行処理は、仮想計算機システム１００が、保護タスクを実行する処理である。
【０１０４】
図７は、保護タスク実行処理のフローチャートである。
【０１０５】
保護タスク実行処理は、親仮想計算機（ここでは仮想計算機３０１）において、ダミータスク３１３が実行を開始されることで開始される。
【０１０６】
仮想計算機３０１において、時分割実行制御対象となっているダミータスク３１３が実行を開始される（ステップＳ７００）と、ダミータスク実行通知モジュール３３５は、ダミータスクの実行が開始されたことを検知して、仮想計算機スケジューリングモジュール３６３に、ダミータスクの実行が開始された旨の通知を行う（ステップＳ７１０）。
【０１０７】
仮想計算機スケジューリングモジュール３６３は、ダミータスク実行通知モジュール３３５から、ダミータスクの実行が開始された旨の通知が行われると、実行対象仮想計算機を、仮想計算機３０１から、子仮想計算機３０２に切り替える（ステップＳ７２０）。
【０１０８】
実行対象仮想計算機が子仮想計算機３０２に切り替えられると、子仮想計算機３０２は、保護タスク３１６のみを実行する（ステップＳ７３０）。
【０１０９】
その後、仮想計算機３０１において、ダミータスク３１３の実行が中断される（ステップＳ７４０）と、ダミータスク実行通知モジュール３３５は、ダミータスクの実行が中断されたことを検知して、仮想計算機スケジューリングモジュール３６３に、ダミータスクの実行が中断された旨の通知を行う（ステップＳ７５０）。
【０１１０】
ここで、仮想計算機３０１において、ダミータスク３１３の実行が中断される場合の例としては、例えば、仮想計算機３０１において、ダミータスク３１３以外のタスク（ここではタスクＡ３１１〜タスクＫ３１２）に対する割込みが発生した場合、例えば、仮想計算機３０１において、ダミータスク３１３のタイムスライスが完了した場合等がある。タイムスライスの完了は、例えば、タイマ１０４が、ダミータスク３１３の実行開始時刻からの経過時間がタイムスライス値を超えた時点で、プロセッサ１０１に対して割込みを発生させることで検知される。
【０１１１】
仮想計算機スケジューリングモジュール３６３は、ダミータスク実行通知モジュール３３５から、ダミータスクの実行が中断された旨の通知が行われると、実行対象仮想計算機を、子仮想計算機３０２から、仮想計算機３０１に切り替える（ステップＳ７６０）。
【０１１２】
一方、仮想計算機３０１においては、実行するタスクをダミータスク３１３から、ダミータスク３１３以外のタスクに切り替えて実行する（ステップＳ７７０）。
【０１１３】
その後、再び、仮想計算機３０１において、実行するタスクがダミータスク３１３以外のタスクから、ダミータスク３１３に切り替えられると（ステップＳ７８０）、再びステップＳ７００の処理に戻って、ステップＳ７００以下の処理を繰り返す。
【０１１４】
図８は、保護タスク実行処理において、仮想計算機システム１００で実行されるタスクを模式的に示す模式図である。
【０１１５】
仮想計算機３０１において、時刻ｔ１に、実行するタスクがダミータスク３１３以外のタスクから、ダミータスク３１３に切り替えられて、ダミータスク３１３が実行を開始されると（ステップＳ７００）、ダミータスクの実行開始が、仮想計算機スケジューリングモジュール３６３に通知され（ステップＳ７１０）、実行される仮想計算機が、仮想計算機３０１から子仮想計算機３０２に切り替えられ（ステップＳ７２０）、子仮想計算機３０２において、保護タスク３１６のみが実行される（ステップＳ７３０）。
【０１１６】
その後、仮想計算機３０１において、時刻ｔ２に、ダミータスク３１３が実行中断となると（ステップＳ７４０）、ダミータスクの実行中断が仮想計算機スケジューリングモジュールに通知され（ステップＳ７５０）、実行される仮想計算機が、子仮想計算機３０２から仮想計算機３０１に切り替えられ（ステップＳ７６０）、仮想計算機３０１において、実行するタスクが、ダミータスク３１３から、ダミータスク３１３以外のタスクに切り替えられる（ステップＳ７７０）。
【０１１７】
＜複数の保護対象アプリケーションプログラムが起動を要求される場合＞
ここまで、起動を要求される保護対象アプリケーションプログラムが１つの場合を中心に説明してきた。しかしながら、保護対象アプリケーションプログラムが複数ある場合には、複数の保護対象アプリケーションプログラムが起動を要求されるときもあり得る。このようなときには、起動を要求される保護対象アプリケーションプログラム毎に、その保護対象アプリケーションプログラムを実行するための子仮想計算機が生成されることとなる。
【０１１８】
図９は、互いに異なる複数の保護対象アプリケーションプログラムが起動を要求された場合において、ある時刻ｔ５において、プロセッサ１０１上で実行対象となるモジュールを示すブロック図である。
【０１１９】
同図は、仮想計算機９０１において起動を要求された、互いに異なる複数の保護対象アプリケーションプログラムのそれぞれに対応して、保護対象アプリケーションプログラムを実行するための複数の子仮想計算機（ここでは子仮想計算機Ａ９０２、子仮想計算機Ｂ９０３等）が生成されている状態を示している。
【０１２０】
同図に示される通り、仮想計算機９０１において、起動を要求された複数の保護対象アプリケーションプログラムのそれぞれに対応する保護タスク（ここでは保護タスクＡ９１７、保護タスクＢ９２０等）は、互いに独立する子仮想計算機（ここでは子仮想計算機Ａ９０２、子仮想計算機Ｂ９０３等）で実行されることとなる。
【０１２１】
＜考察＞
以下、具体例を用いて、仮想計算機システム１００の動作について考察する。
【０１２２】
具体例として、タスクＡ３１１（図３参照）に対応するアプリケーションプログラムと、タスクＬ３１４に対応するアプリケーションプログラムとのそれぞれに、保護タスク３１６に対応する保護対象アプリケーションプロプログラムを攻撃するマルウエアが含まれている場合を考える。
【０１２３】
仮想計算機３０１において、タスクＡ３１１は、実行対象となり得るが、例え、実行中のタスクＡ３１１から、保護対象アプリケーションプログラムの起動が要求されても、保護タスク生成モジュール３３２によって、保護対象アプリケーションプログラムの代わりにダミープログラムが起動されることとなる。これにより、保護対象アプリケーションプログラムは、起動されることがない。
【０１２４】
従って、仮想計算機３０１において、保護対象アプリケーションプログラムは、タスクＡ３１１から攻撃されることがない。
【０１２５】
また、子仮想計算機３０２において、保護対象アプリケーションプログラムが起動されることで、保護タスク３１６が生成されているが、保護タスク３１６以外のタスクは、タスクスケジュール変更モジュール３４３によって、実行対象となることがない。すなわち、子仮想計算機３０２において、タスクＬ３１４は実行されることがない。
【０１２６】
従って、子仮想計算機３０２において、保護対象アプリケーションプログラムは、タスクＬ３１４から攻撃されることがない。
【０１２７】
このように、本実施の形態１に係る仮想計算機システム１００は、仮想計算機が実行対象とするアプリケーションプログラムの中に、保護対象アプリケーションプログラムを攻撃するマルウエアが含まれてしまっている場合であっても、そのマルウエアによって、保護対象アプリケーションプログラムが攻撃されてしまう危険性を、従来よりも低く抑えることができる。
【０１２８】
また、本実施の形態１に係る仮想計算機システム１００は、親となる仮想計算機では、保護タスク以外のタスクが実行され、子となる仮想計算機では、保護タスクのみが実行されることとなるため、親となる仮想計算機で実行されるタスクと、子となる仮想計算機で実行されるタスクとが重複することがない。
＜実施の形態２＞
＜概要＞
以下、本発明に係る仮想計算機システムの一例として、実施の形態１における仮想計算機システム１００の一部を変形した変形仮想計算機システムについて説明する。
【０１２９】
実施の形態２に係る変形仮想計算機システムは、そのハードウエア構成が、実施の形態１に係る仮想計算機システム１００と同様の構成のものとなっているが、実行されるソフトウエアの一部が、実施の形態１に係る仮想計算機システム１００から変形されている。
【０１３０】
実施の形態１に係る仮想計算機システム１００は、オペレーティングシステム（例えば第１ＯＳ３２１）に含まれるダミータスク実行通知モジュール（例えばダミータスク実行通知モジュール３３５）が、ダミータスクの実行開始を検知して、仮想計算機スケジューリングモジュール３６３に通知する構成の例であったが、実施の形態２に係る変形仮想計算機システムは、ダミータスク自身が、自ダミータスクが実行開始された旨を、オペレーティングシステムを介して、仮想計算機スケジューリングモジュールに通知する構成の例である。
【０１３１】
以下、本実施の形態２に係る変形仮想計算機システムの構成について、実施の形態１に係る仮想計算機システムとの相違点を中心に、図面を参照しながら説明する。
【０１３２】
＜ハードウエア構成＞
変形仮想計算機システムは、実施の形態１に係る仮想計算機システム１００と同様のハードウエア構成となっている。よって、ここでは説明を省略する。
【０１３３】
また、以下では、変形仮想計算機システムのハードウエアを構成する各構成要素に係る説明は、実施の形態１に係る仮想計算機システム１００のハードウエアを構成する各構成要素と同じ符号を用いて行う。
【０１３４】
＜プログラムモジュール構成＞
図１０は、ある時刻ｔ０において、プロセッサ１０１上で実行対象となるモジュールを示すブロック図である。
【０１３５】
同図において、モジュール群１０００は、プロセッサ１０１において実行対象となっているモジュールの集合であって、モジュール群１０００に含まれるモジュールのそれぞれは、ＲＯＭ１０２又はＲＡＭ１０３の記憶領域に格納されている。
【０１３６】
モジュール群１０００は、実施の形態１に係るモジュール群３００から、ダミータスク３１３がダミータスク１０１３に変更され、スケジュールタスク１０１４が追加され、ダミータスク実行通知モジュール３３５とダミータスク実行通知モジュール３４５とが削除され、タスクスケジュール変更モジュール３３３とタスクスケジュール変更モジュール３４３と保護タスク生成モジュール３３２と保護タスク生成モジュール３４２と仮想計算機スケジューリングモジュール３６３とが、それぞれ、タスクスケジュール変更モジュール１０３３とタスクスケジュール変更モジュール１０４３と保護タスク生成モジュール１０３２と保護タスク生成モジュール１０４２と仮想計算機スケジューリングモジュール１０６３とに変更されたものである。
【０１３７】
また、タスクスケジュール変更モジュール３３３と保護タスク生成モジュール３３２とが、それぞれ、タスクスケジュール変更モジュール１０３３と保護タスク生成モジュール１０３２とに変更されたことに伴って、第１ＯＳ３２１が第１ＯＳ１０２１に変形され、タスクスケジュール変更モジュール３４３と保護タスク生成モジュール３４２とが、それぞれ、タスクスケジュール変更モジュール１０４３と保護タスク生成モジュール１０４２とに変更されたことに伴って、第２ＯＳ３２２が第１ＯＳ１０２２に変形されている。
【０１３８】
さらに、ダミータスク３１３がダミータスク１０１３に変更され、第１ＯＳ３２１が第１ＯＳ１０２１に変更されたことに伴って、仮想計算機３０１が仮想計算機１００１に変形され、スケジュールタスク１０１４が追加され、第２ＯＳ３２２が第２ＯＳ１０２２に変更されたことに伴って、子仮想計算機３０２が子仮想計算機１００２に変形されている。
【０１３９】
そして、仮想計算機スケジューリングモジュール３６３が仮想計算機スケジューリングモジュール１０６３に変更されたことに伴ってハイパバイザ３５１がハイパバイザ１０５１に変更されている。
【０１４０】
図１１（ａ）は、ダミータスク１０１３に対応するダミープログラム１１１３の構成を示すプログラム構成図である。
【０１４１】
実施の形態１に係るダミータスク３１３は、対応するダミープログラムが、例えば、ＮＯＰを繰り返す無限ループからなるプログラムといった、新たなタスクを発生させることのない、例えば、ＮＯＰを繰り返す無限ループからなるプログラムであるとしていた。これに対して、実施の形態２に係るダミータスク１０１３は、対応するダミープログラム１１１３が、図１１（ａ）に示されるように、第１部分１１２１と第２部分１１２２とから構成されたものとなっている。
【０１４２】
第１部分１１２１は、自ダミープログラムに対応するダミータスク（ここではダミータスク１０１３）を実行制御するオペレーティングシステム（ここでは第１ＯＳ１０２１）を介して、ハイパバイザ１０５１に含まれる仮想計算機スケジューリングモジュール１０６３に、ダミータスクの実行が開始された旨の通知を行う記述。
【０１４３】
第２部分１１２２は、自ダミータスクを実行制御するオペレーティングシステム（ここでは第１ＯＳ１０２１）に対して、自ダミータスクに割り当てられているタイムスライスを放棄して、実行するタスクを、自ダミータスクから他のタスクへ切り替えるように要求する記述。
【０１４４】
図１１（ｂ）は、スケジュールタスク１０１４に対応するスケジュールプログラム１１１７の構成を示す。
【０１４５】
スケジュールタスク１０１４は、対応するスケジュールプログラム１１１７が、図１１（ｂ）に示されるように、第１部分１１３１と第２部分１１３２とから構成されたものとなっている。
【０１４６】
第１部分１１３１は、自スケジュールタスクを実行制御するオペレーティングシステム（ここでは第２ＯＳ１０２２）に対して、自スケジュールタスクに割り当てられているタイムスライスを放棄して、実行するタスクを、自スケジュールタスクから他のタスクへ切り替えるように要求する記述。
【０１４７】
第２部分１１３２は、自スケジュールプログラムに対応するスケジュールタスク（ここではスケジュールタスク１０１４）を実行制御するオペレーティングシステム（ここでは第２ＯＳ１０２２）を介して、ハイパバイザ１０５１に含まれる仮想計算機スケジューリングモジュール１０６３に、実行対象仮想計算機を、自タスクが属する子仮想計算機（ここでは子仮想計算機１００２）から、親である仮想計算機（ここでは仮想計算機１００１に）に切り替えるように要求する記述。
【０１４８】
再び図１０に戻って、プロセッサ１０１上で実行対象となるモジュール群の説明を続ける。
【０１４９】
保護タスク生成モジュール１０３２は、実施の形態１に係る保護タスク生成モジュール３３２から、機能１が、以下の変形機能１となるように変形されたものである。
【０１５０】
変形機能１：ハイパバイザ１０５１に含まれる子仮想計算機通知モジュール３６２から、自オペレーティングシステムが属する仮想計算機（ここでは仮想計算機１００１）が子仮想計算機である旨の通知を受けた場合に、保護対象アプリケーションプログラムとスケジュールプログラムとを起動して、自オペレーティングシステムが属する仮想計算機（ここでは仮想計算機１００１）内に、それぞれ、保護タスク（ここでは保護タスク３１６）とスケジュールタスク（ここではスケジュールタスク１０１４）とを生成する機能。
【０１５１】
タスクスケジュール変更モジュール１０３３は、実施の形態１に係るタスクスケジュール変更モジュール３３３から、有する機能が、以下の２つの変形機能となるように変形されたものである。
【０１５２】
変形機能１：ハイパバイザ１０５１に含まれる子仮想計算機通知モジュール３６２から、自オペレーティングシステムが属する仮想計算機（ここでは仮想計算機１００１）が子仮想計算機である旨の通知を受けていた場合において、自オペレーティングシステムに含まれる保護タスク生成モジュール（ここでは保護タスク生成モジュール１０３２）によって保護タスクとスケジュールタスクとが生成されたとき、自オペレーティングシステム（ここでは第１ＯＳ１０２１）によって実行されるタスクを、保護タスクとスケジュールタスクとに限定する機能。
【０１５３】
変形機能２：保護タスクとスケジュールタスクとが実行制御対象となっている場合に、先に実行されるタスクを、スケジュールタスクとする機能。
【０１５４】
仮想計算機スケジューリングモジュール１０６３は、実施の形態１に係る仮想計算機スケジューリングモジュール３６３から、機能２が、以下の変形機能２となるように変形されたものである。
【０１５５】
変形機能２：子仮想計算機（ここでは子仮想計算機１００２）が実行対象仮想計算機となっている場合において、その子仮想計算機１００２のオペレーティングシステム（ここでは第２ＯＳ１０２２）を介して、スケジュールタスク（ここではスケジュールタスク１０１４）から、実行対象仮想計算機を、子仮想計算機１００２から、親である仮想計算機（ここでは仮想計算機１００１）に切り替えるように要求があるときに、実行対象仮想計算機を、子仮想計算機１００２から、仮想計算機１００１に切り替える機能。
【０１５６】
＜動作＞
上記構成の変形仮想計算機システムでは、実施の形態１に係る仮想計算機システム１００の行う特徴的な動作のうち、子仮想計算機生成処理と保護タスク実行処理とが変形されて行われることとなる。以下、これらの動作について、実施の形態１に係る仮想計算機システムの行う動作との相違点を中心に、図面を参照しながら説明する。
【０１５７】
ここでは、以下、仮想計算機１００１は、子仮想計算機通知モジュール３６２から、子仮想計算機である旨の通知を受けていないものとして説明する。
【０１５８】
＜変形子仮想計算機生成処理＞
変形子仮想計算機生成処理は、変形仮想計算機システムが、保護タスクを実行させるための新たな子仮想計算機を生成する処理であって、実施の形態１に係る子仮想計算機生成処理の一部が変形されたものである。
【０１５９】
図１２は、変形子仮想計算機生成処理のフローチャートである。
【０１６０】
変形子仮想計算機生成処理は、実施の形態１に係る子仮想計算機生成処理と同様に、仮想計算機（ここでは仮想計算機１００１）において実行制御されているタスクから、その仮想計算機に含まれるオペレーティングシステム（ここでは第１ＯＳ１０２１）に対して、保護対象アプリケーションプログラムの起動が要求されることによって開始される。
【０１６１】
ステップＳ１２００〜ステップＳ１２４０の処理は、実施の形態１に係る子仮想計算機生成処理におけるステップＳ５００〜ステップＳ５４０の処理と同様の処理である。よって、ここではこれらのステップの説明を省略する。
【０１６２】
子仮想計算機１００２の保護タスク生成モジュール３４２は、子仮想計算機通知モジュール３６２から、自オペレーティングシステムが属する仮想計算機が子仮想計算機である旨の通知を行われると、保護対象アプリケーションプログラムとスケジュールプログラムとを起動して、子仮想計算機１００２内に、保護タスク３１６とスケジュールタスク１０１４とを生成する（ステップＳ１２５０）。そして、タスクスケジュール変更モジュール３４３は、保護タスク生成モジュール３４２が、保護タスク３１６とスケジュールタスク１０１４とを生成すると、第２ＯＳ１０２２によって実行されるタスクを、保護タスク３１６とスケジュールタスク１０１４に限定する（ステップＳ１２６０）。
【０１６３】
ステップＳ１２６０の処理が終了すると、変形仮想計算機システムは、その変形子仮想計算機生成処理を終了する。
【０１６４】
＜変形保護タスク実行処理＞
変形子仮想計算機生成処理は、変形仮想計算機システムが、保護タスクを実行させるための新たな子仮想計算機を生成する処理であって、実施の形態１に係る子仮想計算機生成処理の一部が変形されたものである。
【０１６５】
図１３は、変形保護タスク実行処理のフローチャートである。
【０１６６】
変形保護タスク実行処理は、実施の形態１に係る保護タスク実行処理と同様に、親仮想計算機（ここでは仮想計算機１００１）において、ダミータスク１０１３が実行を開始されることで開始される。
【０１６７】
仮想計算機１００１において、時分割実行制御対象となっているダミータスク１０１３が実行を開始される（ステップＳ１３００）と、ダミータスク１０１３は、対応するダミープログラム１１１３の第１部分１１２１に対応する処理を行い、第１ＯＳ１０２１を介して、ハイパバイザ１０５１に含まれる仮想計算機スケジューリングモジュール１０６３に、ダミータスクの実行が開始された旨の通知を行う（ステップＳ１３０５）。
【０１６８】
仮想計算機スケジューリングモジュール１０６３は、第１ＯＳ１０２１を介して、ダミータスクの実行が開始された旨の通知が行われると、仮想計算機１００１の実行を一時中断して、実行対象仮想計算機を、仮想計算機１００１から、子仮想計算機１００２に切り替える（ステップＳ１３１０）。
【０１６９】
実行対象仮想計算機が子仮想計算機１００２に切り替えられると、子仮想計算機１００２は、まず、スケジュールタスク１０１４の実行を開始する（ステップＳ１３１５）。
【０１７０】
スケジュールタスク１０１４の実行が開始されると、スケジュールタスク１０１４は、対応するスケジュールプログラム１１１７の第１部分１１３１に対応する処理を行い、第２ＯＳ１０２２に対して、自スケジュールタスクに割り当てられているタイムスライスを放棄して、実行するタスクを、自スケジュールタスクから他のタスク（すなわち、ここでは保護タスク３１６）へ切り替えるように要求する（ステップＳ１３２０）。
【０１７１】
第２ＯＳ１０２２は、実行するタスクの切り替えが要求されると、スケジュールタスク１０１４の実行を一時中断して、実行するタスクを、スケジュールタスク１０１４から、保護タスク３１６へ切り替えて、保護タスク３１６を実行する（ステップＳ１３２５）。
【０１７２】
その後、第２ＯＳ１０２２は、スケジュールタスク１０１４に割り当てているタイムスライス値に対応する時間が経過すると（ステップＳ１３３０）、実行するタスクを、保護タスク３１６から、再びスケジュールタスク１０１４へ切り替えて、中断されていたスケジュールタスク１０１４の実行を開始する（ステップＳ１３３５）。
【０１７３】
スケジュールタスク１０１４が再び実行されると、スケジュールタスク１０１４は、対応するスケジュールプログラム１１１７の第２部分１１３２に対応する処理を行い、第２ＯＳ１０２２を介して、ハイパバイザ１０５１に含まれる仮想計算機スケジューリングモジュール１０６３に、実行対象仮想計算機を、子仮想計算機１００２から、仮想計算機１００１に切り替えるように要求する（ステップＳ１３４０）。
【０１７４】
仮想計算機スケジューリングモジュール１０６３は、第２ＯＳ１０２２を介して、実行対象仮想計算機を、子仮想計算機１００２から、仮想計算機１００１に切り替えるように要求があると、実行対象仮想計算機を、子仮想計算機１００２から、仮想計算機１００１に切り替える（ステップＳ１３４５）。
【０１７５】
実行対象仮想計算機が仮想計算機１００１に切り替えられると、仮想計算機１００１は、中断されていたダミータスク１０１３の実行を開始する（ステップＳ１３５０）。
【０１７６】
ダミータスク１０１３が再び実行されると、ダミータスク１０１３は、対応するダミープログラム１１１３の第２部分１１２２に対応する処理を行い、第１ＯＳ１０２１に対して、自ダミータスクに割り当てられているタイムスライスを放棄して、実行するタスクを、自ダミータスクから他のタスクへ切り替えるように要求する（ステップＳ１３５５）。
【０１７７】
第２ＯＳ１０２２は、実行するタスクの切り替えが要求されると、実行するタスクを、ダミータスク１０１３から、ダミータスク１０１３以外のタスクへ切り替えて実行する（ステップＳ１３６０）。
【０１７８】
その後、再び、仮想計算機１００１において、実行するタスクがダミータスク１０１３以外のタスクから、ダミータスク１０１３に切り替えられると（ステップＳ１３６５）、再びステップＳ１３００の処理に戻って、ステップＳ１３００以下の処理を繰り返す。
【０１７９】
図１４は、変形保護タスク実行処理において、変形仮想計算機システムで実行されるタスクを模式的に示す模式図である。
【０１８０】
仮想計算機３０１において、時刻ｔ１に、実行するタスクがダミータスク１０１３以外のタスクから、ダミータスク１０１３に切り替えられて、ダミータスク１０１３が実行を開始されると（ステップＳ１３００）、仮想計算機スケジューリングモジュール１０６３に、ダミータスクの実行が開始された旨の通知が行われ（ステップＳ１３０５）、実行される仮想計算機が、仮想計算機１００１から子仮想計算機１００２に切り替えられ（ステップＳ１３１０）、子仮想計算機１００２において、スケジュールタスク１０１４が実行される（ステップＳ１３１５）。
【０１８１】
スケジュールタスク１０１４が実行されると、第２ＯＳ１０２２は、実行するタスクを保護タスク３１６に切り替えるように要求され（ステップＳ１３２０）、保護タスク３１６の実行を開始する（ステップＳ１３２５）。
【０１８２】
その後、時刻ｔ２に、保護タスクに割り当てられているタイムスライス値に対応する時間が経過すると（ステップＳ１３３０）、第２ＯＳ１０２２は、実行するタスクを、スケジュールタスク１０１４へ切り替えて実行し（ステップＳ１３３５）、仮想計算機スケジューリングモジュール１０６３に、実行対象仮想計算機を、仮想計算機１００１に切り替えるように要求が行われ（ステップＳ１３４０）、実行される仮想計算機が、子仮想計算機１００２から、仮想計算機１００１に切り替えられ（ステップＳ１３４５）、仮想計算機１００１においてダミータスク１０１３が実行される（ステップＳ１３５０）。
【０１８３】
ダミータスク１０１３が実行されると、第１ＯＳ１０２１は、実行するタスクを他のタスクに切り替えるように要求され（ステップＳ１３５５）、実行するタスクを他のタスクに切り替える（ステップＳ１３６０）。
【０１８４】
＜まとめ＞
上述の実施の形態２に係る変形仮想計算機システムは、実施の形態１に係る仮想計算機システム１００と同様に、仮想計算機が実行対象とするアプリケーションプログラムの中に、保護対象アプリケーションプログラムを攻撃するマルウエアが含まれてしまっている場合であっても、そのマルウエアによって、保護対象アプリケーションプログラムが攻撃されてしまう危険性を、従来よりも低く抑えることができる。
【０１８５】
また、実施の形態２に係る変形仮想計算機システムは、本実施の形態１に係る仮想計算機システム１００と同様に、親となる仮想計算機で実行されるタスクと、子となる仮想計算機で実行されるタスクとが重複することがない。
＜補足＞
以上、本発明に係る仮想計算機システムの一実施形態として、実施の形態１、実施の形態２において、２つの仮想計算機システムの例について説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示した通りの仮想計算機システムに限られないことはもちろんである。
（１）実施の形態１において、仮想計算機システム１００が１つのプロセッサを備える場合の例について説明したが、ハイパバイザが複数の仮想計算機の実行制御をすることができれば、必ずしもプロセッサの数は１つに限られる必要はなく、例えば、２つ、３つといった複数個であっても構わない。プロセッサの数が複数個の場合には、ハイパバイザは、仮想計算機の実行を必ずしも時分割で行う構成である必要はなく、複数の仮想計算機を並列に実行させる構成であっても構わない。
（２）実施の形態１において、プロセッサ１０１とＲＯＭ１０２とＲＡＭ１０３とタイマ１０４と内部バス１２０と第１インタフェース１２１と第２インタフェース１２２と第３インタフェース１２３とが１つの集積回路１１０に集積されている場合の例について説明したが、これらの回路が必ずしも１つの集積回路に集積されている必要はない。例えば、プロセッサ１０１が第１の集積回路に集積され、その他の回路が第２の集積回路に集積される構成されていても構わないし、例えば、各回路がそれぞれ互いに異なる集積回路に集積される構成であっても構わない。
【０１８６】
さらには、集積回路１１０が、製造後に機能のプログラミングが可能なＦＰＧＡ（Field Programmable Gate Array）によって実現されていても構わないし、機能の再構成が可能なリコンフィギュラブルプロセッサによって実現されていても構わない。
（３）実施の形態１において、プロセッサ１０１が２つの動作モードを備える構成の場合を例として説明したが、オペレーティングシステムを実行するモードと同等かそれ以上の高い特権モードでハイパバイザを実行することができる構成であれば、必ずしも動作モードの数は２つに限られる必要はなく、例えば、３つ以上であっても構わない。その場合、ハイパバイザを実行する動作モードを、オペレーティングシステムを実行するよりも高い特権モードとすることができる。
（４）実施の形態１において、仮想計算機の生成をフォーク形式で行う構成の場合を例として説明した。これは、仮想計算機の生成をフォーク形式で行うことによって、ＲＡＭ１０３の記憶領域が効率的に利用されることとなるためである。
【０１８７】
しかしながら、ＲＡＭ１０３の記憶領域の利用効率の非効率性を許容することができれば、親となる仮想計算機を元にして子仮想計算機を生成する場合に、必ずしもフォーク形式で行う必要はない。
【０１８８】
一例として、親となる仮想計算機に割り当てられている記憶領域と、新たに生成する仮想計算機に割り当てる記憶領域とが、１対１に対応するように、親となる仮想計算機に割り当てられている記憶領域を、新たに生成する仮想計算機の記憶領域にコピーすることによって、新たな仮想計算機を生成する形式等が考えられる。
【０１８９】
また、このように、子仮想計算機の記憶領域が親仮想計算機の記憶領域からコピーされたものである場合等には、これらの記憶領域は、必ずしもコピーオンライト方式で管理される必要はなくなる。
（５）実施の形態１において、起動要求検知モジュール（例えば起動要求検知モジュール３３１）、保護タスク生成モジュール（例えば保護タスク生成モジュール３３２）、タスクスケジュール変更モジュール（例えばタスクスケジュール変更モジュール３３３）、保護タスク終了通知モジュール（例えば保護タスク終了通知モジュール３３４）、ダミータスク実行通知モジュール（例えばダミータスク実行通知モジュール３３５）は、仮想計算機内のオペレーティングシステム（例えば第１ＯＳ３２１）に含まれている構成の例について説明したが、仮想計算機システム１００において、これらのモジュールによって実現される機能と同等の機能が実現されることとなっていれば、これらのモジュールは、必ずしも、仮想計算機内のオペレーティングシステムに含まれている必要はなく、例えば、ハイパバイザ３５１に含まれている構成であっても構わない。
【０１９０】
例えば、ダミータスク実行通知モジュール３３５と同等の機能は、ダミータスク３１３が、実行されると、書き込み禁止領域となる所定のメモリ領域に書き込みを行うように設定され、ハイパバイザ３５１が、上記所定のメモリ領域への書き込み違反で発生した例外を補足するモジュールを備える構成とすることで、実現される。
（６）以下、さらに本発明の一実施形態に係る仮想計算機システムの構成及びその変形例と各効果について説明する。
【０１９１】
（ａ）本発明の一実施形態に係る仮想計算機システムは、プロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるためのハイパバイザとを備える仮想計算機システムであって、前記ハイパバイザは、仮想計算機において、所定のアプリケーションプログラムが新たに実行されようとすることを検知するための実行検知部と、前記プロセッサによって実行される前記実行検知部が、第１仮想計算機において、前記所定のアプリケーションプログラムが新たに実行されようとすることを検知した場合に、当該第１仮想計算機に基づいて、前記所定のアプリケーションプログラムを実行するための新たな第２仮想計算機を生成するための仮想計算機生成部とを有し、前記プロセッサによって実行制御される複数の仮想計算機のそれぞれは、前記第２仮想計算機において、前記プロセッサに、前記所定のアプリケーションプログラムを含む特定プログラム群に限って実行させ、前記第１仮想計算機において、前記プロセッサに、前記所定のアプリケーションプログラムの代わりに、所定のダミープログラムを実行させるための実行制御部を有することを特徴とする。
【０１９２】
上述の構成を備える本実施形態に係る仮想計算機システムによると、認定済アプリケーションプログラムを所定のアプリケーションプログラムとし、未認定アプリケーションプログラムを特定プログラム群に含めないとすることで、認定済アプリケーションが実行される第２仮想計算機では、未認定アプリケーションプログラムが実行されることがなく、さらに、未認定アプリケーションプログラムが実行される可能性のある第１仮想計算機では、認定済アプリケーションプログラムは実行されることがない。
【０１９３】
従って、仮想計算機が実行対象とするアプリケーションプログラムの中に、認定済アプリケーションプログラムと、未認定アプリケーションプログラムとが混在している場合であっても、未認定アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、認定済アプリケーションプログラムが攻撃されてしまう危険性を従来よりも低く抑えることができる。
【０１９４】
図１５は、上記変形例における仮想計算機システム１５００の構成を示す構成図である。
【０１９５】
同図に示されるように、仮想計算機システム１５００は、プロセッサ１５１０とハイパバイザ１５２０とを備える。
【０１９６】
プロセッサ１５１０は、ハイパバイザ１５２０を実行する機能を備える。一例として、実施の形態１におけるプロセッサ１０１として実現される。
【０１９７】
ハイパバイザ１５２０は、プロセッサ１５１０上で実行されることで、プロセッサ１５１０に複数の仮想計算機（ここでは、第１仮想計算機１５３０と第２仮想計算機１５４０）の実行制御をさせる機能を有する。一例として、実施の形態１におけるハイパバイザ３５１として実現される。また、このハイパバイザ１５２０は、実行検知部１５２１と仮想計算機生成部１５２２とを有する。
【０１９８】
実行検知部１５２１は、仮想計算機において、所定のアプリケーションプログラムが新たに実行されようとすることを検知する機能を有する。一例として、実施の形態１における仮想計算機生成モジュール３６１のうちの、仮想計算機の起動要求検知モジュール３３１から、保護対象アプリケーションプログラムの起動が要求された旨の通知を受け付ける機能を実現する部分として実現される。
【０１９９】
仮想計算機生成部１５２２は、プロセッサ１５１０によって実行される実行検知部１５２１が、第１仮想計算機１５３０において、所定のアプリケーションプログラムが新たに実行されようとすることを検知した場合に、第１仮想計算機１５３０に基づいて、所定のアプリケーションプログラムを実行するための新たな第２仮想計算機１５４０を生成する機能を有する。
【０２００】
第１仮想計算機１５３０は、プロセッサ１５１０によって実行制御される複数の仮想計算機のうちの１つである。一例として、実施の形態１における仮想計算機３０１として実現される。また、この第１仮想計算機１５３０は、実行制御部１５３１を有する。
【０２０１】
実行制御部１５３１は、第２仮想計算機１５４０において、プロセッサ１５１０に、前述の所定のアプリケーションプログラムを含む特定プログラム群に限って実行させ、第１仮想計算機１５３０において、プロセッサ１５１０に、前述の所定のアプリケーションプログラムの代わりに、所定のダミープログラムを実行させる機能を有する。一例として、実施の形態１における、保護タスク生成モジュール３４２とタスクスケジュール変更モジュール３４３とからなるモジュールとして実現される。
【０２０２】
第２仮想計算機１５４０は、プロセッサ１５１０によって実行制御される複数の仮想計算機のうちの１つである。一例として、実施の形態１における子仮想計算機３０２として実現される。また、この第２仮想計算機１５４０は、実行制御部１５３１と同様の機能を有する実行制御部１５３２を有する。
【０２０３】
（ｂ）また、前記仮想計算機生成部は、前記第１仮想計算機に基づいて、新たな前記第２仮想計算機を生成する場合において、前記第２仮想計算機に対する記憶領域の割り当てを、前記第１仮想計算機に割り当てられている記憶領域に基づくフォーク方式で行うとしてもよい。
【０２０４】
このような構成にすることによって、第１仮想計算機と第２仮想計算機とが、利用する記憶領域の一部を共有することとなる。よって、記憶領域を有効利用することができるようになる。
【０２０５】
（ｃ）また、前記ハイパバイザは、前記プロセッサの実行対象となっている前記第１仮想計算機において前記所定のダミープログラムが実行を開始された場合において、前記第２仮想計算機が生成されているときに、前記プロセッサの実行対象となる仮想計算機を、前記第１仮想計算機から前記第２仮想計算機へ変更するための仮想計算機スケジュール部とを有するとしてもよい。
【０２０６】
このような構成にすることによって、第１仮想計算機におけるダミープログラムの実行の開始を契機として、実行対象となる仮想計算機を、第１仮想計算機から第２仮想計算機へ切り替えることができるようになる。
【０２０７】
（ｄ）また、前記仮想計算機スケジュール部は、前記プロセッサの実行対象となっている前記第２仮想計算機において前記所定のアプリケーションプログラムの実行が終了した場合に、前記プロセッサの実行対象となる仮想計算機を、前記第２仮想計算機から前記第１仮想計算機へ変更するとしてもよい。
【０２０８】
このような構成にすることによって、第２仮想計算機における所定のアプリケーションプログラムの実行の終了を契機として、実行対象となる仮想計算機を、第２仮想計算機から第１仮想計算機へ切り替えることができりようになる。
【０２０９】
（ｅ）また、前記ハイパバイザは、前記プロセッサの実行対象となっている前記第２仮想計算機において前記所定のアプリケーションプログラムの実行が終了した場合において、前記仮想計算機スケジュール部が、前記プロセッサの実行対象仮想計算機を、前記第２仮想計算機から前記第１仮想計算機へ変更したときに、前記第２仮想計算機を消滅させるための仮想計算機消滅部を有するとしてもよい。
【０２１０】
このような構成にすることによって、第２仮想計算機における所定のアプリケーションプログラムの実行の終了を契機として、第２仮想計算機を消滅させることができるようになる。
【０２１１】
（ｆ）また、前記実行制御部は、前記プロセッサに、タイムスライス値を用いて行うマルチタスク実行制御方法で、プログラムの実行制御を実行させるためのマルチタスク実行制御部を有し、前記マルチタスク実行制御部は、前記プロセッサによって実行される前記実行制御部が、前記プロセッサに、前記所定のアプリケーションプログラムの代わりに、前記所定のダミープログラムを実行させる場合に、前記所定のアプリケーションプログラムに割り当てるタイムスライス値と同じ値のタイムライス値を、前記所定のダミープログラムに割り当て、前記仮想計算機スケジュール部は、前記第１仮想計算機において、前記所定のダミープログラムが前記プロセッサの実行対象となった時点から、前記所定のダミープログラムに割り当てられているタイムスライス値で示される時間が経過した場合において、前記第２仮想計算機が前記プロセッサの実行対象仮想計算機となっているとき、前記プロセッサの実行対象仮想計算機を、前記第２仮想計算機から前記第１仮想計算機へ変更するとしてもよい。
【０２１２】
このような構成にすることによって、第１仮想計算機において、所定のダミープログラムが実行されてから、所定のアプリケーションプログラムに割り当てるタイムスライス値で示される期間経過したことを契機として、実行する仮想計算機を、第２仮想計算機から第１仮想計算機へ切り替えることができるようになる。
【０２１３】
（ｇ）また、前記プロセッサによって実行される前記仮想計算機生成部が、前記第２仮想計算機を生成した場合に、前記第２仮想計算機の前記実行制御部に、子仮想計算機である旨の通知を行うための子仮想計算機通知部を有し、前記実行制御部は、前記第２仮想計算機において、前記子仮想計算機通知部から子仮想計算機である旨を通知されることで、前記プロセッサに、前記第２仮想計算機において、前記所定のアプリケーションプログラムを起動させるための実行開始部を有するとしてもよい。
【０２１４】
このような構成にすることによって、第２仮想計算機が生成されると、生成された第２仮想計算機において所定のアプリケーションプログラムが起動されることとなる。
【０２１５】
（ｈ）また、前記特定プログラム群は、前記所定のアプリケーションプログラムを攻撃するマルウエアを含まないプログラムのみで構成されているとしてもよい。
【０２１６】
このような構成にすることによって、第２仮想計算機において、マルウエアからの、所定のアプリケーションプログラムに対する攻撃を無くすことができるようになる。
【０２１７】
（ｉ）また、前記プロセッサによって実行制御される複数の仮想計算機のそれぞれは、自仮想計算機において、前記所定のアプリケーションプログラムが新たに実行されようとすることを検知して、前記所定のアプリケーションプログラムが新たに実行されようとする旨を、前記実行検知部へ通知する通知部を有し、前記実行検知部は、前記プロセッサによって実行される前記通知部から、前記所定のアプリケーションプログラムが新たに実行されようとする旨を通知されることで、前記所定のアプリケーションプログラムが新たに実行されようとすることの検知を行うとしてもよい。
【０２１８】
このような構成にすることによって、仮想計算機において所定のアプリケーションプログラムが新たに実行されようとしていることを、その仮想計算機において検知できるようになる。
【０２１９】
（ｊ）また、前記プロセッサによって実行制御される複数の仮想計算機のそれぞれは、自仮想計算機において、前記所定のダミープログラムが前記プロセッサによって実行を開始された場合に、前記仮想計算機スケジュール部に、自仮想計算機において、前記所定のダミープログラムが前記プロセッサによって実行を開始された旨を通知するためのダミープログラム実行開始通知部を有し、前記仮想計算機スケジュール部は、前記プロセッサによって実行される、前記第１仮想計算機の前記ダミープログラム実行開始通知部から、自仮想計算機において、前記所定のダミープログラムが前記プロセッサによって実行を開始された旨を通知されることで、前記第１仮想計算機において、前記所定のダミープログラムが実行を開始されたことを検知するとしてもよい。
【０２２０】
このような構成にすることによって、仮想計算機において所定のダミープログラムの実行が開始されたことを、その仮想計算機において検知できるようになる。
【０２２１】
（ｋ）また、前記プロセッサによって実行制御される複数の仮想計算機のそれぞれは、自仮想計算機において、前記所定のアプリケーションプログラムの実行が終了した場合に、前記仮想計算機スケジュール部に、自仮想計算機において、前記所定のアプリケーションプログラムの実行が終了した旨を通知するための実行終了通知部を有し、前記仮想計算機スケジュール部は、前記プロセッサによって実行される、前記第２仮想計算機の前記実行終了通知部から、自仮想計算機において、前記所定のアプリケーションプログラムの実行が終了した旨が通知されることで、前記第２仮想計算機において、前記所定のアプリケーションプログラムの実行が終了したことを検知するとしてもよい。
【０２２２】
このような構成にすることによって、仮想計算機において所定のアプリケーションプログラムの実行が終了したことを、その仮想計算機において検知できるようになる。
【産業上の利用可能性】
【０２２３】
本発明は、仮想計算機システムに広く利用することができる。
【符号の説明】
【０２２４】
１００  仮想計算機システム
１１０  集積回路
１０１  プロセッサ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  タイマ
１２０  内部バス
１３１  入力装置
１３２  出力装置
１３３  ハードディスク装置
３００  モジュール群
３０１  仮想計算機
３０２  子仮想計算機
３１３  ダミータスク
３１６  保護タスク
３２１  第１ＯＳ
３２２  第２ＯＳ
３３１、３４１  起動要求検知モジュール
３３２、３４２  保護タスク生成モジュール
３３３、３４３  タスクスケジュール変更モジュール
３３４、３４４  保護タスク終了通知モジュール
３３５、３４５  ダミータスク実行通知モジュール
３３６、３４６  保護タスク対応表
３５１  ハイパバイザ
３６１  仮想計算機生成モジュール
３６２  子仮想計算機通知モジュール
３６３  仮想計算機スケジューリングモジュール
３６４  仮想計算機消滅モジュール
【図１】
2012147252.tif 000003
【図２】
2012147252.tif 000004
【図３】
2012147252.tif 000005
【図４】
2012147252.tif 000006
【図５】
2012147252.tif 000007
【図６】
2012147252.tif 000008
【図７】
2012147252.tif 000009
【図８】
2012147252.tif 000010
【図９】
2012147252.tif 000011
【図１０】
2012147252.tif 000012
【図１１】
2012147252.tif 000013
【図１２】
2012147252.tif 000014
【図１３】
2012147252.tif 000015
【図１４】
2012147252.tif 000016
【図１５】
2012147252.tif 000017
【国際調査報告】
2012147252.tif 000018
2012147252.tif 000019