JPWO2013125012A1 - 計算機、アクセス管理方法およびアクセス管理プログラム - Google Patents

計算機、アクセス管理方法およびアクセス管理プログラム Download PDF

Info

Publication number
JPWO2013125012A1
JPWO2013125012A1 JP2014500820A JP2014500820A JPWO2013125012A1 JP WO2013125012 A1 JPWO2013125012 A1 JP WO2013125012A1 JP 2014500820 A JP2014500820 A JP 2014500820A JP 2014500820 A JP2014500820 A JP 2014500820A JP WO2013125012 A1 JPWO2013125012 A1 JP WO2013125012A1
Authority
JP
Japan
Prior art keywords
access
allocation table
allocated
unit
pci
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
JP2014500820A
Other languages
English (en)
Other versions
JP5925288B2 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2013125012A1 publication Critical patent/JPWO2013125012A1/ja
Application granted granted Critical
Publication of JP5925288B2 publication Critical patent/JP5925288B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

OS231aからI/Oデバイス110aへのアクセスが発生した場合、I/O割り付け部223はI/O割り付けテーブル229を参照し、I/Oデバイス110aが他のOS231bに割り付けられているか否かを判定する。I/Oデバイス110aが他のOS231bに割り付けられている場合、制御部228はOS231aにエラーを通知する。I/Oデバイス110aがいずれのOS231a・bにも割り付けられていない場合、I/O割り付け部223はI/Oデバイス110aをOS231aに割り付けるためにI/O割り付けテーブル229を更新し、I/Oエミュレーション部222はI/Oデバイス110aへのアクセスをエミュレーションする。

Description

