図面 (/)

技術 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路

出願人 パナソニックインテレクチュアルプロパティコーポレーションオブアメリカ
発明者 谷川忠雄
出願日 2011年9月12日 (9年2ヶ月経過) 出願番号 2012-539103
公開日 2014年7月7日 (6年4ヶ月経過) 公開番号 WO2012-117465
状態 特許登録済
技術分野 記憶装置の機密保護 ストアードプログラムにおける機密保護
主要キーワード スーパーバイザモード 割当て領域 プログラム実行モード 例外通知 IO領域 メモリ保護情報 アプリケーショングループ 実行制御方式
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2014年7月7日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (19)

課題・解決手段

仮想計算機からメモリ領域へのアクセス制御を行うメモリ保護ユニットを備え、プロセッサによって実行されるハイパーバイザとメモリ保護ユニットとが協働して動作することで、仮想計算機それぞれについて、メモリの記憶領域へのアクセスを、それぞれ所定の領域へのアクセスが禁止されるように制御する。これにより、仮想計算機のそれぞれは、アクセスが禁止されている領域に格納されているプログラム、データ等にアクセスすることができなくなる。

概要

背景

従来、仮想計算機システムとして、複数の仮想計算機実行制御するシステムが知られている。

このような仮想計算機システムにおいて、ハードウエア資源利用効率を向上させる技術として、仮想計算機システムの処理負荷に応じて、仮想計算機の生成と終了とを動的に制御する技術がある。

例えば、特許文献1では、親仮想計算機をフォークすることで子仮想計算機を生成する技術が開示され、特許文献2では、仮想計算機上で実行されているアプリケーションプログラムからの要求に基づいて、その仮想計算機をクローン化することで、子仮想計算機を生成する技術が開示されている。

概要

仮想計算機からメモリ領域へのアクセス制御を行うメモリ保護ユニットを備え、プロセッサによって実行されるハイパーバイザとメモリ保護ユニットとが協働して動作することで、仮想計算機それぞれについて、メモリの記憶領域へのアクセスを、それぞれ所定の領域へのアクセスが禁止されるように制御する。これにより、仮想計算機のそれぞれは、アクセスが禁止されている領域に格納されているプログラム、データ等にアクセスすることができなくなる。

目的

本発明は係る問題に鑑みてなされたものであり、仮想計算機が実行対象とするアプリケーションプログラムの中に、認証済アプリケーションプログラムと、未認証アプリケーションプログラムとが混在している場合であっても、未認証アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、システムの乗っ取りやデータの盗難、および改竄の原因となる認証済アプリケーションプログラムに対する攻撃などの、ソフトウェアの不正実行を防止することができる仮想計算機システムを提供する

効果

実績

技術文献被引用数
1件
牽制数
1件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第1種プログラムを格納する第1記憶領域と、第2種プログラムを格納する第2記憶領域とを含み、前記ハイパーバイザは、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求受け付けるための起動要求受付部と、前記プロセッサによって実行される前記起動要求受付部が、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理するための仮想計算機生成部とを含み、前記アクセス制御部は、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように行うことを特徴とする仮想計算機システム。

請求項2

前記アクセス制御部は、前記第2記憶領域のアドレスを特定する第2領域特定情報を記憶するための第2領域特定情報記憶部を有し、前記アクセスの制御を、前記第2領域特定情報記憶部に記憶されている前記第2領域特定情報を参照して行うことを特徴とする請求項1記載の仮想計算機システム。

請求項3

前記記憶装置は、プログラムを特定する情報と、プログラムの種別を特定する情報とを対応付けるプログラム対応情報を記憶するためのプログラム対応情報記憶領域を含み、前記仮想計算機生成部は、前記プロセッサによって実行される前記起動要求受付部が、仮想計算機から、プログラムの起動要求を受け付けた場合に、当該プログラムが、いずれの種別のプログラムであるかを、前記プログラム対応情報記憶領域に記憶されているプログラム対応情報に基づいて特定するためのプログラム種特定部を含み、前記プロセッサによって実行される前記起動要求受付部が、第1種プログラムの起動要求を受け付けた場合に行う、前記生成した仮想計算機に対する第1種仮想計算機としての管理と、前記プロセッサによって実行される前記起動要求受付部が、第2種プログラムの起動要求を受け付けた場合に行う、前記生成した仮想計算機に対する第2種仮想計算機としての管理とを、前記プログラム種特定部によって特定されたプログラムの種別に基づいて行うことを特徴とする請求項2記載の仮想計算機システム。

請求項4

前記仮想計算機生成部は、前記プロセッサによって実行される前記起動要求受付部が、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けた場合において、仮想計算機を生成するときに、当該生成する仮想計算機に対する、前記記憶装置における記憶領域の割り当てを、前記起動要求の要求元仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行うことを特徴とする請求項3記載の仮想計算機システム。

請求項5

前記ハイパーバイザは、前記プロセッサによって実行される前記仮想計算機生成部が、第1の仮想計算機に対する記憶領域の割り当てを、第2の仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行った場合に、前記第1の仮想計算機と前記第2の仮想計算機とによって行われる、前記記憶装置における記憶領域へのアクセスが、コピーオンライト方式で行われるように、仮想計算機からの、前記記憶装置における記憶領域へのアクセスを制御するためのコピーオンライト実行制御部を含むことを特徴とする請求項4記載の仮想計算機システム。

請求項6

前記第1記憶領域は、さらに、前記第1種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含み、前記第2記憶領域は、さらに、前記第2種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含むことを特徴とする請求項5記載の仮想計算機システム。

請求項7

前記記憶装置は、デバイスドライバを記憶するデバイスドライバ記憶領域と、前記デバイスドライバ記憶領域に記憶されている前記デバイスドライバを実行する仮想計算機以外の仮想計算機によって実行されることで、前記デバイスドライバを実行する仮想計算機と通信し、前記デバイスドライバを実行する仮想計算機に、デバイスの制御をさせるためのデバイス制御プログラムを記憶するデバイス制御プログラム記憶領域とを含み、前記アクセス制御部は、前記アクセスの制御を、実行制御対象である仮想計算機の中の1つの仮想計算機に限って、前記デバイスドライバ記憶領域へのアクセスが許可されるように行うことを特徴とする請求項5記載の仮想計算機システム。

請求項8

記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第1種プログラムを格納する第1記憶領域と、第2種プログラムを格納する第2記憶領域とを含む仮想計算機システムを制御する仮想計算機制御方法であって、前記ハイパーバイザが、第1種プログラム又は第2種プログラムの起動要求を受け付ける起動要求受付ステップと、前記ハイパーバイザが、前記起動要求受付ステップにおいて、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理する仮想計算機生成ステップと、前記アクセス制御部が、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように行うアクセス制御ステップとを含むことを特徴とする仮想計算機制御方法。

請求項9

記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第1種プログラムを格納する第1記憶領域と、第2種プログラムを格納する第2記憶領域とを含む仮想計算機システムを制御するための仮想計算機制御プログラムであって、前記ハイパーバイザが、第1種プログラム又は第2種プログラムの起動要求を受け付ける起動要求受付ステップと、前記ハイパーバイザが、前記起動要求受付ステップにおいて、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理する仮想計算機生成ステップと、前記アクセス制御部が、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように行うアクセス制御ステップとを含むことを特徴とする仮想計算機制御プログラム。

請求項10

記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える半導体集積回路であって、仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第1種プログラムを格納する第1記憶領域と、第2種プログラムを格納する第2記憶領域とを含み、前記ハイパーバイザは、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けるための起動要求受付部と、前記プロセッサによって実行される前記起動要求受付部が、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理するための仮想計算機生成部とを含み、前記アクセス制御部は、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように行うことを特徴とする半導体集積回路。

技術分野

0001

本発明は、仮想計算機システムに関し、特に、仮想計算機からの記憶領域へのアクセスの制御技術に関する。

背景技術

0002

従来、仮想計算機システムとして、複数の仮想計算機を実行制御するシステムが知られている。

0003

このような仮想計算機システムにおいて、ハードウエア資源利用効率を向上させる技術として、仮想計算機システムの処理負荷に応じて、仮想計算機の生成と終了とを動的に制御する技術がある。

0004

例えば、特許文献1では、親仮想計算機をフォークすることで子仮想計算機を生成する技術が開示され、特許文献2では、仮想計算機上で実行されているアプリケーションプログラムからの要求に基づいて、その仮想計算機をクローン化することで、子仮想計算機を生成する技術が開示されている。

先行技術

0005

特開2004−133894号公報
特開2008−165795号公報

発明が解決しようとする課題

0006

ところで、仮想計算機システムにおいて、実行対象となるアプリケーションプログラムの中に、マルウエアが含まれていないと認証されているアプリケーションプログラム(以下、「認証済アプリケーションプログラム」と呼ぶ。)と、マルウエアが含まれていないと認証されていないアプリケーションプログラム(以下、「未認証アプリケーションプログラム」と呼ぶ。)とが混在している場合がある。

0007

このような場合において、未認証アプリケーションプログラムにマルウエアが含まれているとき、このマルウエアが実行されてしまうことで、認証済アプリケーションプログラムが攻撃されることがある。

0008

認証済アプリケーションプログラムが攻撃される場合の例としては、例えば、認証済アプリケーションプログラムやデータが改竄されてしまう場合、認証済アプリケーションプログラムが不適切な方法で実行され、システムの管理者権限が奪われた結果、計算機システムを不正に乗っ取られてしまい、外部に対して秘匿されるべき情報、例えば、システムに保存された有料コンテンツ個人情報暗号キー等が読み出されてしまう場合等がある。

0009

従来の、仮想計算機を動的に生成する仮想計算機システムでは、新たなアプリケーションプログラムを実行させる場合において、そのアプリケーションプログラムを実行させるための仮想計算機が存在しないとき等に、親仮想計算機を基にして新たな子仮想計算機を生成し、その子仮想計算機に、そのアプリケーションプログラムを実行させる。

0010

このような場合には、親仮想計算機から生成される子仮想計算機は、親仮想計算機と同じ機能を持つこととなる。よって、親仮想計算機の実行対象となるアプリケーションプログラムの中に、認証済アプリケーションプログラムが含まれている場合には、未認証アプリケーションプログラムを実行させるために生成された子仮想計算機であっても、実行対象となるアプリケーションプログラムの中に、認証済アプリケーションプログラムが含まれてしまうこととなる。

0011

従って、従来の仮想計算機システムでは、子仮想計算機の実行する未認証アプリケーションプログラムの中にマルウエアが含まれてしまっている場合に、そのマルウエアによって、認証済アプリケーションプログラムが攻撃されてしまうことがある。

0012

そこで、本発明は係る問題に鑑みてなされたものであり、仮想計算機が実行対象とするアプリケーションプログラムの中に、認証済アプリケーションプログラムと、未認証アプリケーションプログラムとが混在している場合であっても、未認証アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、システムの乗っ取りやデータの盗難、および改竄の原因となる認証済アプリケーションプログラムに対する攻撃などの、ソフトウェアの不正実行を防止することができる仮想計算機システムを提供することを目的とする。

課題を解決するための手段

0013

上記課題を解決するために本発明に係る仮想計算機システムは、記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、
仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第1種プログラムを格納する第1記憶領域と、第2種プログラムを格納する第2記憶領域とを含み、前記ハイパーバイザは、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求受け付けるための起動要求受付部と、前記プロセッサによって実行される前記起動要求受付部が、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理するための仮想計算機生成部とを含み、前記アクセス制御部は、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように行うことを特徴とする。

発明の効果

0014

上述の構成を備える本発明に係る仮想計算機システムによると、未認証アプリケーションプログラムを第1種プログラムとして第1記憶領域に格納し、認証済アプリケーションプログラムを第2種プログラムとして第2記憶領域に格納することで、未認証アプリケーションプログラムを実行する仮想計算機は、認証済アプリケーションプログラムにアクセスすることができなくなる。

0015

従って、仮想計算機が実行対象とするアプリケーションプログラムの中に、認証済アプリケーションプログラムと、未認証アプリケーションプログラムとが混在している場合であっても、未認証アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、システムの乗っ取りデータの盗難、および改竄の原因となる認証済アプリケーションプログラムに対する攻撃などの、ソフトウェアの不正実行を防止することができる。

図面の簡単な説明

0016

仮想計算機システム100の主要なハードウエア構成を示すブロック図
プロセッサ101が有する動作モードを示す動作モード図
メモリ保護テーブルデータ構造を示すデータ構造図
メモリ保護情報のデータ構造を示すデータ構造図
メモリ102の記憶領域の区分けを示す記憶領域図
プロセッサ101上で実行対象となるプログラムモジュールを示すブロック図
アプリグループ管理テーブル700のデータ構造図
仮想計算機管理テーブル800のデータ構造図
仮想計算機状態テーブル900のデータ構造図
アクセス許可情報1000のデータ構造
メモリ102の記憶領域の区分けを示す記憶領域図
仮想計算機切替処理フローチャート
メモリアクセス処理のフローチャート
アプリケーションプログラム実行処理のフローチャート
仮想計算機システム1500の主要なハードウエア構成を示すブロック図
プロセッサ101上で実行対象となるプログラムモジュールを示すブロック図
プロセッサ101上で実行対象となるプログラムモジュールを示すブロック図
変形例における仮想計算機システム1800の概略構成

実施例

0017

<実施の形態1>
概要
以下、本発明に係る仮想計算機システムの一実施形態として、アプリケーションプログラムを実行するユーザーモードと、ユーザーモードより上位のスーパーバイザモードとの2つのプログラム実行モードを有するプロセッサを備え、プロセッサのスーパーバイザモードで実行される複数のオペレーティングシステムを、プロセッサのスーパーバイザモードで実行されるハイパーバイザが時分割実行制御する仮想計算機システムについて説明する。

0018

この仮想計算機システムは、プロセッサに加えて、仮想計算機からメモリの記憶領域へのアクセス制御を行うメモリ保護ユニットを備える。そして、プロセッサによって実行されるハイパーバイザとメモリ保護ユニットとが協働して動作することで、仮想計算機それぞれについて、メモリの記憶領域へのアクセスを、それぞれ所定の領域へのアクセスが禁止されるように制御する。

0019

従って、この仮想計算機システムで実行される仮想計算機のそれぞれは、アクセスが禁止されている領域に格納されているプログラム、データ等にアクセスすることができなくなっている。

0020

以下、本実施の形態1に係る仮想計算機システムの構成について図面を参照しながら説明する。

0021

<ハードウエア構成>
図1は、仮想計算機システム100の主要なハードウエア構成を示すブロック図である。

0022

同図に示す通り、仮想計算機システム100は、ハードウエアとしてはコンピュータ装置であり、集積回路110と入力装置131と出力装置132とから構成される。

0023

集積回路110は、プロセッサ101とメモリ102とキャッシュメモリ105とMMU(Memory Management Unit)106とメモリ保護ユニット107とタイマ108とDMAC(Direct Memory Access Controller)109と内部バス120と第1インタフェース121と第2インタフェース122と第3インタフェース123とを集積した半導体集積回路であって、入力装置131と出力装置132と外部の集積回路等とに接続する。そして、メモリ102は、ROM(Read Only Memory)103とRAM(Random Access Memory)104とから構成されている。

0024

プロセッサ101は、キャッシュメモリ105とMMU106とに接続され、ROM103又はRAM104に記憶されているプログラムを実行することで、ROM103、RAM104、キャッシュメモリ105、MMU106、メモリ保護ユニット107、タイマ108、入力装置131、出力装置132を制御して、様々な機能を実現する。

0025

図2は、プロセッサ101の備える動作モードを示す動作モード図である。

0026

同図に示されるように、プロセッサ101は、アプリケーションプログラム(図中のタスクA231、タスクK232、タスクL233等)を実行するユーザーモード230と、オペレーティングシステム(図中の第1OS(Operating System)221、第2OS222、第3OS223等)とハイパーバイザを実行する特権モード(以下、「スーパーバイザモード」と呼ぶ。)220とを有する。

0027

ユーザーモード230で実行されるアプリケーションプログラムは、スーパーバイザモード220で実行されるオペレーティングシステムによって時分割実行制御され、スーパーバイザモード220で実行されるオペレーティングシステムは、同じくスーパーバイザモード220で実行されるハイパーバイザによって時分割実行制御される。

0028

再び図1に戻って、仮想計算機システム100の構成についての説明を続ける。

0029

ROM103は、メモリ保護ユニット107に接続され、プロセッサ101の動作を規定するプログラムと、プロセッサ101が利用するデータとを記憶している。

0030

RAM104は、メモリ保護ユニット107に接続され、プロセッサ101の動作を規定するプログラムと、プロセッサ101が利用するデータとを記憶する。

0031

キャッシュメモリ105は、プロセッサ101とMMU106と内部バス120とに接続され、プロセッサ101によって利用される。

0032

MMU106は、プロセッサ101とキャッシュメモリ105と内部バス120とに接続され、メモリ102の物理記憶領域アドレスを指定する物理アドレスと、プロセッサ101の利用する論理記憶領域のアドレスを指定する論理アドレスとの変換機能を有する。

0033

メモリ保護ユニット107は、メモリ102と内部バス120とに接続され、内部にメモリ保護テーブルとメモリ保護情報とを記憶する機能と、記憶するメモリ保護テーブルとメモリ保護情報とを参照して、内部バス120のバスマスタ(ここでは、プロセッサ101、DMAC109)からのメモリ102の記憶領域へのアクセスを制御する機能とを有する。

0034

図3は、メモリ保護ユニット107によって記憶されるメモリ保護テーブル300のデータ構造を示すデータ構造図である。

0035

同図に示されるように、メモリ保護テーブル300は、領域ID310と開始アドレス320とサイズ330とが対応付けられて構成されている。

0036

領域ID310は、メモリ102の記憶領域の中の、所定の記憶領域を識別するための識別子である。

0037

開始アドレス320は、対応する領域ID310によって識別される所定の記憶領域の開始アドレスである。

0038

サイズ330は、対応する領域ID310によって識別される所定の記憶領域のサイズをメガバイト単位で示すものである。

0039

このメモリ保護テーブル300によると、例えば、領域ID310が“1”となる所定の記憶領域は、開始アドレスが“0x8000_0000”であって、そのサイズが2MB(Mega Byte)となる記憶領域であることを示している。

0040

図4は、メモリ保護ユニット107によって記憶されるメモリ保護情報400のデータ構造を示すデータ構造図である。

0041

同図に示されるように、メモリ保護情報400は、領域ID410とアクセス情報420とが対応付けられて構成されている。

0042

領域ID410は、領域ID310と同様に、メモリ102の記憶領域の中の、所定の記憶領域を識別するための識別子である。

0043

