(57)【要約】  仮想計算機からメモリ領域へのアクセス制御を行うメモリ保護ユニットを備え、プロセッサによって実行されるハイパーバイザとメモリ保護ユニットとが協働して動作することで、仮想計算機それぞれについて、メモリの記憶領域へのアクセスを、それぞれ所定の領域へのアクセスが禁止されるように制御する。これにより、仮想計算機のそれぞれは、アクセスが禁止されている領域に格納されているプログラム、データ等にアクセスすることができなくなる。
2012117465.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、
仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、
前記記憶装置は、第１種プログラムを格納する第１記憶領域と、第２種プログラムを格納する第２記憶領域とを含み、
前記ハイパーバイザは、
仮想計算機から、第１種プログラム又は第２種プログラムの起動要求を受け付けるための起動要求受付部と、
前記プロセッサによって実行される前記起動要求受付部が、第１種プログラムの起動要求を受け付けた場合に、当該第１種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第１種仮想計算機として管理し、第２種プログラムの起動要求を受け付けた場合に、当該第２種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第２種仮想計算機として管理するための仮想計算機生成部とを含み、
前記アクセス制御部は、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第１種仮想計算機として管理されている仮想計算機からの前記第２記憶領域へのアクセスが禁止されるように行う
ことを特徴とする仮想計算機システム。
【請求項２】
前記アクセス制御部は、前記第２記憶領域のアドレスを特定する第２領域特定情報を記憶するための第２領域特定情報記憶部を有し、前記アクセスの制御を、前記第２領域特定情報記憶部に記憶されている前記第２領域特定情報を参照して行う
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項３】
前記記憶装置は、プログラムを特定する情報と、プログラムの種別を特定する情報とを対応付けるプログラム対応情報を記憶するためのプログラム対応情報記憶領域を含み、
前記仮想計算機生成部は、
前記プロセッサによって実行される前記起動要求受付部が、仮想計算機から、プログラムの起動要求を受け付けた場合に、当該プログラムが、いずれの種別のプログラムであるかを、前記プログラム対応情報記憶領域に記憶されているプログラム対応情報に基づいて特定するためのプログラム種特定部を含み、
前記プロセッサによって実行される前記起動要求受付部が、第１種プログラムの起動要求を受け付けた場合に行う、前記生成した仮想計算機に対する第１種仮想計算機としての管理と、前記プロセッサによって実行される前記起動要求受付部が、第２種プログラムの起動要求を受け付けた場合に行う、前記生成した仮想計算機に対する第２種仮想計算機としての管理とを、前記プログラム種特定部によって特定されたプログラムの種別に基づいて行う
ことを特徴とする請求項２記載の仮想計算機システム。
【請求項４】
前記仮想計算機生成部は、前記プロセッサによって実行される前記起動要求受付部が、仮想計算機から、第１種プログラム又は第２種プログラムの起動要求を受け付けた場合において、仮想計算機を生成するときに、当該生成する仮想計算機に対する、前記記憶装置における記憶領域の割り当てを、前記起動要求の要求元仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行う
ことを特徴とする請求項３記載の仮想計算機システム。
【請求項５】
前記ハイパーバイザは、
前記プロセッサによって実行される前記仮想計算機生成部が、第１の仮想計算機に対する記憶領域の割り当てを、第２の仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行った場合に、前記第１の仮想計算機と前記第２の仮想計算機とによって行われる、前記記憶装置における記憶領域へのアクセスが、コピーオンライト方式で行われるように、仮想計算機からの、前記記憶装置における記憶領域へのアクセスを制御するためのコピーオンライト実行制御部を含む
ことを特徴とする請求項４記載の仮想計算機システム。
【請求項６】
前記第１記憶領域は、さらに、前記第１種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含み、
前記第２記憶領域は、さらに、前記第２種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含む
ことを特徴とする請求項５記載の仮想計算機システム。
【請求項７】
前記記憶装置は、
デバイスドライバを記憶するデバイスドライバ記憶領域と、
前記デバイスドライバ記憶領域に記憶されている前記デバイスドライバを実行する仮想計算機以外の仮想計算機によって実行されることで、前記デバイスドライバを実行する仮想計算機と通信し、前記デバイスドライバを実行する仮想計算機に、デバイスの制御をさせるためのデバイス制御プログラムを記憶するデバイス制御プログラム記憶領域とを含み、
前記アクセス制御部は、前記アクセスの制御を、実行制御対象である仮想計算機の中の１つの仮想計算機に限って、前記デバイスドライバ記憶領域へのアクセスが許可されるように行う
ことを特徴とする請求項５記載の仮想計算機システム。
【請求項８】
記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第１種プログラムを格納する第１記憶領域と、第２種プログラムを格納する第２記憶領域とを含む仮想計算機システムを制御する仮想計算機制御方法であって、
前記ハイパーバイザが、第１種プログラム又は第２種プログラムの起動要求を受け付ける起動要求受付ステップと、
前記ハイパーバイザが、前記起動要求受付ステップにおいて、第１種プログラムの起動要求を受け付けた場合に、当該第１種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第１種仮想計算機として管理し、第２種プログラムの起動要求を受け付けた場合に、当該第２種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第２種仮想計算機として管理する仮想計算機生成ステップと、
前記アクセス制御部が、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第１種仮想計算機として管理されている仮想計算機からの前記第２記憶領域へのアクセスが禁止されるように行うアクセス制御ステップとを含む
ことを特徴とする仮想計算機制御方法。
【請求項９】
記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第１種プログラムを格納する第１記憶領域と、第２種プログラムを格納する第２記憶領域とを含む仮想計算機システムを制御するための仮想計算機制御プログラムであって、
前記ハイパーバイザが、第１種プログラム又は第２種プログラムの起動要求を受け付ける起動要求受付ステップと、
前記ハイパーバイザが、前記起動要求受付ステップにおいて、第１種プログラムの起動要求を受け付けた場合に、当該第１種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第１種仮想計算機として管理し、第２種プログラムの起動要求を受け付けた場合に、当該第２種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第２種仮想計算機として管理する仮想計算機生成ステップと、
前記アクセス制御部が、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第１種仮想計算機として管理されている仮想計算機からの前記第２記憶領域へのアクセスが禁止されるように行うアクセス制御ステップとを含む
ことを特徴とする仮想計算機制御プログラム。
【請求項１０】
記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える半導体集積回路であって、
仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、
前記記憶装置は、第１種プログラムを格納する第１記憶領域と、第２種プログラムを格納する第２記憶領域とを含み、
前記ハイパーバイザは、
仮想計算機から、第１種プログラム又は第２種プログラムの起動要求を受け付けるための起動要求受付部と、
前記プロセッサによって実行される前記起動要求受付部が、第１種プログラムの起動要求を受け付けた場合に、当該第１種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第１種仮想計算機として管理し、第２種プログラムの起動要求を受け付けた場合に、当該第２種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第２種仮想計算機として管理するための仮想計算機生成部とを含み、
前記アクセス制御部は、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第１種仮想計算機として管理されている仮想計算機からの前記第２記憶領域へのアクセスが禁止されるように行う
ことを特徴とする半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機システムに関し、特に、仮想計算機からの記憶領域へのアクセスの制御技術に関する。
【背景技術】
【０００２】
従来、仮想計算機システムとして、複数の仮想計算機を実行制御するシステムが知られている。【０００３】
このような仮想計算機システムにおいて、ハードウエア資源の利用効率を向上させる技術として、仮想計算機システムの処理負荷に応じて、仮想計算機の生成と終了とを動的に制御する技術がある。【０００４】
例えば、特許文献１では、親仮想計算機をフォークすることで子仮想計算機を生成する技術が開示され、特許文献２では、仮想計算機上で実行されているアプリケーションプログラムからの要求に基づいて、その仮想計算機をクローン化することで、子仮想計算機を生成する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−１３３８９４号公報
【特許文献２】特開２００８−１６５７９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、仮想計算機システムにおいて、実行対象となるアプリケーションプログラムの中に、マルウエアが含まれていないと認証されているアプリケーションプログラム（以下、「認証済アプリケーションプログラム」と呼ぶ。）と、マルウエアが含まれていないと認証されていないアプリケーションプログラム（以下、「未認証アプリケーションプログラム」と呼ぶ。）とが混在している場合がある。【０００７】
このような場合において、未認証アプリケーションプログラムにマルウエアが含まれているとき、このマルウエアが実行されてしまうことで、認証済アプリケーションプログラムが攻撃されることがある。【０００８】
認証済アプリケーションプログラムが攻撃される場合の例としては、例えば、認証済アプリケーションプログラムやデータが改竄されてしまう場合、認証済アプリケーションプログラムが不適切な方法で実行され、システムの管理者権限が奪われた結果、計算機システムを不正に乗っ取られてしまい、外部に対して秘匿されるべき情報、例えば、システムに保存された有料コンテンツ、個人情報、暗号キー等が読み出されてしまう場合等がある。【０００９】
従来の、仮想計算機を動的に生成する仮想計算機システムでは、新たなアプリケーションプログラムを実行させる場合において、そのアプリケーションプログラムを実行させるための仮想計算機が存在しないとき等に、親仮想計算機を基にして新たな子仮想計算機を生成し、その子仮想計算機に、そのアプリケーションプログラムを実行させる。【００１０】
このような場合には、親仮想計算機から生成される子仮想計算機は、親仮想計算機と同じ機能を持つこととなる。よって、親仮想計算機の実行対象となるアプリケーションプログラムの中に、認証済アプリケーションプログラムが含まれている場合には、未認証アプリケーションプログラムを実行させるために生成された子仮想計算機であっても、実行対象となるアプリケーションプログラムの中に、認証済アプリケーションプログラムが含まれてしまうこととなる。【００１１】
従って、従来の仮想計算機システムでは、子仮想計算機の実行する未認証アプリケーションプログラムの中にマルウエアが含まれてしまっている場合に、そのマルウエアによって、認証済アプリケーションプログラムが攻撃されてしまうことがある。【００１２】
そこで、本発明は係る問題に鑑みてなされたものであり、仮想計算機が実行対象とするアプリケーションプログラムの中に、認証済アプリケーションプログラムと、未認証アプリケーションプログラムとが混在している場合であっても、未認証アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、システムの乗っ取りやデータの盗難、および改竄の原因となる認証済アプリケーションプログラムに対する攻撃などの、ソフトウェアの不正実行を防止することができる仮想計算機システムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために本発明に係る仮想計算機システムは、記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、
仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第１種プログラムを格納する第１記憶領域と、第２種プログラムを格納する第２記憶領域とを含み、前記ハイパーバイザは、仮想計算機から、第１種プログラム又は第２種プログラムの起動要求を受け付けるための起動要求受付部と、前記プロセッサによって実行される前記起動要求受付部が、第１種プログラムの起動要求を受け付けた場合に、当該第１種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第１種仮想計算機として管理し、第２種プログラムの起動要求を受け付けた場合に、当該第２種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第２種仮想計算機として管理するための仮想計算機生成部とを含み、前記アクセス制御部は、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第１種仮想計算機として管理されている仮想計算機からの前記第２記憶領域へのアクセスが禁止されるように行うことを特徴とする。
【発明の効果】
【００１４】
上述の構成を備える本発明に係る仮想計算機システムによると、未認証アプリケーションプログラムを第１種プログラムとして第１記憶領域に格納し、認証済アプリケーションプログラムを第２種プログラムとして第２記憶領域に格納することで、未認証アプリケーションプログラムを実行する仮想計算機は、認証済アプリケーションプログラムにアクセスすることができなくなる。【００１５】
従って、仮想計算機が実行対象とするアプリケーションプログラムの中に、認証済アプリケーションプログラムと、未認証アプリケーションプログラムとが混在している場合であっても、未認証アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、システムの乗っ取りデータの盗難、および改竄の原因となる認証済アプリケーションプログラムに対する攻撃などの、ソフトウェアの不正実行を防止することができる。
【図面の簡単な説明】
【００１６】
【図１】仮想計算機システム１００の主要なハードウエア構成を示すブロック図
【図２】プロセッサ１０１が有する動作モードを示す動作モード図
【図３】メモリ保護テーブルのデータ構造を示すデータ構造図
【図４】メモリ保護情報のデータ構造を示すデータ構造図
【図５】メモリ１０２の記憶領域の区分けを示す記憶領域図
【図６】プロセッサ１０１上で実行対象となるプログラムモジュールを示すブロック図
【図７】アプリグループ管理テーブル７００のデータ構造図
【図８】仮想計算機管理テーブル８００のデータ構造図
【図９】仮想計算機状態テーブル９００のデータ構造図
【図１０】アクセス許可情報１０００のデータ構造
【図１１】メモリ１０２の記憶領域の区分けを示す記憶領域図
【図１２】仮想計算機切替処理のフローチャート
【図１３】メモリアクセス処理のフローチャート
【図１４】アプリケーションプログラム実行処理のフローチャート
【図１５】仮想計算機システム１５００の主要なハードウエア構成を示すブロック図
【図１６】プロセッサ１０１上で実行対象となるプログラムモジュールを示すブロック図
【図１７】プロセッサ１０１上で実行対象となるプログラムモジュールを示すブロック図
【図１８】変形例における仮想計算機システム１８００の概略構成図
【発明を実施するための形態】
【００１７】
＜実施の形態１＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、アプリケーションプログラムを実行するユーザーモードと、ユーザーモードより上位のスーパーバイザモードとの２つのプログラム実行モードを有するプロセッサを備え、プロセッサのスーパーバイザモードで実行される複数のオペレーティングシステムを、プロセッサのスーパーバイザモードで実行されるハイパーバイザが時分割実行制御する仮想計算機システムについて説明する。
【００１８】
この仮想計算機システムは、プロセッサに加えて、仮想計算機からメモリの記憶領域へのアクセス制御を行うメモリ保護ユニットを備える。そして、プロセッサによって実行されるハイパーバイザとメモリ保護ユニットとが協働して動作することで、仮想計算機それぞれについて、メモリの記憶領域へのアクセスを、それぞれ所定の領域へのアクセスが禁止されるように制御する。
【００１９】
従って、この仮想計算機システムで実行される仮想計算機のそれぞれは、アクセスが禁止されている領域に格納されているプログラム、データ等にアクセスすることができなくなっている。
【００２０】
以下、本実施の形態１に係る仮想計算機システムの構成について図面を参照しながら説明する。
【００２１】
＜ハードウエア構成＞
図１は、仮想計算機システム１００の主要なハードウエア構成を示すブロック図である。
【００２２】
同図に示す通り、仮想計算機システム１００は、ハードウエアとしてはコンピュータ装置であり、集積回路１１０と入力装置１３１と出力装置１３２とから構成される。
【００２３】
集積回路１１０は、プロセッサ１０１とメモリ１０２とキャッシュメモリ１０５とＭＭＵ（Memory Management Unit）１０６とメモリ保護ユニット１０７とタイマ１０８とＤＭＡＣ（Direct Memory Access Controller）１０９と内部バス１２０と第１インタフェース１２１と第２インタフェース１２２と第３インタフェース１２３とを集積した半導体集積回路であって、入力装置１３１と出力装置１３２と外部の集積回路等とに接続する。そして、メモリ１０２は、ＲＯＭ（Read Only Memory）１０３とＲＡＭ（Random Access Memory）１０４とから構成されている。
【００２４】
プロセッサ１０１は、キャッシュメモリ１０５とＭＭＵ１０６とに接続され、ＲＯＭ１０３又はＲＡＭ１０４に記憶されているプログラムを実行することで、ＲＯＭ１０３、ＲＡＭ１０４、キャッシュメモリ１０５、ＭＭＵ１０６、メモリ保護ユニット１０７、タイマ１０８、入力装置１３１、出力装置１３２を制御して、様々な機能を実現する。
【００２５】
図２は、プロセッサ１０１の備える動作モードを示す動作モード図である。
【００２６】
同図に示されるように、プロセッサ１０１は、アプリケーションプログラム（図中のタスクＡ２３１、タスクＫ２３２、タスクＬ２３３等）を実行するユーザーモード２３０と、オペレーティングシステム（図中の第１ＯＳ（Operating System）２２１、第２ＯＳ２２２、第３ＯＳ２２３等）とハイパーバイザを実行する特権モード（以下、「スーパーバイザモード」と呼ぶ。）２２０とを有する。
【００２７】
ユーザーモード２３０で実行されるアプリケーションプログラムは、スーパーバイザモード２２０で実行されるオペレーティングシステムによって時分割実行制御され、スーパーバイザモード２２０で実行されるオペレーティングシステムは、同じくスーパーバイザモード２２０で実行されるハイパーバイザによって時分割実行制御される。
【００２８】
再び図１に戻って、仮想計算機システム１００の構成についての説明を続ける。
【００２９】
ＲＯＭ１０３は、メモリ保護ユニット１０７に接続され、プロセッサ１０１の動作を規定するプログラムと、プロセッサ１０１が利用するデータとを記憶している。
【００３０】
ＲＡＭ１０４は、メモリ保護ユニット１０７に接続され、プロセッサ１０１の動作を規定するプログラムと、プロセッサ１０１が利用するデータとを記憶する。
【００３１】
キャッシュメモリ１０５は、プロセッサ１０１とＭＭＵ１０６と内部バス１２０とに接続され、プロセッサ１０１によって利用される。
【００３２】
ＭＭＵ１０６は、プロセッサ１０１とキャッシュメモリ１０５と内部バス１２０とに接続され、メモリ１０２の物理記憶領域のアドレスを指定する物理アドレスと、プロセッサ１０１の利用する論理記憶領域のアドレスを指定する論理アドレスとの変換機能を有する。
【００３３】
メモリ保護ユニット１０７は、メモリ１０２と内部バス１２０とに接続され、内部にメモリ保護テーブルとメモリ保護情報とを記憶する機能と、記憶するメモリ保護テーブルとメモリ保護情報とを参照して、内部バス１２０のバスマスタ（ここでは、プロセッサ１０１、ＤＭＡＣ１０９）からのメモリ１０２の記憶領域へのアクセスを制御する機能とを有する。
【００３４】
図３は、メモリ保護ユニット１０７によって記憶されるメモリ保護テーブル３００のデータ構造を示すデータ構造図である。
【００３５】
同図に示されるように、メモリ保護テーブル３００は、領域ＩＤ３１０と開始アドレス３２０とサイズ３３０とが対応付けられて構成されている。
【００３６】
領域ＩＤ３１０は、メモリ１０２の記憶領域の中の、所定の記憶領域を識別するための識別子である。
【００３７】
開始アドレス３２０は、対応する領域ＩＤ３１０によって識別される所定の記憶領域の開始アドレスである。
【００３８】
サイズ３３０は、対応する領域ＩＤ３１０によって識別される所定の記憶領域のサイズをメガバイト単位で示すものである。
【００３９】
このメモリ保護テーブル３００によると、例えば、領域ＩＤ３１０が“１”となる所定の記憶領域は、開始アドレスが“０ｘ８０００＿００００”であって、そのサイズが２ＭＢ（Mega Byte）となる記憶領域であることを示している。
【００４０】
図４は、メモリ保護ユニット１０７によって記憶されるメモリ保護情報４００のデータ構造を示すデータ構造図である。
【００４１】
同図に示されるように、メモリ保護情報４００は、領域ＩＤ４１０とアクセス情報４２０とが対応付けられて構成されている。
【００４２】
領域ＩＤ４１０は、領域ＩＤ３１０と同様に、メモリ１０２の記憶領域の中の、所定の記憶領域を識別するための識別子である。
【００４３】
アクセス情報４２０は、対応する領域ＩＤ４１０によって識別される所定の記憶領域に対して行われるアクセスの制限を示す情報であって、（１）読出し、書込み共に可の旨を示す情報（以下、「Ｒ／Ｗ」と呼ぶ。）と（２）読出し可、書込み不可の旨を示す情報（以下、「ＲＯ」と呼ぶ。）と（３）読出し不可、書込み可の旨を示す情報（以下、「ＷＯ」と呼ぶ。）と（４）読出し、書込み共に不可の旨を示す情報（以下、「ＮＡ」と呼ぶ。）との４つの情報のうちのいずれか１つの情報となる。
【００４４】
このメモリ保護情報４００によると、例えば、領域ＩＤ４１０が“１”となる所定の領域は、読出し、書込み共に不可であり、領域ＩＤ４１０が“２”となる所定の領域は、読出し、書込み共に可であり、領域ＩＤ４１０が“３”となる所定の領域は、読出し可、書込み不可であり、領域ＩＤ４１０が“４”となる所定の領域は、読出し、書込み共に不可であること等を示している。
【００４５】
図５は、メモリ保護ユニット１０７による、メモリ１０２の記憶領域へのアクセスの制御が、複数の所定の領域に区分されて行われることを示す、メモリ１０２の記憶領域図である。
【００４６】
同図に示される通り、メモリ１０２の記憶領域は、メモリ保護ユニット１０７によってメモリ保護テーブルを参照されることで、領域ＩＤ３１０が“１”となる領域Ａ５０１、領域ＩＤ３１０が“２”となる領域Ｂ５０２、領域ＩＤ３１０が“３”となる領域Ｃ５０３、領域ＩＤ３１０が“４”となる領域Ｄ５０４等に区分される。
【００４７】
なお、メモリ保護ユニット１０７の行うメモリ１０２の記憶領域へのアクセス制御動作についてのより詳細な内容については、後程＜メモリアクセス処理＞の項目の部分で、フローチャートを用いて説明する。
【００４８】
再び図１に戻って、仮想計算機システム１００の構成についての説明を続ける。
【００４９】
タイマ１０８は、内部バス１２０に接続され、プロセッサ１０１によって制御される。
【００５０】
ＤＭＡＣ１０９は、内部バス１２０に接続され、第１インタフェース１２１に接続される入力装置１３１、第２インタフェース１２２に接続される出力装置１３２、及び第３インタフェース１２３に接続される外部の集積回路等と、メモリ１０２との間のデータ転送を、プロセッサ１０１を介さずに行う機能を有する。
【００５１】
内部バス１２０は、ＭＭＵ１０６とキャッシュメモリ１０５とメモリ保護ユニット１０７とタイマ１０８と第１インタフェース１２１と第２インタフェース１２２と第３インタフェース１２３とＤＭＡＣ１０９とに接続され、これら接続される回路間の信号を伝達する機能を有する。
【００５２】
第１インタフェース１２１と第２インタフェース１２２と第３インタフェース１２３とは、それぞれ内部バス１２０に接続され、それぞれ内部バス１２０と入力装置１３１との間の信号のやり取りを仲介する機能、内部バス１２０と出力装置１３２との間の信号のやり取りを仲介する機能、外部の集積回路等との間の信号のやり取りを仲介する機能を有する。
【００５３】
入力装置１３１は、キーボード、マウス、カメラ、センサー等を含み、第１インタフェース１２１に接続され、プロセッサ１０１によって制御され、キーボード、マウス、カメラ、センサー等を通じてユーザー操作等に応じたデータを生成し、ユーザー操作等が発生したこと示す通知や、生成したデータをプロセッサ１０１に送る機能を有する。
【００５４】
出力装置１３２は、ディスプレイ、スピーカー等を含み、第２インタフェース１２２に接続され、プロセッサ１０１によって制御され、ディスプレイ、スピーカー等を用いて文字列、画像、音声等を表示、出力する機能を有する。
【００５５】
上述の仮想計算機システム１００は、プロセッサ１０１が、ＲＯＭ１０３、ＲＡＭ１０４に記憶されているプログラムを実行することによって、様々な機能を実現する。
【００５６】
＜プログラムモジュール構成＞
図６は、ある時刻ｔ０において、プロセッサ１０１上で実行対象となるプログラムモジュール（以下、単に「モジュール」と呼ぶ。）を示すブロック図である。
【００５７】
同図において、モジュール群６００は、プロセッサ１０１において実行対象となっているモジュールの集合であって、モジュール群６００に含まれるモジュールのそれぞれは、対応するプログラムが、メモリ１０２の記憶領域に格納されている。
【００５８】
タスク１Ａ６１１、タスク２Ａ６１２、タスク３Ａ６１３、タスク２Ｂ６１４、タスク３Ｃ６１５のそれぞれは、プロセッサ１０１のユーザーモードで実行されるタスクである。
【００５９】
ＯＳ１Ａ６２１、ＯＳ１Ｂ６２２、ＯＳ１Ｃ６２３のそれぞれは、プロセッサ１０１のスーパーバイザモードにおいて実行されるマルチタスク対応オペレーティングシステムである。
【００６０】
ハイパーバイザ６３０は、プロセッサ１０１のスーパーバイザモードで実行されるハイパーバイザである。
【００６１】
仮想計算機システム１００において、アプリケーションプログラムは、スーパーバイザモードで実行されるマルチタスク対応オペレーティングシステムによって実行制御され、ユーザーモードで実行される。また、オペレーティングシステムは、ハイパーバイザによって実行制御され、スーパーバイザモードで実行される。
【００６２】
アプリケーションプログラムは、予め用意されたオペレーティングステム呼び出しルーチンを呼び出すことで、オペレーティングシステムに対して所定の処理を依頼することができる。また、オペレーティングシステムは、予め用意されたハイパーバイザ呼び出しルーチンを呼び出すことで、ハイパーバイザに対して所定の処理を依頼することができる。
【００６３】
また、仮想計算機システムの実行に際して発生した例外や、外部装置から発生した割込みは、ハイパーバイザで処理し、必要に応じて仮想計算機上のオペレーティングシステムに対して再配送する。
【００６４】
ＯＳ１Ａ６２１は、タスク１Ａ６１１とタスク２Ａ６１２とタスク３Ａ６１３とを実行制御し、ＯＳ１Ａ６２１とタスク１Ａ６１１とタスク２Ａ６１２とタスク３Ａ６１３とからなるシステムを第１仮想計算機６０１として機能させている。
【００６５】
ＯＳ１Ｂ６２２は、タスク２Ｂ６１４を実行制御し、ＯＳ１Ｂ６２２とタスク２Ｂ６１４とからなるシステムを第２仮想計算機６０２として機能させている。
【００６６】
ＯＳ１Ｃ６２３は、タスク３Ｃ６１５を実行制御し、ＯＳ１Ｃ６２３とタスク３Ｃ６１５とからなるシステムを第３仮想計算機６０３として機能させている。
【００６７】
ここで、第２仮想計算機６０２は、第１仮想計算機６０１を親仮想計算機として、フォーク方式で生成された子仮想計算機であり、第３仮想計算機６０３は、第１仮想計算機６０１を親仮想計算機として、フォーク方式で生成された子仮想計算機である。フォーク方式での仮想計算機の生成については後述する。
【００６８】
ハイパーバイザ６３０は、内部に、ＶＭ(Virtual Machine)管理テーブル保持部６４０とＶＭ実行制御部６５０とＶＭメモリ管理部６６０との３つのモジュールを含み、ＶＭ実行制御部６５０は、さらに、ＶＭ起動部６５１とＶＭ実行部６５２とＶＭ終了部６５３と要求受付部６５４との４つのモジュールを含み、ＶＭメモリ管理部は、さらに、保護設定情報保持部６６１と保護設定部６６２とＣＯＷ（Copy On Write）処理部６６３との３つのモジュールを含む。
【００６９】
ＶＭ管理テーブル保持部６４０は、予め定められたアプリグループ管理テーブルと、予め定められた仮想計算機管理テーブルと、ＶＭ実行部６５２によって生成される仮想計算機状態テーブルとを記憶する機能を有する。
【００７０】
図７は、ＶＭ管理テーブル保持部６４０によって記憶されるアプリグループ管理テーブル７００のデータ構造を示すデータ構造図である。
【００７１】
同図に示されるように、アプリグループ管理テーブル７００は、アプリグループＩＤ７１０とアプリケーションプログラム名７２０とが対応付けられて構成されている。
【００７２】
アプリケーションプログラム名７２０は、アプリケーションプログラムを特定するアプリケーションプログラムの名前である。
【００７３】
アプリグループＩＤ７１０は、対応するアプリケーションプログラム名７２０で特定されるアプリケーションプログラムが属するアプリケーションプログラムグループを識別するための識別子である。
【００７４】
このアプリグループ管理テーブル７００によると、例えば、メモ帳、電卓、端末設定という名前のアプリケーションプログラムは、アプリグループＩＤが“１”であるアプリケーションプログラムグループに属し、ＤＴＶ（Digital Television）アプリという名前のアプリケーションプログラムは、アプリグループＩＤが“２”であるアプリケーションプログラムグループに属することを示している。
【００７５】
図８は、ＶＭ管理テーブル保持部６４０によって記憶される仮想計算機管理テーブル８００のデータ構造を示すデータ構造図である。
【００７６】
同図に示されるように、仮想計算機管理テーブル８００は、ＶＭＩＤ８１０とアプリグループＩＤ８２０とが対応付けられて構成されている。
【００７７】
アプリグループＩＤ８２０は、アプリグループＩＤ７１０と同様の識別子である。
【００７８】
ＶＭＩＤ８１０は、対応するアプリグループＩＤ８２０によって識別されるアプリケーションプログラムグループに属するアプリケーションプログラムを実行するための仮想計算機を識別するための識別子である。
【００７９】
この仮想計算機管理テーブル８００によると、例えば、ＶＭＩＤ８１０が“１”で識別される仮想計算機は、アプリグループＩＤ８２０が“１”で特定されるアプリケーションプログラムグループに属するアプリケーションプログラムと、“４”で特定されるアプリケーションプログラムグループに属するアプリケーションプログラムとを実行するための仮想計算機であることを示している。
【００８０】
図９は、ＶＭ管理テーブル保持部６４０によって記憶される仮想計算機状態テーブル９００のデータ構造を示すデータ構造図である。
【００８１】
同図に示されるように、仮想計算機状態テーブル９００は、ＶＭＩＤ９１０と実行状態９２０とが対応付けられて構成されている。
【００８２】
ＶＭＩＤ９１０は、仮想計算機を識別するための識別子である。
【００８３】
実行状態９２０は、対応するＶＭＩＤ９１０によって識別される仮想計算機の実行状態を示す情報であって、（１）仮想計算機が起動されて時分割実行処理の対象となっており、新たなタスク処理を行うことができる状態の旨を示す情報（以下、「実行中」と呼ぶ。）と（２）仮想計算機が起動されていない状態の旨を示す情報（以下、「未起動」と呼ぶ。）と（３）仮想計算機が起動されて時分割実行処理の対象となっているが、その仮想計算機を終了させるための終了処理が実行中であり、新たなタスク処理を行うことができない状態の旨を示す情報（以下、「終了処理中」と呼ぶ。）との３つの情報のうちのいずれか１つの情報となる。ここで、仮想計算機を終了させるための終了処理とは、その仮想計算機を実行するために、ハイパーバイザと仮想計算機自身によって確保した記憶領域を解放する処理のことをいう。
【００８４】
再び図６に戻って、プロセッサ１０１上で実行対象となるモジュールの説明を続ける。
【００８５】
要求受付部６５４は、実行中の仮想計算機のオペレーティングシステムから、新たなアプリケーションプログラムの起動要求を受け付け、起動要求を受け付けた旨の信号をＶＭ起動部６５１へ送る機能を有する。
【００８６】
ＶＭ起動部６５１は、以下の３つの機能を有する。
【００８７】
機能１：新たなアプリケーションプログラムを実行させるために、親となる仮想計算機を基にして、フォーク方式で新たな子仮想計算機を生成する機能。
【００８８】
ここで、フォーク方式での仮想計算機の生成とは、親となる仮想計算機に割り当てられている全ての記憶領域と、新たに生成する仮想計算機に割り当てる全ての記憶領域とが、１対１に対応するように、親となる仮想計算機に割り当てられている記憶領域を、新たに生成する仮想計算機の記憶領域にマッピングすることによって、新たな仮想計算機を生成することである。なお、新たに仮想計算機が生成された後は、親となる仮想計算機の記憶領域と、新たに生成された仮想計算機の記憶領域とは、ＣＯＷ処理部６６３によってコピーオンライト方式で管理されることとなる。このＣＯＷ処理部６６３による記憶領域のコピーオンライト方式による管理についての詳細については後述する。
【００８９】
機能２：新たなアプリケーションプログラムを実行させるために新たな子仮想計算機を生成した場合に、ＶＭ管理テーブル保持部６４０に記憶されている、アプリグループ管理テーブル７００と仮想計算機管理テーブル８００とを参照して、その新たな子仮想計算機を識別するための識別子であるＶＭＩＤを、その新たな仮想計算機に付与して、ＶＭ管理テーブル保持部６４０に記憶されている仮想計算機状態テーブル９００を、付与したＶＭＩＤに対応付けられている実行状態９２０が“実行中”となるように更新する機能。
【００９０】
機能３：プロセッサ１０１が初期化されることで、ＶＭ起動部６５１が起動された場合に、他の全ての仮想計算機の親となる仮想計算機を生成し、生成した仮想計算機を識別するためのＶＭＩＤを“０”とする機能。
【００９１】
ＶＭ実行部６５２は、タイマ１０８を用いて、複数の仮想計算機を、時分割実行制御方式で実行制御する機能を有する。
【００９２】
ＶＭ終了部６５３は、仮想計算機から、その仮想計算機を終了させる要求である終了要求を受け付ける機能と、終了要求を受け付けた場合に、対象となる仮想計算機に対して前述の終了処理を実行し、その仮想計算機を終了させる機能を有する。
【００９３】
保護設定情報保持部６６１は、アクセス許可情報を記憶する機能を有する。
【００９４】
図１０は、保護設定情報保持部６６１によって記憶されるアクセス許可情報１０００のデータ構造を示すデータ構造図である。
【００９５】
同図に示されるように、アクセス許可情報１０００は、領域ＩＤ１０１０とＶＭＩＤ１０２０とアクセス情報（図中のＮＡ、Ｒ／Ｗ、ＲＯ等）とが対応付けられて構成されている。
【００９６】
このアクセス許可情報１０００は、予め定められたオリジナルアクセス情報の部分（領域ＩＤ１０１０が１〜６に対応する部分）と、ＣＯＷ処理部６６３によって、予め定められたオリジナルアクセス情報に対して追記された部分（領域ＩＤ１０１０が１〜６以外の領域ＩＤ１０１０に対応する部分）とによって構成される。
【００９７】
領域ＩＤ１０１０は、領域ＩＤ３１０と同様に、メモリ１０２の記憶領域の中の、所定の記憶領域を識別するための識別子である。
【００９８】
ＶＭＩＤ１０２０は、ＶＭＩＤ９１０と同様に、仮想計算機を識別するための識別子である。
【００９９】
アクセス情報は、対応するＶＭＩＤ１０２０によって識別される仮想計算機についての、対応する領域ＩＤ１０１０によって識別される所定の記憶領域に対して行われるアクセスの制限を示す情報であって、アクセス情報４２０と同様に、Ｒ／ＷとＲＯとＷＯとＮＡとの４つの情報のうちのいずれか１つの情報となる。
【０１００】
このアクセス許可情報１０００によると、例えば、ＶＭＩＤ１０２０が“１”で識別される仮想計算機について、領域ＩＤ１０１０が“１”となる所定の領域は、読出し、書込み共に不可であり、領域ＩＤ１０１０が“２”となる所定の領域は、読出し可、書込み不可であり、領域ＩＤ１０１０が“３”となる所定の領域は、読出し可、書込み不可であり、領域ＩＤ１０１０が“４”となる所定の領域は、読出し、書込み共に不可であること等が示されている。
【０１０１】
保護設定部６６２は、以下の２つの機能を有する。
【０１０２】
機能１：ＶＭ実行部６５２が実行する仮想計算機を切り替える場合に、保護設定情報保持部６６１によって記憶されているアクセス許可情報１０００から、切り替え先となる仮想計算機のＶＭＩＤ１０２０についての、領域ＩＤ１０１０それぞれについて対応付けられているアクセス情報を読み出して、メモリ保護情報４００（図４参照）を生成し、生成したメモリ保護情報４００で、メモリ保護ユニット１０７が記憶するメモリ保護情報４００を更新する機能。
【０１０３】
機能２：ＣＯＷ処理部６６３が保護設定情報保持部６６１によって記憶されているアクセス許可情報１０００を更新する場合に、保護設定情報保持部６６１によって記憶されているアクセス許可情報１０００から、現在実行中となっている仮想計算機のＶＭＩＤについての、領域ＩＤ１０１０それぞれについて対応付けられているアクセス情報を読み出して、メモリ保護情報４００を生成し、生成したメモリ保護情報４００で、メモリ保護ユニット１０７が記憶するメモリ保護情報４００を更新する機能。
【０１０４】
ＣＯＷ処理部６６３は、以下の２つの機能を有する。
【０１０５】
機能１：仮想計算機からの記憶領域へのアクセスについて、コピーオンライト方式によるアクセス管理を行う機能。
【０１０６】
ここで、コピーオンライト方式によるアクセス管理とは、親仮想計算機の記憶領域と、子仮想計算機の記憶領域とについて、いずれの仮想計算機によっても書き換えられていないページは、双方の仮想計算機によって共用させ、いずれかの仮想計算機によって書き換えられたページは、親仮想計算機が利用するページと、子仮想計算機が利用するページとを、互いに異なる記憶領域に割り当てて利用させるアクセス管理方法のことである。
【０１０７】
機能２：コピーオンライト方式によるアクセス管理を行うことで、仮想計算機に新たな記憶領域を割り当てた場合に、保護設定情報保持部６６１が保持するアクセス許可情報１０００を更新する機能。
【０１０８】
この際、アクセス許可情報１０００の更新が、新たに割り当てた記憶領域に対応する領域ＩＤ１０１０について、対象となる仮想計算機を識別するＶＭＩＤ１０２０に対応するアクセス情報がＲ／Ｗとなり、対象となる仮想計算機以外の全ての仮想計算機を識別するＶＭＩＤ１０２０に対応するアクセス情報がＮＡとなるように行う。
【０１０９】
なお、対象となる仮想計算機が未認証アプリケーションプログラムを実行する仮想計算機である場合に、親仮想計算機または認証アプリケーションプログラムを実行する仮想計算機から、その仮想計算機および未認証アプリケーションプログラムの実行を監視する等の目的で、新たに割り当てるメモリ領域のアクセス情報をＲＯ、または、Ｒ／Ｗとしても良い。
【０１１０】
ここで、図６に戻り、第２仮想計算機６０２と第３仮想計算機６０３とについての説明を補足する。
【０１１１】
第２仮想計算機６０２は、タスク２Ｂ６１４を実行させるために、ＶＭ起動部６５１によって、第１仮想計算機６０１を親仮想計算機としてフォーク方式で生成された仮想計算機である。
【０１１２】
また、第３仮想計算機６０３は、タスク３Ｃ６１５を実行させるために、ＶＭ起動部６５１によって、第１仮想計算機６０１を親仮想計算機としてフォーク方式で生成された仮想計算機である。
【０１１３】
タスク２Ｂ６１４は、第２仮想計算機６０２の生成に伴って、タスク２Ａ６１２を基に生成されたタスクであって、タスク２Ａ６１２の利用する記憶領域とタスク２Ｂの利用する記憶領域とは、ＣＯＷ処理部６６３によってコピーオンライト方式で管理されている。
【０１１４】
タスク３Ｃ６１５は、第３仮想計算機６０３の生成に伴って、タスク３Ａ６１３を基に生成されたタスクであって、タスク３Ａ６１３の利用する記憶領域とタスク３Ｃの利用する記憶領域とは、ＣＯＷ処理部６６３によってコピーオンライト方式で管理されている。
【０１１５】
ＯＳ１Ｂ６２２とＯＳ１Ｃ６２３とは、第１仮想計算機６０１のＯＳ１Ａ６２１に対応するオペレーティングシステムであって、ＯＳ１Ｂ６２２は、第２仮想計算機６０２の生成に伴って生成され、ＯＳ１Ｃ６２３は、第３仮想計算機６０３の生成に伴って生成され、ＯＳ１Ａ６２１の利用する記憶領域とＯＳ１Ｂ６２２の利用する記憶領域とＯＳ１Ｃ６２３の利用する記憶領域とは、ＣＯＷ処理部６６３によってコピーオンライト方式で管理されている。
【０１１６】
以上のように構成される仮想計算機システム１００は、以下に示すメモリ１０２の記憶領域の利用方法に従って、メモリ１０２の記憶領域を利用する。
【０１１７】
＜メモリ１０２の記憶領域の利用方法＞
ここでは、仮想計算機システム１００における、メモリ１０２の記憶領域の利用方法について、図面を用いて説明する。
【０１１８】
図１１は、時刻ｔ０において、メモリ１０２の記憶領域における、所定の領域に区分された記憶領域それぞれについての利用方法を示す、メモリ１０２の記憶領域図である。
【０１１９】
同図において、ハイパーバイザ割当領域１１０１は、領域ＩＤ３１０（図３参照）が“１”となる所定の記憶領域であって、図５における領域Ａ５０１に対応している。そして、この領域が、ハイパーバイザ６３０のコードが格納される領域となるように、又ハイパーバイザ６３０によって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部６６１によって記憶されるアクセス許可情報１０００のうちのオリジナルアクセス情報の部分によって、全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。
【０１２０】
オペレーティングシステム割当領域１１０２は、領域ＩＤ３１０が“２”となる所定の記憶領域であって、図５における領域Ｂ５０２に対応している。そして、この領域が、プロセッサ１０１の実行対象となるオペレーティングシステムのコードが格納される領域となるように、又プロセッサ１０１の実行対象となるオペレーティングシステムによって利用される記憶領域となるように、予め設定されている。また、この領域は、スーパーバイザモード２２０のプロセッサ１０１によってのみアクセス可能な領域として予め設定されている。さらに、保護設定情報保持部６６１によって記憶されるアクセス許可情報１０００のうちのオリジナルアクセス情報の部分によって、ＶＭＩＤ１０２０が“０”となる仮想計算機（すなわち、他の仮想計算機全ての親仮想計算機である第１仮想計算機６０１）について、読出し、書込み共に可の領域、この仮想計算機以外の全ての仮想計算機について、読出し可、書込み不可の領域と予め設定されている。
【０１２１】
第１種プログラム割当領域１１０３は、領域ＩＤ３１０が“３”となる所定の記憶領域であって、図５における領域Ｃ５０３に対応している。そして、この領域が、アプリグループＩＤが“１”であるアプリケーションプログラムグループに属するプログラム（以後、「第１種プログラム」と呼ぶ。）が格納される領域となるように、又第１種プログラムによって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部６６１によって記憶されるアクセス許可情報１０００のうちのオリジナルアクセス情報の部分によって、ＶＭＩＤ１０２０が“０”となる仮想計算機について、読出し、書込み共に可の領域、ＶＭＩＤ１０２０が“１”となる仮想計算機について、読出し可、書込み不可の領域、これら以外の全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。
【０１２２】
第２種プログラム割当領域１１０４は、領域ＩＤ３１０が“４”となる所定の記憶領域であって、図５における領域Ｄ５０４に対応している。そして、この領域が、アプリグループＩＤが“２”であるアプリケーションプログラムグループに属するプログラム（以後、「第２種プログラム」と呼ぶ。）が格納される領域となるように、又第２種プログラムによって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部６６１によって記憶されるアクセス許可情報１０００のうちのオリジナルアクセス情報の部分によって、ＶＭＩＤ１０２０が“０”となる仮想計算機について、読出し、書込み共に可の領域、ＶＭＩＤ１０２０が“２”となる仮想計算機について、読出し可、書込み不可の領域、これら以外の全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。
【０１２３】
第３種プログラム割当領域１１０５は、領域ＩＤ３１０が“５”となる所定の記憶領域であって、図５における領域Ｅ５０５に対応している。そして、この領域が、アプリグループＩＤが“３”であるアプリケーションプログラムグループに属するプログラム（以後、「第３種プログラム」と呼ぶ。）が格納される領域となるように、又第３種プログラムによって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部６６１によって記憶されるアクセス許可情報１０００のうちのオリジナルアクセス情報の部分によって、ＶＭＩＤ１０２０が“０”となる仮想計算機について、読出し、書込み共に可の領域、ＶＭＩＤ１０２０が“３”となる仮想計算機について、読出し可、書込み不可の領域、これら以外の全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。
【０１２４】
ＩＯ領域１１０６乃至１１０８は、領域ＩＤ３１０が“Ｋ”、“Ｌ”、“Ｍ”、となる所定の記憶領域であって、図５における領域Ｋ５０６、Ｌ５０７、Ｍ５０８に対応している。この領域は、仮想計算機間でデバイス制御を共有するための一方式である、共有するＩ／Ｏレジスタに対して、アプリケーションプログラムやオペレーティングシステムからのＩ／Ｏ操作要求時に例外を発生させるアクセス設定を行い、発生した例外をハイパーバイザで受信し、該当するＩ／Ｏ操作の調停および代理をハイパーバイザ行うＩ／Ｏエミュレーションを実現するための領域となるように、予め設定されている。さらに、保護設定情報保持部６６１によって記憶されるアクセス許可情報１０００のうちのオリジナルアクセス情報の部分によって、ＶＭＩＤ１０２０が“０”となる仮想計算機について、ＩＯ領域１１０６乃至１１０８は、読出し、書込み共に可の領域、この仮想計算機以外の全ての仮想計算機については、ＩＯ領域１１０６を、読出し、書込み共に共有を実現するための領域となるように、読出し、書込み共に不可の領域として、ＩＯ領域１１０７を、書込みのみ共有を実現するための領域となるように、読出し可、書込み不可の領域として、ＩＯ領域１１０８を読出しのみ共有を実現するための領域となるように、読出し不可、書込み可の領域として、予め設定されている。
【０１２５】
第２種プログラムの第１仮想計算機用割当領域１１１１は、領域ＩＤ３１０が“Ｎ”となる所定の記憶領域であって、図５における領域Ｎ５１１に対応している。この領域は、ＣＯＷ処理部６６３が、第２種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第１仮想計算機６０１に新たに割り当てることとなった領域であって、ＣＯＷ処理部６６３によって、保護設定情報保持部６６１によって記憶されるアクセス許可情報１０００が更新されることで設定されている。
【０１２６】
第２種プログラムの第２仮想計算機用割当領域１１１２は、領域ＩＤ３１０が“Ｎ＋１”となる所定の記憶領域であって、図５における領域Ｎ＋１（５１２）に対応している。この領域は、ＣＯＷ処理部６６３が、第２種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第２仮想計算機６０２に新たに割り当てることとなった領域であって、ＣＯＷ処理部６６３によって、保護設定情報保持部６６１によって記憶されるアクセス許可情報１０００が更新されることで設定されている。
【０１２７】
第３種プログラムの第１仮想計算機用割当領域１１１３は、領域ＩＤ３１０が“Ｎ＋２”となる所定の記憶領域であって、図５における領域Ｎ＋２（５１３）に対応している。この領域は、ＣＯＷ処理部６６３が、第３種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第１仮想計算機６０１に新たに割り当てることとなった領域であって、ＣＯＷ処理部６６３によって、保護設定情報保持部６６１によって記憶されるアクセス許可情報１０００が更新されることで設定されている。
【０１２８】
第３種プログラムの第３仮想計算機用割当領域１１１４は、領域ＩＤ３１０が“Ｎ＋３”となる所定の記憶領域であって、図５における領域Ｎ＋３（５１４）に対応している。この領域は、ＣＯＷ処理部６６３が、第３種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第３仮想計算機６０３に新たに割り当てることとなった領域であって、ＣＯＷ処理部６６３によって、保護設定情報保持部６６１によって記憶されるアクセス許可情報１０００が更新されることで設定されている。
【０１２９】
以下、図面を参照しながら、仮想計算機システム１００の行う動作について説明する。
【０１３０】
＜動作＞
ここでは、仮想計算機システム１００の行う動作のうち、特徴的な動作である、仮想計算機切替処理とメモリアクセス処理とアプリケーションプログラム実行処理とについて説明する。
【０１３１】
＜仮想計算機切替処理＞
仮想計算機切替処理は、プロセッサ１０１に実行させる仮想計算機を切り替える処理である。
【０１３２】
図１２は、仮想計算機切替処理のフローチャートである。
【０１３３】
仮想計算機切替処理は、仮想計算機の時分割実行処理を行っているＶＭ実行部６５２が、タイマ１０８を用いて計測している時間が所定時間を経過した場合、プロセッサ１０１が、プロセッサ１０１の外部から、現在実行されていない仮想計算機への割込み要求を受け付けた場合等に、ＶＭ実行部６５２によって開始される。
【０１３４】
仮想計算機切替処理が開始されると、ＶＭ実行部６５２は、切り替え先となる仮想計算機を特定する（ステップＳ１２００）。
【０１３５】
ステップＳ１２００の処理が終わると、ＶＭ実行部６５２は、プロセッサ１０１のレジスタ値を、現在実行中となっている仮想計算機に対応付けられた所定の記憶領域に退避して、現在実行中となっている仮想計算機を中断させる（ステップＳ１２２０）。ここで、この所定の記憶領域は、メモリ１０２の記憶領域のうちの、ハイパーバイザ１０２によってのみアクセス可能となるハイパーバイザ割当て領域１１０１に設けられている。
【０１３６】
ステップＳ１２２０の処理が終わると、ＶＭ実行部６５２は、キャッシュメモリ１０５に記憶されているデータについて、ライトバック処理した後にフラッシュする（ステップＳ１２３０）。なお、キャッシュフラッシュによる実行速度の低下を回避するために、仮想計算機毎に利用できるキャッシュ領域を制限し、ステップＳ１２３０を省略しても良い。
【０１３７】
ステップＳ１２３０の処理が終わると、保護設定部６６２は、ステップＳ１２００の処理においてＶＭ実行部６５２によって特定された切り替え先となる仮想計算機を識別するＶＭＩＤ１０２０（図１０参照）についての、領域ＩＤ１０１０それぞれについて対応付けられているアクセス情報を読み出して、メモリ保護情報４００（図４参照）を生成し、生成したメモリ保護情報４００で、メモリ保護ユニット１０７が記憶するメモリ保護情報４００を更新する（ステップＳ１２４０）。
【０１３８】
ステップＳ１２４０の処理が終わると、ＶＭ実行部６５２は、切り替え先となる仮想計算機に対応付けられた所定の記憶領域に退避されている、プロセッサ１０１のレジスタ値を、プロセッサ１０１のレジスタに復旧して（ステップＳ１２５０）、その仮想計算機を起動する（ステップＳ１２６０）。なお、仮想計算機毎に利用できるキャッシュ領域の制限し、ステップＳ１２３０を省略している場合、本ステップＳ１２６０において、キャッシュ領域を切り替える。
【０１３９】
ＶＭ実行部６５２がステップＳ１２６０の処理を終了すると、仮想計算機システム１００は、その仮想計算機切替処理を終了する。
【０１４０】
＜メモリアクセス処理＞
メモリアクセス処理は、メモリ保護ユニット１０７の行うメモリ１０２の記憶領域へのアクセス制御動作である。
【０１４１】
図１３は、メモリアクセス処理のフローチャートである。
【０１４２】
メモリアクセス処理は、メモリ保護ユニット１０７が、内部バス１２０を介してプロセッサ１０１からのメモリ１０２の記憶領域へのアクセス要求を受けることによって開始される。
【０１４３】
メモリアクセス処理が開始されると、メモリ保護ユニット１０７は、記憶しているメモリ保護テーブル３００（図３参照）を参照して、受けたアクセス要求のアドレスが、領域ＩＤ３１０によって識別される所定の領域のうちの、いずれの所定の領域に含まれているかを特定する（ステップＳ１３００）。
【０１４４】
ステップＳ１３００の処理が終わると、メモリ保護ユニット１０７は、記憶しているメモリ保護情報４００（図４参照）を参照して、受けたアクセス要求のアクセス種（書込みと読出しとのいずれか）と、特定された領域を識別する領域ＩＤ４１０に対応付けられているアクセス情報４２０とを比較して（ステップＳ１３１０）、受けたアクセス要求のアクセス種が、特定された領域を識別する領域ＩＤ４１０に対応付けられているアクセス情報４２０を満たしているか否かを調べる（ステップＳ１３２０）。
【０１４５】
ステップＳ１３２０の処理において、受けたアクセス要求のアクセス種が、特定された領域を識別する領域ＩＤ４１０に対応付けられているアクセス情報４２０を満たしている場合には（ステップＳ１３２０：Ｙｅｓ）、メモリ保護ユニット１０７は、受けたアクセス要求を実行する（ステップＳ１３３０）。
【０１４６】
ステップＳ１３２０の処理において、受けたアクセス要求のアクセス種が、特定された領域を識別する領域ＩＤ４１０に対応付けられているアクセス情報４２０を満たしていない場合には（ステップＳ１３２０：Ｎｏ）、メモリ保護ユニット１０７は、受けたアクセス要求を実行せずに、プロセッサ１０１に対して、メモリ領域へのアクセスを実行できなかった旨の例外通知を行う（ステップＳ１３４０）。
【０１４７】
メモリ保護ユニット１０７がステップＳ１３３０の処理を終了した場合、又はステップＳ１３４０の処理を終了した場合には、仮想計算機システム１００は、そのメモリアクセス処理を終了する。
【０１４８】
＜アプリケーションプログラム実行処理＞
アプリケーションプログラム実行処理は、要求受付部６５４が実行中の仮想計算機のオペレーティングシステムから、新たなアプリケーションプログラムの起動要求を受け付けた場合に、ＶＭ起動部６５１が、その新たなアプリケーションプログラムを実行させる仮想計算機を特定し、特定した仮想計算機に、その新たなアプリケーションプログラムの実行を指示する処理である。
【０１４９】
仮想計算機のオペレーティングシステムが、要求受付部６５４に新たなアプリケーションプログラムの起動要求を行う場合の例としては、例えば、仮想計算機システム１００を利用するユーザーから、入力装置１３１が操作されることで、オペレーティングシステムによって実行制御されているタスクが、オペレーティングシステムに、新たなアプリケーションプログラムの起動の要求を依頼した場合等がある。
【０１５０】
図１４は、アプリケーションプログラム実行処理のフローチャートである。
【０１５１】
アプリケーションプログラム実行処理は、要求受付部６５４が実行中の仮想計算機のオペレーティングシステムから、新たなアプリケーションプログラムの起動要求を受け付けることによって開始される。
【０１５２】
要求受付部６５４は、新たなアプリケーションプログラムの起動要求を受け付けると、起動要求を受け付けた旨の信号をＶＭ起動部６５１へ送る。
【０１５３】
ＶＭ起動部６５１は、起動要求を受け付けた旨の信号を受けると、ＶＭ管理テーブル保持部６４０によって記憶されるアプリグループ管理テーブル７００（図７参照）を参照して、そのアプリケーションプログラムが属するアプリケーションプログラムグループを特定し（ステップＳ１４００）、さらに、ＶＭ管理テーブル保持部６４０によって記憶される仮想計算機管理テーブル８００（図８参照）を参照して、特定したアプリケーショングループに属するアプリケーションプログラムを実行するための仮想計算機を特定する（ステップＳ１４１０）。
【０１５４】
ステップＳ１４１０の処理が終了すると、ＶＭ起動部６５１は、ＶＭ管理テーブル保持部６４０によって記憶される仮想計算機状態テーブル９００（図９参照）を参照して、特定した仮想計算機が実行中であるか否かを調べる（ステップＳ１４２０）。
【０１５５】
ステップＳ１４２０の処理において、特定した仮想計算機が実行中でない場合に（ステップＳ１４２０：Ｎｏ）、ＶＭ起動部６５１は、さらに、ＶＭ管理テーブル保持部６４０によって記憶される仮想計算機状態テーブル９００を参照して、特定した仮想計算機が終了処理中であるか否かを調べる（ステップＳ１４３０）。
【０１５６】
ステップＳ１４３０の処理において、特定した仮想計算機が終了処理中である場合には（ステップＳ１４３０：Ｙｅｓ）、ＶＭ起動部６５１は、特定した仮想計算機が終了処理中でなくなるまで待機する（ステップＳ１４３０：Ｙｅｓの処理を繰り返す）。
【０１５７】
ステップＳ１４３０の処理において、特定した仮想計算機が終了処理中でない場合には（ステップＳ１４３０：Ｎｏ）、ＶＭ起動部６５１は、特定した仮想計算機をフォーク方式で生成する（ステップＳ１４４０）。
【０１５８】
ステップＳ１４２０の処理において、特定した仮想計算機が実行中の場合（ステップＳ１４２０：Ｙｅｓ）と、ステップＳ１４４０の処理が終了した場合とに、ＶＭ起動部６５１は、特定した仮想計算機のオペレーティングシステムに、対象となるアプリケーションの実行を開始させる旨の信号を送る（ステップＳ１４５０）。
【０１５９】
ＶＭ起動部６５１がステップＳ１４５０の処理を終了すると、仮想計算機システム１００は、そのアプリケーションプログラム実行処理を終了する。
【０１６０】
＜考察＞
以下、具体例を用いて、仮想計算機システム１００の動作について考察する。
【０１６１】
具体例として、アプリケーションプログラム名７２０（図７参照）が「メモ帳」となるアプリケーションプログラム（以下、単に「メモ帳」と呼ぶ。）、及びメモ帳によって利用されるデータが、領域ＩＤ１０１０（図１０参照）が“３”となる所定の領域に格納され、アプリケーションプログラム名７２０が「メーラ」となるアプリケーションプログラム（以下、単に「メーラ」と呼ぶ。）、及びメーラによって利用されるデータが、領域ＩＤ１０１０が“５”となる所定の領域に格納されている場合において、メモ帳に、メーラを起動してアドレス帳に記録されている個人情報を外部に流出させるというマルウエアが含まれているときを考える。
【０１６２】
仮想計算機システム１００において、メモ帳は、アプリグループＩＤ７１０が“１”となるアプリケーションプログラムグループに属するため（アプリグループ管理テーブル７００（図７参照）を参照）、ＶＭＩＤ８１０が“１”となる仮想計算機（以下、「仮想計算機１」と呼ぶ。）によって実行される（仮想計算機管理テーブル８００（図８参照）を参照）。
【０１６３】
メモ帳を実行する仮想計算機１において、メモ帳に含まれるマルウエアが実行されてしまった場合に、このマルウエアは、メーラを起動させようと試みる。
【０１６４】
しかしながら、メーラ、及びメーラによって利用されるデータは、領域ＩＤ１０１０が“５”となる所定の領域に格納されており、メモリ保護ユニット１０７によって、仮想計算機１からのアクセスが禁止されている（図１０のアクセス許可情報１０００を参照）。このため、マルウエアは、メーラを起動させること、メーラを改竄すること、及びメーラによって利用されるデータにアクセスすることができない。よって、マルウエアはアドレス帳に記録されている個人情報を外部に流出させることはない。
【０１６５】
このように、本実施の形態１に係る仮想計算機システム１００は、仮想計算機が実行対象とするアプリケーションプログラムの中にマルウエアが含まれてしまっている場合であっても、そのマルウエアによって、マルウエアによって攻撃されたくないアプリケーションプログラムが攻撃されてしまう危険性を、従来よりも低く抑えることができる。
＜実施の形態２＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態１における仮想計算機システム１００の一部を変形した仮想計算機システム１５００について説明する。
【０１６６】
実施の形態２に係る仮想計算機システム１５００は、そのハードウエア構成が、実施の形態１に係る仮想計算機システム１００から一部変形されており、また、実行されるソフトウエアの一部が、実施の形態１に係る仮想計算機システム１００から一部変形されている。
【０１６７】
実施の形態１に係る仮想計算機システム１００は、メモリ１０２の記憶領域へのアクセスを制御するメモリ保護ユニット１０７を備える構成の例であったが、実施の形態２に係る仮想計算機システム１５００は、ハードウエアとしてのメモリ保護ユニットを備えず、プロセッサによって実行されるハイパーバイザが、メモリ１０２の記憶領域へのアクセスを制御する機能を有している場合の例である。
【０１６８】
以下、本実施の形態２に係る仮想計算機システム１５００の構成について、図面を参照しながら、実施の形態１に係る仮想計算機システム１００の構成との相違点を中心に説明する。
【０１６９】
＜ハードウエア構成＞
図１５は、仮想計算機システム１５００の主要なハードウエア構成を示すブロック図である。
【０１７０】
同図に示す通り、仮想計算機システム１５００は、仮想計算機システム１００と同様に、ハードウエアとしてはコンピュータ装置であり、実施の形態１に係る仮想計算機システム１００から、集積回路１１０が集積回路１５１０に変形されたものである。
【０１７１】
＜プログラムモジュール構成＞
図１６は、ある時刻ｔ０において、プロセッサ１０１上で実行対象となるモジュールを示すブロック図である。
【０１７２】
同図において、モジュール群１６００は、プロセッサ１０１において実行対象となっているモジュールの集合であって、モジュール群１６００に含まれるモジュールのそれぞれは、対応するプログラムが、メモリ１０２の記憶領域に格納されている。
【０１７３】
仮想計算機システム１５００におけるモジュール群１６００は、実施の形態１に係る仮想計算機システム１００におけるモジュール群６００から、ハイパーバイザ６３０がハイパーバイザ１６３０に変更されたものとなっている。
【０１７４】
ハイパーバイザ１６３０は、実施の形態１に係るハイパーバイザ６３０から、ＶＭメモリ管理部６６０がＶＭメモリ管理部１６６０に変更されるように変形されている。
【０１７５】
ＶＭメモリ管理部１６６０は、実施の形態１に係るＶＭメモリ管理部６６０に対して、仮想ＭＭＵ１６７０とメモリ保護部１６８０とが追加されるように変形されている。
【０１７６】
仮想ＭＭＵ１６７０は、ＭＭＵ１０６と協働して、メモリ１０２の物理記憶領域のアドレスを指定する物理アドレスと、プロセッサ１０１の利用する論理記憶領域のアドレスを指定する論理アドレスとの変換機能を有する。
【０１７７】
仮想計算機システム１５００は、仮想計算機毎に個別に論理記憶領域を割り当てて仮想計算機を実行させる（以下、この仮想計算機毎に個別に割り当てる論理記憶領域のことを、「一次論理記憶領域」と呼び、一次論理記憶領域のアドレスを、「一次論理アドレス」と呼ぶ。）ように設定されており、この一次論理アドレスは、ＭＭＵ１０６によって、メモリ１０２の利用する物理アドレスに変換されるように設定されている。
【０１７８】
この仮想ＭＭＵ１６７０の有する機能は、各仮想計算機が、自仮想計算機内で利用している論理記憶アドレス（以下、この仮想計算機が自仮想計算機内で利用する論理記憶領域のことを「二次論理記憶領域」と呼び、二次論理記憶領域のアドレスを、「二次論理アドレス」と呼ぶ。）を、上述の一次論理アドレスに変換する機能である。
【０１７９】
メモリ保護部１６８０は、内部にメモリ保護テーブル３００（図３参照）とメモリ保護情報４００（図４参照）とを記憶する機能と、記憶するメモリ保護テーブル３００とメモリ保護情報４００とを参照して、仮想計算機が一次論理アドレスを用いて行うメモリ１０２の物理記憶領域へのアクセスを制御する機能とを有する。
【０１８０】
ここで、メモリ保護部１６８０の、メモリ保護テーブル３００とメモリ保護情報４００とを参照して行うメモリ１０２の記憶領域へのアクセス制御は、実施の形態１に係るメモリ保護ユニット１０７の行うメモリ１０２の記憶領域へのアクセスの制御（実施の形態１における、＜メモリアクセス処理＞項目参照）と同様のものであり、メモリ保護ユニット１０７をメモリ保護部１６８０と置き換えたものである。よって、ここではその説明を省略する。
【０１８１】
上述の構成の仮想計算機システム１５００は、実施の形態１に係る仮想計算機システム１００と同様に、仮想計算機が実行対象とするアプリケーションプログラムの中に、マルウエアが含まれてしまっている場合であっても、本来実行されたくないアプリケーションプログラムが実行されてしまう危険性を、従来よりも低く抑えることができる。
＜実施の形態３＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態１における仮想計算機システム１００の一部を変形した変形仮想計算機システムについて説明する。
【０１８２】
実施の形態３に係る変形仮想計算機システムは、そのハードウエア構成が、実施の形態１に係る仮想計算機システム１００と同一であるが、実行されるソフトウエアの一部が、実施の形態１に係る仮想計算機システム１００から一部変形されている。
【０１８３】
この変形仮想計算機システムは、仮想計算機が複数実行されている場合であっても、実行している仮想計算機の中の１つの仮想計算機のみ（ここでは、第１仮想計算機）がディスプレイ、キーボード等のデバイスを直接制御し、それ以外の仮想計算機は、第１仮想計算機にデバイスの制御を依頼することで、間接的にデバイスを制御するという構成の仮想計算機システムの例である。
【０１８４】
以下、本実施の形態３に係る変形仮想計算機システムの構成について、図面を参照しながら、実施の形態１に係る仮想計算機システム１００の構成との相違点を中心に説明する。
【０１８５】
図１７は、ある時刻ｔ０において、プロセッサ１０１上で実行対象となるモジュールを示すブロック図である。
【０１８６】
同図において、モジュール群１７００は、プロセッサ１０１において実行対象となっているモジュールの集合であって、モジュール群１７００に含まれるモジュールのそれぞれは、対応するプログラムが、メモリ１０２の記憶領域に格納されている。
【０１８７】
変形仮想計算機システムにおけるモジュール群１７００は、実施の形態１に係る仮想計算機システム１００におけるモジュール群６００から、第１仮想計算機６０１が第１仮想計算機１７０１に変更され、第２仮想計算機６０２が第２仮想計算機１７０２に変更され、第３仮想計算機６０３が第３仮想計算機１７０３に変更されている。
【０１８８】
第１仮想計算機１７０１は、ＶＭＩＤ１０２０が“０”となる、他の全ての仮想計算機の親仮想計算機であって、実施の形態１における第１仮想計算機６０１から、ＯＳ１Ａ６２１が、デバイスドライバ１７３１を含むＯＳ１Ａ１７２１に変更されるように変形されている。
【０１８９】
第２仮想計算機１７０２は、タスク２Ｂ６１４を実行させるために、ＶＭ起動部６５１によって、第１仮想計算機１７０１を親仮想計算機としてフォーク方式で生成された仮想計算機であって、実施の形態１における第２仮想計算機６０２から、ＯＳ１Ｂ６２２が、デバイスドライバ１７３２を含むＯＳ１Ｂ１７２２に変更されるように変形されている。
【０１９０】
第３仮想計算機１７０３は、タスク３Ｃ６１５を実行させるために、ＶＭ起動部６５１によって、第１仮想計算機１７０１を親仮想計算機としてフォーク方式で生成された仮想計算機であって、実施の形態１における第３仮想計算機６０３から、ＯＳ１Ｃ６２３が、デバイスドライバ１７３３を含むＯＳ１Ｃ１７２３に変更されるように変形されている。
【０１９１】
デバイスドライバ１７３１は、フロントエンド部１７４１とバックエンド部１７４２とネイティブ部１７４３とから構成されている。なお、デバイスドライバとは、いわゆるデバイスを制御するプログラムのことであるが、ここでは、デバイス制御処理、ファイルシステム処理、プロセス間通信処理、仮想計算機間通信処理等の、仮想計算機の入出力機能を実現するプログラムをも含んでいる。
【０１９２】
ネイティブ部１７４３は、対象となるデバイスを直接制御するための命令コード等によって構成され、デバイスを制御する機能を有する。
【０１９３】
このプログラムが格納されているメモリ１０２の記憶領域は、保護設定情報保持部６６１によって記憶されるアクセス許可情報１０００（図１０参照）によって、第１仮想計算機１７０１対してのみアクセス情報がＲ／Ｗとなり、他の仮想計算機に対してアクセス情報がＮＡとなるように設定されている。これにより、ネイティブ部１７４３は、第１仮想計算機１７０１以外の仮想計算機によって実行されることはない。
【０１９４】
バックエンド部１７４２は、自らを含む仮想計算機に含まれるフロントエンド部、及び、自らを含む仮想計算機以外の仮想計算機に含まれるフロントエンド部とサーバクライアントモデルで通信する機能と、通信するフロントエンド部から、ネイティブ部１７４３の操作コマンドを受け取り、受け取ったネイティブ部１７４３の操作コマンドをネイティブ部１７４３に出力する機能と、ネイティブ部１７４３から出力されたデータを受け取り、通信するフロントエンド部へ、受け取ったデータを出力する機能とを有する。
【０１９５】
このプログラムが格納されているメモリ１０２の記憶領域は、保護設定情報保持部６６１によって記憶されるアクセス許可情報１０００によって、第１仮想計算機１７０１対してのみアクセス情報がＲ／Ｗとなり、他の仮想計算機に対してアクセス情報がＮＡとなるように設定されている。これにより、バックエンド部１７４２は、第１仮想計算機１７０１以外の仮想計算機によって実行されることはない。
【０１９６】
フロントエンド部１７４１は、バックエンド部１７４２とサーバクライアントモデルで通信する機能と、通信するバックエンド部１７４２へ、ネイティブ部１７４３の操作コマンドを送る機能と、通信するバックエンド部から出力されたデータを受け取る機能とを有する。
【０１９７】
このプログラムが格納されているメモリ１０２の記憶領域は、保護設定情報保持部６６１によって記憶されるアクセス許可情報１０００によって、第１仮想計算機１７０１対してのみアクセス情報がＲ／Ｗとなり、他の仮想計算機に対してアクセス情報がＲＯとなるように設定されている。これにより、フロントエンド部は、全ての仮想計算機によって実行されることができる（図１７中のフロントエンド部１７４１、フロントエンド部１７４４、フロントエンド部１７４５に対応）。また、複数の仮想計算機によってフロントエンド部が実行される場合には、フロントエンド部が格納されているメモリ１０２の記憶領域は、ＣＯＷ処理部６６３によってコピーオンライト方式で管理されることとなる。
【０１９８】
デバイスドライバ１７３２は、第２仮想計算機１７０２の生成に伴って、デバイスドライバ１７３１を基に生成されたものであって、フロントエンド部１７４１を基に生成されたフロントエンド部１７４４を含んでいる。
【０１９９】
デバイスドライバ１７３２は、ネイティブ部とバックエンド部とを含んでいないが、これは、ネイティブ部１７４３が格納されているメモリ１０２の記憶領域とバックエンド部１７４２が格納されているメモリ１０２の記憶領域とは、第２仮想計算機１７０２から読出し、書込み共に不可となっているため、デバイスドライバ１７３２は、ネイティブ部とバックエンド部とを実行することができなくなっているためである。
【０２００】
デバイスドライバ１７３３は、第３仮想計算機１７０３の生成に伴って、デバイスドライバ１７３１を基に生成されたものであって、フロントエンド部１７４１を基に生成されたフロントエンド部１７４５を含んでいる。
【０２０１】
デバイスドライバ１７３３は、ネイティブ部とバックエンド部とを含んでいないが、これは、ネイティブ部１７４３が格納されているメモリ１０２の記憶領域とバックエンド部１７４２が格納されているメモリ１０２の記憶領域とは、第３仮想計算機１７０３から読出し、書込み共に不可となっているため、デバイスドライバ１７３３は、ネイティブ部とバックエンド部とを実行することができなくなっているためである。
【０２０２】
＜デバイス制御例＞
ここでは、ネイティブ部１７４３を含まない仮想計算機、例えば第２仮想計算機１７０２が、デバイスを間接的に制御する場合について説明する。
【０２０３】
第２仮想計算機１７０２は、デバイスを間接的に制御する場合に、まずフロントエンド部１７４４にネイティブ部１７４３の操作コマンドを出力する。フロントエンド部１７４４は、ネイティブ部１７４３の操作コマンドを受けると、サーバクライアントモデルでバックエンド部１７４２と通信し、ネイティブ部１７４３の操作コマンドをバックエンド部１７４２に送る。バックエンド部１７４２は、ネイティブ部１７４３の操作コマンドを受けると、ネイティブ部１７４３に、ネイティブ部１７４３の操作コマンドを出力する。これにより、第２仮想計算機は、デバイスを操作することとなる。
【０２０４】
このように、本実施の形態３に係る変形仮想計算機システムによれば、複数の仮想計算機が実行対象となっている場合であっても、第１仮想計算機１７０１のネイティブ部１７４３のみがデバイスを直接制御することとなり、デバイス制御を排他的に行うことができる。
＜補足＞
以上、本発明に係る仮想計算機システムの一実施形態として、実施の形態１、実施の形態２、実施の形態３において、３つの仮想計算機システムの例について説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示した通りの仮想計算機システムに限られないことはもちろんである。
（１）実施の形態１において、仮想計算機システム１００が１つのプロセッサを備える場合の例について説明したが、ハイパーバイザが複数の仮想計算機の実行制御をすることができれば、必ずしもプロセッサの数は１つに限られる必要はなく、例えば、２つ、３つといった複数個であっても構わない。プロセッサの数が複数個の場合には、ハイパーバイザは、仮想計算機の実行を必ずしも時分割で行う構成である必要はなく、複数の仮想計算機を並列に実行させる構成であっても構わない。
（２）実施の形態１において、プロセッサ１０１とメモリ１０２とキャッシュメモリ１０５とＭＭＵ１０６とメモリ保護ユニット１０７とタイマ１０８とＤＭＡＣ１０９と内部バス１２０と第１インタフェース１２１と第２インタフェース１２２と第３インタフェース１２３とが１つの集積回路１１０に集積されている場合の例について説明したが、これらの回路が必ずしも１つの集積回路に集積されている必要はない。例えば、プロセッサ１０１とキャッシュメモリ１０５とが第１の集積回路に集積され、その他の回路が第２の集積回路に集積される構成されていても構わないし、例えば、各回路がそれぞれ互いに異なる集積回路に集積される構成であっても構わない。
（３）実施の形態１において、プロセッサ１０１が２つの動作モードを備える構成の場合を例として説明したが、アプリケーションプログラムを実行するモードとオペレーティングシステムを実行するモードとよりも高い特権モードでハイパーバイザを実行することができる構成であれば、必ずしも動作モードの数は２つに限られる必要はなく、例えば、３つ以上であっても構わない。その場合、ハイパーバイザを実行する動作モードを、オペレーティングシステムを実行するよりも高い特権モードとすることができ、ハイパーバイザにおける仮想ＭＭＵ処理や、Ｉ／Ｏエミュレーション処理のオーバーヘッドを大幅に軽減することができる。
（４）実施の形態１において、第１仮想計算機６０１が、他の全ての仮想計算機の親となる構成の場合を例として説明したが、生成される子仮想計算機のそれぞれついて、メモリ１０２の記憶領域へのアクセス制限を実現することができれば、必ずしも親となる仮想計算機が第１仮想計算機６０１に限られる必要はなく、例えば、ある仮想計算機の子仮想計算機となっている仮想計算機が、他の仮想計算機の親となり得る構成であっても構わない。
（５）実施の形態１において、仮想計算機の生成をフォーク形式で行う構成の場合を例として説明した。これは、仮想計算機の生成をフォーク形式で行うことによって、メモリ１０２の記憶領域が効率的に利用されることとなるためである。
【０２０５】
しかしながら、メモリ１０２の記憶領域の利用効率の非効率性を許容することができれば、親となる仮想計算機を元にして子仮想計算機を生成する場合に、必ずしもフォーク形式で行う必要はない。
【０２０６】
一例として、親となる仮想計算機に割り当てられている全ての記憶領域と、新たに生成する仮想計算機に割り当てる全ての記憶領域とが、１対１に対応するように、親となる仮想計算機に割り当てられている記憶領域を、新たに生成する仮想計算機の記憶領域にコピーすることによって、新たな仮想計算機を生成する形式等が考えられる。
【０２０７】
また、このように、子仮想計算機の記憶領域が親仮想計算機の記憶領域からコピーされたものである場合等には、これらの記憶領域は、必ずしもコピーオンライト方式で管理される必要はなくなる。
（６）実施の形態２において、二次論理アドレスと一次論理アドレスとの変換を行う機能を有する仮想ＭＭＵ１６７０が、ハイパバイザ１６３０の内部に含まれている構成の場合を例として説明したが、二次論理アドレスと一次論理アドレスとの変換を行う機能を実現することができれば、必ずしもハイパバイザ１６３０の内部に仮想ＭＭＵ１６７０が含まれている必要はなく、例えば、集積回路１５１０内に、二次論理アドレスと一次論理アドレスとの変換を行う機能を有するハードウエアを備える構成であっても構わない。
（７）以下、さらに本発明の一実施形態に係る仮想計算機システムの構成及びその変形例と各効果について説明する。
【０２０８】
（ａ）本発明の一実施形態に係る仮想計算機システムは、記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第１種プログラムを格納する第１記憶領域と、第２種プログラムを格納する第２記憶領域とを含み、前記ハイパーバイザは、仮想計算機から、第１種プログラム又は第２種プログラムの起動要求を受け付けるための起動要求受付部と、前記プロセッサによって実行される前記起動要求受付部が、第１種プログラムの起動要求を受け付けた場合に、当該第１種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第１種仮想計算機として管理し、第２種プログラムの起動要求を受け付けた場合に、当該第２種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第２種仮想計算機として管理するための仮想計算機生成部とを含み、前記アクセス制御部は、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第１種仮想計算機として管理されている仮想計算機からの前記第２記憶領域へのアクセスが禁止されるように行うことを特徴とする。
【０２０９】
上述の構成を備える本実施形態に係る仮想計算機システムによると、未認証アプリケーションプログラムを第１種プログラムとして第１記憶領域に格納し、認証済アプリケーションプログラムを第２種プログラムとして第２記憶領域に格納することで、未認証アプリケーションプログラムを実行する仮想計算機は、認証済アプリケーションプログラムにアクセスすることができなくなる。
【０２１０】
従って、仮想計算機が実行対象とするアプリケーションプログラムの中に、認証済アプリケーションプログラムと、未認証アプリケーションプログラムとが混在している場合であっても、未認証アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、認証済アプリケーションプログラムが攻撃されてしまう危険性を従来よりも低く抑えることができる。
【０２１１】
図１８は上記変形例における仮想計算機システム１８００の概略構成図である。
【０２１２】
同図に示されるように、仮想計算機システム１８００は、プロセッサ１８０１とアクセス制御部１８０２と記憶装置１８０３とから構成される。そして、記憶装置１８０３は、第１記憶領域１８１１と第２記憶領域１８１２とを含み、ハイパーバイザ１８１３がロードされている。また、ハイパーバイザ１８１３は、起動要求受付部１８２２と仮想計算機生成部１８２２とを含んでいる。
【０２１３】
プロセッサ１８０１は、アクセス制御部１８０２を介して、記憶装置１８０３に接続されるプロセッサである。一例として、実施の形態１におけるプロセッサ１０１（図１参照）として実現される。
【０２１４】
記憶装置１８０３は、第１記憶領域１８１１と第２記憶領域１８１２とを含む。一例として、実施の形態１におけるメモリ１０２（図１参照）として実現される。
【０２１５】
第１記憶領域１８１１は、第１種プログラムを格納する記憶領域である。この第１記憶領域１８１１は、一例として、実施の形態１における領域Ｃ５０３（図５参照）として実現される。また、第１種プログラムは、一例として、実施の形態１におけるメモ帳（図７参照）として実現される。
【０２１６】
第２記憶領域１８１２は、第２種プログラムを格納する記憶領域である。この第２記憶領域１８１２は、一例として、実施の形態１における領域Ｅ５０５（図５参照）として実現される。また、第２種プログラムは、一例として実施の形態１におけるメーラ（図７参照）として実現される。
【０２１７】
ハイパーバイザ１８１３は、プロセッサ１８０１上で実行され、プロセッサ１８０１に複数の仮想計算機の実行制御をさせるハイパーバイザであって、起動要求受付部１８２２と仮想計算機生成部１８２２とを含む。このハイパーバイザ１８１３は、一例として、実施の形態１におけるハイパーバイザ６３０（図６参照）として実現される。
【０２１８】
起動要求受付部１８２２は、仮想計算機から、第１種プログラム又は第２種プログラムの起動要求を受け付けるためのコード群である。一例として、実施の形態１における要求受付部６５４として実現される。
【０２１９】
仮想計算機生成部１８２３は、１８０１プロセッサによって実行される起動要求受付部１８２２が、第１種プログラムの起動要求を受け付けた場合に、当該第１種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第１種仮想計算機として管理し、第２種プログラムの起動要求を受け付けた場合に、当該第２種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第２種仮想計算機として管理するためのコード群である。一例として、実施の形態１におけるＶＭ起動部６５１とＶＭ実行部６５２として実現される。
【０２２０】
アクセス制御部１８０２は、仮想計算機からの、記憶装置１８０３の記憶領域へのアクセスを、プロセッサ１８０１によって実行される仮想計算機生成部１８２３によって前記第１種仮想計算機として管理されている仮想計算機からの前記第２記憶領域へのアクセスが禁止されるように制御する機能を有する。一例として、実施の形態１におけるメモリ保護ユニット１０７（図１参照）として実現される。
【０２２１】
（ｂ）また、前記アクセス制御部は、前記第２記憶領域のアドレスを特定する第２領域特定情報を記憶するための第２領域特定情報記憶部を有し、前記アクセスの制御を、前記第２領域特定情報記憶部に記憶されている前記第２領域特定情報を参照して行うとしてもよい。
【０２２２】
このような構成にすることによって、アクセス制御部は、第２記憶領域のアドレスを、アクセス制御部の外部を参照することなく特定することができるようになる。
【０２２３】
（ｃ）また、前記記憶装置は、プログラムを特定する情報と、プログラムの種別を特定する情報とを対応付けるプログラム対応情報を記憶するためのプログラム対応情報記憶領域を含み、前記仮想計算機生成部は、前記プロセッサによって実行される前記起動要求受付部が、仮想計算機から、プログラムの起動要求を受け付けた場合に、当該プログラムが、いずれの種別のプログラムであるかを、前記プログラム対応情報記憶領域に記憶されているプログラム対応情報に基づいて特定するためのプログラム種特定部を含み、前記プロセッサによって実行される前記起動要求受付部が、第１種プログラムの起動要求を受け付けた場合に行う、前記生成した仮想計算機に対する第１種仮想計算機としての管理と、前記プロセッサによって実行される前記起動要求受付部が、第２種プログラムの起動要求を受け付けた場合に行う、前記生成した仮想計算機に対する第２種仮想計算機としての管理とを、前記プログラム種特定部によって特定されたプログラムの種別に基づいて行うとしてもよい。
【０２２４】
このような構成にすることによって、仮想計算機生成部は、プログラム対応情報記憶領域に記憶されているプログラム対応情報に基づいて、仮想計算機の種別管理を行うことができるようになる。
【０２２５】
（ｄ）また、前記仮想計算機生成部は、前記プロセッサによって実行される前記起動要求受付部が、仮想計算機から、第１種プログラム又は第２種プログラムの起動要求を受け付けた場合において、仮想計算機を生成するときに、当該生成する仮想計算機に対する、前記記憶装置における記憶領域の割り当てを、前記起動要求の要求元仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行うとしてもよい。
【０２２６】
このような構成にすることによって、新たな仮想計算機の生成をフォーク方式で行われることとなるため、記憶装置の記憶領域の利用効率を向上することができるようになる。
【０２２７】
（ｅ）また、前記ハイパーバイザは、前記プロセッサによって実行される前記仮想計算機生成部が、第１の仮想計算機に対する記憶領域の割り当てを、第２の仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行った場合に、前記第１の仮想計算機と前記第２の仮想計算機とによって行われる、前記記憶装置における記憶領域へのアクセスが、コピーオンライト方式で行われるように、仮想計算機からの、前記記憶装置における記憶領域へのアクセスを制御するためのコピーオンライト実行制御部を含むとしてもよい。
【０２２８】
このような構成にすることによって、親仮想計算機による記憶領域へのアクセスと、親仮想計算機を元にしてフォーク方式で生成された子仮想計算機による記憶領域への管理とがコピーオンライト方式で行われることとなるため、記憶装置の記憶領域の利用効率を向上することができるようになる。
【０２２９】
（ｆ）また、前記第１記憶領域は、さらに、前記第１種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含み、前記第２記憶領域は、さらに、前記第２種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含むとしてもよい。
【０２３０】
このような構成にすることによって、第１種プログラムを実行する仮想計算機に、第２種プログラムを実行する仮想計算機が利用するデータを、利用させないようにすることができるようになる。
【０２３１】
（ｇ）また、前記記憶装置は、デバイスドライバを記憶するデバイスドライバ記憶領域と、前記デバイスドライバ記憶領域に記憶されている前記デバイスドライバを実行する仮想計算機以外の仮想計算機によって実行されることで、前記デバイスドライバを実行する仮想計算機と通信し、前記デバイスドライバを実行する仮想計算機に、デバイスの制御をさせるためのデバイス制御プログラムを記憶するデバイス制御プログラム記憶領域とを含み、前記アクセス制御部は、前記アクセスの制御を、実行制御対象である仮想計算機の中の１つの仮想計算機に限って、前記デバイスドライバ記憶領域へのアクセスが許可されるように行うとしてもよい。
【０２３２】
このような構成にすることによって、複数の仮想計算機によるデバイス制御を排他的に行うことができる。
【産業上の利用可能性】
【０２３３】
本発明は、仮想計算機システムに広く利用することができる。
【符号の説明】
【０２３４】
１００  仮想計算機システム
１１０  集積回路
１０１  プロセッサ
１０２  メモリ
１０３  ＲＯＭ
１０４  ＲＡＭ
１０５  キャッシュメモリ
１０６  ＭＭＵ
１０７  メモリ保護ユニット
１０８  タイマ
１０９  ＤＭＡＣ
１２０  内部バス
６００  モジュール群
６０１  第１仮想計算機
６０２  第２仮想計算機
６０３  第３仮想計算機
６３０  ハイパーバイザ
６４０  ＶＭ管理テーブル保持部
６５０  ＶＭ実行制御部
６５１  ＶＭ起動部
６５２  ＶＭ実行部
６５３  ＶＭ終了部
６５４  要求受付部
６６０  ＶＭメモリ管理部
６６１  保護設定情報保持部
６６２  保護設定部
６６３  ＣＯＷ処理部
【図１】
2012117465.tif 000003
【図２】
2012117465.tif 000004
【図３】
2012117465.tif 000005
【図４】
2012117465.tif 000006
【図５】
2012117465.tif 000007
【図６】
2012117465.tif 000008
【図７】
2012117465.tif 000009
【図８】
2012117465.tif 000010
【図９】
2012117465.tif 000011
【図１０】
2012117465.tif 000012
【図１１】
2012117465.tif 000013
【図１２】
2012117465.tif 000014
【図１３】
2012117465.tif 000015
【図１４】
2012117465.tif 000016
【図１５】
2012117465.tif 000017
【図１６】
2012117465.tif 000018
【図１７】
2012117465.tif 000019
【図１８】
2012117465.tif 000020
【手続補正書】
【提出日】平成25年11月21日(2013.11.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、
前記ハイパーバイザは、
プログラムの起動要求を受け付けるための起動要求受付部と、
前記起動要求受付部により受け付けられた起動要求に係るプログラムを実行するための仮想計算機を生成するための仮想計算機生成部とを含み、
前記仮想計算機生成部は、前記起動要求受付部により受け付けられた起動要求に係るプログラムの種別を特定し、当該特定したプログラムの種別に基づいて、生成した仮想計算機を管理する
ことを特徴とする仮想計算機システム。
【請求項２】
前記仮想計算機生成部は、前記仮想計算機の管理を、生成した仮想計算機を異なる種別として管理するように行う
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項３】
前記仮想計算機生成部は、前記種別が異なるプログラムを実行する仮想計算機間では、少なくとも前記記憶装置においてアクセス可能な領域を異ならせる
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項４】
前記仮想計算機システムは、仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、
前記プログラムは、第１種プログラムと第２種プログラムとを含み、
前記記憶装置は、第１種プログラムを格納する第１記憶領域と、第２種プログラムを格納する第２記憶領域とを含み、
前記仮想計算機生成部は、第１種プログラムの起動要求を受け付けた場合に、当該第１種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第１種仮想計算機として管理し、
前記アクセス制御部は、前記アクセスの制御を、前記仮想計算機生成部によって前記第１種仮想計算機として管理されている仮想計算機からの前記第２記憶領域へのアクセスが禁止されるように行う
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項５】
第１種プログラムは、マルウエアが含まれていないと認証されていない未認証アプリケーションプログラムであり、
第２種プログラムは、マルウエアが含まれていないと認証されている認証済アプリケーションプログラムであり、
前記アクセス制御部は、前記アクセスの制御を、前記未認証アプリケーションプログラムを実行する仮想計算機から前記認証済アプリケーションプログラムの記憶領域へのアクセスが禁止されるように行う
ことを特徴とする請求項４記載の仮想計算機システム。
【請求項６】
前記仮想計算機生成部は、第２種プログラムの起動要求を受け付けた場合に、当該第２種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第２種仮想計算機として管理し、
前記アクセス制御部は、前記アクセスの制御を、前記仮想計算機生成部によって前記第２種仮想計算機として管理されている仮想計算機からの前記第１記憶領域へのアクセスが禁止されるように行う
ことを特徴とする請求項４記載の仮想計算機システム。
【請求項７】
第１種プログラムは、マルウエアが含まれていないと認証されていない未認証アプリケーションプログラムであり、
第２種プログラムは、マルウエアが含まれていないと認証されている認証済アプリケーションプログラムであり、
前記アクセス制御部は、前記アクセスの制御を、前記認証済アプリケーションプログラムを実行する仮想計算機から前記未認証アプリケーションプログラムへのアクセスが禁止されるように行う
ことを特徴とする請求項６記載の仮想計算機システム。
【請求項８】
前記アクセス制御部は、前記複数の仮想計算機のそれぞれから前記プログラムの記憶領域へのアクセスの制限を示すアクセス情報を記憶するためのアクセス情報記憶部を有し、前記アクセスの制御を、前記アクセス情報記憶部に記憶されている前記アクセス情報を参照して行う
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項９】
前記記憶装置は、プログラムを特定する情報と、プログラムの種別を特定する情報とを対応付けるプログラム対応情報を記憶するためのプログラム対応情報記憶領域を含み、
前記仮想計算機生成部は、
前記起動要求受付部によってプログラムの起動要求が受け付けられた場合に、当該プログラムが、いずれの種別のプログラムであるかを、前記プログラム対応情報記憶領域に記憶されているプログラム対応情報に基づいて特定するためのプログラム種特定部を含み、
前記仮想計算機生成部は、前記プログラム種特定部によって特定されたプログラムの種別に基づいて、前記生成した仮想計算機を異なる種別の仮想計算機として管理する
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項１０】
前記仮想計算機生成部は、前記プロセッサによって実行される前記起動要求受付部が、仮想計算機から、プログラムの起動要求を受け付けた場合において、仮想計算機を生成するときに、当該生成する仮想計算機に対する、前記記憶装置における記憶領域の割り当てを、前記起動要求の要求元である仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行う
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項１１】
前記ハイパーバイザは、
前記プロセッサによって実行される前記仮想計算機生成部が、第１の仮想計算機に対する記憶領域の割り当てを、第２の仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行った場合に、前記第１の仮想計算機と前記第２の仮想計算機とによって行われる、前記記憶装置における記憶領域へのアクセスが、コピーオンライト方式で行われるように、仮想計算機からの、前記記憶装置における記憶領域へのアクセスを制御するためのコピーオンライト実行制御部を含む
ことを特徴とする請求項１０記載の仮想計算機システム。
【請求項１２】
前記第１記憶領域は、さらに、第１種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含み、
前記第２記憶領域は、さらに、第２種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含む
ことを特徴とする請求項４記載の仮想計算機システム。
【請求項１３】
前記記憶装置は、
デバイスドライバを記憶するデバイスドライバ記憶領域と、
前記デバイスドライバ記憶領域に記憶されている前記デバイスドライバを実行する仮想計算機以外の仮想計算機によって実行されることで、前記デバイスドライバを実行する仮想計算機と通信し、前記デバイスドライバを実行する仮想計算機に、デバイスの制御をさせるためのデバイス制御プログラムを記憶するデバイス制御プログラム記憶領
域とを含み、
前記アクセス制御部は、前記アクセスの制御を、実行制御対象である仮想計算機の中の１つの仮想計算機に限って、前記デバイスドライバ記憶領域へのアクセスが許可されるように行う
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項１４】
記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムを制御する仮想計算機制御方法であって、
前記ハイパーバイザが、プログラムの起動要求を受け付ける起動要求受付ステップと、
前記ハイパーバイザが、前記起動要求受付ステップにより受け付けられた起動要求に係るプログラムを実行するための仮想計算機を生成する仮想計算機生成ステップとを含み、
前記仮想計算機生成ステップは、前記起動要求受付ステップにより受け付けられた起動要求に係るプログラムの種別を特定し、当該特定したプログラムの種別に基づいて、生成した仮想計算機を管理する
ことを特徴とする仮想計算機制御方法。
【請求項１５】
記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムを制御するための仮想計算機制御プログラムであって、
前記ハイパーバイザが、プログラムの起動要求を受け付ける起動要求受付ステップと、
前記ハイパーバイザが、前記起動要求受付ステップにより受け付けられた起動要求に係るプログラムを実行するための仮想計算機を生成する仮想計算機生成ステップとを含み、
前記仮想計算機生成ステップは、前記起動要求受付ステップにより受け付けられた起動要求に係るプログラムの種別を特定し、当該特定したプログラムの種別に基づいて、生成した仮想計算機を管理する
ことを特徴とする仮想計算機制御プログラム。
【請求項１６】
記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える半導体集積回路であって、
前記ハイパーバイザは、
プログラムの起動要求を受け付けるための起動要求受付部と、
前記起動要求受付部により受け付けられた起動要求に係るプログラムを実行するための仮想計算機を生成するための仮想計算機生成部とを含み、
前記仮想計算機生成部は、前記起動要求受付部により受け付けられた起動要求に係るプログラムの種別を特定し、当該特定したプログラムの種別に基づいて、生成した仮想計算機を管理する
ことを特徴とする半導体集積回路。
【国際調査報告】
2012117465.tif 000021
2012117465.tif 000022
2012117465.tif 000023
2012117465.tif 000024