本発明は、例えば、複数のOS(Operating System)からデバイスへのアクセスを管理する計算機、アクセス管理方法およびアクセス管理プログラムに関するものである。
仮想計算機システムは、複数のOSを動作させるシステムである。例えば、Xen(登録商標)やKVM(Kernel−based Virtual Machine)(登録商標)などの仮想計算機システムが存在する。
従来の仮想計算機システムは、複数のOSそれぞれに対して占有させるI/Oデバイスを事前に設定してから複数のOSを起動する。そして、仮想計算機モニタ(VMM:Virtual Machine Monitor)は、各OSから当該OSが占有するI/Oデバイスのメモリやレジスタへのアクセスを許可し、各OSから他のOSが占有するI/Oデバイスのメモリやレジスタへのアクセスを拒否する。I/OデバイスがPCIデバイス(PCI Expressデバイスを含む。以下同様)である場合、仮想計算機モニタは、PCIコンフィグレーションレジスタへのアクセスを許可または拒否する。このようにして、各OSに対するI/Oデバイスの排他的な割り付けが行われていた。
例えば、XenではOSに占有させるI/Oデバイスを設定ファイルに指定する。また、KVMではOSの起動オプションで占有させるI/Oデバイスを指定する。
XenやKVMなどの従来の仮想計算機システムは、OSごとに占有させるI/Oデバイスの事前設定が必要である。このため、多数のOSが動作して各OSが多数のI/Oデバイスを占有する場合、事前設定が煩雑になってしまう。
特許文献1は、以下のようにして、I/Oデバイスを占有するOSを実行中に切り替える仮想計算機システムを開示している。
特許文献1の仮想計算機システムにおいて、VMMはOSによるI/Oデバイス占有要求やVMMによるイベント検知を要因としてOSにI/Oデバイスの占有許可を出す。そして、OSはI/Oデバイスの占有許可が出た場合にのみI/Oデバイスに対する入出力を行う。このため、I/OデバイスをいずれかのOSに占有させるための事前設定が不要である。
しかし、I/Oデバイスのメモリやレジスタの保護は行われないため、I/Oデバイスを占有中でないOSから当該I/Oデバイスのメモリやレジスタにアクセスすることが可能である。そのため、あるOSが占有中のI/Oデバイスのメモリやレジスタの内容を他のOSが破壊してしまう可能性がある。
特開2007−220086号公報
本発明は、例えば、複数のOSからデバイスへのアクセスを正しく管理できるようにすることを目的とする。
本発明の計算機は、デバイスにアクセスする複数のOS(Operating System)が動作する。
前記計算機は、
デバイスとデバイスが割り付けられたOSとを対応付けるためのデバイス割り付けテーブルを記憶するデバイス割り付け記憶部と、
前記デバイスへのアクセスが発生した場合、前記デバイスが割り付けられているOSを前記デバイス割り付けテーブルに基づいて判定し、前記デバイスがいずれのOSにも割り付けられていない場合、前記デバイスとアクセス元のOSとを対応付けるために前記デバイス割り付けテーブルを更新して前記デバイスへのアクセスを許可し、前記デバイスが前記アクセス元のOS以外のOSに割り付けられている場合、前記デバイスへのアクセスを拒否するアクセス管理部とを備える。
本発明によれば、例えば、複数のOSからデバイスへのアクセスを正しく管理することができる。
実施の形態1における仮想計算機システム100の構成図。 実施の形態1における仮想計算機システム100の動作を示すフローチャート。 実施の形態1における仮想計算機システム100のメモリマップを表す図。 実施の形態1におけるI/O割り付けテーブル229の初期状態を示す図。 実施の形態1におけるI/O割り付けテーブル229の初期化処理を示すフローチャート。 実施の形態1における初期化処理後のI/O割り付けテーブル229を示す図。 実施の形態1におけるI/Oデバイス110の割り付け処理を示すフローチャート。 実施の形態1におけるI/Oデバイス110a・bを割り付けた後のI/O割り付けテーブル229を示す図。 実施の形態1におけるI/Oデバイス110a・bを割り付けた後の仮想メモリマップ320a・bを示す図。 実施の形態1におけるPCIコンフィグレーションレジスタへのアクセス処理を示すフローチャート。 実施の形態1におけるBAR変更判定処理(S500)を示すフローチャート。 実施の形態2におけるI/O割り付けテーブル229を示す図。 実施の形態2における仮想計算機システム100のメモリマップを表す図。 実施の形態2におけるI/O割り付けテーブル229の初期化処理を示すフローチャート。 実施の形態2におけるI/Oデバイス110の割り付け処理を示すフローチャート。 実施の形態2におけるPCIコンフィグレーションレジスタへのアクセス処理を示すフローチャート。 実施の形態3における仮想計算機システム100の構成図。 実施の形態3におけるI/O割り付けテーブル229の初期化処理を示すフローチャート。
実施の形態1.
仮想計算機のOS(Operating System)にデバイスを割り付けて仮想計算機のOSにデバイスを占有させる仮想計算機システムについて説明する。仮想計算機システムは複数のOSが動作するシステムの一例である。
図1は、実施の形態1における仮想計算機システム100の構成図である。
実施の形態1における仮想計算機システム100のハードウェア構成および機能構成について、図1に基づいて説明する。
仮想計算機システム100は、物理計算機200と、物理計算機200に接続する複数のI/Oデバイス110a−c(Input/Outputデバイス)とを備える。I/Oデバイス110の数は2つまたは4つ以上であっても構わない。
実施の形態において、I/Oデバイス110a−cがPCI(Peripheral Components Interconnect bus)をインタフェースとして用いるPCIデバイスであるものとして説明を行う。但し、物理計算機200に接続するI/OデバイスはPCIデバイス以外のデバイスであっても構わない。
PCIデバイスは、BAR(ベースアドレスレジスタ)を含んだPCIコンフィグレーションレジスタを記憶する。PCIコンフィグレーションレジスタのBARは、PCIデバイスに割り当てられたメモリ空間またはレジスタ空間(共に記憶領域)のベースアドレス(先頭アドレス)とサイズとを示す。
ディスプレイ装置、キーボード、マウス、プリンタ、通信ボード、外部記憶装置などは、I/Oデバイス110の一例である。
物理計算機200(計算機、コンピュータの一例)は、プロセッサ211a・b、メインメモリ212、補助記憶装置213および割込みコントローラ214などのハードウェア210を備えるコンピュータである。
プロセッサ211a・bは物理計算機200を制御する処理装置であり、CPU(Central Processing Unit)はプロセッサ211a・bの一例である。プロセッサ211の数は1つまたは3つ以上であっても構わない。
メインメモリ212は一次記憶装置とも呼ばれる記憶装置であり、RAM(Random Access Memory)やROM(Read Only Memory)はメインメモリ212の一例である。
補助記憶装置213は二次記憶装置とも呼ばれる記憶装置であり、磁気ディスク装置やフラッシュメモリは補助記憶装置213の一例である。
割込みコントローラ214はI/Oデバイス110a−cからの割り込みを制御する装置である。例えば、割込みコントローラ214はI/Oデバイス110a−cからの割り込みをプロセッサ211a・bに通知する。
物理計算機200は、さらに、ハードウェア210を用いて動作するVMM部220および複数のVM部230a・bを備える。VM部230の数は3つ以上であっても構わない。
VM部230aは、OS231a、デバイスドライバ232aおよびPCIドライバ233aを実行し、仮想計算機(VM)として動作する。同様に、VM部230bは、OS231b、デバイスドライバ232bおよびPCIドライバ233bを実行し、仮想計算機として動作する。仮想計算機は後述する仮想計算機モニタ(VMM)によって仮想的に構築される計算機である。VM部230aはプロセッサ211aを用いて動作し、VM部230bはプロセッサ211bを用いて動作するものとする。
OS231a・bは、仮想計算機のOS(または仮想計算機のOSを実行する実行部)である。OS231a・bは仮想アドレス空間をサポートしない。また、OS231a・bはシングルプロセッサまたはマルチプロセッサで動作する。実施の形態ではシングルプロセッサで動作するOS231a・bを例にして説明する。但し、OS231a・bはマルチプロセッサで動作するOSであっても構わない。また、OS231a・bは、メモリ管理部224によって構築される仮想アドレス空間を物理アドレス空間として認識して動作する。
デバイスドライバ232a・bは、I/Oデバイス110a−cのメモリやレジスタにアクセスしてI/Oデバイス110a−cを個別に制御するためのソフトウェア(またはソフトウェアを実行する実行部)である。アクセスとは、主に、データの読み取りまたはデータの書き込みを意味する(以下同様)。
PCIドライバ233a・bは、I/Oデバイス110a−cのPCIコンフィグレーションレジスタにアクセスするためのソフトウェア(またはソフトウェアを実行する実行部)である。
VMM部220(デバイス割り付け記憶部、アクセス管理部の一例)は、仮想計算機モニタ(VMM)を実行して複数の仮想計算機(VM部230a・b)を制御する。仮想計算機モニタはハードウェア資源(例えば、プロセッサ211、メインメモリ212の記憶領域)を各仮想計算機に割り当てて複数の仮想計算機を構築するためのソフトウェアである。
VMM部220は、PCIエミュレーション部221と、I/Oエミュレーション部222と、I/O割り付け部223と、メモリ管理部224と、制御部228とを備える。
PCIエミュレーション部221は、PCIドライバ233a・bからPCIコンフィグレーションレジスタへのアクセスをエミュレーションする。つまり、PCIエミュレーション部221は、PCIコンフィグレーションレジスタへのアクセスを横取りし、PCIドライバ233a・bの代わりにPCIコンフィグレーションレジスタにアクセスする。
I/Oエミュレーション部222は、デバイスドライバ232a・bからI/Oデバイスのメモリやレジスタへのアクセスをエミュレーションする。つまり、I/Oエミュレーション部222は、I/Oデバイスのメモリやレジスタへのアクセスを横取りし、デバイスドライバ232a・bの代わりにI/Oデバイスのメモリやレジスタにアクセスする。
I/O割り付け部223は、後述するI/O割り付けテーブル229を参照し、アクセスが発生したI/Oデバイス110に割り付けられているOS231を判定し、I/O割り付けテーブル229を更新する。
メモリ管理部224は、VM部230a・b(OS231a・b)用の仮想アドレス空間を定義する。例えば、メモリ管理部224は、仮想アドレス空間内の記憶領域を示す仮想アドレスと物理アドレス空間内の記憶領域を示す物理アドレスとを対応付けるマッピングテーブルを生成する。つまり、メモリ管理部224は仮想アドレス空間と物理アドレス空間とをマッピングテーブルを用いてマッピングする。マッピングとは、主に、仮想アドレス空間の仮想アドレスと物理アドレス空間の物理アドレスとを対応付けることを意味する(以下同様)。
制御部228は、VM部230a・bの制御や後述するI/O割り付けテーブル229の初期化を行う。
図2は、実施の形態1における仮想計算機システム100の動作を示すフローチャートである。
実施の形態1における仮想計算機システム100の動作について、図2に基づいて説明する。
S110において、物理計算機200が起動する。物理計算機200が起動する場合、物理計算機200の起動処理部(図示省略)はBIOS(Basic Input/Output System)やブートローダなどの所定のソフトウェアを実行する(物理計算機200の起動処理)。
例えば、物理計算機200の起動処理において、物理アドレス空間の初期設定やPCIコンフィグレーションレジスタの初期設定が行われる。
図3は、実施の形態1における仮想計算機システム100のメモリマップを表す図である。
実施の形態1における仮想計算機システム100のメモリマップについて、図3に基づいて説明する。
物理メモリマップ310のデータは、プロセッサ211やメインメモリ212によって記憶管理される。
物理アドレス空間には、VM用メモリ空間311、I/O用メモリ空間312、I/O用レジスタ空間313などが確保される。VM用メモリ空間311は、VMMやOS231用に割り当てる記憶領域である。I/O用メモリ空間312は、I/Oデバイス110a−cのメモリ用に割り当てる記憶領域である。I/O用レジスタ空間313は、I/Oデバイス110a−cのレジスタ用に割り当てる記憶領域である。
物理計算機200の起動処理(図2のS110)において、以下のような物理アドレス空間の初期設定が行われる。
物理アドレス空間にVM用メモリ空間311、I/O用メモリ空間312、I/O用レジスタ空間313などが確保される。
VM用メモリ空間311にVMM部220用の記憶領域が確保され、VMM部220用の記憶領域にVMMのプログラムやデータが補助記憶装置213からロード(読み込み)される。後述するI/O割り付けテーブル229はVMM部220用の記憶領域にロードされるデータの一例である。
I/O用メモリ空間312にI/Oデバイス110a−cそれぞれのメモリ空間が確保される。I/Oデバイス110a−cのメモリ空間にアクセスすることにより、I/Oデバイス110a−cのメモリにアクセスすることができる。
I/O用レジスタ空間313にI/Oデバイス110a−cそれぞれのレジスタ空間が確保される(図3ではI/Oデバイス110bのレジスタ空間のみを示す)。I/Oデバイス110a−cのレジスタ空間にアクセスすることにより、I/Oデバイス110a−cのレジスタにアクセスすることができる。
仮想メモリマップ320aはOS231a用の仮想アドレス空間の用途を表す図またはデータであり、仮想メモリマップ320bはOS231b用の仮想アドレス空間の用途を表す図またはデータである。仮想メモリマップ320a・bのデータはVMM部220のメモリ管理部224によって記憶管理される。OS231a・b用の仮想アドレス空間については後述する。
図4は、実施の形態1におけるI/O割り付けテーブル229の初期状態を示す図である。
実施の形態1におけるI/O割り付けテーブル229について、図4に基づいて説明する。
I/O割り付けテーブル229(デバイス割り付けテーブルの一例)は、I/Oデバイス110(のメモリやレジスタ)とI/Oデバイス110が割り当てられたOS231とを対応付けるためのデータである。
I/O割り付けテーブル229は、「デバイス識別子」と「割り付け先」と「領域(0から5)」とを含む。「領域n(nは0から5)」が示す記憶領域はPCIコンフィグレーションレジスタのBARnが示す記憶領域に対応している。1つの「領域n」を用いて32ビットの記憶領域を表す代わりに、PCIコンフィグレーションレジスタのBARと同様に2つの「領域n」を用いて64ビットの記憶領域を表しても構わない。
「領域(0から5)」は「ベースアドレス」「サイズ」「属性」を含む。初期状態ではいずれの項目も設定されていない。また、「領域(0から5)」にその他の情報(例えば、プリフェッチ可否フラグ)を含めてもよい。
後に設定される各項目は、以下のように機能する。
「デバイス識別子」は、I/Oデバイス110の識別子を示す。例えば、PCIデバイスの場合、ドメイン番号、バス番号、デバイス番号、ファンクション番号の組をデバイス識別子として使用する。
「割り付け先」は、I/Oデバイス110が割り付けられたOS231の識別子を示す。「割り付け先」に設定される「NULL」はI/Oデバイス110がいずれのOS231にも割り付けられていないことを意味する。
「ベースアドレス」は、I/Oデバイス110用に割り当てられた記憶領域の先頭の物理アドレスを示す。「領域n(nは0から5)」の「ベースアドレス」にはPCIコンフィグレーションレジスタのBARnが示すベースアドレスが設定される。
「サイズ」は、割り当てられた記憶領域の大きさを示す。「領域n」の「サイズ」にはPCIコンフィグレーションレジスタのBARnが示すサイズが設定される。
「属性」は、割り当てられた記憶領域の用途を示す。「属性」に設定される「メモリ」は割り当てられた記憶領域がメモリ空間であることを意味し、「属性」に設定される「レジスタ」は割り当てられた記憶領域がレジスタ空間であることを意味する。
図2に戻り、仮想計算機システム100の動作について説明を続ける。
S120において、VMM部220が起動する。VMM部220が起動した場合、VMM部220の制御部228は、I/O割り付けテーブル229(図4参照)の初期化処理を実行する。I/O割り付けテーブル229の初期化処理については後述する。
さらに、VMM部220の制御部228は、VM用メモリ空間311(図3参照)にOS231a・b用の記憶領域を確保し、OS231a・b用の記憶領域にVMのプログラムやデータを補助記憶装置213からロード(読み込み)する。OS231a・b、デバイスドライバ232a・bおよびPCIドライバ233a・bは、OS231a・b用の記憶領域にロードされるプログラムの一例である。OS231a・b用の記憶領域の確保およびVMのプログラムやデータのロードは物理計算機200の起動処理(S110)で実行してもよい。
また、VMM部220のメモリ管理部224は、OS231a・b用の仮想アドレス空間を定義し、仮想アドレス空間にOS231a・b用の記憶領域をマッピングする(図3の仮想メモリマップ320a・b参照)。このとき、メモリ管理部224は、物理アドレス空間の物理アドレスと仮想アドレス空間の仮想アドレスとを対応付けるマッピングテーブルを生成する。
そして、VMM部220の制御部228はVM部230a・bを起動する。
S130において、VM部230a・bが動作を開始する。VM部230a・bが動作を開始した場合、I/Oデバイス110a−cのメモリやレジスタへのアクセスおよびPCIコンフィグレーションレジスタへのアクセスが発生する。アクセスが発生した場合の処理については後述する。
図2のフローチャートに示すような仮想計算機システム100の動作によって、物理計算機200でVM部230a・bが稼働する。
図5は、実施の形態1におけるI/O割り付けテーブル229の初期化処理を示すフローチャートである。
実施の形態1におけるI/O割り付けテーブル229の初期化処理について、図5に基づいて説明する。
VMM部220の制御部228は、物理計算機200で使用されるI/Oデバイス110別にS210からS230の処理を実行する。つまり、制御部228は、I/Oデバイス110a−cそれぞれについてS210からS230の処理を実行する。
S210において、制御部228は、I/Oデバイス110のメモリ空間およびレジスタ空間がページ境界に整列しているか否かを判定する。
このとき、制御部228は、I/Oデバイス110のPCIコンフィグレーションレジスタ内の各BARを参照する。各BARにはI/Oデバイス110のメモリ空間またはレジスタ空間のベースアドレスおよびサイズが設定されている。制御部228は、各BARに設定されているベースアドレスがページ境界のアドレス(ページサイズ(例えば、4Kバイト)単位のアドレス)であるか否かを判定する。各BARに設定されているベースアドレスがページ境界のアドレスである場合、I/Oデバイス110のメモリ空間およびレジスタ空間はページ境界に整列している。
I/Oデバイス110のメモリ空間およびレジスタ空間がページ境界に整列している場合(YES)、処理はS230に進む。
I/Oデバイス110のメモリ空間およびレジスタ空間がページ境界に整列していない場合(NO)、処理はS220に進む。
S220において、制御部228は、ページ境界のアドレスでないベースアドレスが設定されているBARに当該ベースアドレスの前後いずれかのページ境界のアドレスを設定する。
これにより、I/Oデバイス110のメモリ空間およびレジスタ空間をページ境界に整列させることができる。
S220の後、処理はS230に進む。
S230において、制御部228は、I/Oデバイス110のPCIコンフィグレーションレジスタの設定値を用いてI/O割り付けテーブル229にI/Oデバイス110の「デバイス識別子」「ベースアドレス」「サイズ」「属性」を設定する。また、制御部228は、I/O割り付けテーブル229の「割り付け先」には「NULL(割り付けられているOS231が無い)」を設定する。
図6は、実施の形態1における初期化処理後のI/O割り付けテーブル229を示す図である。初期化処理後のI/O割り付けテーブル229の一例を図6に示す。
図7は、実施の形態1におけるI/Oデバイス110の割り付け処理を示すフローチャートである。
実施の形態1におけるI/Oデバイス110の割り付け処理について、図7に基づいて説明する。
いずれのOS231a・bにも割り付けられていないI/Oデバイス110のメモリ空間またはレジスタ空間にアクセスが発生した場合、以下のようにI/Oデバイス110の割り付け処理が実行される。
以下、OS231aからI/Oデバイス110aのメモリ空間にアクセスが発生した場合について説明する。但し、OS231aからI/Oデバイス110aのレジスタ空間にアクセスが発生した場合、およびOS231aからI/Oデバイス110bまたはcのメモリ空間またはレジスタ空間にアクセスが発生した場合も処理内容は以下と同様である。さらに、OS231bからI/Oデバイス110a−cのいずれかのメモリ空間またはレジスタ空間にアクセスが発生した場合も処理内容は以下と同様である。
S310において、OS231aのデバイスドライバ232aは、I/Oデバイス110aのメモリ空間にアクセスする。例えば、デバイスドライバ232aは、I/Oデバイス110aのメモリ空間の物理アドレスを指定してアクセス命令をプロセッサ211aに出力する。
S310の後、処理はS320に進む。
S320において、プロセッサ211aは、VMM部220の起動時にメモリ管理部224によって生成されたマッピングテーブルを参照する。このとき、I/Oデバイス110aのメモリ空間の物理アドレスに対応する仮想アドレスはマッピングテーブルに設定(マッピング)されていない。そのため、プロセッサ211aは、ページフォルト例外(またはTLBミス例外。以下同様)を発生させてVMM部220を呼び出す。ページフォルト例外の情報(データ)には、アクセス先の物理アドレスが含まれる。
例えば、ページフォルト例外の発生時のVMM部220の呼び出しをOS231a・bの例外ハンドラに設定しておいてもよい。または、物理計算機200の仮想化支援機能の一部である例外横取り機能を用いてVMM部220を呼び出してもよい。または、OS231a・bを非特権モードで動作させ、ページフォルト例外(特権違反の一例)の発生時のVMM部220の呼び出しをOS231a・bの例外ベクタに設定しておいてもよい。
S320の後、処理はS330に進む。
S330において、VMM部220のI/O割り付け部223は、I/O割り付けテーブル229を参照し、ページフォルト例外の原因がI/Oデバイス110aのメモリ空間またはレジスタ空間へのアクセスであるか否かを判定する。
このとき、I/O割り付け部223は、I/O割り付けテーブル229に登録された各I/Oデバイスの各「領域(0から5)」にアクセス先の物理アドレスが含まれるか否かを判定する。アクセス先の物理アドレスがいずれかのI/Oデバイスの「領域(0から5)」に含まれる場合、ページフォルト例外の原因は該I/Oデバイス110のメモリ空間またはレジスタ空間へのアクセスである。
ページフォルト例外の原因がI/Oデバイス110aのメモリ空間またはレジスタ空間へのアクセスである場合(YES)、処理はS331に進む。
ページフォルト例外の原因がI/Oデバイス110aのメモリ空間またはレジスタ空間へのアクセスでない場合(NO)、処理はS350に進む。
S331において、VMM部220のI/O割り付け部223は、I/O割り付けテーブル229を参照し、アクセス先のI/Oデバイス110aが他のOS231bに占有されているか否かを判定する。
このとき、I/O割り付け部223は、I/O割り付けテーブル229でアクセス先(I/Oデバイス110a)の「デバイス識別子」に対応付けられた「割り付け先」に他のOS231bの識別子が設定されているか否かを判定する。「割り付け先」に他のOS231bの識別子が設定されている場合、アクセス先のI/Oデバイス110aは他のOS231bに占有されている。
アクセス先のI/Oデバイス110aが他のOS231bに占有されている場合(YES)、処理はS350に進む。
アクセス先のI/Oデバイス110aが他のOS231bに占有されていない場合(NO)、処理はS340に進む。
S340において、VMM部220のI/O割り付け部223は、I/O割り付けテーブル229の設定を行う。このとき、I/O割り付け部223は、アクセス先(I/Oデバイス110a)の「デバイス識別子」に対応付けられた「割り付け先」にアクセス元(OS231a)の識別子を設定する。
S340の後、処理はS341に進む。
S341において、VMM部220のメモリ管理部224は、I/O割り付けテーブル229を参照し、アクセス先(I/Oデバイス110a)の「デバイス識別子」に対応付けられた「領域(0から5)」が示す全てのメモリ空間およびレジスタ空間をアクセス元のOS231aの仮想アドレス空間にマッピングする。つまり、メモリ管理部224は、当該「領域(0から5)」の物理アドレスとOS231aの仮想アドレス空間の仮想アドレスとを対応付けてマッピングテーブルに設定する。
S341の後、処理はS342に進む。
S342において、VMM部220のI/Oエミュレーション部222は、I/Oデバイス110aのメモリ空間へのアクセスをエミュレーションする。つまり、I/Oエミュレーション部222は、OS231aのデバイスドライバ232aの代わりにI/Oデバイス110aのメモリ空間にアクセスする。例えば、I/Oエミュレーション部222がアクセス命令をプロセッサ211aに出力し、プロセッサ211aがI/Oデバイス110aのメモリ空間にアクセスする。
S342の後、処理はS360に進む。
S350において、VMM部220の制御部228は、ページフォルト例外用の所定の異常処理を実行する。例えば、制御部228は、OS231aにエラー通知を行い、またはページフォルト例外をエミュレーションして実行する。
S350の後、処理はS360に進む。
S360において、VMM部220の制御部228はOS231aに制御を戻す。
S360により、I/Oデバイス110の割り付け処理は終了する。
OS231aにI/Oデバイス110aが割り付けられ、I/Oデバイス110aのメモリ空間とOS231aの仮想アドレス空間とがマッピングされた場合、プロセッサ211aはOS231aからI/Oデバイス110aのメモリ空間へアクセスが発生してもページフォルト例外を発生させず、アクセス命令に従ってI/Oデバイス110aのメモリ空間にアクセスする。この場合、VMM部220はI/Oデバイス110aのメモリ空間へのアクセスをエミュレートしない。
図8は、実施の形態1におけるI/Oデバイス110a・bを割り付けた後のI/O割り付けテーブル229を示す図である。
I/Oデバイス110aのメモリにアクセスしたOS231aにI/Oデバイス110aを割り付け、I/Oデバイス110bのメモリまたはレジスタにアクセスしたOS231bにI/Oデバイス110bを割り付けた場合のI/O割り付けテーブル229を図8に示す。
図9は、実施の形態1におけるI/Oデバイス110a・bを割り付けた後の仮想メモリマップ320a・bを示す図である。
I/Oデバイス110aのメモリ空間をOS231aの仮想アドレス空間にマッピングした場合の仮想メモリマップ320aと、I/Oデバイス110bのメモリ空間とレジスタ空間とをOS231bの仮想アドレス空間にマッピングした場合の仮想メモリマップ320bとを図9に示す。
図10は、実施の形態1におけるPCIコンフィグレーションレジスタへのアクセス処理を示すフローチャートである。
OS231aのPCIドライバ233aがI/Oデバイス110aのPCIコンフィグレーションレジスタにアクセスした場合の処理について、図10に基づいて説明する。但し、OS231aのPCIドライバ233aがI/Oデバイス110b・cのPCIコンフィグレーションレジスタにアクセスした場合も処理内容は以下と同様である。さらに、OS231bのPCIドライバ233bがI/Oデバイス110a−cのPCIコンフィグレーションレジスタにアクセスした場合も処理内容は以下と同様である。
S410において、OS231aのPCIドライバ233aがI/Oデバイス110aのPCIコンフィグレーションレジスタにアクセスする。例えば、PCIドライバ233aは、I/Oデバイス110aのPCIコンフィグレーションレジスタ内のアドレスやレジスタ番号を指定してアクセス命令をプロセッサ211aに出力する。
S410の後、処理はS420に進む。
S420において、VMM部220は、I/Oデバイス110aのPCIコンフィグレーションレジスタへのアクセスを横取りする。
例えば、PCIコンフィグレーション空間へのアクセス用のレジスタ(CONFIG_ADDRレジスタおよびCONFIG_DATAレジスタ)が配置されているページをOS231a・bからアクセスできないページとしてプロセッサ211a・bに設定しておく。そして、OS231a・bから当該ページへのアクセス(PCIコンフィグレーションレジスタへのアクセス)が発生した場合、プロセッサ211a・bはページフォルト例外(またはTLBミス例外。以下同様)を発生してVMM部220を呼び出す。また、OS231a・bが、PCIコンフィグレーション空間へのアクセス用のレジスタにアクセスするために、VMM部220を呼び出してもよい。また、PCIコンフィグレーション空間へのアクセス用のレジスタがメモリ空間ではなくI/Oアドレス空間にマップされる場合、I/Oアドレス空間の保護機能によってVMM部220を呼び出すようにしてもよい。
S420の後、処理はS430に進む。
S430において、VMM部220のPCIエミュレーション部221は、I/O割り付けテーブル229を参照し、アクセス先のI/Oデバイス110a(PCIデバイス)がアクセス元のOS231aに割り付けられているか否かを判定する。アクセス先(I/Oデバイス110a)の「デバイス識別子」に対応付けられた「割り付け先」にアクセス元(OS231a)の識別子が設定されている場合、アクセス先のI/Oデバイス110aはアクセス元のOS231aに割り付けられている。
アクセス先のI/Oデバイス110aがアクセス元のOS231aに割り付けられている場合(YES)、処理はS440に進む。
アクセス先のI/Oデバイス110aがアクセス元のOS231aに割り付けられていない場合(NO)、処理はS450に進む。
S440において、VMM部220のPCIエミュレーション部221は、アクセス内容がPCIコンフィグレーションレジスタのBARの変更を含むか否かを判定する。
アクセス内容がPCIコンフィグレーションレジスタのBARの変更を含む場合(YES)、処理はBAR変更判定処理(S500)に進み、その後、S441に進む。BAR変更判定処理(S500)については別途説明する。
アクセス内容がPCIコンフィグレーションレジスタのBARの変更を含まない場合(NO)、処理はS442に進む。
S441において、BAR変更判定処理(S500)の処理結果が「OK」である場合、処理はS442に進む。また、BAR変更判定処理(S500)の処理結果が「NG」である場合、処理はS450に進む。
S442において、VMM部220のPCIエミュレーション部221は、PCIコンフィグレーションレジスタへのアクセスをエミュレーションする。このとき、PCIエミュレーション部221は、PCIドライバ233aの代わりにPCIコンフィグレーションレジスタにアクセスする。例えば、PCIエミュレーション部221がアクセス命令をプロセッサ211aに出力し、プロセッサ211aがPCIコンフィグレーションレジスタにアクセスする。
S442の後、処理はS460に進む。
S450において、VMM部220のPCIエミュレーション部221は、PCIコンフィグレーションレジスタへのアクセス時の所定の異常処理を実行する。例えば、PCIエミュレーション部221は、OS231aにエラー通知を行う。
S450の後、処理はS460に進む。
S460において、VMM部220のPCIエミュレーション部221はOS231aに制御を戻す。
S460により、PCIコンフィグレーションレジスタへのアクセス処理は終了する。
図11は、実施の形態1におけるBAR変更判定処理(S500)を示すフローチャートである。
PCIコンフィグレーションレジスタへのアクセス処理(図10参照)に含まれるBAR変更判定処理(S500)について、図11に基づいて説明する。
S510において、VMM部220のPCIエミュレーション部221は、変更後のBARが示す記憶領域が正しい記憶領域であるか否かを判定する。例えば、PCIエミュレーション部221は、変更後のBARのベースアドレスがページ境界のアドレスと一致する場合に変更後のBARが示す記憶領域が正しい記憶領域であると判定する。さらに、PCIエミュレーション部221は、変更後のBARが示す記憶領域がI/O用メモリ空間312やI/O用レジスタ空間313に収まることを判定する。
変更後のBARが示す記憶領域が正しい記憶領域である場合(YES)、処理はS511に進む。
変更後のBARが示す記憶領域が正しい記憶領域でない場合(NO)、BAR変更判定処理(S500)の処理結果は「NG」である(S530)。
S511において、VMM部220のPCIエミュレーション部221は、I/O割り付けテーブル229を参照し、変更後のBARが示す記憶領域が他のOS231bに占有されているか否かを判定する。
このとき、PCIエミュレーション部221は、アクセス元以外のOS231bの識別子が設定されている「割り付け先」に対応付けられた「領域(0から5)」に変更後のBARが示す記憶領域の一部または全部が含まれているか否かを判定する。
変更後のBARが示す記憶領域が他のOS231bに占有されている場合(YES)、BAR変更判定処理(S500)の処理結果は「NG」である(S530)。
変更後のBARが示す記憶領域が他のOS231bに占有されていない場合(NO)、処理はS520に進む。
S520において、VMM部220のPCIエミュレーション部221は、I/O割り付けテーブル229のアクセス先(I/Oデバイス110a)の「デバイス識別子」に対応付けられた「領域(0から5)」のうち、変更したBARに対応する「領域(0から5のいずれか)」の「ベースアドレス」および「サイズ」を変更する。
S520の後、処理はS521に進む。
S521において、VMM部220のメモリ管理部224は、BARの変更に応じてI/Oデバイス110aのマッピングテーブルを変更する。つまり、メモリ管理部224は、変更前のBARが示す記憶領域をI/Oデバイス110aの仮想アドレス空間からアンマップし、変更後のBARが示す記憶領域をI/Oデバイス110aの仮想アドレス空間にマッピングする。
BAR変更判定処理(S500)の処理結果は「OK」である(S522)。
ここで、実施の形態における仮想計算機システム100のハードウェアについて補足する。
プロセッサ211a・bは、バス(図示省略)を介してメインメモリ212、補助記憶装置213、割込みコントローラ214、I/Oデバイス110a−cおよびその他のハードウェアと接続され、これらのハードウェアを制御する。
メインメモリ212または補助記憶装置213には、プログラム群やファイル群が記憶されている(図示省略)。
プログラム群には、実施の形態において「〜部」として説明した機能を実行するプログラムが含まれる。プログラム(例えば、アクセス制御プログラム、仮想計算機プログラム)は、プロセッサ211により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
ファイル群には、実施の形態において説明する「〜部」で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
フローチャートなどに基づいて説明する処理はハードウェア210(例えば、プロセッサ211)を用いて実行される。
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
実施の形態1における仮想計算機のOS231a・bは物理計算機200で動作する複数のOSの一例である。物理計算機200にマルチオペレーティングシステムを実装し、仮想計算機のOS以外の複数のOSを物理計算機200が動作させても構わない。
実施の形態1において、物理計算機200は、PCIデバイスのレジスタ空間がメモリ空間にマップされている。但し、物理計算機200は、PC/AT互換機のように、PCIデバイスのレジスタ空間がI/Oアドレス空間にマップされても構わない(PC/ATは登録商標)。例えば、Intel x86 CPUの場合、I/Oアドレス空間にマップされたPCIデバイスのレジスタ空間の保護は、I/O特権レベルやI/O許可ビットマップ、あるいは、ハードウェアの仮想化支援機能のI/Oアクセス横取り機能を用いることにより実現可能である(Intelは登録商標)。
実施の形態1において、物理計算機200は、OS231a・bに対するI/Oデバイス110a−cの事前割り付けを行わない。その代りに、物理計算機200は、OS231aによるI/Oデバイス110aのメモリ空間やレジスタ空間へのアクセスが発生した際に、先着順で、該OS231aに該I/Oデバイス110aを割り付ける。これにより、物理計算機200は、該I/Oデバイス110aのメモリ空間とレジスタ空間とPCIコンフィグレーションレジスタとを該OS231a以外のOS231bから保護する。つまり、物理計算機200は該I/Oデバイス110aを割り付けたOS231a以外のOS231bから該I/Oデバイス110aにアクセスできないようにする。
実施の形態1により、I/Oデバイス110a−cの割り付けの事前設定が不要になり、かつ、OS231aに割り付けられたI/Oデバイス110aのメモリ空間とレジスタ空間とPCIコンフィグレーションレジスタとを他のOS231bから保護することが可能となる。
実施の形態1において、例えば、以下のような計算機(物理計算機200)について説明した。
計算機は、デバイス(I/Oデバイス110a−c)にアクセスする複数のOS(OS231a・b)を動作させる。
計算機は、デバイス割り付け記憶部とアクセス管理部(VMM部220)とを備える。
デバイス割り付け記憶部は、前記デバイスと前記デバイスが割り付けられたOSとを対応付けるためのデバイス割り付けテーブル(I/O割り付けテーブル229)を記憶する。
アクセス管理部は、前記デバイスへのアクセスが発生した場合、前記デバイスが割り付けられているOSを前記デバイス割り付けテーブルに基づいて判定する。アクセス管理部は、前記デバイスがいずれのOSにも割り付けられていない場合、前記デバイスとアクセス元のOSとを対応付けるために前記デバイス割り付けテーブルを更新して前記デバイスへのアクセスを許可する。アクセス管理部は、前記デバイスが前記アクセス元のOS以外のOSに割り付けられている場合、前記デバイスへのアクセスを拒否する。
前記デバイス割り付けテーブルは、前記デバイスの物理アドレス空間と前記デバイスが割り付けられたOSとを対応付けて示すデータである。
前記アクセス管理部は、前記デバイスがいずれのOSにも割り付けられていない場合、さらに、前記デバイス割り付けテーブルが示す前記デバイスの物理アドレス空間を前記アクセス元のOSの仮想アドレス空間にマッピングする。
前記アクセス管理部は、前記デバイスのPCIコンフィグレーションレジスタへのアクセスが発生した場合、前記デバイスが割り付けられているOSを前記デバイス割り付けテーブルに基づいて判定する。前記アクセス管理部は、前記デバイスがアクセス元のOSに割り付けられている場合、前記PCIコンフィグレーションレジスタへのアクセスを許可する。前記アクセス管理部は、前記デバイスが前記アクセス元のOSに割り付けられていない場合、前記PCIコンフィグレーションレジスタへのアクセスを拒否する。
前記アクセス管理部は、前記PCIコンフィグレーションレジスタへのアクセスがベースアドレスの変更であり、前記デバイスが前記アクセス元のOSに割り付けられている場合、以下のように動作する。前記アクセス管理部は、変更後のベースアドレスに基づいて前記デバイス割り付けテーブル内の前記デバイスの物理アドレス空間の情報を更新する。前記アクセス管理部は、更新後の前記情報が示す前記デバイスの物理アドレス空間を前記アクセス元のOSの仮想アドレス空間にマッピングする。
実施の形態2.
アクセスするデバイスの種類によってデバイスのメモリやレジスタからのデータの読み込みを複数のOS(または全てのOS)に許可する形態について説明する。
以下、実施の形態1と異なる事項について主に説明する。説明を省略する事項については実施の形態1と同様である。
仮想計算機システム100の構成は、実施の形態1と同様である(図1参照)。
但し、I/O割り付けテーブル229の構成が一部異なる。
図12は、実施の形態2におけるI/O割り付けテーブル229を示す図である。
実施の形態2におけるI/O割り付けテーブル229について、図12に基づいて説明する。
I/O割り付けテーブル229は、実施の形態1で説明した項目(図4,6,8参照)に加えて、「デバイス種別」を有する。
「デバイス種別」は、I/Oデバイス110のデバイス種別(例えば、ブリッジ)を示す。
図12のI/O割り付けテーブル229は、I/Oデバイス110cが「ブリッジ」であることを示している。I/Oデバイス110c(ブリッジ)はいずれのOS231a・bにも割り付けられていない。
PCI ExpressスイッチやPCIブリッジ(いずれもブリッジの一例)のPCIコンフィグレーションレジスタはツリー構造によって他のPCIデバイスと関連付けられているため、複数のOS231a・bから参照される場合がある。
そこで、実施の形態2では、割り付け種別が「ブリッジ」であるI/Oデバイス110cをいずれのOS231a・bにも割り付けず、各OS231a・bからPCIコンフィグレーションレジスタへのアクセスをリードオンリー(読み取り専用)で許可する。また、I/Oデバイス110cのPCIコンフィグレーションレジスタへの書き込みは、第3のVM部のOS(図示省略)や物理計算機200のOS(図示省略)などの特定の管理OSだけに許可する。但し、ブリッジ以外のI/Oデバイス110a・bのメモリ、レジスタまたはPCIコンフィグレーションレジスタをOS231a・bに対してリードオンリーにしてもよい。
図13は、実施の形態2における仮想計算機システム100のメモリマップを表す図である。
図13に示すように、I/Oデバイス110cのメモリ空間はOS231aとOS231bとの両方の仮想メモリマップ320(仮想アドレス空間)にマッピングする。このとき、メモリ管理部224は、I/Oデバイス110cのメモリ空間がリードオンリーであることを示すアクセス属性をマッピングテーブルに設定する。また、メモリ管理部224は、必要に応じて管理OSの仮想アドレス空間にI/Oデバイス110cのメモリ空間をマッピングし、I/Oデバイス110cのメモリ空間が書き込み可能であることを示すアクセス属性をマッピングテーブルに設定する。
図14は、実施の形態2におけるI/O割り付けテーブル229の初期化処理を示すフローチャートである。
実施の形態2におけるI/O割り付けテーブル229の初期化処理について、図14に基づいて説明する。
I/O割り付けテーブル229の初期化処理は、実施の形態1で説明した処理(図5参照)に加えて、S240とS241とを含む。以下、S240とS241とについて説明する。
S240において、VMM部220の制御部228は、I/Oデバイス110のPCIコンフィグレーションレジスタ(デバイス種別の情報を含む)を参照し、I/Oデバイス110がPCI ExpressスイッチまたはPCIブリッジであるか判定する。
I/Oデバイス110がPCI ExpressスイッチまたはPCIブリッジである場合(YES)、処理はS241に進む。
I/Oデバイス110がPCI ExpressスイッチとPCIブリッジとのいずれでもない場合(NO)、当該I/Oデバイス110に対する処理は終了する。
S241において、VMM部220の制御部228は、I/O割り付けテーブル229に対して、I/Oデバイス110の「デバイス識別子」に対応付けられた「デバイス種別」に「ブリッジ」を設定する。
S241により、当該I/Oデバイス110に対する処理は終了する。
図15は、実施の形態2におけるI/Oデバイス110の割り付け処理を示すフローチャートである。
実施の形態2におけるI/Oデバイス110の割り付け処理について、図15に基づいて説明する。
I/Oデバイス110の割り付け処理は、実施の形態1で説明した処理(図7参照)に加えて、S332およびS333を含む。以下、S332について説明する。
S332において、VMM部220のI/O割り付け部223は、OS231a・bからのアクセスがブリッジ(I/Oデバイス110c)のメモリ空間またはレジスタ空間への書き込みまたは読み込みであるか否かを判定する。
このとき、I/O割り付け部223は、アクセス命令の内容が「書き込み」または「読み込み」であるか否かを判定する。また、I/O割り付け部223は、I/O割り付けテーブル229を参照し、アクセス先のI/Oデバイス110の「デバイス識別子」に対応付けられた「デバイス種別」が「ブリッジ」であるか否かを判定する。アクセス命令の内容が「書き込み」または読み込みであって「デバイス種別」が「ブリッジ」である場合、OS231a・bからのアクセスはブリッジ(I/Oデバイス110c)のメモリ空間またはレジスタ空間への書き込みまたは読み込みである。
OS231a・bからのアクセスがブリッジ(I/Oデバイス110c)のメモリ空間またはレジスタ空間への書き込みである場合(YES[書き込み])、処理はS350に進む。
OS231a・bからのアクセスがブリッジ(I/Oデバイス110c)のメモリ空間またはレジスタ空間への読み込みである場合(YES[読み込み])、処理はS333に進む。
OS231a・bからのアクセスがブリッジ(I/Oデバイス110c)のメモリ空間またはレジスタ空間への書き込みおよび読み込みでない場合(NO)、処理はS331に進む。
S333において、I/O割り付け部223は、I/O割り付けテーブル229への登録は行わず、仮想アドレス空間に該I/Oデバイス110cのメモリ空間およびレジスタ空間をリードオンリーでマップする。
S333の後、処理はS342に進む。
図16は、実施の形態2におけるPCIコンフィグレーションレジスタへのアクセス処理を示すフローチャートである。
実施の形態2におけるPCIコンフィグレーションレジスタへのアクセス処理について、図16に基づいて説明する。
PCIコンフィグレーションレジスタへのアクセス処理は、実施の形態1で説明した処理(図10参照)に加えて、S421を含む。以下、S421について説明する。
S421において、VMM部220のPCIエミュレーション部221は、OS231a・bからのアクセスがブリッジ(I/Oデバイス110c)のPCIコンフィグレーションレジスタへの書き込みまたは読み込みであるか否かを判定する。
OS231a・bからのアクセスがブリッジ(I/Oデバイス110c)のPCIコンフィグレーションレジスタへの書き込みである場合(YES[書き込み])、処理はS450に進む。
OS231a・bからのアクセスがブリッジ(I/Oデバイス110c)のPCIコンフィグレーションレジスタへの読み込みである場合(YES[読み込み])、デバイスが自OSに割り付けられているかどうかの検査を省略し、S442に進む。
OS231a・bからのアクセスがブリッジ(I/Oデバイス110c)のPCIコンフィグレーションレジスタへの書き込みおよび読み込みでない場合(NO)、処理はS430に進む。
S421において、PCIエミュレーション部221は、ブリッジ(I/Oデバイス110c)のPCIコンフィグレーションレジスタへの書き込みのアクセスが所定の管理OSからのアクセスであるか否かを判定してもよい。ブリッジ(I/Oデバイス110c)のPCIコンフィグレーションレジスタへの書き込みのアクセスが所定の管理OSからのアクセスである場合、S450ではなくS430に進む。つまり、PCIエミュレーション部221はPCIコンフィグレーションレジスタへの書き込みを許可する。
実施の形態2により、あるOS231aが勝手にPCIブリッジ(所定の種類のデバイスの一例)を占有したり、勝手にPCIブリッジのPCIコンフィグレーションレジスタを変更したりしてしまうことによる不具合を防止することができる。例えば、他のOS231bが該PCIブリッジにアクセス不能となり、該PCIブリッジ以下のPCIのツリー構造をたどれなくなってしまう、という不具合を防止することができる。
実施の形態2において、例えば、以下のような計算機(物理計算機200)について説明した。
アクセス管理部(VMM部220)は、所定の種類のデバイス(例えば、ブリッジ)のPCIコンフィグレーションレジスタへ書き込みのアクセスが発生した場合、前記書き込みのアクセスを拒否する。アクセス管理部は、前記所定の種類のデバイスのPCIコンフィグレーションレジスタへ読み取りのアクセスが発生した場合、前記読み取りのアクセスを許可する。
アクセス管理部は、前記所定の種類のデバイスのPCIコンフィグレーションレジスタへ書き込みのアクセスが所定の管理OSから発生した場合、前記書き込みのアクセスを許可する。
実施の形態3.
前回のI/Oデバイス110a−cの割り付け結果を次回の仮想計算機システム100で使用する形態について説明する。
以下、実施の形態1、2と異なる事項について主に説明する。説明を省略する事項については実施の形態1、2と同様である。
図17は、実施の形態3における仮想計算機システム100の構成図である。
実施の形態3における仮想計算機システム100の構成について、図17に基づいて説明する。
物理計算機200のVMM部220は、実施の形態1で説明した構成(図1参照)に加えて、テーブル保存部225を備える。
テーブル保存部225は、VMM部220の実行終了時(またはVM部230a・bの実行終了時)にI/O割り付けテーブル229(図12参照)を補助記憶装置213に保存する。保存されたI/O割り付けテーブル229は、物理計算機200の次回以降の起動時のI/O割り付けテーブル229の初期化処理で使用される。
図18は、実施の形態3におけるI/O割り付けテーブル229の初期化処理を示すフローチャートである。
実施の形態3におけるI/O割り付けテーブル229の初期化処理について、図18に基づいて説明する。
I/O割り付けテーブル229の初期化処理は、実施の形態2で説明した処理(図14参照)に加えて、S250からS253を含む。以下、S250からS253について説明する。
S240でI/Oデバイス110がPCI ExpressスイッチとPCIブリッジとのいずれでもない場合(NO)、処理はS250に進む。
また、実施の形態1のI/O割り付けテーブル229の初期化処理(図5参照)に実施の形態3を適用する場合はS230の後にS250に進む。
S250において、VMM部220の制御部228は、テーブル保存部225によって保存された前回(または過去)のI/O割り付けテーブル229を利用するモード(以下、「引き継ぎモード」という)でVMM部220が起動したか否かを判定する。例えば、ユーザが引き継ぎモードか否かを示すモード種別を起動オプションとして指定してVMM部220を起動し、制御部228は起動オプションのモード種別によって判定する。また、ユーザが物理計算機200のディップスイッチによってモードを切り替えてもよい。以下、前回(または過去)のI/O割り付けテーブル229を「保存割り付けテーブル」という。
VMM部220が引き継ぎモードで起動した場合(YES)、処理はS251に進む。
VMM部220が引き継ぎモードで起動しなかった場合(NO)、当該I/Oデバイス110に対する処理は終了する。
S251において、制御部228は、補助記憶装置213の保存割り付けテーブルを参照し、当該I/Oデバイス110がいずれかのOS231a・bに割り付けられていたか否かを判定する。つまり、制御部228は、保存割り付けテーブルを参照し、当該I/Oデバイス110の「デバイス識別子」に対応付けられた「割り付け先」にいずれかのOS231a・bが設定されているか否かを判定する。
当該I/Oデバイス110がいずれかのOS231a・bに割り付けられていた場合(YES)、処理はS252に進む。
当該I/Oデバイス110がいずれかのOS231a・bにも割り付けられていなかった場合(NO)、当該I/Oデバイス110に対する処理は終了する。
S252において、制御部228は、当該I/Oデバイス110が割り付けられていたOS231(aまたはb)に当該I/Oデバイス110を割り付ける。つまり、制御部228は、I/O割り付けテーブル229に対して、I/Oデバイス110の「デバイス識別子」に対応付けられた「割り付け先」に当該I/Oデバイス110が割り付けられていたOS231の識別子を設定する。
S252の後、処理はS253に進む。
S253において、制御部228(またはメモリ管理部224)は、I/O割り付けテーブル229を参照し、当該I/Oデバイス110が割り付けられていたOS231の仮想アドレス空間に当該I/Oデバイス110のメモリ空間およびレジスタ空間(物理アドレス空間)をマッピングする。
S253により、当該I/Oデバイス110に対する処理は終了する。
実施の形態3により、補助記憶装置213に保存されたI/O割り付けテーブル229を利用し、各OS231a・bに対するI/Oデバイス110a−cの割り付けおよびマッピングに要するオーバヘッドを削減することができる。
実施の形態3において、例えば、以下のような計算機(物理計算機200)について説明した。
アクセス管理部(VMM部220)は、動作が終了する場合にデバイス割り付けテーブル(I/O割り付けテーブル229)を保存割り付けテーブルとして保存し、動作が開始する場合に前記保存割り付けテーブルを用いて新たなデバイス割り付けテーブルを生成する。
100 仮想計算機システム、110 I/Oデバイス、200 物理計算機、210 ハードウェア、211 プロセッサ、212 メインメモリ、213 補助記憶装置、214 割込みコントローラ、220 VMM部、221 PCIエミュレーション部、222 I/Oエミュレーション部、223 I/O割り付け部、224 メモリ管理部、225 テーブル保存部、228 制御部、229 I/O割り付けテーブル、230 VM部、231 OS、232 デバイスドライバ、233 PCIドライバ、310 物理メモリマップ、311 VM用メモリ空間、312 I/O用メモリ空間、313 I/O用レジスタ空間、320 仮想メモリマップ。

