JP5881852B2 - 仮想計算機システム - Google Patents
仮想計算機システム Download PDFInfo
- Publication number
- JP5881852B2 JP5881852B2 JP2014546789A JP2014546789A JP5881852B2 JP 5881852 B2 JP5881852 B2 JP 5881852B2 JP 2014546789 A JP2014546789 A JP 2014546789A JP 2014546789 A JP2014546789 A JP 2014546789A JP 5881852 B2 JP5881852 B2 JP 5881852B2
- Authority
- JP
- Japan
- Prior art keywords
- guest
- host
- control data
- management unit
- side management
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- 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/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/105—Program control for peripheral devices where the programme performs an input/output emulation function
-
- 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/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/45591—Monitoring or debugging support
Description
本発明は、仮想計算機システムに関する。
従来のI/O(Input/Output)デバイスの仮想化方式においては、完全仮想化と準仮想化の手法によって、仮想化を行なっている(例えば、特許文献1、特許文献2)。
I/Oデバイスを仮想化することによって、ハードウェア(H/W)更新時にもゲストOS(Operating System)側の環境を変更することなく、システムを更新できるメリットが享受できる。
I/Oデバイスを仮想化することによって、ハードウェア(H/W)更新時にもゲストOS(Operating System)側の環境を変更することなく、システムを更新できるメリットが享受できる。
完全仮想化とは、実在する物理I/OデバイスをホストOSで完全にエミュレートして、ゲストOSが、エミュレートされたI/Oデバイスを利用する方式である。
ゲストOSからは、ゲストOS上に設置した標準デバイスドライバで、エミュレートされたI/Oデバイスを制御し、エミュレートされたI/Oデバイスが、ホストOS上に設置した標準デバイスドライバを利用して物理I/Oデバイスを制御する。
ゲストOSからは、ゲストOS上に設置した標準デバイスドライバで、エミュレートされたI/Oデバイスを制御し、エミュレートされたI/Oデバイスが、ホストOS上に設置した標準デバイスドライバを利用して物理I/Oデバイスを制御する。
準仮想化とは、ゲストOSとホストOSの双方に仮想化ソフトウェア(仮想マシンモニタ)とのインタフェースとなるデバイスドライバを組み込む方式である。
このゲストOS側のデバイスドライバをフロントエンドドライバ、ホストOS側のデバイスドライバをバックエンドドライバと呼ぶ。
ゲストOSからの物理I/Oデバイスの制御方法は、まず、フロントエンドドライバから、仮想化ソフトウェアの内部通信機構と共有メモリを利用して、バックエンドドライバに対してデバイスの制御データが渡される。
バックエンドドライバは、フロントエンドドライバから渡されたデバイスの制御データをホストOS上に設置した標準デバイスドライバで利用可能なデータ構造に変換し、変換後の制御データを用いて、ホストOS上の標準デバイスドライバを介して物理I/Oデバイスを制御する。
このゲストOS側のデバイスドライバをフロントエンドドライバ、ホストOS側のデバイスドライバをバックエンドドライバと呼ぶ。
ゲストOSからの物理I/Oデバイスの制御方法は、まず、フロントエンドドライバから、仮想化ソフトウェアの内部通信機構と共有メモリを利用して、バックエンドドライバに対してデバイスの制御データが渡される。
バックエンドドライバは、フロントエンドドライバから渡されたデバイスの制御データをホストOS上に設置した標準デバイスドライバで利用可能なデータ構造に変換し、変換後の制御データを用いて、ホストOS上の標準デバイスドライバを介して物理I/Oデバイスを制御する。
従来の完全仮想化と準仮想化によるI/Oデバイスの仮想化には、仮想化の対象とする物理I/Oデバイスごとに仮想化ソフトウェアの内部構造に即した開発が必要であるという課題がある。
従来の完全仮想化においては、物理I/Oデバイスを完全にエミュレートする機能を開発する必要があるが、これは、仮想化ソフトウェアの内部構造や対象の物理I/Oデバイスの詳細を把握した上での開発が必要である。
そのため、仮想化の対象とする物理I/Oデバイスごとに複雑なエミュレート機能を開発する必要があるという課題がある。
そのため、仮想化の対象とする物理I/Oデバイスごとに複雑なエミュレート機能を開発する必要があるという課題がある。
また、従来の準仮想化においては、仮想化の対象とする物理I/Oデバイスごとに、フロントエンドドライバとバックエンドドライバの組の開発が必要である。
これは、フロントエンドドライバから仮想化ソフトウェアの内部通信機構を介してバックエンドドライバに渡された制御データを、バックエンドドライバが、標準デバイスドライバで利用可能なデータ構造に変換する必要があるためである。
このため、対象のI/Oデバイスに特化したフロントエンドドライバとバックエンドドライバの組の開発が必要となる。
つまり、完全仮想化と同じく、仮想化ソフトウェアの内部構造の詳細を把握した上でのフロントエンドドライバとバックエンドドライバの開発が、仮想化の対象となる物理I/Oデバイスごとに必要であるという課題がある。
これは、フロントエンドドライバから仮想化ソフトウェアの内部通信機構を介してバックエンドドライバに渡された制御データを、バックエンドドライバが、標準デバイスドライバで利用可能なデータ構造に変換する必要があるためである。
このため、対象のI/Oデバイスに特化したフロントエンドドライバとバックエンドドライバの組の開発が必要となる。
つまり、完全仮想化と同じく、仮想化ソフトウェアの内部構造の詳細を把握した上でのフロントエンドドライバとバックエンドドライバの開発が、仮想化の対象となる物理I/Oデバイスごとに必要であるという課題がある。
この発明は、上記のような課題を解決することを主な目的としており、物理I/Oデバイスごとのバックエンドドライバの開発を不要とし、H/W更新時にゲストOS側の環境変更を実施することなくシステムが更新できる構成を実現することを主な目的とする。
本発明に係る仮想計算機システムは、
物理プロセッサと、物理メモリと、複数の物理I/O(Input/Output)デバイスとを含むハードウェアと、
前記ハードウェア上で動作するホストOS(Operating System)及び仮想マシンモニタと、
前記仮想マシンモニタ上で動作するゲストOSとを有する仮想計算機システムであって、
前記仮想マシンモニタは、
前記ゲストOSと前記ホストOSとの間でデータの中継を行い、
前記ゲストOSは、
各々が、前記複数の物理I/Oデバイスのうちのいずれかの物理I/Oデバイスに対応し、対応する物理I/Oデバイスの制御のための制御データを入力する複数のフロントエンドドライバと、
各フロントエンドドライバから制御データを入力し、入力した制御データを前記仮想マシンモニタに出力するゲストOS側管理部とを有し、
前記ホストOSは、
各々が、前記複数の物理I/Oデバイスのうちのいずれかの物理I/Oデバイスに対応し、対応する物理I/Oデバイスが共通している、対応関係にあるフロントエンドドライバからの制御データを入力し、入力した制御データに基づいて、対応する物理I/Oデバイスを制御する複数のデバイスドライバと、
前記ゲストOS側管理部から出力された制御データを前記仮想マシンモニタから入力し、入力した制御データを、入力した制御データの出力元のフロントエンドドライバと対応関係にあるデバイスドライバに出力するホストOS側管理部とを有することを特徴とする。
物理プロセッサと、物理メモリと、複数の物理I/O(Input/Output)デバイスとを含むハードウェアと、
前記ハードウェア上で動作するホストOS(Operating System)及び仮想マシンモニタと、
前記仮想マシンモニタ上で動作するゲストOSとを有する仮想計算機システムであって、
前記仮想マシンモニタは、
前記ゲストOSと前記ホストOSとの間でデータの中継を行い、
前記ゲストOSは、
各々が、前記複数の物理I/Oデバイスのうちのいずれかの物理I/Oデバイスに対応し、対応する物理I/Oデバイスの制御のための制御データを入力する複数のフロントエンドドライバと、
各フロントエンドドライバから制御データを入力し、入力した制御データを前記仮想マシンモニタに出力するゲストOS側管理部とを有し、
前記ホストOSは、
各々が、前記複数の物理I/Oデバイスのうちのいずれかの物理I/Oデバイスに対応し、対応する物理I/Oデバイスが共通している、対応関係にあるフロントエンドドライバからの制御データを入力し、入力した制御データに基づいて、対応する物理I/Oデバイスを制御する複数のデバイスドライバと、
前記ゲストOS側管理部から出力された制御データを前記仮想マシンモニタから入力し、入力した制御データを、入力した制御データの出力元のフロントエンドドライバと対応関係にあるデバイスドライバに出力するホストOS側管理部とを有することを特徴とする。
本発明では、ゲストOS側管理部が、複数のフロントエンドドライバからの制御データを入力し、複数のフロントエンドドライバからの制御データを仮想マシンモニタに出力し、ホストOS側管理部が仮想マシンモニタから複数のフロントエンドドライバからの制御データを入力し、各制御データを対応するデバイスドライバに出力する。
このため、本発明によれば、物理I/Oデバイスごとにバックエンドドライバを開発する必要がなく、また、H/W更新時にゲストOS側の環境変更を実施することなくシステムが更新できる。
このため、本発明によれば、物理I/Oデバイスごとにバックエンドドライバを開発する必要がなく、また、H/W更新時にゲストOS側の環境変更を実施することなくシステムが更新できる。
実施の形態1.
本実施の形態では、個々の物理I/Oデバイスごとの仮想化ソフトウェアの内部構造を把握した開発を不要とし、H/W更新時にゲストOS側の環境変更を実施することなくシステムが更新できる仮想化のメリットをそのまま享受できる構成を説明する。
本実施の形態では、個々の物理I/Oデバイスごとの仮想化ソフトウェアの内部構造を把握した開発を不要とし、H/W更新時にゲストOS側の環境変更を実施することなくシステムが更新できる仮想化のメリットをそのまま享受できる構成を説明する。
図1は、本実施の形態に係る仮想計算機システム100の構成例を示す。
仮想計算機システム100は、ハードウェア40を備え、ホストOS30および仮想化ソフトウェア20がハードウェア40を用いて動作する。
そして、仮想化ソフトウェア20を用いてゲストOS10が動作する。
仮想化ソフトウェア20は、仮想マシンモニタともいう。
仮想化ソフトウェア20は、ゲストOS10とホストOS30の間でデータの中継を行う。
なお、仮想化ソフトウェア20には、ホストOS30上で仮想化ソフトウェア20がアプリケーションプログラムとして動作するホストOS型と仮想化ソフトウェア20そのものがホストOS30として動作するハイパーバイザ型がある。
そして、仮想化ソフトウェア20を用いてゲストOS10が動作する。
仮想化ソフトウェア20は、仮想マシンモニタともいう。
仮想化ソフトウェア20は、ゲストOS10とホストOS30の間でデータの中継を行う。
なお、仮想化ソフトウェア20には、ホストOS30上で仮想化ソフトウェア20がアプリケーションプログラムとして動作するホストOS型と仮想化ソフトウェア20そのものがホストOS30として動作するハイパーバイザ型がある。
ハードウェア40には、I/OデバイスA401、I/OデバイスB402、CPU(Central Processing Unit)403、RAM(Random Access Memory)404が含まれる。
I/OデバイスA401、I/OデバイスB402は、例えば、磁気ディスク装置等の二次記憶装置、通信ボード等である。
なお、図1では、I/OデバイスA401、I/OデバイスB402の2つのみを図示しているが、I/Oデバイスの個数は2つに限らない。
また、仮想計算機システム100のハードウェア40には、図1に示す以外のデバイスが含まれていてもよい。
I/OデバイスA401、I/OデバイスB402は、例えば、磁気ディスク装置等の二次記憶装置、通信ボード等である。
なお、図1では、I/OデバイスA401、I/OデバイスB402の2つのみを図示しているが、I/Oデバイスの個数は2つに限らない。
また、仮想計算機システム100のハードウェア40には、図1に示す以外のデバイスが含まれていてもよい。
ゲストOS10には、仮想化ソフトウェア20専用のデバイスドライバとしてフロントエンドドライバA121、フロントエンドドライバB122が含まれる。
フロントエンドドライバA121はI/OデバイスA401に対応し、フロントエンドドライバB122はI/OデバイスB402に対応する。
さらに、ゲストOS10には、仮想化する対象のI/Oデバイスで共通となる標準ドライバ呼出し機構(1)13が含まれる。
標準ドライバ呼出し機構(1)13は、ゲストOS10側で仮想化ソフトウェア20とのインタフェースとなる機構であり、全てのI/Oデバイスに対する制御データを受け付け、全てのI/Oデバイスに対する制御データを仮想化ソフトウェア20に出力する。
標準ドライバ呼出し機構(1)13は、ゲストOS側管理部の例に相当する。
また、ゲストOS10には、アプリケーションプログラム11が含まれる。
アプリケーションプログラム11は、I/OデバイスA401又はI/OデバイスB402を制御するための制御データを発行する。
フロントエンドドライバA121はI/OデバイスA401に対応し、フロントエンドドライバB122はI/OデバイスB402に対応する。
さらに、ゲストOS10には、仮想化する対象のI/Oデバイスで共通となる標準ドライバ呼出し機構(1)13が含まれる。
標準ドライバ呼出し機構(1)13は、ゲストOS10側で仮想化ソフトウェア20とのインタフェースとなる機構であり、全てのI/Oデバイスに対する制御データを受け付け、全てのI/Oデバイスに対する制御データを仮想化ソフトウェア20に出力する。
標準ドライバ呼出し機構(1)13は、ゲストOS側管理部の例に相当する。
また、ゲストOS10には、アプリケーションプログラム11が含まれる。
アプリケーションプログラム11は、I/OデバイスA401又はI/OデバイスB402を制御するための制御データを発行する。
ホストOS30には、I/OデバイスA401の標準デバイスドライバA321、I/OデバイスB402の標準デバイスドライバB322が含まれる。
また、ホストOS30には、仮想化する対象のI/Oデバイスで共通となる標準ドライバ呼出し機構(2)31が含まれる。
標準ドライバ呼出し機構(2)31は、ホストOS30側で仮想化ソフトウェア20とのインタフェースとなる機構であり、仮想化ソフトウェア20から全てのI/Oデバイスに対する制御データを受け付ける。
標準ドライバ呼出し機構(2)31は、ホストOS側管理部の例に相当する。
また、ホストOS30には、仮想化する対象のI/Oデバイスで共通となる標準ドライバ呼出し機構(2)31が含まれる。
標準ドライバ呼出し機構(2)31は、ホストOS30側で仮想化ソフトウェア20とのインタフェースとなる機構であり、仮想化ソフトウェア20から全てのI/Oデバイスに対する制御データを受け付ける。
標準ドライバ呼出し機構(2)31は、ホストOS側管理部の例に相当する。
ゲストOS10とホストOS30間の制御データの受け渡しは標準ドライバ呼出し機構(1)13と標準ドライバ呼出し機構(2)31が受け持ち、フロントエンドドライバA121、フロントエンドドライバB122と標準デバイスドライバA321、標準デバイスドライバB322からは仮想化ソフトウェア20を隠蔽する。
標準ドライバ呼出し機構(1)13と標準ドライバ呼出し機構(2)31の間の制御データの受け渡しは、仮想化ソフトウェア20の内部通信機構を利用して行われる。
標準ドライバ呼出し機構(1)13と標準ドライバ呼出し機構(2)31の間の制御データの受け渡しは、仮想化ソフトウェア20の内部通信機構を利用して行われる。
次に動作について説明する。
I/OデバイスA401は、フロントエンドドライバA121、標準ドライバ呼出し機構(1)13、標準ドライバ呼出し機構(2)31、標準デバイスドライバA321が協調しながら制御する。
同様に、I/OデバイスB402は、フロントエンドドライバB122、標準ドライバ呼出し機構(1)13、標準ドライバ呼出し機構(2)31、標準デバイスドライバB322が協調しながら制御する。
I/OデバイスA401は、フロントエンドドライバA121、標準ドライバ呼出し機構(1)13、標準ドライバ呼出し機構(2)31、標準デバイスドライバA321が協調しながら制御する。
同様に、I/OデバイスB402は、フロントエンドドライバB122、標準ドライバ呼出し機構(1)13、標準ドライバ呼出し機構(2)31、標準デバイスドライバB322が協調しながら制御する。
まず、アプリケーションプログラム11からI/OデバイスA401、I/OデバイスB402を制御するための制御データがフロントエンドドライバA121、フロントエンドドライバB122にそれぞれ渡される。
このとき、アプリケーションプログラム11のI/Oデバイス制御処理ではアプリケーションプログラム11に仮想化を意識させないために、アプリケーションプログラム11からフロントエンドドライバA121、フロントエンドドライバB122に渡す制御データは、標準デバイスドライバA321、標準デバイスドライバB322のインタフェースと同じものとする。
次に、フロントエンドドライバA121、フロントエンドドライバB122から標準ドライバ呼出し機構(1)13に制御データを渡す。
このとき、フロントエンドドライバA121、フロントエンドドライバB122に仮想化ソフトウェア20の内部構造を意識させないために、フロントエンドドライバA121、フロントエンドドライバB122から標準ドライバ呼出し機構(1)13に渡す制御データは、標準デバイスドライバA321、標準デバイスドライバB322のインタフェースと同じものとする。
続いて、標準ドライバ呼出し機構(1)13は、仮想化ソフトウェア20に制御データを出力する。
仮想化ソフトウェア20は、制御データを標準ドライバ呼出し機構(2)31に出力する。
標準ドライバ呼出し機構(2)31は、入力した制御データを、対応する標準デバイスドライバA321、標準デバイスドライバB322に渡す。
標準デバイスドライバA321、標準デバイスドライバB322は受け取った制御データを基にしてI/OデバイスA401、I/OデバイスB402をそれぞれ制御する。
このとき、標準デバイスドライバA321、標準デバイスドライバB322が受け取る制御データは仮想化に特化しない通常の制御データであるため、標準デバイスドライバA321、標準デバイスドライバB322の仮想化向けの改変は必要としない。
このとき、アプリケーションプログラム11のI/Oデバイス制御処理ではアプリケーションプログラム11に仮想化を意識させないために、アプリケーションプログラム11からフロントエンドドライバA121、フロントエンドドライバB122に渡す制御データは、標準デバイスドライバA321、標準デバイスドライバB322のインタフェースと同じものとする。
次に、フロントエンドドライバA121、フロントエンドドライバB122から標準ドライバ呼出し機構(1)13に制御データを渡す。
このとき、フロントエンドドライバA121、フロントエンドドライバB122に仮想化ソフトウェア20の内部構造を意識させないために、フロントエンドドライバA121、フロントエンドドライバB122から標準ドライバ呼出し機構(1)13に渡す制御データは、標準デバイスドライバA321、標準デバイスドライバB322のインタフェースと同じものとする。
続いて、標準ドライバ呼出し機構(1)13は、仮想化ソフトウェア20に制御データを出力する。
仮想化ソフトウェア20は、制御データを標準ドライバ呼出し機構(2)31に出力する。
標準ドライバ呼出し機構(2)31は、入力した制御データを、対応する標準デバイスドライバA321、標準デバイスドライバB322に渡す。
標準デバイスドライバA321、標準デバイスドライバB322は受け取った制御データを基にしてI/OデバイスA401、I/OデバイスB402をそれぞれ制御する。
このとき、標準デバイスドライバA321、標準デバイスドライバB322が受け取る制御データは仮想化に特化しない通常の制御データであるため、標準デバイスドライバA321、標準デバイスドライバB322の仮想化向けの改変は必要としない。
図2にデータの受け渡しの詳細を図示する。
以下では、アプリケーションプログラム11からI/OデバイスA401に対する制御データがフロントエンドドライバA121に発行された場合を例にして説明を行う。
以下では、アプリケーションプログラム11からI/OデバイスA401に対する制御データがフロントエンドドライバA121に発行された場合を例にして説明を行う。
I/Oデバイスの制御データ501には一般的にポインタ5013が含まれることがあるが、この場合、次の問題が発生する。
I/Oデバイスの制御データ501はゲストOS10上のデータであるため、ポインタ5013はゲストOS10に割り当てられた論理アドレス(以下、「ゲストOSアドレス」という)のデータ5014を参照している(601)。
制御データ501がゲストOS10上のフロントエンドドライバA121、標準ドライバ呼出し機構(1)13に渡されたときは、問題なくデータ5014が参照できるが、ホストOS30上の標準ドライバ呼出し機構(2)31に渡されたときには、ポインタ5013がゲストOSアドレスを指し示しているため、正常にデータを参照できない(602)。
このまま、標準デバイスドライバA321に制御データを渡しても、標準デバイスドライバA321ではI/OデバイスA401の制御が正常に行なえない。
I/Oデバイスの制御データ501はゲストOS10上のデータであるため、ポインタ5013はゲストOS10に割り当てられた論理アドレス(以下、「ゲストOSアドレス」という)のデータ5014を参照している(601)。
制御データ501がゲストOS10上のフロントエンドドライバA121、標準ドライバ呼出し機構(1)13に渡されたときは、問題なくデータ5014が参照できるが、ホストOS30上の標準ドライバ呼出し機構(2)31に渡されたときには、ポインタ5013がゲストOSアドレスを指し示しているため、正常にデータを参照できない(602)。
このまま、標準デバイスドライバA321に制御データを渡しても、標準デバイスドライバA321ではI/OデバイスA401の制御が正常に行なえない。
本実施の形態では、この問題を解決するため、図3に示す動作を行う。
I/Oデバイスの制御データ501にポインタ5013が含まれる場合、フロントエンドドライバA121がポインタ5013を標準ドライバ呼出し機構(1)13のマッピング処理部(1)131に渡す。
マッピング処理部(1)131は、標準ドライバ呼出し機構(2)31のマッピング処理部(2)311を介して、ホストOS30に割り当てられたいずれかの論理アドレス(以下、「ホストOSアドレス」という)にデータ5014をマッピングする(603)。
フロントエンドドライバA121は、マッピング処理部(2)311とマッピング処理部(1)131を介して、ホストOS30から参照可能なホストOSアドレスを取得する。
そして、フロントエンドドライバA121は、制御データ501のポインタ5013を、取得したホストOSアドレスを指し示すポインタ5015に置き換えて、制御データ502を生成する(604)。
ポインタ5013からポインタ5015への置き換えにより、ホストOS30では、ホストOSアドレスにデータ5016が格納されていると認識することができる(605)。
なお、データ5014とデータ5016は同一の物理アドレス(RAM404のアドレス)上に保持されているため同一のものである。
フロントエンドドライバA121は制御データ502を標準ドライバ呼出し機構(1)13と仮想化ソフトウェア20と標準ドライバ呼出し機構(2)31を介して、標準デバイスドライバA321に渡す。
標準デバイスドライバA321は、渡された制御データ502を基にして、I/OデバイスA401を制御する。
このとき、制御データ502のポインタ5015はホストOS30から参照可能なホストOSアドレスを参照しているため、正常にI/OデバイスA401の制御が可能となる。
つまり、標準デバイスドライバA321は、ホストOSアドレスからデータ5016を読み出し、読み出したデータ5016を用いてI/OデバイスA401を制御することができる。
マッピング処理部(1)131は、標準ドライバ呼出し機構(2)31のマッピング処理部(2)311を介して、ホストOS30に割り当てられたいずれかの論理アドレス(以下、「ホストOSアドレス」という)にデータ5014をマッピングする(603)。
フロントエンドドライバA121は、マッピング処理部(2)311とマッピング処理部(1)131を介して、ホストOS30から参照可能なホストOSアドレスを取得する。
そして、フロントエンドドライバA121は、制御データ501のポインタ5013を、取得したホストOSアドレスを指し示すポインタ5015に置き換えて、制御データ502を生成する(604)。
ポインタ5013からポインタ5015への置き換えにより、ホストOS30では、ホストOSアドレスにデータ5016が格納されていると認識することができる(605)。
なお、データ5014とデータ5016は同一の物理アドレス(RAM404のアドレス)上に保持されているため同一のものである。
フロントエンドドライバA121は制御データ502を標準ドライバ呼出し機構(1)13と仮想化ソフトウェア20と標準ドライバ呼出し機構(2)31を介して、標準デバイスドライバA321に渡す。
標準デバイスドライバA321は、渡された制御データ502を基にして、I/OデバイスA401を制御する。
このとき、制御データ502のポインタ5015はホストOS30から参照可能なホストOSアドレスを参照しているため、正常にI/OデバイスA401の制御が可能となる。
つまり、標準デバイスドライバA321は、ホストOSアドレスからデータ5016を読み出し、読み出したデータ5016を用いてI/OデバイスA401を制御することができる。
次に、本実施の形態に係る仮想計算機システム100の動作を、図4〜9のフローチャートを用いて説明する。
アプリケーションプログラム11は、図4に示すように、制御の対象とするI/Oデバイスに対応するフロントエンドドライバに制御データを渡す(S10)。
なお、以下では、アプリケーションプログラム11がI/OデバイスA401に対する制御データをフロントエンドドライバA121に発行した場合を例にして説明を行う。
なお、以下では、アプリケーションプログラム11がI/OデバイスA401に対する制御データをフロントエンドドライバA121に発行した場合を例にして説明を行う。
フロントエンドドライバA121は、図5に示すように、アプリケーションプログラム11からの制御データを入力した場合に、制御データにポインタが含まれるか否かを判断する(S20)。
ポインタには、前述したように、ゲストOSアドレスが記述されている。
入力した制御データにポインタが含まれる場合(S20でYES)は、フロントエンドドライバA121は、標準ドライバ呼出し機構(1)13のマッピング処理部(1)131に、ポインタを渡す(S21)。
そして、フロントエンドドライバA121は、標準ドライバ呼出し機構(1)13のマッピング処理部(1)131からホストOSアドレスを取得する(S22)。
更に、フロントエンドドライバA121は、取得したホストOSアドレスを指し示すポインタで、制御データ内の元のポインタを書き換えて、新たな制御データを生成する(S23)。
更に、フロントエンドドライバA121は、新たな制御データを標準ドライバ呼出し機構(1)13に出力する(S24)。
一方、入力した制御データにポインタが含まれない場合(S20でNO)は、フロントエンドドライバA121は、入力した制御データをそのまま標準ドライバ呼出し機構(1)13に出力する(S24)。
ポインタには、前述したように、ゲストOSアドレスが記述されている。
入力した制御データにポインタが含まれる場合(S20でYES)は、フロントエンドドライバA121は、標準ドライバ呼出し機構(1)13のマッピング処理部(1)131に、ポインタを渡す(S21)。
そして、フロントエンドドライバA121は、標準ドライバ呼出し機構(1)13のマッピング処理部(1)131からホストOSアドレスを取得する(S22)。
更に、フロントエンドドライバA121は、取得したホストOSアドレスを指し示すポインタで、制御データ内の元のポインタを書き換えて、新たな制御データを生成する(S23)。
更に、フロントエンドドライバA121は、新たな制御データを標準ドライバ呼出し機構(1)13に出力する(S24)。
一方、入力した制御データにポインタが含まれない場合(S20でNO)は、フロントエンドドライバA121は、入力した制御データをそのまま標準ドライバ呼出し機構(1)13に出力する(S24)。
標準ドライバ呼出し機構(1)13のマッピング処理部(1)131が、図5のS21においてフロントエンドドライバA121から出力されたポインタを入力した場合は、図6に示すように、仮想化ソフトウェア20を介して標準ドライバ呼出し機構(2)31のマッピング処理部(2)311にポインタを出力する(S30)。
次に、マッピング処理部(1)131は、標準ドライバ呼出し機構(2)31のマッピング処理部(2)311からホストOSアドレスを取得し(S31)、取得したホストOSアドレスをフロントエンドドライバA121に返す(S32)。
フロントエンドドライバA121では、前述のS22(図5)に示すとおり、マッピング処理部(1)131から出力されたホストOSアドレスを取得する。
次に、マッピング処理部(1)131は、標準ドライバ呼出し機構(2)31のマッピング処理部(2)311からホストOSアドレスを取得し(S31)、取得したホストOSアドレスをフロントエンドドライバA121に返す(S32)。
フロントエンドドライバA121では、前述のS22(図5)に示すとおり、マッピング処理部(1)131から出力されたホストOSアドレスを取得する。
標準ドライバ呼出し機構(2)31のマッピング処理部(2)311が、図6のS30においてマッピング処理部(1)131から出力されたポインタを入力した場合は、図7に示すように、ポインタの参照先のデータをホストOS30から参照可能ないずれかの論理アドレスにマッピングする(S40)。
つまり、マッピング処理部(2)311は、ポインタに記述のゲストOSアドレスの物理アドレスに対応する、ホストOS30に割り当てられている論理アドレスをホストOSアドレスとして指定する。
次に、マッピング処理部(2)311は、指定したホストOSアドレスを仮想化ソフトウェア20を介して標準ドライバ呼出し機構(1)13のマッピング処理部(1)131に返す(S41)。
マッピング処理部(1)131では、前述のS31(図6)に示すとおり、マッピング処理部(2)311から出力されたホストOSアドレスを取得する。
つまり、マッピング処理部(2)311は、ポインタに記述のゲストOSアドレスの物理アドレスに対応する、ホストOS30に割り当てられている論理アドレスをホストOSアドレスとして指定する。
次に、マッピング処理部(2)311は、指定したホストOSアドレスを仮想化ソフトウェア20を介して標準ドライバ呼出し機構(1)13のマッピング処理部(1)131に返す(S41)。
マッピング処理部(1)131では、前述のS31(図6)に示すとおり、マッピング処理部(2)311から出力されたホストOSアドレスを取得する。
標準ドライバ呼出し機構(1)13が、図5のS24においてフロントエンドドライバA121から出力された制御データを入力した場合は、図8に示すように、仮想化ソフトウェア20を介して標準ドライバ呼出し機構(2)31に制御データを出力する(S50)。
標準ドライバ呼出し機構(2)31が、図8のS50において標準ドライバ呼出し機構(1)13から出力された制御データを入力した場合は、図9に示すように、フロントエンドドライバA121に対応する標準デバイスドライバA321に制御データを出力する(S60)。
その後、標準デバイスドライバA321では、制御データを用いてI/OデバイスA401を制御する。
その後、標準デバイスドライバA321では、制御データを用いてI/OデバイスA401を制御する。
以上のように、本実施の形態では、複数のI/Oデバイスに対する制御データの受け渡しを、フロントエンドドライバとバックエンドドライバの組の単位ではなく、標準ドライバ呼出し機構(1)13と標準ドライバ呼出し機構(2)31で行っている。
このため、仮想化する対象のI/OデバイスA401、I/OデバイスB402ごとに仮想化ソフトウェアの内部構造を意識した複雑な開発が不要となり、標準デバイスドライバA321、標準デバイスドライバB322のインタフェースを意識したフロントエンドドライバA121、フロントエンドドライバB122の開発のみでI/OデバイスA401、I/OデバイスB402を仮想化することができる。
つまり、バックエンドドライバを開発する必要がない。
また、H/W更新時にも標準デバイスドライバA321、標準デバイスドライバB322のインタフェースは変わらないため、ゲストOS10側のフロントエンドドライバA121、フロントエンドドライバB122と標準ドライバ呼出し機構(1)13の再開発は不要である。
このため、H/W更新時のゲストOS側の環境変更は不要である。
また、標準ドライバ呼出し機構(2)31についてもホストOS30の仕様変更がない限り、再開発は不要である。
このため、仮想化する対象のI/OデバイスA401、I/OデバイスB402ごとに仮想化ソフトウェアの内部構造を意識した複雑な開発が不要となり、標準デバイスドライバA321、標準デバイスドライバB322のインタフェースを意識したフロントエンドドライバA121、フロントエンドドライバB122の開発のみでI/OデバイスA401、I/OデバイスB402を仮想化することができる。
つまり、バックエンドドライバを開発する必要がない。
また、H/W更新時にも標準デバイスドライバA321、標準デバイスドライバB322のインタフェースは変わらないため、ゲストOS10側のフロントエンドドライバA121、フロントエンドドライバB122と標準ドライバ呼出し機構(1)13の再開発は不要である。
このため、H/W更新時のゲストOS側の環境変更は不要である。
また、標準ドライバ呼出し機構(2)31についてもホストOS30の仕様変更がない限り、再開発は不要である。
なお、以上では、ポインタの論理アドレスを置き換える例、すなわち、ゲストOSに割り当てられている論理アドレス(ゲストOSアドレス)をホストOSに割り当てられている論理アドレス(ホストOSアドレス)に置き換える例を説明した。
論理アドレス以外にも、制御データにゲストOSに割り当てられているパラメータ値(ゲストOSパラメータ値)が記述されており、ホストOSではゲストOSパラメータ値を参照できない場合には、本実施の形態で説明した手法により、制御データ内のゲストOSパラメータ値をホストOSに割り当てられているパラメータ値(ホストOSパラメータ値)に置き換えるようにしてもよい。
論理アドレス以外にも、制御データにゲストOSに割り当てられているパラメータ値(ゲストOSパラメータ値)が記述されており、ホストOSではゲストOSパラメータ値を参照できない場合には、本実施の形態で説明した手法により、制御データ内のゲストOSパラメータ値をホストOSに割り当てられているパラメータ値(ホストOSパラメータ値)に置き換えるようにしてもよい。
最後に、本実施の形態に示した仮想計算機システム100のハードウェア構成例について説明する。
図10は、本実施の形態に示す仮想計算機システム100のハードウェア資源の一例を示す図である。
なお、図10の構成は、あくまでも仮想計算機システム100のハードウェア構成の一例を示すものであり、仮想計算機システム100のハードウェア構成は図10に記載の構成に限らず、他の構成であってもよい。
図10は、本実施の形態に示す仮想計算機システム100のハードウェア資源の一例を示す図である。
なお、図10の構成は、あくまでも仮想計算機システム100のハードウェア構成の一例を示すものであり、仮想計算機システム100のハードウェア構成は図10に記載の構成に限らず、他の構成であってもよい。
図10において、仮想計算機システム100は、プログラムを実行するCPU911(プロセッサ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータともいう)を備えている。
CPU911は図1のCPU403に対応する。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920、スキャナ装置907と接続され、これらのハードウェアデバイスを制御する。
RAM914は図1のRAM404に対応する。
また、通信ボード915及び磁気ディスク装置920は、図1のI/OデバイスA401及びI/OデバイスB402に対応する。
CPU911は図1のCPU403に対応する。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920、スキャナ装置907と接続され、これらのハードウェアデバイスを制御する。
RAM914は図1のRAM404に対応する。
また、通信ボード915及び磁気ディスク装置920は、図1のI/OデバイスA401及びI/OデバイスB402に対応する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906と接続していてもよい。
また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)を用いてもよい。
RAM914は、揮発性メモリの一例である。
ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。
これらは、記憶装置の一例である。
通信ボード915、キーボード902、マウス903、FDD904、スキャナ装置907などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)を用いてもよい。
RAM914は、揮発性メモリの一例である。
ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。
これらは、記憶装置の一例である。
通信ボード915、キーボード902、マウス903、FDD904、スキャナ装置907などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
通信ボード915は、LAN(Local Area Network)に接続される。
通信ボード915は、LANを介して、例えば、インターネット、WAN(Wide Area Network)などに接続することが可能である。
通信ボード915は、LANを介して、例えば、インターネット、WAN(Wide Area Network)などに接続することが可能である。
磁気ディスク装置920には、仮想化ソフトウェア921、ホストOS922、ゲストOS923、プログラム群924、ファイル群925が記憶されている。
仮想化ソフトウェア921は図1の仮想化ソフトウェア20に対応し、ホストOS922は図1のホストOS30に対応し、ゲストOS923は図1のゲストOS10に対応する。
また、図1のアプリケーションプログラム11は、プログラム群924に含まれる。
仮想化ソフトウェア921、ホストOS922、ゲストOS923、プログラム群924は、CPU911により実行される。
この意味で、CPU911(図1のCPU403)は、フロントエンドドライバA121、フロントエンドドライバB122の処理を行うフロントエンドドライバ処理部と、ゲストOS側管理部(標準ドライバ呼出し機構(1)13)の処理を行うゲストOS側管理処理部と、ホストOS側管理部(標準ドライバ呼出し機構(2)31)の処理を行うホストOS側管理処理部と、標準デバイスドライバA321、標準デバイスドライバB322の処理を行う標準デバイスドライバ処理部に相当する。
仮想化ソフトウェア921は図1の仮想化ソフトウェア20に対応し、ホストOS922は図1のホストOS30に対応し、ゲストOS923は図1のゲストOS10に対応する。
また、図1のアプリケーションプログラム11は、プログラム群924に含まれる。
仮想化ソフトウェア921、ホストOS922、ゲストOS923、プログラム群924は、CPU911により実行される。
この意味で、CPU911(図1のCPU403)は、フロントエンドドライバA121、フロントエンドドライバB122の処理を行うフロントエンドドライバ処理部と、ゲストOS側管理部(標準ドライバ呼出し機構(1)13)の処理を行うゲストOS側管理処理部と、ホストOS側管理部(標準ドライバ呼出し機構(2)31)の処理を行うホストOS側管理処理部と、標準デバイスドライバA321、標準デバイスドライバB322の処理を行う標準デバイスドライバ処理部に相当する。
更に、ファイル群925には、本実施の形態の説明において、「〜の判断」、「〜の取得」、「〜の変更」、「〜の置き換え」、「〜の通知」、「〜の制御」、「〜の指定」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、本実施の形態で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ブルーレイ(登録商標)ディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、本実施の形態で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ブルーレイ(登録商標)ディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、本実施の形態で説明した仮想計算機システム100の動作を例えばデータ処理方法として把握することも可能である。
このように、本実施の形態に示す仮想計算機システム100は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、ゲストOS10、仮想化ソフトウェア20、ホストOS30として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
10 ゲストOS、11 アプリケーションプログラム、13 標準ドライバ呼出し機構(1)、20 仮想化ソフトウェア、30 ホストOS、31 標準ドライバ呼出し機構(2)、40 ハードウェア、100 仮想計算機システム、121 フロントエンドドライバA、122 フロントエンドドライバB、131 マッピング処理部(1)、311 マッピング処理部(2)、321 標準デバイスドライバA、322 標準デバイスドライバB、401 I/OデバイスA、402 I/OデバイスB、403 CPU、404 RAM。
Claims (6)
- 複数の物理I/O(Input/Output)デバイスを含むハードウェアと、
前記ハードウェア上で動作するホストOS(Operating System)及び仮想マシンモニタと、
前記仮想マシンモニタ上で動作するゲストOSとを有する仮想計算機システムであって、
前記仮想マシンモニタは、
前記ゲストOSと前記ホストOSとの間でデータの中継を行い、
前記ゲストOSは、
各々が、前記複数の物理I/Oデバイスのうちのいずれかの物理I/Oデバイスに対応し、対応する物理I/Oデバイスの制御のための制御データを入力する複数のフロントエンドドライバを有し、
前記ホストOSは、
各々が、前記複数の物理I/Oデバイスのうちのいずれかの物理I/Oデバイスに対応し、対応する物理I/Oデバイスを制御する複数の標準デバイスドライバを有し、
各フロントエンドドライバは、
入力した制御データに前記ゲストOSに割り当てられているパラメータ値であるゲストOSパラメータ値が記述されているか否かを判断し、
前記制御データに前記ゲストOSパラメータ値が記述されている場合に、前記仮想マシンモニタを介して前記ホストOSから、前記ゲストOSパラメータ値に対応する、前記ホストOSに割当てられているパラメータ値をホストOSパラメータ値として取得し、
前記制御データの前記ゲストOSパラメータ値の記述を前記ホストOSパラメータ値の記述に変更し、前記ホストOSパラメータ値が記述される制御データを前記仮想マシンモニタを介して、対応する物理I/Oデバイスが共通する標準デバイスドライバに出力し、
各標準デバイスドライバは、
前記ゲストOSパラメータ値に代えて前記ホストOSパラメータ値が記述される制御データを入力し、入力した制御データに基づいて、対応する物理I/Oデバイスを制御することを特徴とする仮想計算機システム。 - 前記ゲストOSは、更に、
各フロントエンドドライバから制御データを入力し、入力した制御データを前記仮想マシンモニタに出力するゲストOS側管理部とを有し、
前記ホストOSは、更に、
前記ゲストOS側管理部から出力された制御データを前記仮想マシンモニタから入力し、入力した制御データを、入力した制御データの出力元のフロントエンドドライバと対応関係にある標準デバイスドライバに出力するホストOS側管理部とを有し、
各フロントエンドドライバは、
前記制御データに前記ゲストOSパラメータ値が記述されている場合に、前記仮想マシンモニタ及び前記ゲストOS側管理部を介して前記ホストOS側管理部から、前記ホストOSパラメータ値を取得し、
前記制御データの前記ゲストOSパラメータ値の記述を前記ホストOSパラメータ値の記述に変更し、前記ホストOSパラメータ値が記述される制御データを前記ゲストOS側管理部及び前記仮想マシンモニタ及び前記ホストOS側管理部を介して、対応する物理I/Oデバイスが共通する標準デバイスドライバに出力し、
各標準デバイスドライバは、
前記ゲストOSパラメータ値に代えて前記ホストOSパラメータ値が記述される制御データを前記ホストOS側管理部から入力し、入力した制御データに基づいて、対応する物理I/Oデバイスを制御することを特徴とする請求項1に記載の仮想計算機システム。 - 各フロントエンドドライバは、
前記制御データに前記ゲストOSパラメータ値が記述されている場合に、前記ゲストOS側管理部及び前記仮想マシンモニタを介して前記ホストOS側管理部に、前記ゲストOSパラメータ値を通知し、
前記ホストOS側管理部は、
前記ゲストOS側管理部及び前記仮想マシンモニタを介して、いずれかのフロントエンドドライバから前記ゲストOSパラメータ値が通知された場合に、
通知された前記ゲストOSパラメータ値に対応する、前記ホストOSに割当てられているパラメータ値をホストOSパラメータ値として前記仮想マシンモニタ及び前記ゲストOS側管理部を介して、前記ゲストOSパラメータ値の通知元のフロントエンドドライバに通知し、
各フロントエンドドライバは、
前記仮想マシンモニタ及び前記ゲストOS側管理部を介して、前記ホストOS側管理部から前記ホストOSパラメータ値が通知された場合に、
前記制御データの前記ゲストOSパラメータ値の記述を前記ホストOSパラメータ値の記述に変更し、前記ホストOSパラメータ値が記述される制御データを前記ゲストOS側管理部及び前記仮想マシンモニタ及び前記ホストOS側管理部を介して、対応する物理I/Oデバイスが共通する標準デバイスドライバに出力することを特徴とする請求項2に記載の仮想計算機システム。 - 各フロントエンドドライバは、
前記ゲストOSパラメータ値として、入力した制御データに前記ゲストOSに割り当てられている論理アドレスであるゲストOSアドレスが記述されているか否かを判断し、
前記制御データに前記ゲストOSアドレスが記述されている場合に、前記ゲストOSアドレスの物理アドレスに対応する、前記ホストOSに割り当てられている論理アドレスをホストOSアドレスとして、前記仮想マシンモニタ及び前記ゲストOS側管理部を介して前記ホストOS側管理部から取得し、
前記制御データの前記ゲストOSアドレスの記述を前記ホストOSアドレスの記述に変更し、前記ホストOSアドレスが記述される制御データを前記ゲストOS側管理部及び前記仮想マシンモニタ及び前記ホストOS側管理部を介して、対応する物理I/Oデバイスが共通する標準デバイスドライバに出力し、
各標準デバイスドライバは、
前記ゲストOSアドレスに代えて前記ホストOSアドレスが記述される制御データを前記ホストOS側管理部から入力し、入力した制御データに基づいて、対応する物理I/Oデバイスを制御することを特徴とする請求項2又は3に記載の仮想計算機システム。 - 各フロントエンドドライバは、
前記制御データに前記ゲストOSアドレスが記述されている場合に、前記ゲストOS側管理部及び前記仮想マシンモニタを介して前記ホストOS側管理部に、前記ゲストOSアドレスを通知し、
前記ホストOS側管理部は、
前記ゲストOS側管理部及び前記仮想マシンモニタを介して、いずれかのフロントエンドドライバから前記ゲストOSアドレスが通知された場合に、
前記ゲストOSアドレスの物理アドレスに対応する、前記ホストOSに割り当てられている論理アドレスをホストOSアドレスとして、前記仮想マシンモニタ及び前記ゲストOS側管理部を介して、前記ゲストOSアドレスの通知元のフロントエンドドライバに通知し、
各フロントエンドドライバは、
前記仮想マシンモニタ及び前記ゲストOS側管理部を介して、前記ホストOS側管理部から前記ホストOSアドレスが通知された場合に、
前記制御データの前記ゲストOSアドレスの記述を前記ホストOSアドレスの記述に変更し、前記ホストOSアドレスが記述される制御データを前記ゲストOS側管理部及び前記仮想マシンモニタ及び前記ホストOS側管理部を介して、対応する物理I/Oデバイスが共通する標準デバイスドライバに出力することを特徴とする請求項4に記載の仮想計算機システム。 - 前記ハードウェアには、
物理プロセッサが含まれ、
前記物理プロセッサは、
各フロントエンドドライバの処理を行うフロントエンドドライバ処理部と、
前記ゲストOS側管理部の処理を行うゲストOS側管理処理部と、
前記ホストOS側管理部の処理を行うホストOS側管理処理部と、
各標準デバイスドライバの処理を行う標準デバイスドライバ処理部とを有することを特徴とする請求項2に記載の仮想計算機システム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2012/079663 WO2014076799A1 (ja) | 2012-11-15 | 2012-11-15 | 仮想計算機システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5881852B2 true JP5881852B2 (ja) | 2016-03-09 |
JPWO2014076799A1 JPWO2014076799A1 (ja) | 2016-09-08 |
Family
ID=50730739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014546789A Expired - Fee Related JP5881852B2 (ja) | 2012-11-15 | 2012-11-15 | 仮想計算機システム |
Country Status (4)
Country | Link |
---|---|
US (1) | US20150277945A1 (ja) |
JP (1) | JP5881852B2 (ja) |
CN (1) | CN104823171A (ja) |
WO (1) | WO2014076799A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9563581B1 (en) * | 2015-11-24 | 2017-02-07 | Citrix Systems, Inc. | Remote-session keyboard and mouse input via generic device redirection |
CN107278293B (zh) * | 2017-05-08 | 2020-11-06 | 深圳前海达闼云端智能科技有限公司 | 虚拟机的传感器实现装置及其方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007334572A (ja) * | 2006-06-14 | 2007-12-27 | Nec Corp | Os切り替えシステム、仮想計算機システム、os切り替え方法及びos切り替え用プログラム |
JP2010040043A (ja) * | 2008-08-06 | 2010-02-18 | Samsung Electronics Co Ltd | 仮想化装置の制御方法及び仮想化装置 |
JP2010205124A (ja) * | 2009-03-05 | 2010-09-16 | Nec Corp | 仮想化装置におけるpciデバイスのコンフィグレーション処理方法及びコンピュータシステム |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7272831B2 (en) * | 2001-03-30 | 2007-09-18 | Intel Corporation | Method and apparatus for constructing host processor soft devices independent of the host processor operating system |
US20070061441A1 (en) * | 2003-10-08 | 2007-03-15 | Landis John A | Para-virtualized computer system with I/0 server partitions that map physical host hardware for access by guest partitions |
US20050251806A1 (en) * | 2004-05-10 | 2005-11-10 | Auslander Marc A | Enhancement of real-time operating system functionality using a hypervisor |
JP5210730B2 (ja) * | 2007-11-28 | 2013-06-12 | 株式会社日立製作所 | 仮想マシンモニタ及びマルチプロセッサシステム |
US7904914B2 (en) * | 2008-09-30 | 2011-03-08 | Microsoft Corporation | On-the-fly replacement of physical hardware with emulation |
US8473947B2 (en) * | 2010-01-18 | 2013-06-25 | Vmware, Inc. | Method for configuring a physical adapter with virtual function (VF) and physical function (PF) for controlling address translation between virtual disks and physical storage regions |
US9514507B2 (en) * | 2011-11-29 | 2016-12-06 | Citrix Systems, Inc. | Methods and systems for maintaining state in a virtual machine when disconnected from graphics hardware |
US9280378B2 (en) * | 2011-11-30 | 2016-03-08 | Red Hat, Inc. | Adjustment during migration to a different virtualization environment |
US9880868B2 (en) * | 2011-11-30 | 2018-01-30 | Red Hat, Inc. | Modifying an OS installer to allow for hypervisor-specific adjustment of an OS |
US8631408B2 (en) * | 2011-11-30 | 2014-01-14 | Red Hat, Inc. | Configuring parameters of a guest operating system based on detected events |
US9009702B2 (en) * | 2011-11-30 | 2015-04-14 | Red Hat Israel, Ltd. | Application-driven shared device queue polling in a virtualized computing environment |
US20140019964A1 (en) * | 2012-07-13 | 2014-01-16 | Douglas M. Neuse | System and method for automated assignment of virtual machines and physical machines to hosts using interval analysis |
-
2012
- 2012-11-15 JP JP2014546789A patent/JP5881852B2/ja not_active Expired - Fee Related
- 2012-11-15 WO PCT/JP2012/079663 patent/WO2014076799A1/ja active Application Filing
- 2012-11-15 US US14/435,270 patent/US20150277945A1/en not_active Abandoned
- 2012-11-15 CN CN201280077074.4A patent/CN104823171A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007334572A (ja) * | 2006-06-14 | 2007-12-27 | Nec Corp | Os切り替えシステム、仮想計算機システム、os切り替え方法及びos切り替え用プログラム |
JP2010040043A (ja) * | 2008-08-06 | 2010-02-18 | Samsung Electronics Co Ltd | 仮想化装置の制御方法及び仮想化装置 |
JP2010205124A (ja) * | 2009-03-05 | 2010-09-16 | Nec Corp | 仮想化装置におけるpciデバイスのコンフィグレーション処理方法及びコンピュータシステム |
Also Published As
Publication number | Publication date |
---|---|
JPWO2014076799A1 (ja) | 2016-09-08 |
WO2014076799A1 (ja) | 2014-05-22 |
US20150277945A1 (en) | 2015-10-01 |
CN104823171A (zh) | 2015-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10496613B2 (en) | Method for processing input/output request, host, server, and virtual machine | |
US7434003B2 (en) | Efficient operating system operation on a hypervisor | |
US8732427B2 (en) | Systems and methods for collapsing a derivative version of a primary storage volume | |
CN108139937B (zh) | 多根i/o虚拟化系统 | |
US20140298330A1 (en) | Information processing device, transmission control method, and computer-readable recording medium | |
EP3274896B1 (en) | Configuration of a memory controller for copy-on-write with a resource controller | |
US10977191B2 (en) | TLB shootdowns for low overhead | |
JP5183448B2 (ja) | 情報処理装置及び情報処理方法及びプログラム | |
JP5881852B2 (ja) | 仮想計算機システム | |
JP6716645B2 (ja) | ハードウェア内で変換索引バッファ(tlb)シュートダウンを指示および追跡するための方法およびシステム、並びに非一時的なコンピュータ可読媒体 | |
US8752046B2 (en) | Virtual calculating machine system, virtual calculating machine control apparatus and virtual calculating machine control method | |
JP2019152996A (ja) | エンジニアリングツール、コントローラ、および制御システム | |
US11003488B2 (en) | Memory-fabric-based processor context switching system | |
JP5905412B2 (ja) | 仮想計算機システム及びプロセッサ性能測定方法 | |
US20140215467A1 (en) | Method and Virtualization Controller for Managing a Computer Resource With at Least Two Virtual Machines | |
JP5996094B2 (ja) | 仮想マシンイメージ管理サーバ、及び仮想マシンイメージ管理方法 | |
US11106543B2 (en) | Application image cloning system | |
JPWO2018173300A1 (ja) | I/o制御方法およびi/o制御システム | |
US10642625B2 (en) | Branch rewriting device feature optimization | |
US10394512B2 (en) | Multi-monitor alignment on a thin client | |
JP2012208539A (ja) | 仮想マシン管理装置及び仮想マシン管理プログラム | |
JP2015215782A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20160105 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160202 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5881852 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |