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

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

Info

Publication number
JPWO2012117465A1
JPWO2012117465A1 JP2012539103A JP2012539103A JPWO2012117465A1 JP WO2012117465 A1 JPWO2012117465 A1 JP WO2012117465A1 JP 2012539103 A JP2012539103 A JP 2012539103A JP 2012539103 A JP2012539103 A JP 2012539103A JP WO2012117465 A1 JPWO2012117465 A1 JP WO2012117465A1
Authority
JP
Japan
Prior art keywords
virtual machine
virtual
program
storage area
type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012539103A
Other languages
English (en)
Other versions
JP5981845B2 (ja
Inventor
忠雄 谷川
忠雄 谷川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2012117465A1 publication Critical patent/JPWO2012117465A1/ja
Application granted granted Critical
Publication of JP5981845B2 publication Critical patent/JP5981845B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Abstract

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

Description

本発明は、仮想計算機システムに関し、特に、仮想計算機からの記憶領域へのアクセスの制御技術に関する。
従来、仮想計算機システムとして、複数の仮想計算機を実行制御するシステムが知られている。
このような仮想計算機システムにおいて、ハードウエア資源の利用効率を向上させる技術として、仮想計算機システムの処理負荷に応じて、仮想計算機の生成と終了とを動的に制御する技術がある。
例えば、特許文献1では、親仮想計算機をフォークすることで子仮想計算機を生成する技術が開示され、特許文献2では、仮想計算機上で実行されているアプリケーションプログラムからの要求に基づいて、その仮想計算機をクローン化することで、子仮想計算機を生成する技術が開示されている。
特開2004−133894号公報 特開2008−165795号公報
ところで、仮想計算機システムにおいて、実行対象となるアプリケーションプログラムの中に、マルウエアが含まれていないと認証されているアプリケーションプログラム(以下、「認証済アプリケーションプログラム」と呼ぶ。)と、マルウエアが含まれていないと認証されていないアプリケーションプログラム(以下、「未認証アプリケーションプログラム」と呼ぶ。)とが混在している場合がある。
このような場合において、未認証アプリケーションプログラムにマルウエアが含まれているとき、このマルウエアが実行されてしまうことで、認証済アプリケーションプログラムが攻撃されることがある。
認証済アプリケーションプログラムが攻撃される場合の例としては、例えば、認証済アプリケーションプログラムやデータが改竄されてしまう場合、認証済アプリケーションプログラムが不適切な方法で実行され、システムの管理者権限が奪われた結果、計算機システムを不正に乗っ取られてしまい、外部に対して秘匿されるべき情報、例えば、システムに保存された有料コンテンツ、個人情報、暗号キー等が読み出されてしまう場合等がある。
従来の、仮想計算機を動的に生成する仮想計算機システムでは、新たなアプリケーションプログラムを実行させる場合において、そのアプリケーションプログラムを実行させるための仮想計算機が存在しないとき等に、親仮想計算機を基にして新たな子仮想計算機を生成し、その子仮想計算機に、そのアプリケーションプログラムを実行させる。
このような場合には、親仮想計算機から生成される子仮想計算機は、親仮想計算機と同じ機能を持つこととなる。よって、親仮想計算機の実行対象となるアプリケーションプログラムの中に、認証済アプリケーションプログラムが含まれている場合には、未認証アプリケーションプログラムを実行させるために生成された子仮想計算機であっても、実行対象となるアプリケーションプログラムの中に、認証済アプリケーションプログラムが含まれてしまうこととなる。
従って、従来の仮想計算機システムでは、子仮想計算機の実行する未認証アプリケーションプログラムの中にマルウエアが含まれてしまっている場合に、そのマルウエアによって、認証済アプリケーションプログラムが攻撃されてしまうことがある。
そこで、本発明は係る問題に鑑みてなされたものであり、仮想計算機が実行対象とするアプリケーションプログラムの中に、認証済アプリケーションプログラムと、未認証アプリケーションプログラムとが混在している場合であっても、未認証アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、システムの乗っ取りやデータの盗難、および改竄の原因となる認証済アプリケーションプログラムに対する攻撃などの、ソフトウェアの不正実行を防止することができる仮想計算機システムを提供することを目的とする。
上記課題を解決するために本発明に係る仮想計算機システムは、記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、
仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第1種プログラムを格納する第1記憶領域と、第2種プログラムを格納する第2記憶領域とを含み、前記ハイパーバイザは、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けるための起動要求受付部と、前記プロセッサによって実行される前記起動要求受付部が、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理するための仮想計算機生成部とを含み、前記アクセス制御部は、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように行うことを特徴とする。
上述の構成を備える本発明に係る仮想計算機システムによると、未認証アプリケーションプログラムを第1種プログラムとして第1記憶領域に格納し、認証済アプリケーションプログラムを第2種プログラムとして第2記憶領域に格納することで、未認証アプリケーションプログラムを実行する仮想計算機は、認証済アプリケーションプログラムにアクセスすることができなくなる。
従って、仮想計算機が実行対象とするアプリケーションプログラムの中に、認証済アプリケーションプログラムと、未認証アプリケーションプログラムとが混在している場合であっても、未認証アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、システムの乗っ取りデータの盗難、および改竄の原因となる認証済アプリケーションプログラムに対する攻撃などの、ソフトウェアの不正実行を防止することができる。
仮想計算機システム100の主要なハードウエア構成を示すブロック図 プロセッサ101が有する動作モードを示す動作モード図 メモリ保護テーブルのデータ構造を示すデータ構造図 メモリ保護情報のデータ構造を示すデータ構造図 メモリ102の記憶領域の区分けを示す記憶領域図 プロセッサ101上で実行対象となるプログラムモジュールを示すブロック図 アプリグループ管理テーブル700のデータ構造図 仮想計算機管理テーブル800のデータ構造図 仮想計算機状態テーブル900のデータ構造図 アクセス許可情報1000のデータ構造 メモリ102の記憶領域の区分けを示す記憶領域図 仮想計算機切替処理のフローチャート メモリアクセス処理のフローチャート アプリケーションプログラム実行処理のフローチャート 仮想計算機システム1500の主要なハードウエア構成を示すブロック図 プロセッサ101上で実行対象となるプログラムモジュールを示すブロック図 プロセッサ101上で実行対象となるプログラムモジュールを示すブロック図 変形例における仮想計算機システム1800の概略構成図
<実施の形態1>
<概要>
以下、本発明に係る仮想計算機システムの一実施形態として、アプリケーションプログラムを実行するユーザーモードと、ユーザーモードより上位のスーパーバイザモードとの2つのプログラム実行モードを有するプロセッサを備え、プロセッサのスーパーバイザモードで実行される複数のオペレーティングシステムを、プロセッサのスーパーバイザモードで実行されるハイパーバイザが時分割実行制御する仮想計算機システムについて説明する。
この仮想計算機システムは、プロセッサに加えて、仮想計算機からメモリの記憶領域へのアクセス制御を行うメモリ保護ユニットを備える。そして、プロセッサによって実行されるハイパーバイザとメモリ保護ユニットとが協働して動作することで、仮想計算機それぞれについて、メモリの記憶領域へのアクセスを、それぞれ所定の領域へのアクセスが禁止されるように制御する。
従って、この仮想計算機システムで実行される仮想計算機のそれぞれは、アクセスが禁止されている領域に格納されているプログラム、データ等にアクセスすることができなくなっている。
以下、本実施の形態1に係る仮想計算機システムの構成について図面を参照しながら説明する。
<ハードウエア構成>
図1は、仮想計算機システム100の主要なハードウエア構成を示すブロック図である。
同図に示す通り、仮想計算機システム100は、ハードウエアとしてはコンピュータ装置であり、集積回路110と入力装置131と出力装置132とから構成される。
集積回路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とから構成されている。
プロセッサ101は、キャッシュメモリ105とMMU106とに接続され、ROM103又はRAM104に記憶されているプログラムを実行することで、ROM103、RAM104、キャッシュメモリ105、MMU106、メモリ保護ユニット107、タイマ108、入力装置131、出力装置132を制御して、様々な機能を実現する。
図2は、プロセッサ101の備える動作モードを示す動作モード図である。
同図に示されるように、プロセッサ101は、アプリケーションプログラム(図中のタスクA231、タスクK232、タスクL233等)を実行するユーザーモード230と、オペレーティングシステム(図中の第1OS(Operating System)221、第2OS222、第3OS223等)とハイパーバイザを実行する特権モード(以下、「スーパーバイザモード」と呼ぶ。)220とを有する。
ユーザーモード230で実行されるアプリケーションプログラムは、スーパーバイザモード220で実行されるオペレーティングシステムによって時分割実行制御され、スーパーバイザモード220で実行されるオペレーティングシステムは、同じくスーパーバイザモード220で実行されるハイパーバイザによって時分割実行制御される。
再び図1に戻って、仮想計算機システム100の構成についての説明を続ける。
ROM103は、メモリ保護ユニット107に接続され、プロセッサ101の動作を規定するプログラムと、プロセッサ101が利用するデータとを記憶している。
RAM104は、メモリ保護ユニット107に接続され、プロセッサ101の動作を規定するプログラムと、プロセッサ101が利用するデータとを記憶する。
キャッシュメモリ105は、プロセッサ101とMMU106と内部バス120とに接続され、プロセッサ101によって利用される。
MMU106は、プロセッサ101とキャッシュメモリ105と内部バス120とに接続され、メモリ102の物理記憶領域のアドレスを指定する物理アドレスと、プロセッサ101の利用する論理記憶領域のアドレスを指定する論理アドレスとの変換機能を有する。
メモリ保護ユニット107は、メモリ102と内部バス120とに接続され、内部にメモリ保護テーブルとメモリ保護情報とを記憶する機能と、記憶するメモリ保護テーブルとメモリ保護情報とを参照して、内部バス120のバスマスタ(ここでは、プロセッサ101、DMAC109)からのメモリ102の記憶領域へのアクセスを制御する機能とを有する。
図3は、メモリ保護ユニット107によって記憶されるメモリ保護テーブル300のデータ構造を示すデータ構造図である。
同図に示されるように、メモリ保護テーブル300は、領域ID310と開始アドレス320とサイズ330とが対応付けられて構成されている。
領域ID310は、メモリ102の記憶領域の中の、所定の記憶領域を識別するための識別子である。
開始アドレス320は、対応する領域ID310によって識別される所定の記憶領域の開始アドレスである。
サイズ330は、対応する領域ID310によって識別される所定の記憶領域のサイズをメガバイト単位で示すものである。
このメモリ保護テーブル300によると、例えば、領域ID310が“1”となる所定の記憶領域は、開始アドレスが“0x8000_0000”であって、そのサイズが2MB(Mega Byte)となる記憶領域であることを示している。
図4は、メモリ保護ユニット107によって記憶されるメモリ保護情報400のデータ構造を示すデータ構造図である。
同図に示されるように、メモリ保護情報400は、領域ID410とアクセス情報420とが対応付けられて構成されている。
領域ID410は、領域ID310と同様に、メモリ102の記憶領域の中の、所定の記憶領域を識別するための識別子である。
アクセス情報420は、対応する領域ID410によって識別される所定の記憶領域に対して行われるアクセスの制限を示す情報であって、(1)読出し、書込み共に可の旨を示す情報(以下、「R/W」と呼ぶ。)と(2)読出し可、書込み不可の旨を示す情報(以下、「RO」と呼ぶ。)と(3)読出し不可、書込み可の旨を示す情報(以下、「WO」と呼ぶ。)と(4)読出し、書込み共に不可の旨を示す情報(以下、「NA」と呼ぶ。)との4つの情報のうちのいずれか1つの情報となる。
このメモリ保護情報400によると、例えば、領域ID410が“1”となる所定の領域は、読出し、書込み共に不可であり、領域ID410が“2”となる所定の領域は、読出し、書込み共に可であり、領域ID410が“3”となる所定の領域は、読出し可、書込み不可であり、領域ID410が“4”となる所定の領域は、読出し、書込み共に不可であること等を示している。
図5は、メモリ保護ユニット107による、メモリ102の記憶領域へのアクセスの制御が、複数の所定の領域に区分されて行われることを示す、メモリ102の記憶領域図である。
同図に示される通り、メモリ102の記憶領域は、メモリ保護ユニット107によってメモリ保護テーブルを参照されることで、領域ID310が“1”となる領域A501、領域ID310が“2”となる領域B502、領域ID310が“3”となる領域C503、領域ID310が“4”となる領域D504等に区分される。
なお、メモリ保護ユニット107の行うメモリ102の記憶領域へのアクセス制御動作についてのより詳細な内容については、後程<メモリアクセス処理>の項目の部分で、フローチャートを用いて説明する。
再び図1に戻って、仮想計算機システム100の構成についての説明を続ける。
タイマ108は、内部バス120に接続され、プロセッサ101によって制御される。
DMAC109は、内部バス120に接続され、第1インタフェース121に接続される入力装置131、第2インタフェース122に接続される出力装置132、及び第3インタフェース123に接続される外部の集積回路等と、メモリ102との間のデータ転送を、プロセッサ101を介さずに行う機能を有する。
内部バス120は、MMU106とキャッシュメモリ105とメモリ保護ユニット107とタイマ108と第1インタフェース121と第2インタフェース122と第3インタフェース123とDMAC109とに接続され、これら接続される回路間の信号を伝達する機能を有する。
第1インタフェース121と第2インタフェース122と第3インタフェース123とは、それぞれ内部バス120に接続され、それぞれ内部バス120と入力装置131との間の信号のやり取りを仲介する機能、内部バス120と出力装置132との間の信号のやり取りを仲介する機能、外部の集積回路等との間の信号のやり取りを仲介する機能を有する。
入力装置131は、キーボード、マウス、カメラ、センサー等を含み、第1インタフェース121に接続され、プロセッサ101によって制御され、キーボード、マウス、カメラ、センサー等を通じてユーザー操作等に応じたデータを生成し、ユーザー操作等が発生したこと示す通知や、生成したデータをプロセッサ101に送る機能を有する。
出力装置132は、ディスプレイ、スピーカー等を含み、第2インタフェース122に接続され、プロセッサ101によって制御され、ディスプレイ、スピーカー等を用いて文字列、画像、音声等を表示、出力する機能を有する。
上述の仮想計算機システム100は、プロセッサ101が、ROM103、RAM104に記憶されているプログラムを実行することによって、様々な機能を実現する。
<プログラムモジュール構成>
図6は、ある時刻t0において、プロセッサ101上で実行対象となるプログラムモジュール(以下、単に「モジュール」と呼ぶ。)を示すブロック図である。
同図において、モジュール群600は、プロセッサ101において実行対象となっているモジュールの集合であって、モジュール群600に含まれるモジュールのそれぞれは、対応するプログラムが、メモリ102の記憶領域に格納されている。
タスク1A611、タスク2A612、タスク3A613、タスク2B614、タスク3C615のそれぞれは、プロセッサ101のユーザーモードで実行されるタスクである。
OS1A621、OS1B622、OS1C623のそれぞれは、プロセッサ101のスーパーバイザモードにおいて実行されるマルチタスク対応オペレーティングシステムである。
ハイパーバイザ630は、プロセッサ101のスーパーバイザモードで実行されるハイパーバイザである。
仮想計算機システム100において、アプリケーションプログラムは、スーパーバイザモードで実行されるマルチタスク対応オペレーティングシステムによって実行制御され、ユーザーモードで実行される。また、オペレーティングシステムは、ハイパーバイザによって実行制御され、スーパーバイザモードで実行される。
アプリケーションプログラムは、予め用意されたオペレーティングステム呼び出しルーチンを呼び出すことで、オペレーティングシステムに対して所定の処理を依頼することができる。また、オペレーティングシステムは、予め用意されたハイパーバイザ呼び出しルーチンを呼び出すことで、ハイパーバイザに対して所定の処理を依頼することができる。
また、仮想計算機システムの実行に際して発生した例外や、外部装置から発生した割込みは、ハイパーバイザで処理し、必要に応じて仮想計算機上のオペレーティングシステムに対して再配送する。
OS1A621は、タスク1A611とタスク2A612とタスク3A613とを実行制御し、OS1A621とタスク1A611とタスク2A612とタスク3A613とからなるシステムを第1仮想計算機601として機能させている。
OS1B622は、タスク2B614を実行制御し、OS1B622とタスク2B614とからなるシステムを第2仮想計算機602として機能させている。
OS1C623は、タスク3C615を実行制御し、OS1C623とタスク3C615とからなるシステムを第3仮想計算機603として機能させている。
ここで、第2仮想計算機602は、第1仮想計算機601を親仮想計算機として、フォーク方式で生成された子仮想計算機であり、第3仮想計算機603は、第1仮想計算機601を親仮想計算機として、フォーク方式で生成された子仮想計算機である。フォーク方式での仮想計算機の生成については後述する。
ハイパーバイザ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つのモジュールを含む。
VM管理テーブル保持部640は、予め定められたアプリグループ管理テーブルと、予め定められた仮想計算機管理テーブルと、VM実行部652によって生成される仮想計算機状態テーブルとを記憶する機能を有する。
図7は、VM管理テーブル保持部640によって記憶されるアプリグループ管理テーブル700のデータ構造を示すデータ構造図である。
同図に示されるように、アプリグループ管理テーブル700は、アプリグループID710とアプリケーションプログラム名720とが対応付けられて構成されている。
アプリケーションプログラム名720は、アプリケーションプログラムを特定するアプリケーションプログラムの名前である。
アプリグループID710は、対応するアプリケーションプログラム名720で特定されるアプリケーションプログラムが属するアプリケーションプログラムグループを識別するための識別子である。
このアプリグループ管理テーブル700によると、例えば、メモ帳、電卓、端末設定という名前のアプリケーションプログラムは、アプリグループIDが“1”であるアプリケーションプログラムグループに属し、DTV(Digital Television)アプリという名前のアプリケーションプログラムは、アプリグループIDが“2”であるアプリケーションプログラムグループに属することを示している。
図8は、VM管理テーブル保持部640によって記憶される仮想計算機管理テーブル800のデータ構造を示すデータ構造図である。
同図に示されるように、仮想計算機管理テーブル800は、VMID810とアプリグループID820とが対応付けられて構成されている。
アプリグループID820は、アプリグループID710と同様の識別子である。
VMID810は、対応するアプリグループID820によって識別されるアプリケーションプログラムグループに属するアプリケーションプログラムを実行するための仮想計算機を識別するための識別子である。
この仮想計算機管理テーブル800によると、例えば、VMID810が“1”で識別される仮想計算機は、アプリグループID820が“1”で特定されるアプリケーションプログラムグループに属するアプリケーションプログラムと、“4”で特定されるアプリケーションプログラムグループに属するアプリケーションプログラムとを実行するための仮想計算機であることを示している。
図9は、VM管理テーブル保持部640によって記憶される仮想計算機状態テーブル900のデータ構造を示すデータ構造図である。
同図に示されるように、仮想計算機状態テーブル900は、VMID910と実行状態920とが対応付けられて構成されている。
VMID910は、仮想計算機を識別するための識別子である。
実行状態920は、対応するVMID910によって識別される仮想計算機の実行状態を示す情報であって、(1)仮想計算機が起動されて時分割実行処理の対象となっており、新たなタスク処理を行うことができる状態の旨を示す情報(以下、「実行中」と呼ぶ。)と(2)仮想計算機が起動されていない状態の旨を示す情報(以下、「未起動」と呼ぶ。)と(3)仮想計算機が起動されて時分割実行処理の対象となっているが、その仮想計算機を終了させるための終了処理が実行中であり、新たなタスク処理を行うことができない状態の旨を示す情報(以下、「終了処理中」と呼ぶ。)との3つの情報のうちのいずれか1つの情報となる。ここで、仮想計算機を終了させるための終了処理とは、その仮想計算機を実行するために、ハイパーバイザと仮想計算機自身によって確保した記憶領域を解放する処理のことをいう。
再び図6に戻って、プロセッサ101上で実行対象となるモジュールの説明を続ける。
要求受付部654は、実行中の仮想計算機のオペレーティングシステムから、新たなアプリケーションプログラムの起動要求を受け付け、起動要求を受け付けた旨の信号をVM起動部651へ送る機能を有する。
VM起動部651は、以下の3つの機能を有する。
機能1:新たなアプリケーションプログラムを実行させるために、親となる仮想計算機を基にして、フォーク方式で新たな子仮想計算機を生成する機能。
ここで、フォーク方式での仮想計算機の生成とは、親となる仮想計算機に割り当てられている全ての記憶領域と、新たに生成する仮想計算機に割り当てる全ての記憶領域とが、1対1に対応するように、親となる仮想計算機に割り当てられている記憶領域を、新たに生成する仮想計算機の記憶領域にマッピングすることによって、新たな仮想計算機を生成することである。なお、新たに仮想計算機が生成された後は、親となる仮想計算機の記憶領域と、新たに生成された仮想計算機の記憶領域とは、COW処理部663によってコピーオンライト方式で管理されることとなる。このCOW処理部663による記憶領域のコピーオンライト方式による管理についての詳細については後述する。
機能2:新たなアプリケーションプログラムを実行させるために新たな子仮想計算機を生成した場合に、VM管理テーブル保持部640に記憶されている、アプリグループ管理テーブル700と仮想計算機管理テーブル800とを参照して、その新たな子仮想計算機を識別するための識別子であるVMIDを、その新たな仮想計算機に付与して、VM管理テーブル保持部640に記憶されている仮想計算機状態テーブル900を、付与したVMIDに対応付けられている実行状態920が“実行中”となるように更新する機能。
機能3:プロセッサ101が初期化されることで、VM起動部651が起動された場合に、他の全ての仮想計算機の親となる仮想計算機を生成し、生成した仮想計算機を識別するためのVMIDを“0”とする機能。
VM実行部652は、タイマ108を用いて、複数の仮想計算機を、時分割実行制御方式で実行制御する機能を有する。
VM終了部653は、仮想計算機から、その仮想計算機を終了させる要求である終了要求を受け付ける機能と、終了要求を受け付けた場合に、対象となる仮想計算機に対して前述の終了処理を実行し、その仮想計算機を終了させる機能を有する。
保護設定情報保持部661は、アクセス許可情報を記憶する機能を有する。
図10は、保護設定情報保持部661によって記憶されるアクセス許可情報1000のデータ構造を示すデータ構造図である。
同図に示されるように、アクセス許可情報1000は、領域ID1010とVMID1020とアクセス情報(図中のNA、R/W、RO等)とが対応付けられて構成されている。
このアクセス許可情報1000は、予め定められたオリジナルアクセス情報の部分(領域ID1010が1〜6に対応する部分)と、COW処理部663によって、予め定められたオリジナルアクセス情報に対して追記された部分(領域ID1010が1〜6以外の領域ID1010に対応する部分)とによって構成される。
領域ID1010は、領域ID310と同様に、メモリ102の記憶領域の中の、所定の記憶領域を識別するための識別子である。
VMID1020は、VMID910と同様に、仮想計算機を識別するための識別子である。
アクセス情報は、対応するVMID1020によって識別される仮想計算機についての、対応する領域ID1010によって識別される所定の記憶領域に対して行われるアクセスの制限を示す情報であって、アクセス情報420と同様に、R/WとROとWOとNAとの4つの情報のうちのいずれか1つの情報となる。
このアクセス許可情報1000によると、例えば、VMID1020が“1”で識別される仮想計算機について、領域ID1010が“1”となる所定の領域は、読出し、書込み共に不可であり、領域ID1010が“2”となる所定の領域は、読出し可、書込み不可であり、領域ID1010が“3”となる所定の領域は、読出し可、書込み不可であり、領域ID1010が“4”となる所定の領域は、読出し、書込み共に不可であること等が示されている。
保護設定部662は、以下の2つの機能を有する。
機能1:VM実行部652が実行する仮想計算機を切り替える場合に、保護設定情報保持部661によって記憶されているアクセス許可情報1000から、切り替え先となる仮想計算機のVMID1020についての、領域ID1010それぞれについて対応付けられているアクセス情報を読み出して、メモリ保護情報400(図4参照)を生成し、生成したメモリ保護情報400で、メモリ保護ユニット107が記憶するメモリ保護情報400を更新する機能。
機能2:COW処理部663が保護設定情報保持部661によって記憶されているアクセス許可情報1000を更新する場合に、保護設定情報保持部661によって記憶されているアクセス許可情報1000から、現在実行中となっている仮想計算機のVMIDについての、領域ID1010それぞれについて対応付けられているアクセス情報を読み出して、メモリ保護情報400を生成し、生成したメモリ保護情報400で、メモリ保護ユニット107が記憶するメモリ保護情報400を更新する機能。
COW処理部663は、以下の2つの機能を有する。
機能1:仮想計算機からの記憶領域へのアクセスについて、コピーオンライト方式によるアクセス管理を行う機能。
ここで、コピーオンライト方式によるアクセス管理とは、親仮想計算機の記憶領域と、子仮想計算機の記憶領域とについて、いずれの仮想計算機によっても書き換えられていないページは、双方の仮想計算機によって共用させ、いずれかの仮想計算機によって書き換えられたページは、親仮想計算機が利用するページと、子仮想計算機が利用するページとを、互いに異なる記憶領域に割り当てて利用させるアクセス管理方法のことである。
機能2:コピーオンライト方式によるアクセス管理を行うことで、仮想計算機に新たな記憶領域を割り当てた場合に、保護設定情報保持部661が保持するアクセス許可情報1000を更新する機能。
この際、アクセス許可情報1000の更新が、新たに割り当てた記憶領域に対応する領域ID1010について、対象となる仮想計算機を識別するVMID1020に対応するアクセス情報がR/Wとなり、対象となる仮想計算機以外の全ての仮想計算機を識別するVMID1020に対応するアクセス情報がNAとなるように行う。
なお、対象となる仮想計算機が未認証アプリケーションプログラムを実行する仮想計算機である場合に、親仮想計算機または認証アプリケーションプログラムを実行する仮想計算機から、その仮想計算機および未認証アプリケーションプログラムの実行を監視する等の目的で、新たに割り当てるメモリ領域のアクセス情報をRO、または、R/Wとしても良い。
ここで、図6に戻り、第2仮想計算機602と第3仮想計算機603とについての説明を補足する。
第2仮想計算機602は、タスク2B614を実行させるために、VM起動部651によって、第1仮想計算機601を親仮想計算機としてフォーク方式で生成された仮想計算機である。
また、第3仮想計算機603は、タスク3C615を実行させるために、VM起動部651によって、第1仮想計算機601を親仮想計算機としてフォーク方式で生成された仮想計算機である。
タスク2B614は、第2仮想計算機602の生成に伴って、タスク2A612を基に生成されたタスクであって、タスク2A612の利用する記憶領域とタスク2Bの利用する記憶領域とは、COW処理部663によってコピーオンライト方式で管理されている。
タスク3C615は、第3仮想計算機603の生成に伴って、タスク3A613を基に生成されたタスクであって、タスク3A613の利用する記憶領域とタスク3Cの利用する記憶領域とは、COW処理部663によってコピーオンライト方式で管理されている。
OS1B622とOS1C623とは、第1仮想計算機601のOS1A621に対応するオペレーティングシステムであって、OS1B622は、第2仮想計算機602の生成に伴って生成され、OS1C623は、第3仮想計算機603の生成に伴って生成され、OS1A621の利用する記憶領域とOS1B622の利用する記憶領域とOS1C623の利用する記憶領域とは、COW処理部663によってコピーオンライト方式で管理されている。
以上のように構成される仮想計算機システム100は、以下に示すメモリ102の記憶領域の利用方法に従って、メモリ102の記憶領域を利用する。
<メモリ102の記憶領域の利用方法>
ここでは、仮想計算機システム100における、メモリ102の記憶領域の利用方法について、図面を用いて説明する。
図11は、時刻t0において、メモリ102の記憶領域における、所定の領域に区分された記憶領域それぞれについての利用方法を示す、メモリ102の記憶領域図である。
同図において、ハイパーバイザ割当領域1101は、領域ID310(図3参照)が“1”となる所定の記憶領域であって、図5における領域A501に対応している。そして、この領域が、ハイパーバイザ630のコードが格納される領域となるように、又ハイパーバイザ630によって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。
オペレーティングシステム割当領域1102は、領域ID310が“2”となる所定の記憶領域であって、図5における領域B502に対応している。そして、この領域が、プロセッサ101の実行対象となるオペレーティングシステムのコードが格納される領域となるように、又プロセッサ101の実行対象となるオペレーティングシステムによって利用される記憶領域となるように、予め設定されている。また、この領域は、スーパーバイザモード220のプロセッサ101によってのみアクセス可能な領域として予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、VMID1020が“0”となる仮想計算機(すなわち、他の仮想計算機全ての親仮想計算機である第1仮想計算機601)について、読出し、書込み共に可の領域、この仮想計算機以外の全ての仮想計算機について、読出し可、書込み不可の領域と予め設定されている。
第1種プログラム割当領域1103は、領域ID310が“3”となる所定の記憶領域であって、図5における領域C503に対応している。そして、この領域が、アプリグループIDが“1”であるアプリケーションプログラムグループに属するプログラム(以後、「第1種プログラム」と呼ぶ。)が格納される領域となるように、又第1種プログラムによって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、VMID1020が“0”となる仮想計算機について、読出し、書込み共に可の領域、VMID1020が“1”となる仮想計算機について、読出し可、書込み不可の領域、これら以外の全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。
第2種プログラム割当領域1104は、領域ID310が“4”となる所定の記憶領域であって、図5における領域D504に対応している。そして、この領域が、アプリグループIDが“2”であるアプリケーションプログラムグループに属するプログラム(以後、「第2種プログラム」と呼ぶ。)が格納される領域となるように、又第2種プログラムによって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、VMID1020が“0”となる仮想計算機について、読出し、書込み共に可の領域、VMID1020が“2”となる仮想計算機について、読出し可、書込み不可の領域、これら以外の全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。
第3種プログラム割当領域1105は、領域ID310が“5”となる所定の記憶領域であって、図5における領域E505に対応している。そして、この領域が、アプリグループIDが“3”であるアプリケーションプログラムグループに属するプログラム(以後、「第3種プログラム」と呼ぶ。)が格納される領域となるように、又第3種プログラムによって利用される記憶領域となるように、予め設定されている。さらに、保護設定情報保持部661によって記憶されるアクセス許可情報1000のうちのオリジナルアクセス情報の部分によって、VMID1020が“0”となる仮想計算機について、読出し、書込み共に可の領域、VMID1020が“3”となる仮想計算機について、読出し可、書込み不可の領域、これら以外の全ての仮想計算機について、読出し、書込み共に不可の領域と予め設定されている。
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を読出しのみ共有を実現するための領域となるように、読出し不可、書込み可の領域として、予め設定されている。
第2種プログラムの第1仮想計算機用割当領域1111は、領域ID310が“N”となる所定の記憶領域であって、図5における領域N511に対応している。この領域は、COW処理部663が、第2種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第1仮想計算機601に新たに割り当てることとなった領域であって、COW処理部663によって、保護設定情報保持部661によって記憶されるアクセス許可情報1000が更新されることで設定されている。
第2種プログラムの第2仮想計算機用割当領域1112は、領域ID310が“N+1”となる所定の記憶領域であって、図5における領域N+1(512)に対応している。この領域は、COW処理部663が、第2種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第2仮想計算機602に新たに割り当てることとなった領域であって、COW処理部663によって、保護設定情報保持部661によって記憶されるアクセス許可情報1000が更新されることで設定されている。
第3種プログラムの第1仮想計算機用割当領域1113は、領域ID310が“N+2”となる所定の記憶領域であって、図5における領域N+2(513)に対応している。この領域は、COW処理部663が、第3種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第1仮想計算機601に新たに割り当てることとなった領域であって、COW処理部663によって、保護設定情報保持部661によって記憶されるアクセス許可情報1000が更新されることで設定されている。
第3種プログラムの第3仮想計算機用割当領域1114は、領域ID310が“N+3”となる所定の記憶領域であって、図5における領域N+3(514)に対応している。この領域は、COW処理部663が、第3種プログラムに係るコピーオンライト方式によるアクセス管理を行うことで、第3仮想計算機603に新たに割り当てることとなった領域であって、COW処理部663によって、保護設定情報保持部661によって記憶されるアクセス許可情報1000が更新されることで設定されている。
以下、図面を参照しながら、仮想計算機システム100の行う動作について説明する。
<動作>
ここでは、仮想計算機システム100の行う動作のうち、特徴的な動作である、仮想計算機切替処理とメモリアクセス処理とアプリケーションプログラム実行処理とについて説明する。
<仮想計算機切替処理>
仮想計算機切替処理は、プロセッサ101に実行させる仮想計算機を切り替える処理である。
図12は、仮想計算機切替処理のフローチャートである。
仮想計算機切替処理は、仮想計算機の時分割実行処理を行っているVM実行部652が、タイマ108を用いて計測している時間が所定時間を経過した場合、プロセッサ101が、プロセッサ101の外部から、現在実行されていない仮想計算機への割込み要求を受け付けた場合等に、VM実行部652によって開始される。
仮想計算機切替処理が開始されると、VM実行部652は、切り替え先となる仮想計算機を特定する(ステップS1200)。
ステップS1200の処理が終わると、VM実行部652は、プロセッサ101のレジスタ値を、現在実行中となっている仮想計算機に対応付けられた所定の記憶領域に退避して、現在実行中となっている仮想計算機を中断させる(ステップS1220)。ここで、この所定の記憶領域は、メモリ102の記憶領域のうちの、ハイパーバイザ102によってのみアクセス可能となるハイパーバイザ割当て領域1101に設けられている。
ステップS1220の処理が終わると、VM実行部652は、キャッシュメモリ105に記憶されているデータについて、ライトバック処理した後にフラッシュする(ステップS1230)。なお、キャッシュフラッシュによる実行速度の低下を回避するために、仮想計算機毎に利用できるキャッシュ領域を制限し、ステップS1230を省略しても良い。
ステップS1230の処理が終わると、保護設定部662は、ステップS1200の処理においてVM実行部652によって特定された切り替え先となる仮想計算機を識別するVMID1020(図10参照)についての、領域ID1010それぞれについて対応付けられているアクセス情報を読み出して、メモリ保護情報400(図4参照)を生成し、生成したメモリ保護情報400で、メモリ保護ユニット107が記憶するメモリ保護情報400を更新する(ステップS1240)。
ステップS1240の処理が終わると、VM実行部652は、切り替え先となる仮想計算機に対応付けられた所定の記憶領域に退避されている、プロセッサ101のレジスタ値を、プロセッサ101のレジスタに復旧して(ステップS1250)、その仮想計算機を起動する(ステップS1260)。なお、仮想計算機毎に利用できるキャッシュ領域の制限し、ステップS1230を省略している場合、本ステップS1260において、キャッシュ領域を切り替える。
VM実行部652がステップS1260の処理を終了すると、仮想計算機システム100は、その仮想計算機切替処理を終了する。
<メモリアクセス処理>
メモリアクセス処理は、メモリ保護ユニット107の行うメモリ102の記憶領域へのアクセス制御動作である。
図13は、メモリアクセス処理のフローチャートである。
メモリアクセス処理は、メモリ保護ユニット107が、内部バス120を介してプロセッサ101からのメモリ102の記憶領域へのアクセス要求を受けることによって開始される。
メモリアクセス処理が開始されると、メモリ保護ユニット107は、記憶しているメモリ保護テーブル300(図3参照)を参照して、受けたアクセス要求のアドレスが、領域ID310によって識別される所定の領域のうちの、いずれの所定の領域に含まれているかを特定する(ステップS1300)。
ステップS1300の処理が終わると、メモリ保護ユニット107は、記憶しているメモリ保護情報400(図4参照)を参照して、受けたアクセス要求のアクセス種(書込みと読出しとのいずれか)と、特定された領域を識別する領域ID410に対応付けられているアクセス情報420とを比較して(ステップS1310)、受けたアクセス要求のアクセス種が、特定された領域を識別する領域ID410に対応付けられているアクセス情報420を満たしているか否かを調べる(ステップS1320)。
ステップS1320の処理において、受けたアクセス要求のアクセス種が、特定された領域を識別する領域ID410に対応付けられているアクセス情報420を満たしている場合には(ステップS1320:Yes)、メモリ保護ユニット107は、受けたアクセス要求を実行する(ステップS1330)。
ステップS1320の処理において、受けたアクセス要求のアクセス種が、特定された領域を識別する領域ID410に対応付けられているアクセス情報420を満たしていない場合には(ステップS1320:No)、メモリ保護ユニット107は、受けたアクセス要求を実行せずに、プロセッサ101に対して、メモリ領域へのアクセスを実行できなかった旨の例外通知を行う(ステップS1340)。
メモリ保護ユニット107がステップS1330の処理を終了した場合、又はステップS1340の処理を終了した場合には、仮想計算機システム100は、そのメモリアクセス処理を終了する。
<アプリケーションプログラム実行処理>
アプリケーションプログラム実行処理は、要求受付部654が実行中の仮想計算機のオペレーティングシステムから、新たなアプリケーションプログラムの起動要求を受け付けた場合に、VM起動部651が、その新たなアプリケーションプログラムを実行させる仮想計算機を特定し、特定した仮想計算機に、その新たなアプリケーションプログラムの実行を指示する処理である。
仮想計算機のオペレーティングシステムが、要求受付部654に新たなアプリケーションプログラムの起動要求を行う場合の例としては、例えば、仮想計算機システム100を利用するユーザーから、入力装置131が操作されることで、オペレーティングシステムによって実行制御されているタスクが、オペレーティングシステムに、新たなアプリケーションプログラムの起動の要求を依頼した場合等がある。
図14は、アプリケーションプログラム実行処理のフローチャートである。
アプリケーションプログラム実行処理は、要求受付部654が実行中の仮想計算機のオペレーティングシステムから、新たなアプリケーションプログラムの起動要求を受け付けることによって開始される。
要求受付部654は、新たなアプリケーションプログラムの起動要求を受け付けると、起動要求を受け付けた旨の信号をVM起動部651へ送る。
VM起動部651は、起動要求を受け付けた旨の信号を受けると、VM管理テーブル保持部640によって記憶されるアプリグループ管理テーブル700(図7参照)を参照して、そのアプリケーションプログラムが属するアプリケーションプログラムグループを特定し(ステップS1400)、さらに、VM管理テーブル保持部640によって記憶される仮想計算機管理テーブル800(図8参照)を参照して、特定したアプリケーショングループに属するアプリケーションプログラムを実行するための仮想計算機を特定する(ステップS1410)。
ステップS1410の処理が終了すると、VM起動部651は、VM管理テーブル保持部640によって記憶される仮想計算機状態テーブル900(図9参照)を参照して、特定した仮想計算機が実行中であるか否かを調べる(ステップS1420)。
ステップS1420の処理において、特定した仮想計算機が実行中でない場合に(ステップS1420:No)、VM起動部651は、さらに、VM管理テーブル保持部640によって記憶される仮想計算機状態テーブル900を参照して、特定した仮想計算機が終了処理中であるか否かを調べる(ステップS1430)。
ステップS1430の処理において、特定した仮想計算機が終了処理中である場合には(ステップS1430:Yes)、VM起動部651は、特定した仮想計算機が終了処理中でなくなるまで待機する(ステップS1430:Yesの処理を繰り返す)。
ステップS1430の処理において、特定した仮想計算機が終了処理中でない場合には(ステップS1430:No)、VM起動部651は、特定した仮想計算機をフォーク方式で生成する(ステップS1440)。
ステップS1420の処理において、特定した仮想計算機が実行中の場合(ステップS1420:Yes)と、ステップS1440の処理が終了した場合とに、VM起動部651は、特定した仮想計算機のオペレーティングシステムに、対象となるアプリケーションの実行を開始させる旨の信号を送る(ステップS1450)。
VM起動部651がステップS1450の処理を終了すると、仮想計算機システム100は、そのアプリケーションプログラム実行処理を終了する。
<考察>
以下、具体例を用いて、仮想計算機システム100の動作について考察する。
具体例として、アプリケーションプログラム名720(図7参照)が「メモ帳」となるアプリケーションプログラム(以下、単に「メモ帳」と呼ぶ。)、及びメモ帳によって利用されるデータが、領域ID1010(図10参照)が“3”となる所定の領域に格納され、アプリケーションプログラム名720が「メーラ」となるアプリケーションプログラム(以下、単に「メーラ」と呼ぶ。)、及びメーラによって利用されるデータが、領域ID1010が“5”となる所定の領域に格納されている場合において、メモ帳に、メーラを起動してアドレス帳に記録されている個人情報を外部に流出させるというマルウエアが含まれているときを考える。
仮想計算機システム100において、メモ帳は、アプリグループID710が“1”となるアプリケーションプログラムグループに属するため(アプリグループ管理テーブル700(図7参照)を参照)、VMID810が“1”となる仮想計算機(以下、「仮想計算機1」と呼ぶ。)によって実行される(仮想計算機管理テーブル800(図8参照)を参照)。
メモ帳を実行する仮想計算機1において、メモ帳に含まれるマルウエアが実行されてしまった場合に、このマルウエアは、メーラを起動させようと試みる。
しかしながら、メーラ、及びメーラによって利用されるデータは、領域ID1010が“5”となる所定の領域に格納されており、メモリ保護ユニット107によって、仮想計算機1からのアクセスが禁止されている(図10のアクセス許可情報1000を参照)。このため、マルウエアは、メーラを起動させること、メーラを改竄すること、及びメーラによって利用されるデータにアクセスすることができない。よって、マルウエアはアドレス帳に記録されている個人情報を外部に流出させることはない。
このように、本実施の形態1に係る仮想計算機システム100は、仮想計算機が実行対象とするアプリケーションプログラムの中にマルウエアが含まれてしまっている場合であっても、そのマルウエアによって、マルウエアによって攻撃されたくないアプリケーションプログラムが攻撃されてしまう危険性を、従来よりも低く抑えることができる。
<実施の形態2>
<概要>
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態1における仮想計算機システム100の一部を変形した仮想計算機システム1500について説明する。
実施の形態2に係る仮想計算機システム1500は、そのハードウエア構成が、実施の形態1に係る仮想計算機システム100から一部変形されており、また、実行されるソフトウエアの一部が、実施の形態1に係る仮想計算機システム100から一部変形されている。
実施の形態1に係る仮想計算機システム100は、メモリ102の記憶領域へのアクセスを制御するメモリ保護ユニット107を備える構成の例であったが、実施の形態2に係る仮想計算機システム1500は、ハードウエアとしてのメモリ保護ユニットを備えず、プロセッサによって実行されるハイパーバイザが、メモリ102の記憶領域へのアクセスを制御する機能を有している場合の例である。
以下、本実施の形態2に係る仮想計算機システム1500の構成について、図面を参照しながら、実施の形態1に係る仮想計算機システム100の構成との相違点を中心に説明する。
<ハードウエア構成>
図15は、仮想計算機システム1500の主要なハードウエア構成を示すブロック図である。
同図に示す通り、仮想計算機システム1500は、仮想計算機システム100と同様に、ハードウエアとしてはコンピュータ装置であり、実施の形態1に係る仮想計算機システム100から、集積回路110が集積回路1510に変形されたものである。
<プログラムモジュール構成>
図16は、ある時刻t0において、プロセッサ101上で実行対象となるモジュールを示すブロック図である。
同図において、モジュール群1600は、プロセッサ101において実行対象となっているモジュールの集合であって、モジュール群1600に含まれるモジュールのそれぞれは、対応するプログラムが、メモリ102の記憶領域に格納されている。
仮想計算機システム1500におけるモジュール群1600は、実施の形態1に係る仮想計算機システム100におけるモジュール群600から、ハイパーバイザ630がハイパーバイザ1630に変更されたものとなっている。
ハイパーバイザ1630は、実施の形態1に係るハイパーバイザ630から、VMメモリ管理部660がVMメモリ管理部1660に変更されるように変形されている。
VMメモリ管理部1660は、実施の形態1に係るVMメモリ管理部660に対して、仮想MMU1670とメモリ保護部1680とが追加されるように変形されている。
仮想MMU1670は、MMU106と協働して、メモリ102の物理記憶領域のアドレスを指定する物理アドレスと、プロセッサ101の利用する論理記憶領域のアドレスを指定する論理アドレスとの変換機能を有する。
仮想計算機システム1500は、仮想計算機毎に個別に論理記憶領域を割り当てて仮想計算機を実行させる(以下、この仮想計算機毎に個別に割り当てる論理記憶領域のことを、「一次論理記憶領域」と呼び、一次論理記憶領域のアドレスを、「一次論理アドレス」と呼ぶ。)ように設定されており、この一次論理アドレスは、MMU106によって、メモリ102の利用する物理アドレスに変換されるように設定されている。
この仮想MMU1670の有する機能は、各仮想計算機が、自仮想計算機内で利用している論理記憶アドレス(以下、この仮想計算機が自仮想計算機内で利用する論理記憶領域のことを「二次論理記憶領域」と呼び、二次論理記憶領域のアドレスを、「二次論理アドレス」と呼ぶ。)を、上述の一次論理アドレスに変換する機能である。
メモリ保護部1680は、内部にメモリ保護テーブル300(図3参照)とメモリ保護情報400(図4参照)とを記憶する機能と、記憶するメモリ保護テーブル300とメモリ保護情報400とを参照して、仮想計算機が一次論理アドレスを用いて行うメモリ102の物理記憶領域へのアクセスを制御する機能とを有する。
ここで、メモリ保護部1680の、メモリ保護テーブル300とメモリ保護情報400とを参照して行うメモリ102の記憶領域へのアクセス制御は、実施の形態1に係るメモリ保護ユニット107の行うメモリ102の記憶領域へのアクセスの制御(実施の形態1における、<メモリアクセス処理>項目参照)と同様のものであり、メモリ保護ユニット107をメモリ保護部1680と置き換えたものである。よって、ここではその説明を省略する。
上述の構成の仮想計算機システム1500は、実施の形態1に係る仮想計算機システム100と同様に、仮想計算機が実行対象とするアプリケーションプログラムの中に、マルウエアが含まれてしまっている場合であっても、本来実行されたくないアプリケーションプログラムが実行されてしまう危険性を、従来よりも低く抑えることができる。
<実施の形態3>
<概要>
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態1における仮想計算機システム100の一部を変形した変形仮想計算機システムについて説明する。
実施の形態3に係る変形仮想計算機システムは、そのハードウエア構成が、実施の形態1に係る仮想計算機システム100と同一であるが、実行されるソフトウエアの一部が、実施の形態1に係る仮想計算機システム100から一部変形されている。
この変形仮想計算機システムは、仮想計算機が複数実行されている場合であっても、実行している仮想計算機の中の1つの仮想計算機のみ(ここでは、第1仮想計算機)がディスプレイ、キーボード等のデバイスを直接制御し、それ以外の仮想計算機は、第1仮想計算機にデバイスの制御を依頼することで、間接的にデバイスを制御するという構成の仮想計算機システムの例である。
以下、本実施の形態3に係る変形仮想計算機システムの構成について、図面を参照しながら、実施の形態1に係る仮想計算機システム100の構成との相違点を中心に説明する。
図17は、ある時刻t0において、プロセッサ101上で実行対象となるモジュールを示すブロック図である。
同図において、モジュール群1700は、プロセッサ101において実行対象となっているモジュールの集合であって、モジュール群1700に含まれるモジュールのそれぞれは、対応するプログラムが、メモリ102の記憶領域に格納されている。
変形仮想計算機システムにおけるモジュール群1700は、実施の形態1に係る仮想計算機システム100におけるモジュール群600から、第1仮想計算機601が第1仮想計算機1701に変更され、第2仮想計算機602が第2仮想計算機1702に変更され、第3仮想計算機603が第3仮想計算機1703に変更されている。
第1仮想計算機1701は、VMID1020が“0”となる、他の全ての仮想計算機の親仮想計算機であって、実施の形態1における第1仮想計算機601から、OS1A621が、デバイスドライバ1731を含むOS1A1721に変更されるように変形されている。
第2仮想計算機1702は、タスク2B614を実行させるために、VM起動部651によって、第1仮想計算機1701を親仮想計算機としてフォーク方式で生成された仮想計算機であって、実施の形態1における第2仮想計算機602から、OS1B622が、デバイスドライバ1732を含むOS1B1722に変更されるように変形されている。
第3仮想計算機1703は、タスク3C615を実行させるために、VM起動部651によって、第1仮想計算機1701を親仮想計算機としてフォーク方式で生成された仮想計算機であって、実施の形態1における第3仮想計算機603から、OS1C623が、デバイスドライバ1733を含むOS1C1723に変更されるように変形されている。
デバイスドライバ1731は、フロントエンド部1741とバックエンド部1742とネイティブ部1743とから構成されている。なお、デバイスドライバとは、いわゆるデバイスを制御するプログラムのことであるが、ここでは、デバイス制御処理、ファイルシステム処理、プロセス間通信処理、仮想計算機間通信処理等の、仮想計算機の入出力機能を実現するプログラムをも含んでいる。
ネイティブ部1743は、対象となるデバイスを直接制御するための命令コード等によって構成され、デバイスを制御する機能を有する。
このプログラムが格納されているメモリ102の記憶領域は、保護設定情報保持部661によって記憶されるアクセス許可情報1000(図10参照)によって、第1仮想計算機1701対してのみアクセス情報がR/Wとなり、他の仮想計算機に対してアクセス情報がNAとなるように設定されている。これにより、ネイティブ部1743は、第1仮想計算機1701以外の仮想計算機によって実行されることはない。
バックエンド部1742は、自らを含む仮想計算機に含まれるフロントエンド部、及び、自らを含む仮想計算機以外の仮想計算機に含まれるフロントエンド部とサーバクライアントモデルで通信する機能と、通信するフロントエンド部から、ネイティブ部1743の操作コマンドを受け取り、受け取ったネイティブ部1743の操作コマンドをネイティブ部1743に出力する機能と、ネイティブ部1743から出力されたデータを受け取り、通信するフロントエンド部へ、受け取ったデータを出力する機能とを有する。
このプログラムが格納されているメモリ102の記憶領域は、保護設定情報保持部661によって記憶されるアクセス許可情報1000によって、第1仮想計算機1701対してのみアクセス情報がR/Wとなり、他の仮想計算機に対してアクセス情報がNAとなるように設定されている。これにより、バックエンド部1742は、第1仮想計算機1701以外の仮想計算機によって実行されることはない。
フロントエンド部1741は、バックエンド部1742とサーバクライアントモデルで通信する機能と、通信するバックエンド部1742へ、ネイティブ部1743の操作コマンドを送る機能と、通信するバックエンド部から出力されたデータを受け取る機能とを有する。
このプログラムが格納されているメモリ102の記憶領域は、保護設定情報保持部661によって記憶されるアクセス許可情報1000によって、第1仮想計算機1701対してのみアクセス情報がR/Wとなり、他の仮想計算機に対してアクセス情報がROとなるように設定されている。これにより、フロントエンド部は、全ての仮想計算機によって実行されることができる(図17中のフロントエンド部1741、フロントエンド部1744、フロントエンド部1745に対応)。また、複数の仮想計算機によってフロントエンド部が実行される場合には、フロントエンド部が格納されているメモリ102の記憶領域は、COW処理部663によってコピーオンライト方式で管理されることとなる。
デバイスドライバ1732は、第2仮想計算機1702の生成に伴って、デバイスドライバ1731を基に生成されたものであって、フロントエンド部1741を基に生成されたフロントエンド部1744を含んでいる。
デバイスドライバ1732は、ネイティブ部とバックエンド部とを含んでいないが、これは、ネイティブ部1743が格納されているメモリ102の記憶領域とバックエンド部1742が格納されているメモリ102の記憶領域とは、第2仮想計算機1702から読出し、書込み共に不可となっているため、デバイスドライバ1732は、ネイティブ部とバックエンド部とを実行することができなくなっているためである。
デバイスドライバ1733は、第3仮想計算機1703の生成に伴って、デバイスドライバ1731を基に生成されたものであって、フロントエンド部1741を基に生成されたフロントエンド部1745を含んでいる。
デバイスドライバ1733は、ネイティブ部とバックエンド部とを含んでいないが、これは、ネイティブ部1743が格納されているメモリ102の記憶領域とバックエンド部1742が格納されているメモリ102の記憶領域とは、第3仮想計算機1703から読出し、書込み共に不可となっているため、デバイスドライバ1733は、ネイティブ部とバックエンド部とを実行することができなくなっているためである。
<デバイス制御例>
ここでは、ネイティブ部1743を含まない仮想計算機、例えば第2仮想計算機1702が、デバイスを間接的に制御する場合について説明する。
第2仮想計算機1702は、デバイスを間接的に制御する場合に、まずフロントエンド部1744にネイティブ部1743の操作コマンドを出力する。フロントエンド部1744は、ネイティブ部1743の操作コマンドを受けると、サーバクライアントモデルでバックエンド部1742と通信し、ネイティブ部1743の操作コマンドをバックエンド部1742に送る。バックエンド部1742は、ネイティブ部1743の操作コマンドを受けると、ネイティブ部1743に、ネイティブ部1743の操作コマンドを出力する。これにより、第2仮想計算機は、デバイスを操作することとなる。
このように、本実施の形態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の記憶領域が効率的に利用されることとなるためである。
しかしながら、メモリ102の記憶領域の利用効率の非効率性を許容することができれば、親となる仮想計算機を元にして子仮想計算機を生成する場合に、必ずしもフォーク形式で行う必要はない。
一例として、親となる仮想計算機に割り当てられている全ての記憶領域と、新たに生成する仮想計算機に割り当てる全ての記憶領域とが、1対1に対応するように、親となる仮想計算機に割り当てられている記憶領域を、新たに生成する仮想計算機の記憶領域にコピーすることによって、新たな仮想計算機を生成する形式等が考えられる。
また、このように、子仮想計算機の記憶領域が親仮想計算機の記憶領域からコピーされたものである場合等には、これらの記憶領域は、必ずしもコピーオンライト方式で管理される必要はなくなる。
(6)実施の形態2において、二次論理アドレスと一次論理アドレスとの変換を行う機能を有する仮想MMU1670が、ハイパバイザ1630の内部に含まれている構成の場合を例として説明したが、二次論理アドレスと一次論理アドレスとの変換を行う機能を実現することができれば、必ずしもハイパバイザ1630の内部に仮想MMU1670が含まれている必要はなく、例えば、集積回路1510内に、二次論理アドレスと一次論理アドレスとの変換を行う機能を有するハードウエアを備える構成であっても構わない。
(7)以下、さらに本発明の一実施形態に係る仮想計算機システムの構成及びその変形例と各効果について説明する。
(a)本発明の一実施形態に係る仮想計算機システムは、記憶装置と、当該記憶装置に接続されたプロセッサと、当該プロセッサ上で実行され、当該プロセッサに複数の仮想計算機の実行制御をさせるハイパーバイザとを備える仮想計算機システムであって、仮想計算機からの、前記記憶装置の記憶領域へのアクセスを制御するアクセス制御部を備え、前記記憶装置は、第1種プログラムを格納する第1記憶領域と、第2種プログラムを格納する第2記憶領域とを含み、前記ハイパーバイザは、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けるための起動要求受付部と、前記プロセッサによって実行される前記起動要求受付部が、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理するための仮想計算機生成部とを含み、前記アクセス制御部は、前記アクセスの制御を、前記プロセッサによって実行される前記仮想計算機生成部によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように行うことを特徴とする。
上述の構成を備える本実施形態に係る仮想計算機システムによると、未認証アプリケーションプログラムを第1種プログラムとして第1記憶領域に格納し、認証済アプリケーションプログラムを第2種プログラムとして第2記憶領域に格納することで、未認証アプリケーションプログラムを実行する仮想計算機は、認証済アプリケーションプログラムにアクセスすることができなくなる。
従って、仮想計算機が実行対象とするアプリケーションプログラムの中に、認証済アプリケーションプログラムと、未認証アプリケーションプログラムとが混在している場合であっても、未認証アプリケーションプログラムに含まれるマルウエアが実行されてしまうことで、認証済アプリケーションプログラムが攻撃されてしまう危険性を従来よりも低く抑えることができる。
図18は上記変形例における仮想計算機システム1800の概略構成図である。
同図に示されるように、仮想計算機システム1800は、プロセッサ1801とアクセス制御部1802と記憶装置1803とから構成される。そして、記憶装置1803は、第1記憶領域1811と第2記憶領域1812とを含み、ハイパーバイザ1813がロードされている。また、ハイパーバイザ1813は、起動要求受付部1822と仮想計算機生成部1822とを含んでいる。
プロセッサ1801は、アクセス制御部1802を介して、記憶装置1803に接続されるプロセッサである。一例として、実施の形態1におけるプロセッサ101(図1参照)として実現される。
記憶装置1803は、第1記憶領域1811と第2記憶領域1812とを含む。一例として、実施の形態1におけるメモリ102(図1参照)として実現される。
第1記憶領域1811は、第1種プログラムを格納する記憶領域である。この第1記憶領域1811は、一例として、実施の形態1における領域C503(図5参照)として実現される。また、第1種プログラムは、一例として、実施の形態1におけるメモ帳(図7参照)として実現される。
第2記憶領域1812は、第2種プログラムを格納する記憶領域である。この第2記憶領域1812は、一例として、実施の形態1における領域E505(図5参照)として実現される。また、第2種プログラムは、一例として実施の形態1におけるメーラ(図7参照)として実現される。
ハイパーバイザ1813は、プロセッサ1801上で実行され、プロセッサ1801に複数の仮想計算機の実行制御をさせるハイパーバイザであって、起動要求受付部1822と仮想計算機生成部1822とを含む。このハイパーバイザ1813は、一例として、実施の形態1におけるハイパーバイザ630(図6参照)として実現される。
起動要求受付部1822は、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けるためのコード群である。一例として、実施の形態1における要求受付部654として実現される。
仮想計算機生成部1823は、1801プロセッサによって実行される起動要求受付部1822が、第1種プログラムの起動要求を受け付けた場合に、当該第1種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第1種仮想計算機として管理し、第2種プログラムの起動要求を受け付けた場合に、当該第2種プログラムを実行するための仮想計算機を生成して、当該生成した仮想計算機を第2種仮想計算機として管理するためのコード群である。一例として、実施の形態1におけるVM起動部651とVM実行部652として実現される。
アクセス制御部1802は、仮想計算機からの、記憶装置1803の記憶領域へのアクセスを、プロセッサ1801によって実行される仮想計算機生成部1823によって前記第1種仮想計算機として管理されている仮想計算機からの前記第2記憶領域へのアクセスが禁止されるように制御する機能を有する。一例として、実施の形態1におけるメモリ保護ユニット107(図1参照)として実現される。
(b)また、前記アクセス制御部は、前記第2記憶領域のアドレスを特定する第2領域特定情報を記憶するための第2領域特定情報記憶部を有し、前記アクセスの制御を、前記第2領域特定情報記憶部に記憶されている前記第2領域特定情報を参照して行うとしてもよい。
このような構成にすることによって、アクセス制御部は、第2記憶領域のアドレスを、アクセス制御部の外部を参照することなく特定することができるようになる。
(c)また、前記記憶装置は、プログラムを特定する情報と、プログラムの種別を特定する情報とを対応付けるプログラム対応情報を記憶するためのプログラム対応情報記憶領域を含み、前記仮想計算機生成部は、前記プロセッサによって実行される前記起動要求受付部が、仮想計算機から、プログラムの起動要求を受け付けた場合に、当該プログラムが、いずれの種別のプログラムであるかを、前記プログラム対応情報記憶領域に記憶されているプログラム対応情報に基づいて特定するためのプログラム種特定部を含み、前記プロセッサによって実行される前記起動要求受付部が、第1種プログラムの起動要求を受け付けた場合に行う、前記生成した仮想計算機に対する第1種仮想計算機としての管理と、前記プロセッサによって実行される前記起動要求受付部が、第2種プログラムの起動要求を受け付けた場合に行う、前記生成した仮想計算機に対する第2種仮想計算機としての管理とを、前記プログラム種特定部によって特定されたプログラムの種別に基づいて行うとしてもよい。
このような構成にすることによって、仮想計算機生成部は、プログラム対応情報記憶領域に記憶されているプログラム対応情報に基づいて、仮想計算機の種別管理を行うことができるようになる。
(d)また、前記仮想計算機生成部は、前記プロセッサによって実行される前記起動要求受付部が、仮想計算機から、第1種プログラム又は第2種プログラムの起動要求を受け付けた場合において、仮想計算機を生成するときに、当該生成する仮想計算機に対する、前記記憶装置における記憶領域の割り当てを、前記起動要求の要求元仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行うとしてもよい。
このような構成にすることによって、新たな仮想計算機の生成をフォーク方式で行われることとなるため、記憶装置の記憶領域の利用効率を向上することができるようになる。
(e)また、前記ハイパーバイザは、前記プロセッサによって実行される前記仮想計算機生成部が、第1の仮想計算機に対する記憶領域の割り当てを、第2の仮想計算機に割り当てられている、前記記憶装置における記憶領域に基づくフォーク方式で行った場合に、前記第1の仮想計算機と前記第2の仮想計算機とによって行われる、前記記憶装置における記憶領域へのアクセスが、コピーオンライト方式で行われるように、仮想計算機からの、前記記憶装置における記憶領域へのアクセスを制御するためのコピーオンライト実行制御部を含むとしてもよい。
このような構成にすることによって、親仮想計算機による記憶領域へのアクセスと、親仮想計算機を元にしてフォーク方式で生成された子仮想計算機による記憶領域への管理とがコピーオンライト方式で行われることとなるため、記憶装置の記憶領域の利用効率を向上することができるようになる。
(f)また、前記第1記憶領域は、さらに、前記第1種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含み、前記第2記憶領域は、さらに、前記第2種プログラムが仮想計算機に実行されることで利用されるデータを記憶する記憶領域を含むとしてもよい。
このような構成にすることによって、第1種プログラムを実行する仮想計算機に、第2種プログラムを実行する仮想計算機が利用するデータを、利用させないようにすることができるようになる。
(g)また、前記記憶装置は、デバイスドライバを記憶するデバイスドライバ記憶領域と、前記デバイスドライバ記憶領域に記憶されている前記デバイスドライバを実行する仮想計算機以外の仮想計算機によって実行されることで、前記デバイスドライバを実行する仮想計算機と通信し、前記デバイスドライバを実行する仮想計算機に、デバイスの制御をさせるためのデバイス制御プログラムを記憶するデバイス制御プログラム記憶領域とを含み、前記アクセス制御部は、前記アクセスの制御を、実行制御対象である仮想計算機の中の1つの仮想計算機に限って、前記デバイスドライバ記憶領域へのアクセスが許可されるように行うとしてもよい。
このような構成にすることによって、複数の仮想計算機によるデバイス制御を排他的に行うことができる。
本発明は、仮想計算機システムに広く利用することができる。
100 仮想計算機システム
110 集積回路
101 プロセッサ
102 メモリ
103 ROM
104 RAM
105 キャッシュメモリ
106 MMU
107 メモリ保護ユニット
108 タイマ
109 DMAC
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処理部

Claims (10)

  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記憶領域へのアクセスが禁止されるように行う
    ことを特徴とする半導体集積回路。
JP2012539103A 2011-03-02 2011-09-12 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路 Active JP5981845B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2011045323 2011-03-02
JP2011045323 2011-03-02
PCT/JP2011/005108 WO2012117465A1 (ja) 2011-03-02 2011-09-12 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路

Publications (2)

Publication Number Publication Date
JPWO2012117465A1 true JPWO2012117465A1 (ja) 2014-07-07
JP5981845B2 JP5981845B2 (ja) 2016-08-31

Family

ID=46757435

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012539103A Active JP5981845B2 (ja) 2011-03-02 2011-09-12 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路

Country Status (4)

Country Link
US (1) US20120331465A1 (ja)
JP (1) JP5981845B2 (ja)
CN (1) CN102859502B (ja)
WO (1) WO2012117465A1 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5679190B2 (ja) * 2011-03-25 2015-03-04 日本電気株式会社 ホスト計算機、分散処理システム、及びi/o制御方法
JP5981984B2 (ja) * 2012-02-22 2016-08-31 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 仮想計算機システム、秘匿情報保護方法及び秘匿情報保護プログラム
US9262195B2 (en) * 2012-02-28 2016-02-16 Red Hat Israel, Ltd. Manageable external wake of virtual machines
JP5914145B2 (ja) * 2012-05-01 2016-05-11 ルネサスエレクトロニクス株式会社 メモリ保護回路、処理装置、およびメモリ保護方法
US9009705B2 (en) 2012-10-01 2015-04-14 International Business Machines Corporation Authenticated distribution of virtual machine images
WO2014129184A1 (ja) * 2013-02-21 2014-08-28 日本電気株式会社 仮想化システム
US8875295B2 (en) * 2013-02-22 2014-10-28 Bitdefender IPR Management Ltd. Memory introspection engine for integrity protection of virtual machines
US9535728B2 (en) * 2013-03-18 2017-01-03 International Business Machines Corporation Scalable policy management in an edge virtual bridging (EVB) environment
US9529612B2 (en) * 2013-03-18 2016-12-27 International Business Machines Corporation Scalable policy assignment in an edge virtual bridging (EVB) environment
US9495180B2 (en) * 2013-05-10 2016-11-15 Fireeye, Inc. Optimized resource allocation for virtual machines within a malware content detection system
CN104657193B (zh) 2013-11-21 2018-07-20 华为技术有限公司 一种访问物理资源的方法和装置
US10977063B2 (en) 2013-12-20 2021-04-13 Vmware, Inc. Elastic compute fabric using virtual machine templates
US9323565B2 (en) 2013-12-20 2016-04-26 Vmware, Inc. Provisioning customized virtual machines without rebooting
CA2931750C (en) * 2014-02-07 2023-03-07 Oracle International Corporation Cloud service custom execution environment
KR20150101683A (ko) * 2014-02-27 2015-09-04 삼성전자주식회사 자기 암호화 드라이브 및 그것을 포함한 유저 장치
US9552217B2 (en) * 2014-06-28 2017-01-24 Vmware, Inc. Using active/active asynchronous replicated storage for live migration
US9513949B2 (en) 2014-08-23 2016-12-06 Vmware, Inc. Machine identity persistence for users of non-persistent virtual desktops
US9578032B2 (en) * 2014-08-23 2017-02-21 Vmware, Inc. Application publishing using memory state sharing
CN104573421B (zh) * 2014-12-30 2017-12-22 北京兆易创新科技股份有限公司 一种基于若干分区的mcu芯片信息保护方法和装置
DE102015210539A1 (de) * 2015-06-09 2016-12-15 Robert Bosch Gmbh Speicherschutzeinheit, Speicherverwaltungseinheit und Mikrocontroller
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
GB2539436B (en) * 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539435B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
GB201513039D0 (en) * 2015-07-23 2015-09-09 Eaton Ind France Sas Shutting down of a virtual system
JP6504984B2 (ja) * 2015-09-28 2019-04-24 ルネサスエレクトロニクス株式会社 データ処理装置
EP3338194B1 (en) 2016-05-31 2022-12-07 Avago Technologies International Sales Pte. Limited Multichannel input/output virtualization
US10241931B2 (en) * 2016-07-29 2019-03-26 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
US10261821B2 (en) * 2016-12-02 2019-04-16 Dell Products L.P. System and method to expose remote virtual media partitions to virtual machines
JP6841703B2 (ja) * 2017-03-29 2021-03-10 アドソル日進株式会社 コンピュータ装置
US10534730B1 (en) 2018-12-20 2020-01-14 Ati Technologies Ulc Storing microcode for a virtual function in a trusted memory region
JP2020149526A (ja) * 2019-03-15 2020-09-17 株式会社東芝 処理装置、処理方法及びプログラム
JP2020149597A (ja) * 2019-03-15 2020-09-17 株式会社デンソーテン 制御装置および制御方法
EP4036774A4 (en) * 2019-09-25 2023-09-20 Hitachi, Ltd. COMPUTER SYSTEM, DATA CONTROL METHOD AND STORAGE MEDIUM
DE102022205137A1 (de) 2022-05-23 2023-11-23 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Überwachen von Zugriffsanfragen für sicherheitskritische Zugriffe in einer Recheneinheit
CN116107668B (zh) * 2023-04-13 2023-08-15 紫光同芯微电子有限公司 一种应用程序运行方法及其系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275938B1 (en) * 1997-08-28 2001-08-14 Microsoft Corporation Security enhancement for untrusted executable code
JP2002073358A (ja) * 2000-09-04 2002-03-12 Hitachi Ltd 仮想計算機主記憶のアクセス制御方法
GB2395583B (en) * 2002-11-18 2005-11-30 Advanced Risc Mach Ltd Diagnostic data capture control for multi-domain processors
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US7984438B2 (en) * 2006-02-08 2011-07-19 Microsoft Corporation Virtual machine transitioning from emulating mode to enlightened mode
JP5110315B2 (ja) * 2006-05-24 2012-12-26 日本電気株式会社 仮想マシン管理装置、仮想マシン管理方法およびプログラム
US8336046B2 (en) * 2006-12-29 2012-12-18 Intel Corporation Dynamic VM cloning on request from application based on mapping of virtual hardware configuration to the identified physical hardware resources
US8856782B2 (en) * 2007-03-01 2014-10-07 George Mason Research Foundation, Inc. On-demand disposable virtual work system
JP4557178B2 (ja) * 2007-03-02 2010-10-06 日本電気株式会社 仮想マシン管理システム、その方法及びそのプログラム
US20090300599A1 (en) * 2008-05-30 2009-12-03 Matthew Thomas Piotrowski Systems and methods of utilizing virtual machines to protect computer systems
JP5166169B2 (ja) * 2008-08-27 2013-03-21 株式会社日立製作所 ハイパバイザを有する計算機システム
JP4787341B2 (ja) * 2009-02-18 2011-10-05 株式会社エヌ・ティ・ティ・ドコモ データ処理装置、データ処理方法、データ処理プログラム
EP3002703B1 (en) * 2009-12-14 2017-08-30 Citrix Systems Inc. Methods and systems for communicating between trusted and non-trusted virtual machines
US8689349B2 (en) * 2010-05-05 2014-04-01 Intel Corporation Information flow tracking and protection

Also Published As

Publication number Publication date
WO2012117465A1 (ja) 2012-09-07
JP5981845B2 (ja) 2016-08-31
CN102859502B (zh) 2016-03-23
CN102859502A (zh) 2013-01-02
US20120331465A1 (en) 2012-12-27

Similar Documents

Publication Publication Date Title
JP5981845B2 (ja) 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路
US20230073426A1 (en) Peripheral device with resource isolation
KR101782398B1 (ko) 보안된 가상 머신간 공유된 메모리 통신을 위한 기술
KR102355213B1 (ko) 운영 체제 공격으로부터 애플리케이션 기밀사항을 보호하는 기법
KR102255767B1 (ko) 가상 머신 감사를 위한 시스템 및 방법들
Peinado et al. NGSCB: A trusted open system
EP3706361B1 (en) Loading and virtualizing cryptographic keys
CN109918919B (zh) 认证变量的管理
US9454676B2 (en) Technologies for preventing hook-skipping attacks using processor virtualization features
CN110622138B (zh) 一种数据迁移方法及装置
KR101323858B1 (ko) 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법
US10108800B1 (en) ARM processor-based hardware enforcement of providing separate operating system environments for mobile devices with capability to employ different switching methods
US10552345B2 (en) Virtual machine memory lock-down
KR20120061249A (ko) 하이퍼바이저를 활용한 사용자 어플리케이션 메모리 보호방법
US11442770B2 (en) Formally verified trusted computing base with active security and policy enforcement
US10140148B1 (en) Copy based IOMMU emulation for out-of-process emulated devices
WO2013189180A1 (zh) 虚拟化系统中关闭中断的方法和装置
TW201433937A (zh) 安全輸入方法和系統
KR20220080126A (ko) 프로세서에서 하이퍼바이저 보안 이벤트 핸들링
CN117708832A (zh) 高性能异构可信执行环境实现方法及系统
CN116561824A (zh) 在机密计算架构中管理内存的方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140526

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20140606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150825

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151002

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160308

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160331

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160705

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160729

R150 Certificate of patent or registration of utility model

Ref document number: 5981845

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S131 Request for trust registration of transfer of right

Free format text: JAPANESE INTERMEDIATE CODE: R313133

SZ02 Written request for trust registration

Free format text: JAPANESE INTERMEDIATE CODE: R313Z02

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250