JPWO2013125012A1 - 計算機、アクセス管理方法およびアクセス管理プログラム - Google Patents
計算機、アクセス管理方法およびアクセス管理プログラム Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation 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
Description
例えば、XenではOSに占有させるI/Oデバイスを設定ファイルに指定する。また、KVMではOSの起動オプションで占有させるI/Oデバイスを指定する。
特許文献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が破壊してしまう可能性がある。
前記計算機は、
デバイスとデバイスが割り付けられたOSとを対応付けるためのデバイス割り付けテーブルを記憶するデバイス割り付け記憶部と、
前記デバイスへのアクセスが発生した場合、前記デバイスが割り付けられているOSを前記デバイス割り付けテーブルに基づいて判定し、前記デバイスがいずれのOSにも割り付けられていない場合、前記デバイスとアクセス元のOSとを対応付けるために前記デバイス割り付けテーブルを更新して前記デバイスへのアクセスを許可し、前記デバイスが前記アクセス元のOS以外のOSに割り付けられている場合、前記デバイスへのアクセスを拒否するアクセス管理部とを備える。
仮想計算機のOS(Operating System)にデバイスを割り付けて仮想計算機のOSにデバイスを占有させる仮想計算機システムについて説明する。仮想計算機システムは複数のOSが動作するシステムの一例である。
実施の形態1における仮想計算機システム100のハードウェア構成および機能構成について、図1に基づいて説明する。
実施の形態において、I/Oデバイス110a−cがPCI(Peripheral Components Interconnect bus)をインタフェースとして用いるPCIデバイスであるものとして説明を行う。但し、物理計算機200に接続するI/OデバイスはPCIデバイス以外のデバイスであっても構わない。
PCIデバイスは、BAR(ベースアドレスレジスタ)を含んだPCIコンフィグレーションレジスタを記憶する。PCIコンフィグレーションレジスタのBARは、PCIデバイスに割り当てられたメモリ空間またはレジスタ空間(共に記憶領域)のベースアドレス(先頭アドレス)とサイズとを示す。
ディスプレイ装置、キーボード、マウス、プリンタ、通信ボード、外部記憶装置などは、I/Oデバイス110の一例である。
プロセッサ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に通知する。
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は、PCIエミュレーション部221と、I/Oエミュレーション部222と、I/O割り付け部223と、メモリ管理部224と、制御部228とを備える。
実施の形態1における仮想計算機システム100の動作について、図2に基づいて説明する。
例えば、物理計算機200の起動処理において、物理アドレス空間の初期設定やPCIコンフィグレーションレジスタの初期設定が行われる。
実施の形態1における仮想計算機システム100のメモリマップについて、図3に基づいて説明する。
物理アドレス空間には、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のレジスタ用に割り当てる記憶領域である。
物理アドレス空間に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のレジスタにアクセスすることができる。
実施の形態1におけるI/O割り付けテーブル229について、図4に基づいて説明する。
I/O割り付けテーブル229は、「デバイス識別子」と「割り付け先」と「領域(0から5)」とを含む。「領域n(nは0から5)」が示す記憶領域はPCIコンフィグレーションレジスタのBARnが示す記憶領域に対応している。1つの「領域n」を用いて32ビットの記憶領域を表す代わりに、PCIコンフィグレーションレジスタのBARと同様に2つの「領域n」を用いて64ビットの記憶領域を表しても構わない。
「デバイス識別子」は、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が示すサイズが設定される。
「属性」は、割り当てられた記憶領域の用途を示す。「属性」に設定される「メモリ」は割り当てられた記憶領域がメモリ空間であることを意味し、「属性」に設定される「レジスタ」は割り当てられた記憶領域がレジスタ空間であることを意味する。
さらに、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を起動する。
実施の形態1におけるI/O割り付けテーブル229の初期化処理について、図5に基づいて説明する。
このとき、制御部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に進む。
これにより、I/Oデバイス110のメモリ空間およびレジスタ空間をページ境界に整列させることができる。
S220の後、処理はS230に進む。
実施の形態1におけるI/Oデバイス110の割り付け処理について、図7に基づいて説明する。
以下、OS231aからI/Oデバイス110aのメモリ空間にアクセスが発生した場合について説明する。但し、OS231aからI/Oデバイス110aのレジスタ空間にアクセスが発生した場合、およびOS231aからI/Oデバイス110bまたはcのメモリ空間またはレジスタ空間にアクセスが発生した場合も処理内容は以下と同様である。さらに、OS231bからI/Oデバイス110a−cのいずれかのメモリ空間またはレジスタ空間にアクセスが発生した場合も処理内容は以下と同様である。
S310の後、処理はS320に進む。
例えば、ページフォルト例外の発生時のVMM部220の呼び出しをOS231a・bの例外ハンドラに設定しておいてもよい。または、物理計算機200の仮想化支援機能の一部である例外横取り機能を用いてVMM部220を呼び出してもよい。または、OS231a・bを非特権モードで動作させ、ページフォルト例外(特権違反の一例)の発生時のVMM部220の呼び出しをOS231a・bの例外ベクタに設定しておいてもよい。
S320の後、処理はS330に進む。
このとき、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に進む。
このとき、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の後、処理はS341に進む。
S341の後、処理はS342に進む。
S342の後、処理はS360に進む。
S350の後、処理はS360に進む。
S360により、I/Oデバイス110の割り付け処理は終了する。
I/Oデバイス110aのメモリにアクセスしたOS231aにI/Oデバイス110aを割り付け、I/Oデバイス110bのメモリまたはレジスタにアクセスしたOS231bにI/Oデバイス110bを割り付けた場合のI/O割り付けテーブル229を図8に示す。
I/Oデバイス110aのメモリ空間をOS231aの仮想アドレス空間にマッピングした場合の仮想メモリマップ320aと、I/Oデバイス110bのメモリ空間とレジスタ空間とをOS231bの仮想アドレス空間にマッピングした場合の仮想メモリマップ320bとを図9に示す。
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の後、処理はS420に進む。
例えば、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に進む。
アクセス先のI/Oデバイス110aがアクセス元のOS231aに割り付けられている場合(YES)、処理はS440に進む。
アクセス先のI/Oデバイス110aがアクセス元のOS231aに割り付けられていない場合(NO)、処理はS450に進む。
アクセス内容がPCIコンフィグレーションレジスタのBARの変更を含む場合(YES)、処理はBAR変更判定処理(S500)に進み、その後、S441に進む。BAR変更判定処理(S500)については別途説明する。
アクセス内容がPCIコンフィグレーションレジスタのBARの変更を含まない場合(NO)、処理はS442に進む。
S442の後、処理はS460に進む。
S450の後、処理はS460に進む。
S460により、PCIコンフィグレーションレジスタへのアクセス処理は終了する。
PCIコンフィグレーションレジスタへのアクセス処理(図10参照)に含まれるBAR変更判定処理(S500)について、図11に基づいて説明する。
変更後のBARが示す記憶領域が正しい記憶領域である場合(YES)、処理はS511に進む。
変更後のBARが示す記憶領域が正しい記憶領域でない場合(NO)、BAR変更判定処理(S500)の処理結果は「NG」である(S530)。
このとき、PCIエミュレーション部221は、アクセス元以外のOS231bの識別子が設定されている「割り付け先」に対応付けられた「領域(0から5)」に変更後のBARが示す記憶領域の一部または全部が含まれているか否かを判定する。
変更後のBARが示す記憶領域が他のOS231bに占有されている場合(YES)、BAR変更判定処理(S500)の処理結果は「NG」である(S530)。
変更後のBARが示す記憶領域が他のOS231bに占有されていない場合(NO)、処理はS520に進む。
S520の後、処理はS521に進む。
BAR変更判定処理(S500)の処理結果は「OK」である(S522)。
プロセッサ211a・bは、バス(図示省略)を介してメインメモリ212、補助記憶装置213、割込みコントローラ214、I/Oデバイス110a−cおよびその他のハードウェアと接続され、これらのハードウェアを制御する。
プログラム群には、実施の形態において「〜部」として説明した機能を実行するプログラムが含まれる。プログラム(例えば、アクセス制御プログラム、仮想計算機プログラム)は、プロセッサ211により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
ファイル群には、実施の形態において説明する「〜部」で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
フローチャートなどに基づいて説明する処理はハードウェア210(例えば、プロセッサ211)を用いて実行される。
実施の形態1により、I/Oデバイス110a−cの割り付けの事前設定が不要になり、かつ、OS231aに割り付けられたI/Oデバイス110aのメモリ空間とレジスタ空間とPCIコンフィグレーションレジスタとを他のOS231bから保護することが可能となる。
計算機は、デバイス(I/Oデバイス110a−c)にアクセスする複数のOS(OS231a・b)を動作させる。
計算機は、デバイス割り付け記憶部とアクセス管理部(VMM部220)とを備える。
デバイス割り付け記憶部は、前記デバイスと前記デバイスが割り付けられたOSとを対応付けるためのデバイス割り付けテーブル(I/O割り付けテーブル229)を記憶する。
アクセス管理部は、前記デバイスへのアクセスが発生した場合、前記デバイスが割り付けられているOSを前記デバイス割り付けテーブルに基づいて判定する。アクセス管理部は、前記デバイスがいずれのOSにも割り付けられていない場合、前記デバイスとアクセス元のOSとを対応付けるために前記デバイス割り付けテーブルを更新して前記デバイスへのアクセスを許可する。アクセス管理部は、前記デバイスが前記アクセス元のOS以外のOSに割り付けられている場合、前記デバイスへのアクセスを拒否する。
前記アクセス管理部は、前記デバイスがいずれのOSにも割り付けられていない場合、さらに、前記デバイス割り付けテーブルが示す前記デバイスの物理アドレス空間を前記アクセス元のOSの仮想アドレス空間にマッピングする。
アクセスするデバイスの種類によってデバイスのメモリやレジスタからのデータの読み込みを複数のOS(または全てのOS)に許可する形態について説明する。
以下、実施の形態1と異なる事項について主に説明する。説明を省略する事項については実施の形態1と同様である。
但し、I/O割り付けテーブル229の構成が一部異なる。
実施の形態2におけるI/O割り付けテーブル229について、図12に基づいて説明する。
「デバイス種別」は、I/Oデバイス110のデバイス種別(例えば、ブリッジ)を示す。
図12のI/O割り付けテーブル229は、I/Oデバイス110cが「ブリッジ」であることを示している。I/Oデバイス110c(ブリッジ)はいずれの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に示すように、I/Oデバイス110cのメモリ空間はOS231aとOS231bとの両方の仮想メモリマップ320(仮想アドレス空間)にマッピングする。このとき、メモリ管理部224は、I/Oデバイス110cのメモリ空間がリードオンリーであることを示すアクセス属性をマッピングテーブルに設定する。また、メモリ管理部224は、必要に応じて管理OSの仮想アドレス空間にI/Oデバイス110cのメモリ空間をマッピングし、I/Oデバイス110cのメモリ空間が書き込み可能であることを示すアクセス属性をマッピングテーブルに設定する。
実施の形態2におけるI/O割り付けテーブル229の初期化処理について、図14に基づいて説明する。
I/Oデバイス110がPCI ExpressスイッチまたはPCIブリッジである場合(YES)、処理はS241に進む。
I/Oデバイス110がPCI ExpressスイッチとPCIブリッジとのいずれでもない場合(NO)、当該I/Oデバイス110に対する処理は終了する。
S241により、当該I/Oデバイス110に対する処理は終了する。
実施の形態2におけるI/Oデバイス110の割り付け処理について、図15に基づいて説明する。
このとき、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の後、処理はS342に進む。
実施の形態2におけるPCIコンフィグレーションレジスタへのアクセス処理について、図16に基づいて説明する。
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に進む。
アクセス管理部(VMM部220)は、所定の種類のデバイス(例えば、ブリッジ)のPCIコンフィグレーションレジスタへ書き込みのアクセスが発生した場合、前記書き込みのアクセスを拒否する。アクセス管理部は、前記所定の種類のデバイスのPCIコンフィグレーションレジスタへ読み取りのアクセスが発生した場合、前記読み取りのアクセスを許可する。
アクセス管理部は、前記所定の種類のデバイスのPCIコンフィグレーションレジスタへ書き込みのアクセスが所定の管理OSから発生した場合、前記書き込みのアクセスを許可する。
前回のI/Oデバイス110a−cの割り付け結果を次回の仮想計算機システム100で使用する形態について説明する。
以下、実施の形態1、2と異なる事項について主に説明する。説明を省略する事項については実施の形態1、2と同様である。
実施の形態3における仮想計算機システム100の構成について、図17に基づいて説明する。
実施の形態3におけるI/O割り付けテーブル229の初期化処理について、図18に基づいて説明する。
また、実施の形態1のI/O割り付けテーブル229の初期化処理(図5参照)に実施の形態3を適用する場合はS230の後にS250に進む。
VMM部220が引き継ぎモードで起動した場合(YES)、処理はS251に進む。
VMM部220が引き継ぎモードで起動しなかった場合(NO)、当該I/Oデバイス110に対する処理は終了する。
当該I/Oデバイス110がいずれかのOS231a・bに割り付けられていた場合(YES)、処理はS252に進む。
当該I/Oデバイス110がいずれかのOS231a・bにも割り付けられていなかった場合(NO)、当該I/Oデバイス110に対する処理は終了する。
S252の後、処理はS253に進む。
S253により、当該I/Oデバイス110に対する処理は終了する。
アクセス管理部(VMM部220)は、動作が終了する場合にデバイス割り付けテーブル(I/O割り付けテーブル229)を保存割り付けテーブルとして保存し、動作が開始する場合に前記保存割り付けテーブルを用いて新たなデバイス割り付けテーブルを生成する。
Claims (9)
- デバイスにアクセスする複数のOS(Operating System)が動作する計算機であって、
デバイスとデバイスが割り付けられたOSとを対応付けるためのデバイス割り付けテーブルを記憶するデバイス割り付け記憶部と、
前記デバイスへのアクセスが発生した場合、前記デバイスが割り付けられているOSを前記デバイス割り付けテーブルに基づいて判定し、前記デバイスがいずれのOSにも割り付けられていない場合、前記デバイスとアクセス元のOSとを対応付けるために前記デバイス割り付けテーブルを更新して前記デバイスへのアクセスを許可し、前記デバイスが前記アクセス元のOS以外のOSに割り付けられている場合、前記デバイスへのアクセスを拒否するアクセス管理部と
を備えることを特徴とする計算機。 - 前記デバイス割り付けテーブルは、前記デバイスの物理アドレス空間と前記デバイスが割り付けられたOSとを対応付けて示すデータであり、
前記アクセス管理部は、前記デバイスがいずれのOSにも割り付けられていない場合、さらに、前記デバイス割り付けテーブルが示す前記デバイスの物理アドレス空間を前記アクセス元のOSの仮想アドレス空間にマッピングする
ことを特徴とする請求項1記載の計算機。 - 前記アクセス管理部は、前記デバイスのPCI(Peripheral Components Interconnect bus)コンフィグレーションレジスタへのアクセスが発生した場合、前記デバイスが割り付けられているOSを前記デバイス割り付けテーブルに基づいて判定し、前記デバイスがアクセス元のOSに割り付けられている場合、前記アクセスを許可し、前記デバイスが前記アクセス元のOSに割り付けられていない場合、前記アクセスを拒否する
ことを特徴とする請求項2記載の計算機。 - 前記アクセス管理部は、前記PCIコンフィグレーションレジスタへのアクセスがベースアドレスの変更であり、前記デバイスが前記アクセス元のOSに割り付けられている場合、変更後のベースアドレスに基づいて前記デバイス割り付けテーブル内の前記デバイスの物理アドレス空間の情報を更新し、更新後の前記情報が示す前記デバイスの物理アドレス空間を前記アクセス元のOSの仮想アドレス空間にマッピングする
ことを特徴とする請求項3記載の計算機。 - 前記アクセス管理部は、所定の種類のデバイスのPCIコンフィグレーションレジスタへ書き込みのアクセスが発生した場合、前記書き込みのアクセスを拒否し、前記所定の種類のデバイスのPCIコンフィグレーションレジスタへ読み取りのアクセスが発生した場合、前記読み取りのアクセスを許可する
ことを特徴とする請求項4記載の計算機。 - 前記アクセス管理部は、前記所定の種類のデバイスのPCIコンフィグレーションレジスタへ書き込みのアクセスが前記複数のOS以外の所定の管理OSから発生した場合、前記書き込みのアクセスを許可する
ことを特徴とする請求項5記載の計算機。 - 前記アクセス管理部は、動作が終了する場合に前記デバイス割り付けテーブルを保存割り付けテーブルとして保存し、動作が開始する場合に前記保存割り付けテーブルを用いて新たなデバイス割り付けテーブルを生成する
ことを特徴とする請求項1から請求項6いずれかに記載の計算機。 - デバイスにアクセスする複数のOS(Operating System)が動作する計算機によって実行するアクセス管理方法であって、
前記計算機は、デバイスとデバイスが割り付けられたOSとを対応付けるためのデバイス割り付けテーブルを記憶するデバイス割り付け記憶部と、アクセス管理部とを備え、
前記アクセス管理部が、前記デバイスへのアクセスが発生した場合、前記デバイスが割り付けられているOSを前記デバイス割り付けテーブルに基づいて判定し、前記デバイスがいずれのOSにも割り付けられていない場合、前記デバイスとアクセス元のOSとを対応付けるために前記デバイス割り付けテーブルを更新して前記デバイスへのアクセスを許可し、前記デバイスが前記アクセス元のOS以外のOSに割り付けられている場合、前記デバイスへのアクセスを拒否する
ことを特徴とするアクセス管理方法。 - 請求項8記載のアクセス管理方法をコンピュータに実行させるためのアクセス管理プログラム。
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)
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)
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)
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 |
-
2012
- 2012-02-23 EP EP12869300.9A patent/EP2819023A4/en not_active Withdrawn
- 2012-02-23 US US14/371,891 patent/US9558364B2/en active Active
- 2012-02-23 CN CN201280070396.6A patent/CN104137088A/zh active Pending
- 2012-02-23 WO PCT/JP2012/054427 patent/WO2013125012A1/ja active Application Filing
- 2012-02-23 JP JP2014500820A patent/JP5925288B2/ja not_active Expired - Fee Related
- 2012-02-23 KR KR1020147023181A patent/KR101571992B1/ko active IP Right Grant
- 2012-04-13 TW TW101113163A patent/TW201335851A/zh unknown
Patent Citations (3)
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 |