Claims (9)

  1. デバイスにアクセスする複数のOS(Operating System)が動作する計算機であって、
    デバイスとデバイスが割り付けられたOSとを対応付けるためのデバイス割り付けテーブルを記憶するデバイス割り付け記憶部と、
    前記デバイスへのアクセスが発生した場合、前記デバイスが割り付けられているOSを前記デバイス割り付けテーブルに基づいて判定し、前記デバイスがいずれのOSにも割り付けられていない場合、前記デバイスとアクセス元のOSとを対応付けるために前記デバイス割り付けテーブルを更新して前記デバイスへのアクセスを許可し、前記デバイスが前記アクセス元のOS以外のOSに割り付けられている場合、前記デバイスへのアクセスを拒否するアクセス管理部と
    を備えることを特徴とする計算機。
  2. 前記デバイス割り付けテーブルは、前記デバイスの物理アドレス空間と前記デバイスが割り付けられたOSとを対応付けて示すデータであり、
    前記アクセス管理部は、前記デバイスがいずれのOSにも割り付けられていない場合、さらに、前記デバイス割り付けテーブルが示す前記デバイスの物理アドレス空間を前記アクセス元のOSの仮想アドレス空間にマッピングする
    ことを特徴とする請求項1記載の計算機。
  3. 前記アクセス管理部は、前記デバイスのPCI(Peripheral Components Interconnect bus)コンフィグレーションレジスタへのアクセスが発生した場合、前記デバイスが割り付けられているOSを前記デバイス割り付けテーブルに基づいて判定し、前記デバイスがアクセス元のOSに割り付けられている場合、前記アクセスを許可し、前記デバイスが前記アクセス元のOSに割り付けられていない場合、前記アクセスを拒否する
    ことを特徴とする請求項2記載の計算機。
  4. 前記アクセス管理部は、前記PCIコンフィグレーションレジスタへのアクセスがベースアドレスの変更であり、前記デバイスが前記アクセス元のOSに割り付けられている場合、変更後のベースアドレスに基づいて前記デバイス割り付けテーブル内の前記デバイスの物理アドレス空間の情報を更新し、更新後の前記情報が示す前記デバイスの物理アドレス空間を前記アクセス元のOSの仮想アドレス空間にマッピングする
    ことを特徴とする請求項3記載の計算機。
  5. 前記アクセス管理部は、所定の種類のデバイスのPCIコンフィグレーションレジスタへ書き込みのアクセスが発生した場合、前記書き込みのアクセスを拒否し、前記所定の種類のデバイスのPCIコンフィグレーションレジスタへ読み取りのアクセスが発生した場合、前記読み取りのアクセスを許可する
    ことを特徴とする請求項4記載の計算機。
  6. 前記アクセス管理部は、前記所定の種類のデバイスのPCIコンフィグレーションレジスタへ書き込みのアクセスが前記複数のOS以外の所定の管理OSから発生した場合、前記書き込みのアクセスを許可する
    ことを特徴とする請求項5記載の計算機。
  7. 前記アクセス管理部は、動作が終了する場合に前記デバイス割り付けテーブルを保存割り付けテーブルとして保存し、動作が開始する場合に前記保存割り付けテーブルを用いて新たなデバイス割り付けテーブルを生成する
    ことを特徴とする請求項1から請求項6いずれかに記載の計算機。
  8. デバイスにアクセスする複数のOS(Operating System)が動作する計算機によって実行するアクセス管理方法であって、
    前記計算機は、デバイスとデバイスが割り付けられたOSとを対応付けるためのデバイス割り付けテーブルを記憶するデバイス割り付け記憶部と、アクセス管理部とを備え、
    前記アクセス管理部が、前記デバイスへのアクセスが発生した場合、前記デバイスが割り付けられているOSを前記デバイス割り付けテーブルに基づいて判定し、前記デバイスがいずれのOSにも割り付けられていない場合、前記デバイスとアクセス元のOSとを対応付けるために前記デバイス割り付けテーブルを更新して前記デバイスへのアクセスを許可し、前記デバイスが前記アクセス元のOS以外のOSに割り付けられている場合、前記デバイスへのアクセスを拒否する
    ことを特徴とするアクセス管理方法。
  9. 請求項8記載のアクセス管理方法をコンピュータに実行させるためのアクセス管理プログラム。