アクセス情報420は、対応する領域ID410によって識別される所定の記憶領域に対して行われるアクセスの制限を示す情報であって、(1)読出し書込み共に可の旨を示す情報(以下、「R/W」と呼ぶ。)と(2)読出し可、書込み不可の旨を示す情報(以下、「RO」と呼ぶ。)と(3)読出し不可、書込み可の旨を示す情報(以下、「WO」と呼ぶ。)と(4)読出し、書込み共に不可の旨を示す情報(以下、「NA」と呼ぶ。)との4つの情報のうちのいずれか1つの情報となる。

0044

このメモリ保護情報400によると、例えば、領域ID410が“1”となる所定の領域は、読出し、書込み共に不可であり、領域ID410が“2”となる所定の領域は、読出し、書込み共に可であり、領域ID410が“3”となる所定の領域は、読出し可、書込み不可であり、領域ID410が“4”となる所定の領域は、読出し、書込み共に不可であること等を示している。

0045

図5は、メモリ保護ユニット107による、メモリ102の記憶領域へのアクセスの制御が、複数の所定の領域に区分されて行われることを示す、メモリ102の記憶領域図である。

0046

同図に示される通り、メモリ102の記憶領域は、メモリ保護ユニット107によってメモリ保護テーブルを参照されることで、領域ID310が“1”となる領域A501、領域ID310が“2”となる領域B502、領域ID310が“3”となる領域C503、領域ID310が“4”となる領域D504等に区分される。

0047

なお、メモリ保護ユニット107の行うメモリ102の記憶領域へのアクセス制御動作についてのより詳細な内容については、後程<メモリアクセス処理>の項目の部分で、フローチャートを用いて説明する。

0048

再び図1に戻って、仮想計算機システム100の構成についての説明を続ける。

0049

タイマ108は、内部バス120に接続され、プロセッサ101によって制御される。

0050

DMAC109は、内部バス120に接続され、第1インタフェース121に接続される入力装置131、第2インタフェース122に接続される出力装置132、及び第3インタフェース123に接続される外部の集積回路等と、メモリ102との間のデータ転送を、プロセッサ101を介さずに行う機能を有する。

0051

内部バス120は、MMU106とキャッシュメモリ105とメモリ保護ユニット107とタイマ108と第1インタフェース121と第2インタフェース122と第3インタフェース123とDMAC109とに接続され、これら接続される回路間の信号を伝達する機能を有する。

0052

第1インタフェース121と第2インタフェース122と第3インタフェース123とは、それぞれ内部バス120に接続され、それぞれ内部バス120と入力装置131との間の信号のやり取りを仲介する機能、内部バス120と出力装置132との間の信号のやり取りを仲介する機能、外部の集積回路等との間の信号のやり取りを仲介する機能を有する。

0053

入力装置131は、キーボードマウスカメラセンサー等を含み、第1インタフェース121に接続され、プロセッサ101によって制御され、キーボード、マウス、カメラ、センサー等を通じてユーザー操作等に応じたデータを生成し、ユーザー操作等が発生したこと示す通知や、生成したデータをプロセッサ101に送る機能を有する。

0054

出力装置132は、ディスプレイスピーカー等を含み、第2インタフェース122に接続され、プロセッサ101によって制御され、ディスプレイ、スピーカー等を用いて文字列、画像、音声等を表示、出力する機能を有する。

0055

上述の仮想計算機システム100は、プロセッサ101が、ROM103、RAM104に記憶されているプログラムを実行することによって、様々な機能を実現する。

0056

<プログラムモジュール構成>
図6は、ある時刻t0において、プロセッサ101上で実行対象となるプログラムモジュール(以下、単に「モジュール」と呼ぶ。)を示すブロック図である。

0057

同図において、モジュール群600は、プロセッサ101において実行対象となっているモジュールの集合であって、モジュール群600に含まれるモジュールのそれぞれは、対応するプログラムが、メモリ102の記憶領域に格納されている。

0058

タスク1A611、タスク2A612、タスク3A613、タスク2B614、タスク3C615のそれぞれは、プロセッサ101のユーザーモードで実行されるタスクである。

0059

OS1A621、OS1B622、OS1C623のそれぞれは、プロセッサ101のスーパーバイザモードにおいて実行されるマルチタスク対応オペレーティングシステムである。

0060

ハイパーバイザ630は、プロセッサ101のスーパーバイザモードで実行されるハイパーバイザである。

0061

仮想計算機システム100において、アプリケーションプログラムは、スーパーバイザモードで実行されるマルチタスク対応オペレーティングシステムによって実行制御され、ユーザーモードで実行される。また、オペレーティングシステムは、ハイパーバイザによって実行制御され、スーパーバイザモードで実行される。

0062

アプリケーションプログラムは、予め用意されたオペレーティングステム呼び出しルーチン呼び出すことで、オペレーティングシステムに対して所定の処理を依頼することができる。また、オペレーティングシステムは、予め用意されたハイパーバイザ呼び出しルーチンを呼び出すことで、ハイパーバイザに対して所定の処理を依頼することができる。

0063

また、仮想計算機システムの実行に際して発生した例外や、外部装置から発生した割込みは、ハイパーバイザで処理し、必要に応じて仮想計算機上のオペレーティングシステムに対して再配送する。

0064

OS1A621は、タスク1A611とタスク2A612とタスク3A613とを実行制御し、OS1A621とタスク1A611とタスク2A612とタスク3A613とからなるシステムを第1仮想計算機601として機能させている。

0065

OS1B622は、タスク2B614を実行制御し、OS1B622とタスク2B614とからなるシステムを第2仮想計算機602として機能させている。

0066

OS1C623は、タスク3C615を実行制御し、OS1C623とタスク3C615とからなるシステムを第3仮想計算機603として機能させている。

0067

ここで、第2仮想計算機602は、第1仮想計算機601を親仮想計算機として、フォーク方式で生成された子仮想計算機であり、第3仮想計算機603は、第1仮想計算機601を親仮想計算機として、フォーク方式で生成された子仮想計算機である。フォーク方式での仮想計算機の生成については後述する。

0068

ハイパーバイザ630は、内部に、VM(Virtual Machine)管理テーブル保持部640とVM実行制御部650とVMメモリ管理部660との3つのモジュールを含み、VM実行制御部650は、さらに、VM起動部651とVM実行部652とVM終了部653と要求受付部654との4つのモジュールを含み、VMメモリ管理部は、さらに、保護設定情報保持部661と保護設定部662とCOW(Copy On Write)処理部663との3つのモジュールを含む。

0069

VM管理テーブル保持部640は、予め定められたアプリグループ管理テーブルと、予め定められた仮想計算機管理テーブルと、VM実行部652によって生成される仮想計算機状態テーブルとを記憶する機能を有する。

0070

図7は、VM管理テーブル保持部640によって記憶されるアプリグループ管理テーブル700のデータ構造を示すデータ構造図である。

0071

同図に示されるように、アプリグループ管理テーブル700は、アプリグループID710とアプリケーションプログラム名720とが対応付けられて構成されている。

0072

アプリケーションプログラム名720は、アプリケーションプログラムを特定するアプリケーションプログラムの名前である。

0073

アプリグループID710は、対応するアプリケーションプログラム名720で特定されるアプリケーションプログラムが属するアプリケーションプログラムグループを識別するための識別子である。

0074

このアプリグループ管理テーブル700によると、例えば、メモ帳電卓端末設定という名前のアプリケーションプログラムは、アプリグループIDが“1”であるアプリケーションプログラムグループに属し、DTV(Digital Television)アプリという名前のアプリケーションプログラムは、アプリグループIDが“2”であるアプリケーションプログラムグループに属することを示している。

0075

図8は、VM管理テーブル保持部640によって記憶される仮想計算機管理テーブル800のデータ構造を示すデータ構造図である。

0076

同図に示されるように、仮想計算機管理テーブル800は、VMID810とアプリグループID820とが対応付けられて構成されている。

0077

アプリグループID820は、アプリグループID710と同様の識別子である。

0078

VMID810は、対応するアプリグループID820によって識別されるアプリケーションプログラムグループに属するアプリケーションプログラムを実行するための仮想計算機を識別するための識別子である。

0079

この仮想計算機管理テーブル800によると、例えば、VMID810が“1”で識別される仮想計算機は、アプリグループID820が“1”で特定されるアプリケーションプログラムグループに属するアプリケーションプログラムと、“4”で特定されるアプリケーションプログラムグループに属するアプリケーションプログラムとを実行するための仮想計算機であることを示している。

0080

図9は、VM管理テーブル保持部640によって記憶される仮想計算機状態テーブル900のデータ構造を示すデータ構造図である。

0081

同図に示されるように、仮想計算機状態テーブル900は、VMID910と実行状態920とが対応付けられて構成されている。

0082

VMID910は、仮想計算機を識別するための識別子である。

0083

実行状態920は、対応するVMID910によって識別される仮想計算機の実行状態を示す情報であって、(1)仮想計算機が起動されて時分割実行処理の対象となっており、新たなタスク処理を行うことができる状態の旨を示す情報(以下、「実行中」と呼ぶ。)と(2)仮想計算機が起動されていない状態の旨を示す情報(以下、「未起動」と呼ぶ。)と(3)仮想計算機が起動されて時分割実行処理の対象となっているが、その仮想計算機を終了させるための終了処理が実行中であり、新たなタスク処理を行うことができない状態の旨を示す情報(以下、「終了処理中」と呼ぶ。)との3つの情報のうちのいずれか1つの情報となる。ここで、仮想計算機を終了させるための終了処理とは、その仮想計算機を実行するために、ハイパーバイザと仮想計算機自身によって確保した記憶領域を解放する処理のことをいう。

0084

再び図6に戻って、プロセッサ101上で実行対象となるモジュールの説明を続ける。

0085

要求受付部654は、実行中の仮想計算機のオペレーティングシステムから、新たなアプリケーションプログラムの起動要求を受け付け、起動要求を受け付けた旨の信号をVM起動部651へ送る機能を有する。

0086

VM起動部651は、以下の3つの機能を有する。

0087

機能1:新たなアプリケーションプログラムを実行させるために、親となる仮想計算機を基にして、フォーク方式で新たな子仮想計算機を生成する機能。

0088

ここで、フォーク方式での仮想計算機の生成とは、親となる仮想計算機に割り当てられている全ての記憶領域と、新たに生成する仮想計算機に割り当てる全ての記憶領域とが、1対1に対応するように、親となる仮想計算機に割り当てられている記憶領域を、新たに生成する仮想計算機の記憶領域にマッピングすることによって、新たな仮想計算機を生成することである。なお、新たに仮想計算機が生成された後は、親となる仮想計算機の記憶領域と、新たに生成された仮想計算機の記憶領域とは、COW処理部663によってコピーオンライト方式で管理されることとなる。このCOW処理部663による記憶領域のコピーオンライト方式による管理についての詳細については後述する。

0089

機能2:新たなアプリケーションプログラムを実行させるために新たな子仮想計算機を生成した場合に、VM管理テーブル保持部640に記憶されている、アプリグループ管理テーブル700と仮想計算機管理テーブル800とを参照して、その新たな子仮想計算機を識別するための識別子であるVMIDを、その新たな仮想計算機に付与して、VM管理テーブル保持部640に記憶されている仮想計算機状態テーブル900を、付与したVMIDに対応付けられている実行状態920が“実行中”となるように更新する機能。

0090

機能3:プロセッサ101が初期化されることで、VM起動部651が起動された場合に、他の全ての仮想計算機の親となる仮想計算機を生成し、生成した仮想計算機を識別するためのVMIDを“0”とする機能。

0091

VM実行部652は、タイマ108を用いて、複数の仮想計算機を、時分割実行制御方式で実行制御する機能を有する。

0092

VM終了部653は、仮想計算機から、その仮想計算機を終了させる要求である終了要求を受け付ける機能と、終了要求を受け付けた場合に、対象となる仮想計算機に対して前述の終了処理を実行し、その仮想計算機を終了させる機能を有する。

0093

保護設定情報保持部661は、アクセス許可情報を記憶する機能を有する。

0094

図10は、保護設定情報保持部661によって記憶されるアクセス許可情報1000のデータ構造を示すデータ構造図である。

0095

同図に示されるように、アクセス許可情報1000は、領域ID1010とVMID1020とアクセス情報(図中のNA、R/W、RO等)とが対応付けられて構成されている。

0096

このアクセス許可情報1000は、予め定められたオリジナルアクセス情報の部分(領域ID1010が1〜6に対応する部分)と、COW処理部663によって、予め定められたオリジナルアクセス情報に対して追記された部分(領域ID1010が1〜6以外の領域ID1010に対応する部分)とによって構成される。

0097

領域ID1010は、領域ID310と同様に、メモリ102の記憶領域の中の、所定の記憶領域を識別するための識別子である。

0098

VMID1020は、VMID910と同様に、仮想計算機を識別するための識別子である。

0099

アクセス情報は、対応するVMID1020によって識別される仮想計算機についての、対応する領域ID1010によって識別される所定の記憶領域に対して行われるアクセスの制限を示す情報であって、アクセス情報420と同様に、R/WとROとWOとNAとの4つの情報のうちのいずれか1つの情報となる。

0100

このアクセス許可情報1000によると、例えば、VMID1020が“1”で識別される仮想計算機について、領域ID1010が“1”となる所定の領域は、読出し、書込み共に不可であり、領域ID1010が“2”となる所定の領域は、読出し可、書込み不可であり、領域ID1010が“3”となる所定の領域は、読出し可、書込み不可であり、領域ID1010が“4”となる所定の領域は、読出し、書込み共に不可であること等が示されている。

0101

保護設定部662は、以下の2つの機能を有する。

0102

機能1:VM実行部652が実行する仮想計算機を切り替える場合に、保護設定情報保持部661によって記憶されているアクセス許可情報1000から、切り替え先となる仮想計算機のVMID1020についての、領域ID1010それぞれについて対応付けられているアクセス情報を読み出して、メモリ保護情報400(図4参照)を生成し、生成したメモリ保護情報400で、メモリ保護ユニット107が記憶するメモリ保護情報400を更新する機能。

0103

機能2:COW処理部663が保護設定情報保持部661によって記憶されているアクセス許可情報1000を更新する場合に、保護設定情報保持部661によって記憶されているアクセス許可情報1000から、現在実行中となっている仮想計算機のVMIDについての、領域ID1010それぞれについて対応付けられているアクセス情報を読み出して、メモリ保護情報400を生成し、生成したメモリ保護情報400で、メモリ保護ユニット107が記憶するメモリ保護情報400を更新する機能。

0104

COW処理部663は、以下の2つの機能を有する。

0105

機能1:仮想計算機からの記憶領域へのアクセスについて、コピーオンライト方式によるアクセス管理を行う機能。

0106

ここで、コピーオンライト方式によるアクセス管理とは、親仮想計算機の記憶領域と、子仮想計算機の記憶領域とについて、いずれの仮想計算機によっても書き換えられていないページは、双方の仮想計算機によって共用させ、いずれかの仮想計算機によって書き換えられたページは、親仮想計算機が利用するページと、子仮想計算機が利用するページとを、互いに異なる記憶領域に割り当てて利用させるアクセス管理方法のことである。

0107

機能2:コピーオンライト方式によるアクセス管理を行うことで、仮想計算機に新たな記憶領域を割り当てた場合に、保護設定情報保持部661が保持するアクセス許可情報1000を更新する機能。

0108

この際、アクセス許可情報1000の更新が、新たに割り当てた記憶領域に対応する領域ID1010について、対象となる仮想計算機を識別するVMID1020に対応するアクセス情報がR/Wとなり、対象となる仮想計算機以外の全ての仮想計算機を識別するVMID1020に対応するアクセス情報がNAとなるように行う。

0109

なお、対象となる仮想計算機が未認証アプリケーションプログラムを実行する仮想計算機である場合に、親仮想計算機または認証アプリケーションプログラムを実行する仮想計算機から、その仮想計算機および未認証アプリケーションプログラムの実行を監視する等の目的で、新たに割り当てるメモリ領域のアクセス情報をRO、または、R/Wとしても良い。

0110

ここで、図6戻り、第2仮想計算機602と第3仮想計算機603とについての説明を補足する。

0111

第2仮想計算機602は、タスク2B614を実行させるために、VM起動部651によって、第1仮想計算機601を親仮想計算機としてフォーク方式で生成された仮想計算機である。

0112

また、第3仮想計算機603は、タスク3C615を実行させるために、VM起動部651によって、第1仮想計算機601を親仮想計算機としてフォーク方式で生成された仮想計算機である。

0113

タスク2B614は、第2仮想計算機602の生成に伴って、タスク2A612を基に生成されたタスクであって、タスク2A612の利用する記憶領域とタスク2Bの利用する記憶領域とは、COW処理部663によってコピーオンライト方式で管理されている。

0114

タスク3C615は、第3仮想計算機603の生成に伴って、タスク3A613を基に生成されたタスクであって、タスク3A613の利用する記憶領域とタスク3Cの利用する記憶領域とは、COW処理部663によってコピーオンライト方式で管理されている。

0115

OS1B622とOS1C623とは、第1仮想計算機601のOS1A621に対応するオペレーティングシステムであって、OS1B622は、第2仮想計算機602の生成に伴って生成され、OS1C623は、第3仮想計算機603の生成に伴って生成され、OS1A621の利用する記憶領域とOS1B622の利用する記憶領域とOS1C623の利用する記憶領域とは、COW処理部663によってコピーオンライト方式で管理されている。

0116

以上のように構成される仮想計算機システム100は、以下に示すメモリ102の記憶領域の利用方法に従って、メモリ102の記憶領域を利用する。

0117

<メモリ102の記憶領域の利用方法>
ここでは、仮想計算機システム100における、メモリ102の記憶領域の利用方法について、図面を用いて説明する。

0118

図11は、時刻t0において、メモリ102の記憶領域における、所定の領域に区分された記憶領域それぞれについての利用方法を示す、メモリ102の記憶領域図である。

0119

同図において、ハイパーバイザ割当領域1101は、領域ID310(図3参照)が“1”となる所定の記憶領域であって、図5における領域A501に対応している。そして、この領域が、ハイパーバイザ630のコードが格納される領域となるように、又ハイパーバイザ630によって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。

0120

オペレーティングシステム割当領域1102は、領域ID310が“2”となる所定の記憶領域であって、図5における領域B502に対応している。そして、この領域が、プロセッサ101の実行対象となるオペレーティングシステムのコードが格納される領域となるように、又プロセッサ101の実行対象となるオペレーティングシステムによって利用される記憶領域となるように、予め設定されている。また、この領域は、スーパーバイザモード220のプロセッサ101によってのみアクセス可能な領域として予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、VMID1020が“0”となる仮想計算機(すなわち、他の仮想計算機全ての親仮想計算機である第1仮想計算機601)について、読出し、書込み共に可の領域、この仮想計算機以外の全ての仮想計算機について、読出し可、書込み不可の領域と予め設定されている。

0121

第1種プログラム割当領域1103は、領域ID310が“3”となる所定の記憶領域であって、図5における領域C503に対応している。そして、この領域が、アプリグループIDが“1”であるアプリケーションプログラムグループに属するプログラム(以後、「第1種プログラム」と呼ぶ。)が格納される領域となるように、又第1種プログラムによって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、VMID1020が“0”となる仮想計算機について、読出し、書込み共に可の領域、VMID1020が“1”となる仮想計算機について、読出し可、書込み不可の領域、これら以外の全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。

0122

第2種プログラム割当領域1104は、領域ID310が“4”となる所定の記憶領域であって、図5における領域D504に対応している。そして、この領域が、アプリグループIDが“2”であるアプリケーションプログラムグループに属するプログラム(以後、「第2種プログラム」と呼ぶ。)が格納される領域となるように、又第2種プログラムによって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、VMID1020が“0”となる仮想計算機について、読出し、書込み共に可の領域、VMID1020が“2”となる仮想計算機について、読出し可、書込み不可の領域、これら以外の全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。

0123

第3種プログラム割当領域1105は、領域ID310が“5”となる所定の記憶領域であって、図5における領域E505に対応している。そして、この領域が、アプリグループIDが“3”であるアプリケーションプログラムグループに属するプログラム(以後、「第3種プログラム」と呼ぶ。)が格納される領域となるように、又第3種プログラムによって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、VMID1020が“0”となる仮想計算機について、読出し、書込み共に可の領域、VMID1020が“3”となる仮想計算機について、読出し可、書込み不可の領域、これら以外の全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。

0124

IO領域1106乃至1108は、領域ID310が“K”、“L”、“M”、となる所定の記憶領域であって、図5における領域K506、L507、M508に対応している。この領域は、仮想計算機間デバイス制御共有するための一方式である、共有するI/Oレジスタに対して、アプリケーションプログラムやオペレーティングシステムからのI/O操作要求時に例外を発生させるアクセス設定を行い、発生した例外をハイパーバイザで受信し、該当するI/O操作の調停および代理をハイパーバイザ行うI/Oエミュレーションを実現するための領域となるように、予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、VMID1020が“0”となる仮想計算機について、IO領域1106乃至1108は、読出し、書込み共に可の領域、この仮想計算機以外の全ての仮想計算機については、IO領域1106を、読出し、書込み共に共有を実現するための領域となるように、読出し、書込み共に不可の領域として、IO領域1107を、書込みのみ共有を実現するための領域となるように、読出し可、書込み不可の領域として、IO領域1108を読出しのみ共有を実現するための領域となるように、読出し不可、書込み可の領域として、予め設定されている。

0125

第2種プログラムの第1仮想計算機用割当領域1111は、領域ID310が“N”となる所定の記憶領域であって、図5における領域N511に対応している。この領域は、COW処理部663が、第2種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第1仮想計算機601に新たに割り当てることとなった領域であって、COW処理部663によって、保護設定情報保持部661によって記憶されるアクセス許可情報1000が更新されることで設定されている。

0126

第2種プログラムの第2仮想計算機用割当領域1112は、領域ID310が“N+1”となる所定の記憶領域であって、図5における領域N+1(512)に対応している。この領域は、COW処理部663が、第2種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第2仮想計算機602に新たに割り当てることとなった領域であって、COW処理部663によって、保護設定情報保持部661によって記憶されるアクセス許可情報1000が更新されることで設定されている。

0127

第3種プログラムの第1仮想計算機用割当領域1113は、領域ID310が“N+2”となる所定の記憶領域であって、図5における領域N+2(513)に対応している。この領域は、COW処理部663が、第3種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第1仮想計算機601に新たに割り当てることとなった領域であって、COW処理部663によって、保護設定情報保持部661によって記憶されるアクセス許可情報1000が更新されることで設定されている。

0128

第3種プログラムの第3仮想計算機用割当領域1114は、領域ID310が“N+3”となる所定の記憶領域であって、図5における領域N+3(514)に対応している。この領域は、COW処理部663が、第3種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第3仮想計算機603に新たに割り当てることとなった領域であって、COW処理部663によって、保護設定情報保持部661によって記憶されるアクセス許可情報1000が更新されることで設定されている。

0129

以下、図面を参照しながら、仮想計算機システム100の行う動作について説明する。

0130

<動作>
ここでは、仮想計算機システム100の行う動作のうち、特徴的な動作である、仮想計算機切替処理とメモリアクセス処理とアプリケーションプログラム実行処理とについて説明する。

0131

<仮想計算機切替処理>
仮想計算機切替処理は、プロセッサ101に実行させる仮想計算機を切り替える処理である。

0132

図12は、仮想計算機切替処理のフローチャートである。

0133

仮想計算機切替処理は、仮想計算機の時分割実行処理を行っているVM実行部652が、タイマ108を用いて計測している時間が所定時間を経過した場合、プロセッサ101が、プロセッサ101の外部から、現在実行されていない仮想計算機への割込み要求を受け付けた場合等に、VM実行部652によって開始される。

0134

仮想計算機切替処理が開始されると、VM実行部652は、切り替え先となる仮想計算機を特定する(ステップS1200)。

0135

ステップS1200の処理が終わると、VM実行部652は、プロセッサ101のレジスタ値を、現在実行中となっている仮想計算機に対応付けられた所定の記憶領域に退避して、現在実行中となっている仮想計算機を中断させる(ステップS1220)。ここで、この所定の記憶領域は、メモリ102の記憶領域のうちの、ハイパーバイザ102によってのみアクセス可能となるハイパーバイザ割当て領域1101に設けられている。

0136

ステップS1220の処理が終わると、VM実行部652は、キャッシュメモリ105に記憶されているデータについて、ライトバック処理した後にフラッシュする(ステップS1230)。なお、キャッシュフラッシュによる実行速度の低下を回避するために、仮想計算機毎に利用できるキャッシュ領域を制限し、ステップS1230を省略しても良い。

0137

ステップS1230の処理が終わると、保護設定部662は、ステップS1200の処理においてVM実行部652によって特定された切り替え先となる仮想計算機を識別するVMID1020(図10参照)についての、領域ID1010それぞれについて対応付けられているアクセス情報を読み出して、メモリ保護情報400(図4参照)を生成し、生成したメモリ保護情報400で、メモリ保護ユニット107が記憶するメモリ保護情報400を更新する(ステップS1240)。

0138

ステップS1240の処理が終わると、VM実行部652は、切り替え先となる仮想計算機に対応付けられた所定の記憶領域に退避されている、プロセッサ101のレジスタ値を、プロセッサ101のレジスタに復旧して(ステップS1250)、その仮想計算機を起動する(ステップS1260)。なお、仮想計算機毎に利用できるキャッシュ領域の制限し、ステップS1230を省略している場合、本ステップS1260において、キャッシュ領域を切り替える。

0139

VM実行部652がステップS1260の処理を終了すると、仮想計算機システム100は、その仮想計算機切替処理を終了する。

0140

<メモリアクセス処理>
メモリアクセス処理は、メモリ保護ユニット107の行うメモリ102の記憶領域へのアクセス制御動作である。

0141

図13は、メモリアクセス処理のフローチャートである。

0142

メモリアクセス処理は、メモリ保護ユニット107が、内部バス120を介してプロセッサ101からのメモリ102の記憶領域へのアクセス要求を受けることによって開始される。

0143

メモリアクセス処理が開始されると、メモリ保護ユニット107は、記憶しているメモリ保護テーブル300(図3参照)を参照して、受けたアクセス要求のアドレスが、領域ID310によって識別される所定の領域のうちの、いずれの所定の領域に含まれているかを特定する(ステップS1300)。

0144

ステップS1300の処理が終わると、メモリ保護ユニット107は、記憶しているメモリ保護情報400(図4参照)を参照して、受けたアクセス要求のアクセス種(書込みと読出しとのいずれか)と、特定された領域を識別する領域ID410に対応付けられているアクセス情報420とを比較して(ステップS1310)、受けたアクセス要求のアクセス種が、特定された領域を識別する領域ID410に対応付けられているアクセス情報420を満たしているか否かを調べる(ステップS1320)。

0145

ステップS1320の処理において、受けたアクセス要求のアクセス種が、特定された領域を識別する領域ID410に対応付けられているアクセス情報420を満たしている場合には(ステップS1320:Yes)、メモリ保護ユニット107は、受けたアクセス要求を実行する(ステップS1330)。

0146

ステップS1320の処理において、受けたアクセス要求のアクセス種が、特定された領域を識別する領域ID410に対応付けられているアクセス情報420を満たしていない場合には(ステップS1320:No)、メモリ保護ユニット107は、受けたアクセス要求を実行せずに、プロセッサ101に対して、メモリ領域へのアクセスを実行できなかった旨の例外通知を行う(ステップS1340)。

0147

メモリ保護ユニット107がステップS1330の処理を終了した場合、又はステップS1340の処理を終了した場合には、仮想計算機システム100は、そのメモリアクセス処理を終了する。

0148

<アプリケーションプログラム実行処理>
アプリケーションプログラム実行処理は、要求受付部654が実行中の仮想計算機のオペレーティングシステムから、新たなアプリケーションプログラムの起動要求を受け付けた場合に、VM起動部651が、その新たなアプリケーションプログラムを実行させる仮想計算機を特定し、特定した仮想計算機に、その新たなアプリケーションプログラムの実行を指示する処理である。

0149

仮想計算機のオペレーティングシステムが、要求受付部654に新たなアプリケーションプログラムの起動要求を行う場合の例としては、例えば、仮想計算機システム100を利用するユーザーから、入力装置131が操作されることで、オペレーティングシステムによって実行制御されているタスクが、オペレーティングシステムに、新たなアプリケーションプログラムの起動の要求を依頼した場合等がある。

0150

図14は、アプリケーションプログラム実行処理のフローチャートである。

0151

アプリケーションプログラム実行処理は、要求受付部654が実行中の仮想計算機のオペレーティングシステムから、新たなアプリケーションプログラムの起動要求を受け付けることによって開始される。

0152

要求受付部654は、新たなアプリケーションプログラムの起動要求を受け付けると、起動要求を受け付けた旨の信号をVM起動部651へ送る。

0153

VM起動部651は、起動要求を受け付けた旨の信号を受けると、VM管理テーブル保持部640によって記憶されるアプリグループ管理テーブル700(図7参照)を参照して、そのアプリケーションプログラムが属するアプリケーションプログラムグループを特定し(ステップS1400)、さらに、VM管理テーブル保持部640によって記憶される仮想計算機管理テーブル800(図8参照)を参照して、特定したアプリケーショングループに属するアプリケーションプログラムを実行するための仮想計算機を特定する(ステップS1410)。

0154

ステップS1410の処理が終了すると、VM起動部651は、VM管理テーブル保持部640によって記憶される仮想計算機状態テーブル900(図9参照)を参照して、特定した仮想計算機が実行中であるか否かを調べる(ステップS1420)。

0155

ステップS1420の処理において、特定した仮想計算機が実行中でない場合に(ステップS1420:No)、VM起動部651は、さらに、VM管理テーブル保持部640によって記憶される仮想計算機状態テーブル900を参照して、特定した仮想計算機が終了処理中であるか否かを調べる(ステップS1430)。

0156

ステップS1430の処理において、特定した仮想計算機が終了処理中である場合には(ステップS1430:Yes)、VM起動部651は、特定した仮想計算機が終了処理中でなくなるまで待機する(ステップS1430:Yesの処理を繰り返す)。

0157

ステップS1430の処理において、特定した仮想計算機が終了処理中でない場合には(ステップS1430:No)、VM起動部651は、特定した仮想計算機をフォーク方式で生成する(ステップS1440)。

0158

ステップS1420の処理において、特定した仮想計算機が実行中の場合(ステップS1420:Yes)と、ステップS1440の処理が終了した場合とに、VM起動部651は、特定した仮想計算機のオペレーティングシステムに、対象となるアプリケーションの実行を開始させる旨の信号を送る(ステップS1450)。

0159

VM起動部651がステップS1450の処理を終了すると、仮想計算機システム100は、そのアプリケーションプログラム実行処理を終了する。

0160

<考察>
以下、具体例を用いて、仮想計算機システム100の動作について考察する。

0161

具体例として、アプリケーションプログラム名720(図7参照)が「メモ帳」となるアプリケーションプログラム(以下、単に「メモ帳」と呼ぶ。)、及びメモ帳によって利用されるデータが、領域ID1010(図10参照)が“3”となる所定の領域に格納され、アプリケーションプログラム名720が「メーラ」となるアプリケーションプログラム(以下、単に「メーラ」と呼ぶ。)、及びメーラによって利用されるデータが、領域ID1010が“5”となる所定の領域に格納されている場合において、メモ帳に、メーラを起動してアドレス帳に記録されている個人情報を外部に流出させるというマルウエアが含まれているときを考える。

0162

仮想計算機システム100において、メモ帳は、アプリグループID710が“1”となるアプリケーションプログラムグループに属するため(アプリグループ管理テーブル700(図7参照)を参照)、VMID810が“1”となる仮想計算機(以下、「仮想計算機1」と呼ぶ。)によって実行される(仮想計算機管理テーブル800(図8参照)を参照)。

0163

メモ帳を実行する仮想計算機1において、メモ帳に含まれるマルウエアが実行されてしまった場合に、このマルウエアは、メーラを起動させようと試みる

0164

しかしながら、メーラ、及びメーラによって利用されるデータは、領域ID1010が“5”となる所定の領域に格納されており、メモリ保護ユニット107によって、仮想計算機1からのアクセスが禁止されている(図10のアクセス許可情報1000を参照)。このため、マルウエアは、メーラを起動させること、メーラを改竄すること、及びメーラによって利用されるデータにアクセスすることができない。よって、マルウエアはアドレス帳に記録されている個人情報を外部に流出させることはない。

0165

このように、本実施の形態1に係る仮想計算機システム100は、仮想計算機が実行対象とするアプリケーションプログラムの中にマルウエアが含まれてしまっている場合であっても、そのマルウエアによって、マルウエアによって攻撃されたくないアプリケーションプログラムが攻撃されてしまう危険性を、従来よりも低く抑えることができる。
<実施の形態2>
<概要>
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態1における仮想計算機システム100の一部を変形した仮想計算機システム1500について説明する。

0166

実施の形態2に係る仮想計算機システム1500は、そのハードウエア構成が、実施の形態1に係る仮想計算機システム100から一部変形されており、また、実行されるソフトウエアの一部が、実施の形態1に係る仮想計算機システム100から一部変形されている。

0167

実施の形態1に係る仮想計算機システム100は、メモリ102の記憶領域へのアクセスを制御するメモリ保護ユニット107を備える構成の例であったが、実施の形態2に係る仮想計算機システム1500は、ハードウエアとしてのメモリ保護ユニットを備えず、プロセッサによって実行されるハイパーバイザが、メモリ102の記憶領域へのアクセスを制御する機能を有している場合の例である。

0168

以下、本実施の形態2に係る仮想計算機システム1500の構成について、図面を参照しながら、実施の形態1に係る仮想計算機システム100の構成との相違点を中心に説明する。

0169

<ハードウエア構成>
図15は、仮想計算機システム1500の主要なハードウエア構成を示すブロック図である。

0170

同図に示す通り、仮想計算機システム1500は、仮想計算機システム100と同様に、ハードウエアとしてはコンピュータ装置であり、実施の形態1に係る仮想計算機システム100から、集積回路110が集積回路1510に変形されたものである。

0171

<プログラムモジュール構成>
図16は、ある時刻t0において、プロセッサ101上で実行対象となるモジュールを示すブロック図である。

0172

同図において、モジュール群1600は、プロセッサ101において実行対象となっているモジュールの集合であって、モジュール群1600に含まれるモジュールのそれぞれは、対応するプログラムが、メモリ102の記憶領域に格納されている。

0173

仮想計算機システム1500におけるモジュール群1600は、実施の形態1に係る仮想計算機システム100におけるモジュール群600から、ハイパーバイザ630がハイパーバイザ1630に変更されたものとなっている。

0174

ハイパーバイザ1630は、実施の形態1に係るハイパーバイザ630から、VMメモリ管理部660がVMメモリ管理部1660に変更されるように変形されている。

0175

VMメモリ管理部1660は、実施の形態1に係るVMメモリ管理部660に対して、仮想MMU1670とメモリ保護部1680とが追加されるように変形されている。

0176

仮想MMU1670は、MMU106と協働して、メモリ102の物理記憶領域のアドレスを指定する物理アドレスと、プロセッサ101の利用する論理記憶領域のアドレスを指定する論理アドレスとの変換機能を有する。

0177

仮想計算機システム1500は、仮想計算機毎に個別に論理記憶領域を割り当てて仮想計算機を実行させる(以下、この仮想計算機毎に個別に割り当てる論理記憶領域のことを、「一次論理記憶領域」と呼び、一次論理記憶領域のアドレスを、「一次論理アドレス」と呼ぶ。)ように設定されており、この一次論理アドレスは、MMU106によって、メモリ102の利用する物理アドレスに変換されるように設定されている。

0178

この仮想MMU1670の有する機能は、各仮想計算機が、自仮想計算機内で利用している論理記憶アドレス(以下、この仮想計算機が自仮想計算機内で利用する論理記憶領域のことを「二次論理記憶領域」と呼び、二次論理記憶領域のアドレスを、「二次論理アドレス」と呼ぶ。)を、上述の一次論理アドレスに変換する機能である。

0179

メモリ保護部1680は、内部にメモリ保護テーブル300(図3参照)とメモリ保護情報400(図4参照)とを記憶する機能と、記憶するメモリ保護テーブル300とメモリ保護情報400とを参照して、仮想計算機が一次論理アドレスを用いて行うメモリ102の物理記憶領域へのアクセスを制御する機能とを有する。

0180

ここで、メモリ保護部1680の、メモリ保護テーブル300とメモリ保護情報400とを参照して行うメモリ102の記憶領域へのアクセス制御は、実施の形態1に係るメモリ保護ユニット107の行うメモリ102の記憶領域へのアクセスの制御(実施の形態1における、<メモリアクセス処理>項目参照)と同様のものであり、メモリ保護ユニット107をメモリ保護部1680と置き換えたものである。よって、ここではその説明を省略する。

0181

上述の構成の仮想計算機システム1500は、実施の形態1に係る仮想計算機システム100と同様に、仮想計算機が実行対象とするアプリケーションプログラムの中に、マルウエアが含まれてしまっている場合であっても、本来実行されたくないアプリケーションプログラムが実行されてしまう危険性を、従来よりも低く抑えることができる。
<実施の形態3>
<概要>
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態1における仮想計算機システム100の一部を変形した変形仮想計算機システムについて説明する。

0182

実施の形態3に係る変形仮想計算機システムは、そのハードウエア構成が、実施の形態1に係る仮想計算機システム100と同一であるが、実行されるソフトウエアの一部が、実施の形態1に係る仮想計算機システム100から一部変形されている。

0183

この変形仮想計算機システムは、仮想計算機が複数実行されている場合であっても、実行している仮想計算機の中の1つの仮想計算機のみ(ここでは、第1仮想計算機)がディスプレイ、キーボード等のデバイス直接制御し、それ以外の仮想計算機は、第1仮想計算機にデバイスの制御を依頼することで、間接的にデバイスを制御するという構成の仮想計算機システムの例である。

0184

以下、本実施の形態3に係る変形仮想計算機システムの構成について、図面を参照しながら、実施の形態1に係る仮想計算機システム100の構成との相違点を中心に説明する。

0185

図17は、ある時刻t0において、プロセッサ101上で実行対象となるモジュールを示すブロック図である。

0186

同図において、モジュール群1700は、プロセッサ101において実行対象となっているモジュールの集合であって、モジュール群1700に含まれるモジュールのそれぞれは、対応するプログラムが、メモリ102の記憶領域に格納されている。

0187

変形仮想計算機システムにおけるモジュール群1700は、実施の形態1に係る仮想計算機システム100におけるモジュール群600から、第1仮想計算機601が第1仮想計算機1701に変更され、第2仮想計算機602が第2仮想計算機1702に変更され、第3仮想計算機603が第3仮想計算機1703に変更されている。

0188

第1仮想計算機1701は、VMID1020が“0”となる、他の全ての仮想計算機の親仮想計算機であって、実施の形態1における第1仮想計算機601から、OS1A621が、デバイスドライバ1731を含むOS1A1721に変更されるように変形されている。

0189

第2仮想計算機1702は、タスク2B614を実行させるために、VM起動部651によって、第1仮想計算機1701を親仮想計算機としてフォーク方式で生成された仮想計算機であって、実施の形態1における第2仮想計算機602から、OS1B622が、デバイスドライバ1732を含むOS1B1722に変更されるように変形されている。

0190

第3仮想計算機1703は、タスク3C615を実行させるために、VM起動部651によって、第1仮想計算機1701を親仮想計算機としてフォーク方式で生成された仮想計算機であって、実施の形態1における第3仮想計算機603から、OS1C623が、デバイスドライバ1733を含むOS1C1723に変更されるように変形されている。

0191

デバイスドライバ1731は、フロントエンド部1741とバックエンド部1742とネイティブ部1743とから構成されている。なお、デバイスドライバとは、いわゆるデバイスを制御するプログラムのことであるが、ここでは、デバイス制御処理ファイルシステム処理、プロセス間通信処理、仮想計算機間通信処理等の、仮想計算機の入出力機能を実現するプログラムをも含んでいる。

0192

ネイティブ部1743は、対象となるデバイスを直接制御するための命令コード等によって構成され、デバイスを制御する機能を有する。

0193

このプログラムが格納されているメモリ102の記憶領域は、保護設定情報保持部661によって記憶されるアクセス許可情報1000(図10参照)によって、第1仮想計算機1701対してのみアクセス情報がR/Wとなり、他の仮想計算機に対してアクセス情報がNAとなるように設定されている。これにより、ネイティブ部1743は、第1仮想計算機1701以外の仮想計算機によって実行されることはない。

0194

バックエンド部1742は、自らを含む仮想計算機に含まれるフロントエンド部、及び、自らを含む仮想計算機以外の仮想計算機に含まれるフロントエンド部とサーバクライアントモデル通信する機能と、通信するフロントエンド部から、ネイティブ部1743の操作コマンド受け取り、受け取ったネイティブ部1743の操作コマンドをネイティブ部1743に出力する機能と、ネイティブ部1743から出力されたデータを受け取り、通信するフロントエンド部へ、受け取ったデータを出力する機能とを有する。

0195

このプログラムが格納されているメモリ102の記憶領域は、保護設定情報保持部661によって記憶されるアクセス許可情報1000によって、第1仮想計算機1701対してのみアクセス情報がR/Wとなり、他の仮想計算機に対してアクセス情報がNAとなるように設定されている。これにより、バックエンド部1742は、第1仮想計算機1701以外の仮想計算機によって実行されることはない。

0196

フロントエンド部1741は、バックエンド部1742とサーバクライアントモデルで通信する機能と、通信するバックエンド部1742へ、ネイティブ部1743の操作コマンドを送る機能と、通信するバックエンド部から出力されたデータを受け取る機能とを有する。

0197

このプログラムが格納されているメモリ102の記憶領域は、保護設定情報保持部661によって記憶されるアクセス許可情報1000によって、第1仮想計算機1701対してのみアクセス情報がR/Wとなり、他の仮想計算機に対してアクセス情報がROとなるように設定されている。これにより、フロントエンド部は、全ての仮想計算機によって実行されることができる(図17中のフロントエンド部1741、フロントエンド部1744、フロントエンド部1745に対応)。また、複数の仮想計算機によってフロントエンド部が実行される場合には、フロントエンド部が格納されているメモリ102の記憶領域は、COW処理部663によってコピーオンライト方式で管理されることとなる。

0198

デバイスドライバ1732は、第2仮想計算機1702の生成に伴って、デバイスドライバ1731を基に生成されたものであって、フロントエンド部1741を基に生成されたフロントエンド部1744を含んでいる。

0199

デバイスドライバ1732は、ネイティブ部とバックエンド部とを含んでいないが、これは、ネイティブ部1743が格納されているメモリ102の記憶領域とバックエンド部1742が格納されているメモリ102の記憶領域とは、第2仮想計算機1702から読出し、書込み共に不可となっているため、デバイスドライバ1732は、ネイティブ部とバックエンド部とを実行することができなくなっているためである。

0200

デバイスドライバ1733は、第3仮想計算機1703の生成に伴って、デバイスドライバ1731を基に生成されたものであって、フロントエンド部1741を基に生成されたフロントエンド部1745を含んでいる。

0201

デバイスドライバ1733は、ネイティブ部とバックエンド部とを含んでいないが、これは、ネイティブ部1743が格納されているメモリ102の記憶領域とバックエンド部1742が格納されているメモリ102の記憶領域とは、第3仮想計算機1703から読出し、書込み共に不可となっているため、デバイスドライバ1733は、ネイティブ部とバックエンド部とを実行することができなくなっているためである。

0202

<デバイス制御例>
ここでは、ネイティブ部1743を含まない仮想計算機、例えば第2仮想計算機1702が、デバイスを間接的に制御する場合について説明する。

0203

第2仮想計算機1702は、デバイスを間接的に制御する場合に、まずフロントエンド部1744にネイティブ部1743の操作コマンドを出力する。フロントエンド部1744は、ネイティブ部1743の操作コマンドを受けると、サーバクライアントモデルでバックエンド部1742と通信し、ネイティブ部1743の操作コマンドをバックエンド部1742に送る。バックエンド部1742は、ネイティブ部1743の操作コマンドを受けると、ネイティブ部1743に、ネイティブ部1743の操作コマンドを出力する。これにより、第2仮想計算機は、デバイスを操作することとなる。

0204

このように、本実施の形態3に係る変形仮想計算機システムによれば、複数の仮想計算機が実行対象となっている場合であっても、第1仮想計算機1701のネイティブ部1743のみがデバイスを直接制御することとなり、デバイス制御を排他的に行うことができる。
<補足>
以上、本発明に係る仮想計算機システムの一実施形態として、実施の形態1、実施の形態2、実施の形態3において、3つの仮想計算機システムの例について説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示した通りの仮想計算機システムに限られないことはもちろんである。
(1)実施の形態1において、仮想計算機システム100が1つのプロセッサを備える場合の例について説明したが、ハイパーバイザが複数の仮想計算機の実行制御をすることができれば、必ずしもプロセッサの数は1つに限られる必要はなく、例えば、2つ、3つといった複数個であっても構わない。プロセッサの数が複数個の場合には、ハイパーバイザは、仮想計算機の実行を必ずしも時分割で行う構成である必要はなく、複数の仮想計算機を並列に実行させる構成であっても構わない。
(2)実施の形態1において、プロセッサ101とメモリ102とキャッシュメモリ105とMMU106とメモリ保護ユニット107とタイマ108とDMAC109と内部バス120と第1インタフェース121と第2インタフェース122と第3インタフェース123とが1つの集積回路110に集積されている場合の例について説明したが、これらの回路が必ずしも1つの集積回路に集積されている必要はない。例えば、プロセッサ101とキャッシュメモリ105とが第1の集積回路に集積され、その他の回路が第2の集積回路に集積される構成されていても構わないし、例えば、各回路がそれぞれ互いに異なる集積回路に集積される構成であっても構わない。
(3)実施の形態1において、プロセッサ101が2つの動作モードを備える構成の場合を例として説明したが、アプリケーションプログラムを実行するモードとオペレーティングシステムを実行するモードとよりも高い特権モードでハイパーバイザを実行することができる構成であれば、必ずしも動作モードの数は2つに限られる必要はなく、例えば、3つ以上であっても構わない。その場合、ハイパーバイザを実行する動作モードを、オペレーティングシステムを実行するよりも高い特権モードとすることができ、ハイパーバイザにおける仮想MMU処理や、I/Oエミュレーション処理オーバーヘッドを大幅に軽減することができる。
(4)実施の形態1において、第1仮想計算機601が、他の全ての仮想計算機の親となる構成の場合を例として説明したが、生成される子仮想計算機のそれぞれついて、メモリ102の記憶領域へのアクセス制限を実現することができれば、必ずしも親となる仮想計算機が第1仮想計算機601に限られる必要はなく、例えば、ある仮想計算機の子仮想計算機となっている仮想計算機が、他の仮想計算機の親となり得る構成であっても構わない。
(5)実施の形態1において、仮想計算機の生成をフォーク形式で行う構成の場合を例として説明した。これは、仮想計算機の生成をフォーク形式で行うことによって、メモリ102の記憶領域が効率的に利用されることとなるためである。

0205

しかしながら、メモリ102の記憶領域の利用効率の非効率性許容することができれば、親となる仮想計算機を元にして子仮想計算機を生成する場合に、必ずしもフォーク形式で行う必要はない。

0206

一例として、親となる仮想計算機に割り当てられている全ての記憶領域と、新たに生成する仮想計算機に割り当てる全ての記憶領域とが、1対1に対応するように、親となる仮想計算機に割り当てられている記憶領域を、新たに生成する仮想計算機の記憶領域にコピーすることによって、新たな仮想計算機を生成する形式等が考えられる。

0207

また、このように、子仮想計算機の記憶領域が親仮想計算機の記憶領域からコピーされたものである場合等には、これらの記憶領域は、必ずしもコピーオンライト方式で管理される必要はなくなる。
(6)実施の形態2において、二次論理アドレスと一次論理アドレスとの変換を行う機能を有する仮想MMU1670が、ハイパバイザ1630の内部に含まれている構成の場合を例として説明したが、二次論理アドレスと一次論理アドレスとの変換を行う機能を実現することができれば、必ずしもハイパバイザ1630の内部に仮想MMU1670が含まれている必要はなく、例えば、集積回路1510内に、二次論理アドレスと一次論理アドレスとの変換を行う機能を有するハードウエアを備える構成であっても構わない。
(7)以下、さらに本発明の一実施形態に係る仮想計算機システムの構成及びその変形例と各効果について説明する。

0208

(a)本発明の一実施形態に係る仮想計算機システムは、記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第1種プログラムを格納する第1記憶領域と、第2種プログラムを格納する第2記憶領域とを含み、前記ハイパーバイザは、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けるための起動要求受付部と、前記プロセッサによって実行される前記起動要求受付部が、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理するための仮想計算機生成部とを含み、前記アクセス制御部は、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように行うことを特徴とする。

0209

上述の構成を備える本実施形態に係る仮想計算機システムによると、未認証アプリケーションプログラムを第1種プログラムとして第1記憶領域に格納し、認証済アプリケーションプログラムを第2種プログラムとして第2記憶領域に格納することで、未認証アプリケーションプログラムを実行する仮想計算機は、認証済アプリケーションプログラムにアクセスすることができなくなる。

0210

従って、仮想計算機が実行対象とするアプリケーションプログラムの中に、認証済アプリケーションプログラムと、未認証アプリケーションプログラムとが混在している場合であっても、未認証アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、認証済アプリケーションプログラムが攻撃されてしまう危険性を従来よりも低く抑えることができる。

0211

図18は上記変形例における仮想計算機システム1800の概略構成図である。

0212

同図に示されるように、仮想計算機システム1800は、プロセッサ1801とアクセス制御部1802と記憶装置1803とから構成される。そして、記憶装置1803は、第1記憶領域1811と第2記憶領域1812とを含み、ハイパーバイザ1813がロードされている。また、ハイパーバイザ1813は、起動要求受付部1822と仮想計算機生成部1822とを含んでいる。

0213

プロセッサ1801は、アクセス制御部1802を介して、記憶装置1803に接続されるプロセッサである。一例として、実施の形態1におけるプロセッサ101(図1参照)として実現される。

0214

記憶装置1803は、第1記憶領域1811と第2記憶領域1812とを含む。一例として、実施の形態1におけるメモリ102(図1参照)として実現される。

0215

第1記憶領域1811は、第1種プログラムを格納する記憶領域である。この第1記憶領域1811は、一例として、実施の形態1における領域C503(図5参照)として実現される。また、第1種プログラムは、一例として、実施の形態1におけるメモ帳(図7参照)として実現される。

0216

第2記憶領域1812は、第2種プログラムを格納する記憶領域である。この第2記憶領域1812は、一例として、実施の形態1における領域E505(図5参照)として実現される。また、第2種プログラムは、一例として実施の形態1におけるメーラ(図7参照)として実現される。

0217

ハイパーバイザ1813は、プロセッサ1801上で実行され、プロセッサ1801に複数の仮想計算機の実行制御をさせるハイパーバイザであって、起動要求受付部1822と仮想計算機生成部1822とを含む。このハイパーバイザ1813は、一例として、実施の形態1におけるハイパーバイザ630(図6参照)として実現される。

0218

起動要求受付部1822は、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けるためのコード群である。一例として、実施の形態1における要求受付部654として実現される。

0219

仮想計算機生成部1823は、1801プロセッサによって実行される起動要求受付部1822が、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理するためのコード群である。一例として、実施の形態1におけるVM起動部651とVM実行部652として実現される。

0220

アクセス制御部1802は、仮想計算機からの、記憶装置1803の記憶領域へのアクセスを、プロセッサ1801によって実行される仮想計算機生成部1823によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように制御する機能を有する。一例として、実施の形態1におけるメモリ保護ユニット107(図1参照)として実現される。

0221

(b)また、前記アクセス制御部は、前記第2記憶領域のアドレスを特定する第2領域特定情報を記憶するための第2領域特定情報記憶部を有し、前記アクセスの制御を、前記第2領域特定情報記憶部に記憶されている前記第2領域特定情報を参照して行うとしてもよい。

0222

このような構成にすることによって、アクセス制御部は、第2記憶領域のアドレスを、アクセス制御部の外部を参照することなく特定することができるようになる。

0223

(c)また、前記記憶装置は、プログラムを特定する情報と、プログラムの種別を特定する情報とを対応付けるプログラム対応情報を記憶するためのプログラム対応情報記憶領域を含み、前記仮想計算機生成部は、前記プロセッサによって実行される前記起動要求受付部が、仮想計算機から、プログラムの起動要求を受け付けた場合に、当該プログラムが、いずれの種別のプログラムであるかを、前記プログラム対応情報記憶領域に記憶されているプログラム対応情報に基づいて特定するためのプログラム種特定部を含み、前記プロセッサによって実行される前記起動要求受付部が、第1種プログラムの起動要求を受け付けた場合に行う、前記生成した仮想計算機に対する第1種仮想計算機としての管理と、前記プロセッサによって実行される前記起動要求受付部が、第2種プログラムの起動要求を受け付けた場合に行う、前記生成した仮想計算機に対する第2種仮想計算機としての管理とを、前記プログラム種特定部によって特定されたプログラムの種別に基づいて行うとしてもよい。

0224

このような構成にすることによって、仮想計算機生成部は、プログラム対応情報記憶領域に記憶されているプログラム対応情報に基づいて、仮想計算機の種別管理を行うことができるようになる。

0225

(d)また、前記仮想計算機生成部は、前記プロセッサによって実行される前記起動要求受付部が、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けた場合において、仮想計算機を生成するときに、当該生成する仮想計算機に対する、前記記憶装置における記憶領域の割り当てを、前記起動要求の要求元仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行うとしてもよい。

0226

このような構成にすることによって、新たな仮想計算機の生成をフォーク方式で行われることとなるため、記憶装置の記憶領域の利用効率を向上することができるようになる。

0227

(e)また、前記ハイパーバイザは、前記プロセッサによって実行される前記仮想計算機生成部が、第1の仮想計算機に対する記憶領域の割り当てを、第2の仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行った場合に、前記第1の仮想計算機と前記第2の仮想計算機とによって行われる、前記記憶装置における記憶領域へのアクセスが、コピーオンライト方式で行われるように、仮想計算機からの、前記記憶装置における記憶領域へのアクセスを制御するためのコピーオンライト実行制御部を含むとしてもよい。

0228

このような構成にすることによって、親仮想計算機による記憶領域へのアクセスと、親仮想計算機を元にしてフォーク方式で生成された子仮想計算機による記憶領域への管理とがコピーオンライト方式で行われることとなるため、記憶装置の記憶領域の利用効率を向上することができるようになる。

0229

(f)また、前記第1記憶領域は、さらに、前記第1種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含み、前記第2記憶領域は、さらに、前記第2種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含むとしてもよい。

0230

このような構成にすることによって、第1種プログラムを実行する仮想計算機に、第2種プログラムを実行する仮想計算機が利用するデータを、利用させないようにすることができるようになる。

0231

(g)また、前記記憶装置は、デバイスドライバを記憶するデバイスドライバ記憶領域と、前記デバイスドライバ記憶領域に記憶されている前記デバイスドライバを実行する仮想計算機以外の仮想計算機によって実行されることで、前記デバイスドライバを実行する仮想計算機と通信し、前記デバイスドライバを実行する仮想計算機に、デバイスの制御をさせるためのデバイス制御プログラムを記憶するデバイス制御プログラム記憶領域とを含み、前記アクセス制御部は、前記アクセスの制御を、実行制御対象である仮想計算機の中の1つの仮想計算機に限って、前記デバイスドライバ記憶領域へのアクセスが許可されるように行うとしてもよい。

0232

このような構成にすることによって、複数の仮想計算機によるデバイス制御を排他的に行うことができる。

0233

本発明は、仮想計算機システムに広く利用することができる。

0234

100仮想計算機システム
110集積回路
101プロセッサ
102メモリ
103 ROM
104 RAM
105キャッシュメモリ
106 MMU
107メモリ保護ユニット
108タイマ
109DMAC
120内部バス
600モジュール群
601 第1仮想計算機
602 第2仮想計算機
603 第3仮想計算機
630ハイパーバイザ
640 VM管理テーブル保持部
650 VM実行制御部
651 VM起動部
652 VM実行部
653 VM終了部
654要求受付部
660 VMメモリ管理部
661保護設定情報保持部
662 保護設定部
663 COW処理部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