JP2014500820A 2012-02-23 2012-02-23 計算機、アクセス管理方法およびアクセス管理プログラム Expired - Fee Related JP5925288B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/054427 WO2013125012A1 (ja) 2012-02-23 2012-02-23 計算機、アクセス管理方法およびアクセス管理プログラム

Publications (2)

Publication Number Publication Date
JPWO2013125012A1 true JPWO2013125012A1 (ja) 2015-05-21
JP5925288B2 JP5925288B2 (ja) 2016-05-25

Family

ID=49005232

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014500820A Expired - Fee Related JP5925288B2 (ja) 2012-02-23 2012-02-23 計算機、アクセス管理方法およびアクセス管理プログラム

Country Status (7)

Country Link
US (1) US9558364B2 (ja)
EP (1) EP2819023A4 (ja)
JP (1) JP5925288B2 (ja)
KR (1) KR101571992B1 (ja)
CN (1) CN104137088A (ja)
TW (1) TW201335851A (ja)
WO (1) WO2013125012A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325563B (zh) * 2015-06-15 2021-06-04 联想企业解决方案(新加坡)有限公司 用于标识电子设备的数据存储设备及相应的方法
CN106648877B (zh) * 2015-10-28 2020-08-25 阿里巴巴集团控股有限公司 资源申请、释放方法及装置
CN107783821A (zh) * 2017-01-25 2018-03-09 问众智能信息科技(北京)有限公司 车载一体虚拟化方法和装置
CN109981434A (zh) * 2019-03-25 2019-07-05 华勤通讯技术有限公司 一种车载智能系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1083373A (ja) * 1996-09-06 1998-03-31 Mitsubishi Electric Corp プログラマブルコントローラ
JP2008158710A (ja) * 2006-12-22 2008-07-10 Hitachi Ltd 計算機システム
JP2010186465A (ja) * 2008-12-08 2010-08-26 Nvidia Corp ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6086657A (ja) 1983-10-19 1985-05-16 Hitachi Ltd 入出力装置の占有制御装置
US5414851A (en) * 1992-06-15 1995-05-09 International Business Machines Corporation Method and means for sharing I/O resources by a plurality of operating systems
JP2972501B2 (ja) 1993-09-20 1999-11-08 富士通株式会社 I/oサブシステム及びi/oサブシステムにおける排他制御方法
US6453392B1 (en) * 1998-11-10 2002-09-17 International Business Machines Corporation Method of and apparatus for sharing dedicated devices between virtual machine guests
US6820164B2 (en) 2001-04-17 2004-11-16 International Business Machines Corporation Peripheral component interconnect bus detection in logically partitioned computer system involving authorizing guest operating system to conduct configuration input-output operation with functions of pci devices
JP2007509387A (ja) * 2003-09-30 2007-04-12 ジャルナ エスアー オペレーティングシステム
US7392172B2 (en) 2005-04-28 2008-06-24 Hewlett-Packard Development Company, L.P. Providing virtual device access via firmware
JP2007220086A (ja) 2006-01-17 2007-08-30 Ntt Docomo Inc 入出力制御装置、入出力制御システム及び入出力制御方法
WO2007115425A1 (en) * 2006-03-30 2007-10-18 Intel Corporation Method and apparatus for supporting heterogeneous virtualization
JP5352848B2 (ja) 2008-11-28 2013-11-27 株式会社日立製作所 仮想計算機の制御方法及び計算機装置
JP2010128943A (ja) 2008-11-28 2010-06-10 Toshiba Corp 情報処理装置および情報処理装置の制御方法
JP4705982B2 (ja) 2008-12-11 2011-06-22 株式会社日立製作所 情報処理システム、情報処理方法、及び管理装置
JP2010186456A (ja) 2009-02-11 2010-08-26 Saito Seisakusho:Kk 電気自動車の運転音および警報の発生方法
JP2011145912A (ja) 2010-01-15 2011-07-28 Fujitsu Ltd 仮想計算機を使用したクライアントシステム、仮想計算機を使用したクライアント制御方法及びそのプログラム
US8977724B2 (en) * 2010-03-31 2015-03-10 International Business Machines Corporation Method and system for automated operating system image loading

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1083373A (ja) * 1996-09-06 1998-03-31 Mitsubishi Electric Corp プログラマブルコントローラ
JP2008158710A (ja) * 2006-12-22 2008-07-10 Hitachi Ltd 計算機システム
JP2010186465A (ja) * 2008-12-08 2010-08-26 Nvidia Corp ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ

Also Published As

Publication number Publication date
JP5925288B2 (ja) 2016-05-25
EP2819023A1 (en) 2014-12-31
CN104137088A (zh) 2014-11-05
EP2819023A4 (en) 2016-06-08
US20150302222A1 (en) 2015-10-22
US9558364B2 (en) 2017-01-31
WO2013125012A1 (ja) 2013-08-29
TW201335851A (zh) 2013-09-01
KR101571992B1 (ko) 2015-11-25
KR20140124787A (ko) 2014-10-27

Similar Documents

Publication Publication Date Title
US10296366B2 (en) Virtualization exceptions
Neiger et al. Intel virtualization technology: Hardware support for efficient processor virtualization.
US20180129619A1 (en) Virtualizing interrupt prioritization and delivery
JP4668166B2 (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
US10387184B2 (en) Address based host page table selection
US20080228971A1 (en) Device modeling in a multi-core environment
JP2008305106A (ja) 仮想計算機の制御プログラムおよび仮想計算機システム
US9952890B2 (en) Kernel state data collection in a protected kernel environment
US20160188354A1 (en) Efficient enabling of extended page tables
US10664304B2 (en) Application memory protection using an extended page table switching virtual machine function
US9436495B2 (en) Protection against interrupts in virtual machine functions
JP2013161299A (ja) 情報処理装置、インタフェースアクセス方法
US10963280B2 (en) Hypervisor post-write notification of control and debug register updates
JP5925288B2 (ja) 計算機、アクセス管理方法およびアクセス管理プログラム
US9459907B2 (en) Guest controlled malicious payload protection
US20130007379A1 (en) Secure and virtualizable performance counters
Chakrabarti et al. Intel® software guard extensions (Intel® SGX) architecture for oversubscription of secure memory in a virtualized environment
US20160292108A1 (en) Information processing device, control program for information processing device, and control method for information processing device
US10162663B2 (en) Computer and hypervisor-based resource scheduling method
JP6679419B2 (ja) メモリ保護ユニット、メモリ管理ユニット、及びマイクロコントローラ
US9477509B2 (en) Protection against interrupts in virtual machine functions
US10248451B2 (en) Using hypervisor trapping for protection against interrupts in virtual machine functions
Zabaljáuregui Hardware assisted virtualization intel virtualization technology
JP2001175486A (ja) 計算機システム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150821

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: 20160322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160419

R150 Certificate of patent or registration of utility model

Ref document number: 5925288

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees