JP5941868B2 - 仮想計算機システムおよび仮想計算機におけるi/o実施方法 - Google Patents

仮想計算機システムおよび仮想計算機におけるi/o実施方法 Download PDF

Info

Publication number
JP5941868B2
JP5941868B2 JP2013087040A JP2013087040A JP5941868B2 JP 5941868 B2 JP5941868 B2 JP 5941868B2 JP 2013087040 A JP2013087040 A JP 2013087040A JP 2013087040 A JP2013087040 A JP 2013087040A JP 5941868 B2 JP5941868 B2 JP 5941868B2
Authority
JP
Japan
Prior art keywords
address
driver
virtual machine
area
shared area
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
Application number
JP2013087040A
Other languages
English (en)
Other versions
JP2014211727A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2013087040A priority Critical patent/JP5941868B2/ja
Priority to US14/254,581 priority patent/US9262184B2/en
Publication of JP2014211727A publication Critical patent/JP2014211727A/ja
Application granted granted Critical
Publication of JP5941868B2 publication Critical patent/JP5941868B2/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
    • 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
    • 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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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/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/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Description

本発明は、仮想化機構を多段に重ねた環境において最上段計算機環境から実施するI/Oに関するものである。
本技術分野の背景技術として、特開2009−003749号公報(特許文献1)がある。この公報には、「ホストVMMの呼び出しの要因に応じて、第2の仮想プロセッサ上のユーザプログラムを実行するためのゲスト状態エリア221と、ゲストVMMを実行するためのホスト状態エリア222の何れかを選択し、物理プロセッサを制御するためのシャドウVMCBのゲスト状態エリア131を更新することで、第1の仮想プロセッサ上で仮想化機能を備えた次世代OSをユーザプログラムとして実行する。」と記載されている。
特開2009−003749号公報
特許文献1には、物理計算機上で仮想化技術を用いて構築した仮想計算機の上で仮想化機構を備えたOSを動作させる手段、いわゆる多段仮想化技術が示されている。多段仮想化技術を用いることで、複数段の仮想計算機から成る環境を構築することができる。
多段仮想計算機環境には、柔軟なシステム構成が可能という利点がある。一方で、上段の仮想計算機が下段の物理計算機環境にアクセスするには、中段の仮想計算機や仮想化機構を経由する必要があり、性能劣化が生じやすいという問題がある。
例えば2段の仮想計算機環境において、2段目の仮想計算機上のOSから物理デバイスにI/Oを発行することを想定する。2段目の仮想計算機上のOSで実行されたI/Oは、仮想化機構を備えた1段目の仮想計算機上のOSで受け取られる。1段目の仮想計算機上のOSは、受け取ったI/O要求を実行する。このI/O要求は、物理計算機上の仮想化機構に受け取られる。仮想化機構は、物理デバイスに対してI/Oを実行する。
本例から、「2段目の仮想計算機上のOSで実施したI/Oは、1段目の仮想計算機と物理計算機上の仮想化機構の2層を経由して実行される」ことがわかる。これにより、2段目の仮想計算機上のOSで実行したI/Oの性能は、物理計算機や1段目の仮想計算機上のOSで実行したI/Oの性能よりも、劣化することがわかる。
上述の課題を解決するために、本発明に係る仮想計算機システムは、CPUと物理メモリとを備える物理計算機と、前記物理計算機上で動作して、第一の仮想計算機を提供する第一の仮想化機構と、前記第一の仮想計算機上で動作して、第二の仮想計算機を提供する第二の仮想化機構と、前記物理計算機に接続されるデバイスとを備える。
そして、前記第一の仮想計算機が有するドライバ生成機構1のうち自ドライバ生成部は、
前記第一の仮想計算機に割当てられたデバイスのドライバ1を、前記第一の仮想計算機に割り当てられた第一の仮想メモリに展開し、
前記第一の仮想計算機に割当てられたデバイスの識別子をコントローラ情報として、前記ドライバ1に格納し、
前記ドライバ1が展開された前記第一の仮想メモリの領域内に、共有領域1を生成し、
前記ドライバ1に対応し、前記第一の仮想計算機に割当てられたデバイスの識別子と、前記共有領域1のアドレスとを、アドレス管理情報に格納し、
前記アドレス管理情報を、前記第一の仮想化機構に送信し、
前記第一の仮想化機構が有するドライバ生成機構Aは、
前記ドライバ生成機構1から受信した前記アドレス管理情報を参照して、展開するドライバに対応する前記第一の仮想計算機に割当てられたデバイスの識別子を取得し、
前記取得した第一の仮想計算機に割当てられたデバイスの識別子を、前記第一の仮想化機構が認識するデバイスの識別子に変換し、
前記第一の仮想化機構が認識するデバイスの識別子に対応するデバイスのドライバAを、前記物理メモリに展開し、
前記受信したアドレス管理情報を参照して、前記第一の仮想計算機が割当てられたデバイスの識別子に対応する前記共有領域1のアドレスを取得し、
前記取得した共有領域1のアドレスを、前記第一の仮想化機構が認識する共有領域Aのアドレスに変換し、
前記ドライバAが展開された前記物理メモリの領域内に、前記第一の仮想化機構が認識するアドレスに変換された共有領域Aを生成し、
前記ドライバ生成機構1のうちゲストドライバ生成部432は、
前記コントローラ情報に格納される識別子を用いて、前記アドレス管理情報を検索し、
前記アドレス管理情報に含まれる識別子と、前記コントローラ情報に格納される識別子とが一致する場合、前記一致する識別子に対応する共有領域1のアドレスを取得し、
前記取得した共有領域1のアドレスを、前記第二の仮想計算機が認識する共有領域2のアドレスに変換し、
前記変換した共有領域2のアドレスを、前記第二の仮想計算機に送信し、
前記第二の仮想計算機は、
前記第一の仮想計算機から受けた割込に対応するデバイスのドライバを、第二の仮想計算機のドライバ2とし、
前記ドライバ生成機構1から受信した前記共有領域2のアドレスを、前記ドライバ2に格納し、
前記第二の仮想計算機のドライバ2は、
前記第二の仮想計算機のIOの実行要求を受信し、
前記共有領域2に、前記受信したIOの実行要求を格納し、
前記第一の仮想化機構は、
前記IOの実行要求の前記共有領域2への格納により、前記共有領域2と対応する前記共有領域Aを参照し、
前記IOの実行要求を、前記第一の仮想計算機に割当てられたデバイスに対して実行し、
前記IOの実行完了を、前記ドライバ1に送信し、
前記第一の仮想計算機のドライバ1は、
前記第一の仮想化機構から受信したIOの実行完了を、前記ドライバ2に送信し、
前記第二の仮想計算機のドライバ2は、
前記ドライバ1から、IOの実行完了を受信する。
本発明によれば、2段目のOSで稼働するデバイスドライバを2段目のOSにパススルーで認識させる。これにより,従来の2段仮想化機構で生じていた1段目のOSでのI/O処理を削減し,I/O性能の劣化を抑える。
具体的には,1段目のOSがI/Oを実施する際にVMMへのI/O要求通知に用いるバッファを2段目のOSから使用可能とする。また,1stOSが用いているI/O実施を通知する機構も2段目のOSに提供する。2段目のOSは,当該バッファと通知機構を用いて1段目のOSの処理をほとんど必要とすることなくI/O処理を実施することができる。
つまり、n段目の仮想計算機上のOSで稼働するデバイスドライバを、n+m段目の仮想計算機上のOSに認識させる(n、mは自然数)。これにより、従来は多段仮想化機構の各仮想計算機層で行っていたI/O処理を削減し、n+m段目の仮想計算機上のOSのI/O性能の劣化を抑制する。
本発明の適用可能な環境の一例を示す機器構成図 図1に示した機器構成のメモリ構成図 図1に示した仮想化機構Aの構成図 図1に示した1stOSの構成図 図1に示した仮想化機構Bの構成図 図1に示した2ndOSの構成図 図3に示したデバイス割当テーブルA、コントローラ情報A、実行中情報A、データテーブルA、使用情報A、完了情報A,識別子変換情報A,アドレス変換情報Aの例 図4に示した1stOSアドレステーブル1、接続デバイステーブル1、デバイス割当テーブル1、コントローラ情報1の例 図6に示したアドレステーブル2、キュー2、データテーブル2、使用情報2、完了情報2の例 ゲストOS生成機構により実行される1stOS起動処理のフローチャート ドライバ生成機構により実行される1stOSのドライバ生成処理のフローチャート ドライバ生成機構により実行される仮想化機構Aのドライバ生成処理のフローチャート ゲストOS生成機構により実行される2ndOS起動処理のフローチャート ドライバ生成機構により実行される2ndOSのドライバ生成処理のフローチャート ドライバ生成機構により実行される1stOSのドライバ生成処理のフローチャート ドライバ生成機構により実行される2ndOSのドライバ生成処理のフローチャート 2ndOSのドライバにより実行されるI/O処理のフローチャート 仮想化機構Aのドライバにより実行されるI/O処理のフローチャート 仮想化機構Aのドライバにより実行されるI/O完了処理のフローチャート 1stOSのドライバにより実行されるI/O完了処理のフローチャート 2ndOSのドライバにより実行されるI/O完了処理のフローチャート 図5に示したアドレス変換情報Bの例
図1は、計算機システムの全体構成を示す。
計算機システムは、物理計算機(101)、物理計算機(101)に接続するデバイス(102)で構成される。
物理計算機(101)は、CPU(111)と物理メモリ(112)とI/Oコントローラ(113)を有する。CPU(111)は、1つに限定されず複数個あってもよい。物理メモリ(112)は、仮想化機構A(121)、1stOS(122)、仮想化機構B(123)、2ndOS(124)を有する。
物理計算機(101)上で、仮想化機構A(121)が稼働する。仮想化機構A(121)は、物理計算機(101)のCPU等の物理資源を論理的に分割することで形成される論理資源を割り当てた第一の仮想計算機の環境を、生成する。生成された第一の仮想計算機上で、1stOS(122)が稼働する。
更に、1stOS(122)が稼動する仮想計算機上で、仮想化機構B(123)が稼働する。仮想化機構B(123)は、仮想化機構Bが認識するCPU等の資源を論理的に分割することで形成される論理資源を割り当てた第二の仮想計算機の環境を、生成する。生成された第二の仮想計算機上で、2ndOS(124)が稼働する。
なお、本例では、2段の仮想化計算機環境について述べるが、2段以上の仮想計算機環境であってもよい。また、本例では仮想化機構A上に1台の仮想計算機を生成しその仮想計算機上で1stOSを稼働させているが、仮想化機構A上に複数台の仮想計算機を生成し各々の仮想計算機上で1stOSを稼働させてもよい。また、仮想化機構B上に1台の仮想計算機を生成し,その仮想計算機上で2ndOSを稼働させているが、仮想化機構B上に複数台の仮想計算機を生成し,各々の仮想計算機上で2ndOSを稼働させてもよい。
図2は、各仮想化機構とOSへの、メモリ割り当ての様子を示す。
物理計算機(101)は、物理メモリ(112)を搭載する。仮想化機構A(121)は、物理メモリ(112)を認識し、物理メモリ(112)の一部を仮想的なメモリ(201)として、仮想計算機に割り当てる。仮想計算機上で稼働する1stOS(122)はメモリ(201)を認識する。
1stOS(122)上では、仮想化機構B(123)が稼働する。1stOS(122)は、1stOS(122)が認識するメモリである仮想的なメモリ(201)の一部をメモリ(202)として、仮想化機構B(123)からの操作を許可する。
仮想化機構B(123)は、操作を許可された仮想的なメモリ(202)の一部を仮想的なメモリ(203)として、仮想計算機に割り当てる。仮想計算機上で稼働する2ndOS(124)はメモリ(202)を認識する。
2ndOS(124)の認識する仮想的なメモリ(203)は,仮想化機構A(121)の認識する物理メモリ(112)に含まれる。2ndOSは、認識しているメモリ(203)に、2ndOSが認識するアドレス番地a3を用いて、アクセスする。ここで、2ndOSが用いるアドレス番地は,仮想化機構A及び仮想化機構Bの各々でアドレス変換処理が行われた後の値であり,仮想化機構Aが認識する物理メモリにおけるアドレス番地a0の値とは異なる。そのため,2ndOSが物理メモリにアクセスする際に、2ndOSの認識するアドレス番地を用いても,2ndOSの意図するようにアクセスすることはできない。
本例では,1stOSの認識する仮想メモリ(201)上に確保した共有領域のアドレスa1及び共有領域のサイズを、仮想化機構Aに通知する。仮想化機構Aはアドレス変換を行い,1stOSの認識するアドレスa1を仮想化機構Aの認識するアドレスa0に変換する。1stOSは、アドレスa1と仮想化機構Aに通知した共有領域のサイズとを用いる。仮想化機構Aは、アドレスa0と1stOSから通知された共有領域のサイズを用いる。これにより、両機構から共有領域にアクセスが可能となる。
また,1stOSは、2ndOSにも,共有領域のアドレス及び共有領域のサイズを、通知する。この際,1stOSは,1stOSが認識する共有領域のアドレスa1ではなく、2ndOSが認識する共有領域のアドレスa3を,2ndOSに通知する。
以上により,1stOSはアドレスa1を,仮想化機構Aはアドレスa0を,2ndOSはアドレスa3を用いることで,全機構から共有領域にアクセスすることができる。
同様の方式により,仮想化機構A,1stOS,2ndOSからアクセス可能な領域である通知領域を確保する。1stOSはアドレスb1を,仮想化機構Aはアドレスb0を,2ndOSはアドレスb3を用いることで,全機構から通知領域にアクセスすることができる。
同様の方式により,1stOS,2ndOSからアクセス可能な領域であるイベント通知領域を確保する。1stOSはアドレスc1を,2ndOSはアドレスc2を用いることで,両機構からイベント通知領域にアクセスすることができる。
以上の方法で,2ndOS,1stOS,仮想化機構Aからアクセス可能な共有領域を設定することができる。そして、共有領域を介することで,2ndOSと仮想化機構Aの間で,1stOSや仮想化機構Bを経由することなく、データの通信が可能となる。
図3は、仮想化機構A(121)の構成を示す。
仮想化機構A(121)には、物理メモリ(112)が割り当てられている。物理メモリ(112)には、ドライバA(301)、デバイス割当テーブルA(302)、アドレス変換機構A(303)、識別子変換機構A(304)、ゲストOS生成機構A(305)、ドライバ生成機構A(306),ドライバ群A(307)が格納される。
ドライバA(301)は、共有領域A(311)、通知領域A(312)、I/O完了部A(313)、I/O実行部A(314)、コントローラ情報A(315)、実行中情報A(316)を有する。
共有領域A(311)は、データ格納領域A(321)、データテーブルA(322)、使用情報A(323)、完了情報A(324)で構成される。データテーブルA(322),使用情報A(323),完了情報A(324)はサイズが固定されている。共有領域A(311)を確保した時点で,データ格納領域A(321),データテーブルA(322),使用情報A(323),完了情報A(324)の領域のアドレスが定まる。
アドレス変換機構A(303)は,アドレス変換情報A(361)を有する。
識別子変換機構A(304)は,識別子変換情報A(351)を有する。
ゲストOS生成機構A(305)は、ゲストOS起動部A(331)を有する。
ドライバ生成機構A(306)は自ドライバ生成部A(341)を有する。
図4は、1stOS(122)の構成を示す。
1stOS(122)は、メモリ(201)を有する。メモリ(201)には、仮想化機構B(123)、ドライバ1(401)、1stOSアドレステーブル1(402)、接続デバイステーブル1(403)、デバイス割当テーブル1(404)、ゲストOS生成機構1(405)、ドライバ生成機構1(406),イベント通知領域1(407)が格納される。
ドライバ1(401)は、共有領域1(411)、通知領域1(412)、コントローラ情報1(413)、割込受信部1(414)、割込発行部1(415)、ドライバ生成部1(416),通知領域サイズ1(417),共有領域サイズ1(418)を有する。
共有領域1(411)は、図2において1stOSのメモリ201のアドレスa1から始まる領域であり,これは図2において物理メモリ112のアドレスa0から始まる共有領域A(311)と同じ領域である。
通知領域1(412)は,図2において1stOSのメモリ201のアドレスb1から始まる領域であり,これは図2において物理メモリ112のアドレスb0から始まる通知領域A(312)と同じ領域である。通知領域サイズ1(417)および共有領域サイズ1(418)には,通知領域1(412),共有領域1(411)のサイズが格納されている。本実施例では,通知領域サイズ1(417),共有領域サイズ1(418)には予め値が格納されていることを想定しているが,ユーザにより値を変更することも可能である。
ゲストOS生成機構1(405)は、ゲストドライバ割当部1(421)、ゲストOS起動部1(422)を有する。
ドライバ生成機構1(406)は、自ドライバ生成部1(431)、ゲストドライバ生成部1(432)、通知部1(433)を有する。
図5は、仮想化機構B(123)の構成を示す。
仮想化機構B(123)は、メモリ(202)を有する。メモリ(202)には、アドレス変換機構B(501)が格納される。アドレス変換機構B(501)は,アドレス変換情報B(511)を有する。
図6は、2ndOS(124)の構成を示す。
2ndOS(124)は、メモリ(203)を有する。メモリ(203)には、ドライバ2(601)、ドライバ生成機構2(602)、アプリケーション2(603),イベント通知領域2(604)が格納される。
イベント通知領域2(604)は,図2において2ndOSのメモリ203のアドレスc2から始まる領域であり,これは図2において1stOSのメモリ201のアドレスc1から始まるイベント通知領域1(407)と同じ領域である。
ドライバ2(601)は、共有領域2(611)、通知領域2(612)、アドレステーブル2(613)、キュー2(614)、一時格納領域2(615)、割込受信部2(616)、I/O実行部2(617)を有する。
共有領域2(611)は、図2において2ndOAのメモリ203のアドレスa2から始まる領域であり,図2において1stOSのメモリ201のアドレスa1から始まる共有領域1(411)および図2において物理メモリ112のアドレスa0から始まる共有領域A(311)と、同じ領域である。
通知領域2(612)は,図2において2ndoOSのメモリ203のアドレスb2から始まる領域であり,図2において1stOSのメモリ201のアドレスb1から始まる通知領域1(412)および図2において物理メモリ112のアドレスb0から始まる通知領域A(312)と同じ領域である。
共有領域2(611)は、データ格納領域2(621)、データテーブル2(622)、使用情報2(623)、完了情報2(624)で構成される。データテーブル2(622),使用情報2(623),完了情報2(624)はサイズが固定されている。共有領域2(611)を確保した時点で,データ格納領域2(621),データテーブル2(622),使用情報2(623),完了情報2(624)の領域のアドレスが定まるドライバ生成機構2(602)は、ドライバ生成部2(631)を有する。
図7に、デバイス割当テーブルA(302)、コントローラ情報A(315)、実行中情報A(316)、データテーブルA(322)、使用情報A(323)、完了情報A(324),識別子変換情報A(351),アドレス変換情報A(361)を示す。
デバイス割当テーブルA(302)には、デバイス割当対象となる仮想計算機を識別する名前711と、名前711で特定される仮想計算機に割り当てるデバイスを識別する識別子712と、を格納する。例えば710は、1stOS1という名前で識別される仮想計算機に、識別子00:16.0で識別されるデバイスを割り当てることを示している。これらの情報は、例えばユーザにより指定され格納される。
コントローラ情報A(315)には、コントローラ情報A(315)を有するドライバA(311)が対応するデバイスを識別する識別子721を格納する。例えば720は、コントローラ情報A(315)を有するドライバA(301)は識別子00:16.0で識別されるデバイスに対応していることを示している。
実行中情報A(316)には、データテーブルA(322)内に格納されている,発行中のI/O要求を特定するインデックス731と,特定したI/O要求を発行しているデバイス(102)のアドレス732とを格納する。例えば730は、データテーブルA(322)のインデックス3で特定される行に、格納された情報から特定されるI/O要求を、デバイス(102)のアドレス128に発行中であることを示す。
データテーブルA(322)には、実行中情報A(316),使用情報A(323),完了情報A(324)等でデータテーブルA(322)内の行を特定するために使用されるインデックス741、I/O要求の格納されているアドレス742、I/O要求のサイズ743を格納する。例えば740は、データテーブルA(322)においてインデックス1で特定される行であり、この行は、データ格納領域A(321)のアドレス1024からサイズ4の領域に、I/O要求を格納していることを示している。
使用情報A(323)には、データテーブルA(323)内に格納されている,未発行のI/O要求を特定するインデックス751を格納する。例えば750は、データテーブルA(322)のインデックス1の行に格納された情報から特定されるI/O情報が、まだデバイス(102)に対して発行されていないことを示している。
完了情報A(324)には、データテーブルA(323)内に格納されている,2ndOS(124)の受け取りを待っている状態のI/O要求を特定するインデックス761を格納する。例えば760は、データテーブルA(322)のインデックス2の行に格納された情報から特定されるI/O情報が、まだ2ndOS(124)に受け取られていないことを示している。
アドレス変換情報A(361)は,仮想化機構A(121)が認識するアドレスである仮想化機構アドレス(781)と,仮想化機構アドレス(781)で特定されるメモリを割り当てている仮想計算機を特定する1stOS名(782)と,1stOS名(782)で特定される仮想計算機が認識する変換された仮想化機構アドレス(781)である1stOSアドレス(783)とを有する。例えば780は,仮想化機構A(121)においてaabcと認識されるアドレスが示すメモリは,1stOS1という名前で特定される1stOSにおいては,0000というアドレスでアクセスできるメモリとして認識されることを示している。
本アドレス変換情報A(361)を用いることで,仮想化機構Aの認識する共有領域Aのアドレスa0と,1stOSの認識する共有領域1のアドレスa1を変換することができる。また,仮想化機構Aの認識する通知領域Aのアドレスb0と,1stOSの認識する通知領域1のアドレスb1を変換することができる。
本実施例では,アドレス変換情報Aは,1stOS名(782)を用いることで,一つのテーブルに複数の仮想計算機のアドレス変換情報を有している。複数のアドレス変換情報Aを持つことで,1stOS名(782)を用いずに,仮想計算機毎にアドレス変換情報を有してもよい。
図8に、1stOSアドレステーブル1(402)、接続デバイステーブル1(403)、デバイス割当テーブル1(404)、コントローラ情報1(413)を示す。
1stOSアドレステーブル1(402)には、デバイスを識別する識別子811、識別子811で識別されるデバイスに対応するドライバの使用する通知領域アドレス812、通知領域サイズ813、共有領域アドレス814、共有領域サイズ815を格納する。例えば810は、識別子02:00.1で識別されるデバイス(102)に対するドライバ1(401)の持つ通知領域1(412)が、アドレス128からサイズ64で確保されていること、及び共有領域1(411)が、アドレス512からサイズ1024で確保されていること、を示す。なお,1stOSアドレステーブル1(402)には,1stOSが起動し,1stOSにデバイスが接続されたことを認識したタイミングで,適宜,行が追加されていく。
接続デバイステーブル1(403)には、1stOS(122)に接続しているデバイスの識別子821、識別子821で識別されるデバイスの名前822を格納する。例えば820は、識別子02:00.1で識別される、名前がEtnernet Controllerで特定されるデバイス(102)が,1stOS(122)に接続されていること、を示している。
デバイス割当テーブル1(404)には、2ndOSが稼働する仮想計算機の名前831と,名前831で特定される仮想計算機に割り当てるデバイスを特定する識別子832とを格納する。例えば830は、名前ゲスト1で特定される2ndOSが稼働する仮想計算機に、識別子02:00.1で特定されるデバイスを割り当てることを示している。
コントローラ情報1(413)には、コントローラ情報1(413)を有するドライバ1(401)が対応するデバイスを識別する識別子841を格納する。例えば840は、コントローラ情報1(413)を有するドライバ1(401)が、識別子02:00.1で識別されるデバイスに対応していることを示している。
図22に,アドレス変換情報B(511)を示す。アドレス変換情報B(511)は,1stOS(122)が認識するアドレスである1stOSアドレス(2201)と,1stOSアドレス(2201)で特定されるメモリを割り当てている2ndOS(124)を特定するゲスト名(2202)と,ゲスト名(2202)で特定される2ndOS(124)の認識する変換された1stOSアドレス(2201)であるゲストアドレス(2203)とを有する。例えば2220は,1stOS(122)において8765と認識されるアドレスが示すメモリは,ゲスト1という名前で特定される2ndOS(124)においては,0000というアドレスでアクセスできるメモリとして認識されることを示している。
本アドレス変換情報B(511)を用いることで,1stOSの認識する共有領域1のアドレスa1と,2ndOSの認識する共有領域2のアドレスa2を変換することができる。また,1stOSno認識する通知領域1のアドレスb1と,2ndOSの認識する通知領域2のアドレスb2を変換することができる。
本実施例では,アドレス変換情報Bは,1stOS名(782)を用いることで,一つのテーブルに複数の仮想計算機のアドレス変換情報を有している。複数のアドレス変換情報Bを持つことで,ゲスト名(2202)を用いずに,仮想計算機毎にアドレス変換情報を有してもよい。
図9に、アドレステーブル2(613)、キュー2(614)、データテーブル2(622)、使用情報2(623)、完了情報2(624)を示す。
アドレステーブル2(613)には、アドレステーブル2(613)を有するドライバ2(601)の対応するデバイスを識別する識別子911、アドレステーブル2(613)を有するドライバ2(601)の使用する通知領域2と共有領域2を特定する,通知領域アドレス912、通知領域サイズ913、共有領域アドレス914、共有領域サイズ915を格納する。例えば910は、識別子02:00.1で識別されるデバイスに対応するドライバの持つ通知領域2が、アドレス8からサイズ64で確保されていること、及び共有領域2が、アドレス256からサイズ1024で確保されていること、を示す。
キュー2(614)には、未実行のI/O要求の格納されている領域のアドレス921とサイズ922を格納する。例えば920は、2ndOS(124)上のメモリ(203)のアドレス16からサイズ16の領域に格納されているI/O要求は、まだ実行されていないことを示す。
データテーブル2(622),使用情報2(623),完了情報2(624)には,それぞれデータテーブルA(322),使用情報A(323),完了情報A(324)と同じ情報が格納される。
図10に、仮想化機構A(121)のゲストOS生成機構A(305)が有するゲストOS起動部A(331)の処理フローチャートを示す。
1stOSの起動が開始されると,ゲストOS起動部A(331)は、デバイス割当テーブルA(302)を参照する(ステップ1001)。
ゲストOS起動部A(331)は、デバイス割当テーブルA(302)から,ステップ1001で起動を開始した1stOSの名前と一致する名前711を有する行710に格納されているデバイスの識別子712を取得する。(ステップ1002)
ゲストOS起動部A(331)は、ステップ1002で取得したデバイスの識別子712で特定されるデバイスをステップ1001で起動を開始した1stOS1,例えば1stOS122に割り当てて,1stOSの起動を継続する(ステップ1003)。
図11に、1stOS(122)のドライバ生成機構1(406)の処理フローチャートを示す。
1stOS(122)のドライバ生成機構1(406)が有する自ドライバ生成部1(431)は、ステップ1002で与えられたデバイスの識別子712の情報を取得し、識別子712と,1stOS(122)が認識する識別子712で特定されるデバイスの情報である名前を,それぞれ識別子821,名前822として接続デバイステーブル1(403)に格納する(ステップ1101)。
自ドライバ生成部1(431)は、ステップ1101におけるデバイス識別子712の格納後の接続デバイステーブル1(403)を、識別子712で特定されるデバイスが有する通知領域および共有領域を作成するために、走査する(ステップ1102)。
接続デバイステーブル1(403)に、未走査の行がある場合、自ドライバ生成部1(431)は、未走査の行820の識別子(821)のデバイスに対応するドライバ1(401)を展開する(ステップ1103)。
自ドライバ生成部1(431)は、1stOSのドライバ1(401)に、割当てるデバイスの識別子821を格納したコントローラ情報1(413)を、格納する(ステップ1104)。
自ドライバ生成部1(431)は、1stOSのドライバ1(401)内に,通知領域サイズ1(417)に格納されているサイズの通知領域1(412)を生成して、生成した通知領域1(412)のアドレスb1を取得する(ステップ1105)。
自ドライバ生成部1(431)は、1stOSのドライバ1(401)内に,共有領域サイズ1(418)に格納されているサイズを空き領域から確保することで、共有領域1(411)を生成する。そして、生成した共有領域1(411)の始点をアドレスa1とし、そのアドレスa1を取得する(ステップ1106)。
自ドライバ生成部1(431)は、割当てるデバイスの識別子(821)、ステップ1105で取得した通知領域1(412)のアドレスb1、ステップ1105で生成した通知領域1(412)のサイズ、ステップ1106で取得した共有領域1(411)のアドレスa1、ステップ1106で生成した共有領域1(411)のサイズを、1stOSアドレステーブル1(402)に格納する(ステップ1107)。
ステップ1102で全ての行の走査が終了した場合、1stOS(122)のドライバ生成機構1(406)が有する通知部1(433)は、仮想化機構A(121)に、1stOSアドレステーブル1(402)の情報を通知する(ステップ1108)。
図12に、仮想化機構A(122)のドライバ生成機構A(306)の処理フローチャートを示す。
仮想化機構A(122)のドライバ生成機構A(306)が有する自ドライバ生成部A(341)は、ステップ1108で通知された1stOSアドレステーブル1(402)の情報を受信し,メモリ(112)上に保持する(ステップ1201)。
自ドライバ生成部A(341)は、ステップ1201にて受信してメモリ(112)上に保持している1stOSメモリアドレステーブル1(402)を、1stOSメモリアドレステーブルに格納されているデバイスに対応するドライバを展開するために走査する(ステップ1202)。
1stOSメモリアドレステーブル1(402)に未走査の行810がある場合、自ドライバ生成部A(341)は、未走査の行810からドライバを展開するデバイスの識別子811を取得する。識別変換機構A(304)は,取得した識別子811に対して,識別子変換情報A(351)を用いて、1stOS(122)が認識する識別子772から仮想化機構A(121)が認識する識別子771に値を変換する(ステップ1203)。
自ドライバ生成部A(341)は、ステップ1203で変換した識別子771で識別されるデバイスに対応するドライバA(301)を、前記物理メモリに展開する(ステップ1204)。
自ドライバ生成部A(341)は、ドライバA(301)のコントローラ情報A(315)に、ステップ1203で仮想化機構Aが認識する値に変換した識別子771を格納する(ステップ1205)。
自ドライバ生成部A(341)は、ステップ1203にて識別子811を取得した1stOSメモリアドレステーブル1(402)の行から、通知領域アドレス812および共有領域アドレス814を取得する。アドレス変換機構A(303)は,通知領域アドレス812と共有領域アドレス814を,アドレス変換情報A(361)を用いて、1stOS(122)が認識するアドレスから仮想化機構A(121)が認識するアドレスに値を変換する(ステップ1206)。
自ドライバ生成部A(341)は、ステップ1203にて識別子811を取得した1stOSメモリアドレステーブル1(402)の行から取得する通知領域サイズ(813)と,ステップ1206で1stOS(122)が認識するアドレスから仮想化機構A(121)が認識するアドレスに変換した通知領域アドレスとから指定される領域を、通知領域A(312)として、ドライバA(301)に格納する(ステップ1207)。
自ドライバ生成部A(341)は、ステップ1203にて識別子811を取得した1stOSメモリアドレステーブル1(402)の行から取得する共有領域サイズ(815)と,ステップ1206で1stOS(122)が認識するアドレスから仮想化機構A(121)が認識するアドレスに変換した共有領域アドレスとから指定される領域を共有領域A(311)として、ドライバA(301)に格納する(ステップ1208)。
ステップ1208の終了後に、ステップ1202に戻る。そして、ステップ1202において全ての行の走査が終了した場合、処理を完了する。
図13に、1stOS(122)のゲストOS生成機構1(405)の処理フローチャートを示す。
接続デバイステーブル1(403)に格納されている行820の識別子821により識別されるデバイスを割り当てる2ndOS(124)の起動を開始すると,1stOS(122)のゲストOS生成機構1(405)が有するゲストドライバ割当部1(421)は、起動した2ndOS(124)を識別する名前を,デバイス割当テーブル1(404)に格納する。
また,接続デバイステーブル1(403)から取得した識別子821を2ndOS(124)に割り当てるデバイスの識別子832として,デバイス割当テーブル1(404)に格納する。(ステップ1301)。なお、接続デバイステーブル1(403)のどの行を選択するかは、例えばユーザによって指定される。
1stOS(122)のゲストOS生成機構1(405)が有するゲストOS起動部1(422)は、ステップ1301でデバイス割当テーブルに格納した,2ndOS(124)に割り当てるデバイスの識別子821を引数として、名前831で特定される2ndOS(124)の起動を継続する。 (ステップ1302)。
図14に、2ndOS(124)のドライバ生成機構2(602)の処理フローチャートを示す。
2ndOS(124)のドライバ生成機構2(602)が有するドライバ生成部2(631)は、2ndOS(124)が起動すると,ステップ1302により2ndOS(124)に割り当てられたデバイスに対応するドライバを展開するために,イベント通知領域2(604)に、アクセスする(ステップ1401)。
ドライバ生成部2(631)は、1stOS(122)からの割込を待つ(ステップ1402)。
図15に、1stOS(122)のドライバ生成機構1(406)のフローチャートを示す。
1stOS(122)のドライバ生成機構1(406)のゲストドライバ生成部1(432)は、ステップ1401で発生した2ndOS上のドライバ生成部2(631)からイベント通知領域2(604)へのアクセスを受け取る。イベント通知領域1(407)は図2において1stOSのメモリ201のアドレスc1から始まる領域であり,これは図2において2ndOSのメモリ203のアドレスc2から始まる領域であるイベント通知領域2(604)と同じ領域を示している。(ステップ1501)。
ゲストドライバ生成部1(432)は、通知領域1と共有領域1のアドレスを取得するために,コントローラ情報1(413)に格納されている識別子(841)を用いて1stOSアドレステーブル1(402)を走査する(ステップ1502)。
1stOSアドレステーブル1(402)に未走査の行が残っている場合、ゲストドライバ生成部1(432)は、コントローラ情報1(413)に格納されている識別子841と1stOSアドレステーブル1(402)の未走査の行810の識別子811とが一致するかを、調査する(ステップ1503)。
ステップ1503において,識別子が一致しない場合、ステップ1502に戻る。
ステップ1503において,識別子が一致する場合、ゲストドライバ生成部1(432)は、ステップ1503で識別子841と一致する識別子811を持つとして選択した行810から通知領域アドレス812と共有領域アドレス814を取得する。そして、ゲストドライバ生成部1(432)は、仮想化機構B(123)の有するアドレス変換機構B(501)を用いて、アドレス変換情報B(511)を参照し,1stOS(122)が認識している値2201から、2ndOS(124)が認識する値2203に変換する(ステップ1504)。
ここで、ゲストドライバ生成部1が、仮想化仮想化機構B内のアドレス変換機構を用いたり、テーブルを参照したりできる理由を説明する。図2より,仮想化機構Bのメモリは、1stOSのメモリに含まれている。仮想化機構B上のデータは,1stOSからはアクセス可能とされている。そのため,1stOS内の各種機構、例えばゲストドライバ生成部1は,仮想化機構B上のデータにアクセスすることができる。
ドライバ生成機構1(406)の通知部1(433)は、1stOSアドレステーブル1(403)の通知領域アドレス812と共有領域アドレス814を、ステップ1504で変換した値に変更して、通知領域サイズ1(417)と共有領域サイズ1(418)とともに,イベント通知領域1(407)を用いて2ndOS(124)に通知する(ステップ1505)。ステップ1502に戻る。
ステップ1502において、全ての行の走査が終わった場合、処理を終了する。
図16に、2ndOS(124)のドライバ生成機構2(602)の処理フローチャートを示す。
2ndOS(124)のドライバ生成機構2(602)が有するドライバ生成部2(631)は、ステップ1505でイベント通知領域1(407)を用いて通知された,ステップ1401でイベント通知機構2アクセスしたドライバ生成部2(432)が展開するデバイスに対応するドライバ2(601)の通知領域アドレスと通知領域サイズと共有領域アドレスと共有領域サイズを受け取り、ドライバ2(601)を展開する(ステップ1601)。
ドライバ生成部2(631)は,ステップ1601で受け取った通知領域アドレスと通知領域サイズと共有領域アドレスと共有領域サイズを,2ndOS(124)のドライバ2(601)内のアドレステーブル2(613)に格納する(ステップ1602)。
イベント通知領域1(407)は図2において1stOSのメモリ201のアドレスc1から始まる領域であり,これは図2において2ndOSのメモリ203のアドレスc2から始まる領域であるとイベント通知領域2(604)と同じ領域を示している。
図17に、2ndOS(124)のドライバ2(601)によるI/O処理のフローチャートを示す。
ドライバ2(601)のI/O実行部2(617)は、2ndOS上のアプリケーション2(603)が実行したI/O要求を、受け取る(ステップ1701)。
I/O実行部2(617)は、ステップ1601で各種情報を格納されたアドレステーブル2(613)を参照し、共有領域アドレス914を取得する(ステップ1702)。
I/O実行部2(617)は、ステップ1701で受信した全てのI/O要求について、処理を終えたか否かを判断する。未走査の要求がある場合、ステップ1704に進む。未走査の要求がない場合、すなわち全てのI/O要求について処理を終えた場合、ステップ1708に進む(ステップ1703)。
I/O実行部2(617)は、ドライバ2(601)内のデータ格納領域(621)における空き領域の有無を確認する(ステップ1704)。
ステップ1704で、データ格納領域(621)に空き領域がある場合、I/O実行部2(617)は、ステップ1703で未走査と判断したI/O要求を、ステップ1704で確認したデータ格納領域(621)の空き領域に格納する(ステップ1705)。
I/O実行部2(617)は、データテーブル2(622)の全行のインデックスを調べて取得した,データテーブル2(622)で使用されていないインデックスと,ステップ1705でI/O要求を格納したデータ格納領域(621)におけるアドレスと、データ格納領域(621)に格納したI/O要求のデータサイズとを、ドライバ2(601)内のデータテーブル2(622)に格納する(ステップ1706)。
I/O実行部2(617)は、ステップ1706で格納したデータテーブル2(622)のインデックスを、ドライバ2(601)の使用情報2(623)に格納する(ステップ1707)。
ステップ1707実施後,ステップ1703に戻る。
一方、ステップ1703において、ドライバ2(601)が受け取ったI/O要求を全て処理した場合、I/O実行部2(617)は、ドライバ2(601)内のアドレステーブル2(613)を参照して、通知領域アドレス912を取得する(ステップ1708)。
S1708の後、I/O実行部2(617)は、I/Oを発行することを1stOS(122)に通知するために,通知領域2(612)に格納されている値を0から1に変更する(ステップ1709)。ステップ1709により,ドライバ2(601)は2ndOS(124)の認識するデバイスにI/O要求を発行したことになる。
I/O実行部2(617)は、ステップ1709で2ndOS(124)の認識するデバイスに対して発行したI/Oが完了し,その旨を通知する割込の受信待つ(ステップ1710)。
また、ステップ1704で、データ格納領域(621)に空き領域がなかった場合、I/O実行部2(617)は、取得したI/O要求を一時格納領域2(615)に格納し、一時格納領域2(615)の格納位置を示すアドレスおよび格納したI/O要求のサイズをキュー2(614)に格納し、処理を終える(ステップ1711)。
なお、非同期にI/Oを実施する場合、ステップ1701でドライバ2(601)がI/O要求を受け取った時点で、アプリケーション2(603)にI/O完了を通知してもよい。その場合、ドライバ2(601)はアプリケーション2(603)の処理と同期することなく、ステップ1702以降の処理を継続する。
図18に、仮想化機構A(121)のI/O実行部A(314)の処理のフローチャートを示す。
I/O実行部A(314)は、ステップ1709で実行された通知領域A(312)への書き込みを、受信する。通知領域Aに格納されている値を0に戻す(ステップ1801)。通知領域2(612)は,図2において2ndOSのメモリ203のアドレスb2から始まる領域であり,これは図2において物理メモリ112のアドレスb0から始まる通知領域A(312)と同じ領域を示している。
通知領域A(312)への書き込みを受信したI/O実行部A(314)は、デバイス(102)に対して実行するI/O要求の有無を調べるために,ドライバA(301)内の使用情報A(323)を走査する(ステップ1802)。
I/O実行部A(314)は,使用情報A(323)に、未走査のインデックス751がある場合、未走査のインデックスを取得する(ステップ1803)。
I/O実行部A(314)は、ステップ1803で取得した未走査のインデックス751と一致するデータテーブルA(322)のインデックスが格納された行を特定し、特定した行に格納されている,データ格納領域321のアドレス742とサイズ743を取得し、取得したアドレス742とサイズ743を用いてデータ格納領域321に格納されたI/O要求を取得する(ステップ1804)。データ格納領域2(621)とデータ格納領域A(321)は同じ領域を示している。
I/O実行部A(314)は、ステップ1205で更新されたコントローラ情報A(315)で特定されるデバイス(102)に対して、ステップ1804で取得したI/Oを実行する(ステップ1805)。
I/O実行部A(314)は、実行中情報A(316)に、ステップ1805で実行したI/Oの情報が格納されていたデータテーブルA(322)の行に格納されているインデックス741と、ステップ1805で実行したI/Oの実行先のアドレスを格納する(ステップ1806)。
I/O実行部A(314)は、ステップ1806で実行したI/O要求に対する,デバイスからの応答を待つ(ステップ1807)。ステップ1802に戻る。
使用情報A(323)に、未走査のインデックス751がない場合、使用情報A(323)の走査が完了したものとして、本フローを終了する。
図19に、仮想化機構A(121)のI/O完了部A(313)の処理フローチャートを示す。I/O完了部A(313)は、ステップ1805で実行したI/Oの結果を、デバイス(102)から受信する(ステップ1901)。
I/O完了部A(313)は、実行中情報A(316)において,アドレス732がステップ1901で受信したI/Oの実行先のアドレスと一致する行730を特定し、特定した行730からインデックス731を取得する。データテーブルA(322)において,インデックス741が取得したインデックス731と一致する行740を取得する(ステップ1902)。
I/O完了部A(313)は、ステップ1902で特定した実行中情報A(316)の行730を削除する(ステップ1903)。
I/O完了部A(313)は、ステップ1901でデバイスから受信したI/O結果を、ステップ1902で取得したデータテーブル(322)の行740に格納されているアドレス742とサイズ743で特定されるデータ格納領域(321)内の領域に格納する(ステップ1904)。
I/O完了部A(313)は、使用情報A(323)から,ステップ1901で取得したインデックス731と同じ値であるインデックスが格納された行750を削除する(ステップ1905)。
I/O完了部A(313)は、完了情報A(324)にステップ1901で取得したインデックス731をインデックス761として格納する(ステップ1906)。
I/O完了部A(313)は、コントローラ情報A(315)から識別子721を取得し、識別子721とデバイス割当テーブルA(302)の識別子712が一致する行710を特定して、行710に格納された名前711から1stOS(122)を特定し、特定した1stOS(122)にI/O完了割込を発行する(ステップ1907)。
図20は、1stOS(122)のドライバ1(401)の処理フローチャートを示す。
1stOS(122)のドライバ1(401)の割込受信部1(414)は、ステップ1907で発行されたI/O完了割込を受信する(ステップ2001)。
割込発行部1(414)は、コントローラ情報1(413)から識別子841を取得し、デバイス割当テーブル1(404)を参照して、識別子841で特定されるデバイスが割り当っている2ndOS(124)を特定し、特定した2ndOS(124)にI/O完了割込を発行する(ステップ2002)。
図21は、2ndOS(124)の割込受信部2(616)による2ndOS(124)のI/O受信処理のフローチャートを示す。
割込受信部2(616)は、ステップ2002で発行されたI/O完了割込を受信する(ステップ2101)。
割込受信部2(616)は、1906で更新された完了情報2(624)を走査する(ステップ2102)。完了情報A(324)と完了情報2(624)は同じ情報を示している。
完了情報2(624)に未走査のインデックス951がある場合、割当受信部2(616)は、未走査のインデックス951を取得する(ステップ2103)。
割込受信部2(616)は、ステップ2103で取得したインデックス951と一致するインデックス931を持つデータテーブル2(622)の行930から、データ格納領域2(621)のアドレス932とサイズ933とを取得する(ステップ2104)。
割込受信部2(616)は、ステップ2014で取得したアドレスとサイズとで特定されるデータ格納領域(621)内の領域から、完了したI/O要求を取得する(ステップ2105)。
ステップ2105が終了したら,ステップ2102に戻る。
ステップ2102にて完了情報2(624)の走査が終了すると、割込受信部2(616)は、アプリケーション2(603)にI/Oの完了を通知する(ステップ2106)。
ステップ2106が終了すると,割込受信部2(616)は、キュー2(614)の確認をする(ステップ2107)。
キュー2(614)にI/O要求が格納されている場合、格納されていたI/O要求取得し,キュー2(614)から取得したI/O要求を削除し,取得したI/O要求を引数としてI/O実行部2(617)を呼び出しステップ1703以降の処理を実施する(ステップ2108)。
キュー2(617)にI/O要求が格納されていない場合、2ndOS(124)のI/O受信処理を完了する。
101.物理計算機
102.デバイス
111.CPU
112.メモリ
113.I/Oコントローラ
121.仮想化機構A
122.1stOS
123.仮想化機構B
124.2ndOS

Claims (4)

  1. CPUと物理メモリとを備える物理計算機と、
    前記物理計算機上で動作して、第一の仮想計算機を提供する第一の仮想化機構と、
    前記第一の仮想計算機上で動作して、第二の仮想計算機を提供する第二の仮想化機構と、
    前記物理計算機に接続されるデバイスとを備え、
    前記第一の仮想計算機が有するドライバ生成機構1は、
    前記第一の仮想計算機に割当てられたデバイスのドライバ1を、前記第一の仮想計算機に割り当てられた第一の仮想メモリに展開し、
    前記第一の仮想計算機に割当てられたデバイスの識別子をコントローラ情報として、前記ドライバ1に格納し、
    前記ドライバ1が展開された前記第一の仮想メモリの領域内に、共有領域1を生成し、
    前記ドライバ1に対応し、前記第一の仮想計算機に割当てられたデバイスの識別子と、前記共有領域1のアドレスとを、アドレス管理情報に格納し、
    前記アドレス管理情報を、前記第一の仮想化機構に送信し、
    前記第一の仮想化機構が有するドライバ生成機構Aは、
    前記ドライバ生成機構1から受信した前記アドレス管理情報を参照して、前記第一の仮想計算機に割当てられたデバイスの識別子を取得し、
    前記取得した第一の仮想計算機に割当てられたデバイスの識別子を、前記第一の仮想化機構が認識するデバイスの識別子に変換し、
    前記第一の仮想化機構が認識するデバイスの識別子に対応するデバイスのドライバAを、前記物理メモリに展開し、
    前記受信したアドレス管理情報を参照して、前記第一の仮想計算機が割当てられたデバイスの識別子に対応する前記共有領域1のアドレスを取得し、
    前記取得した共有領域1のアドレスを、前記第一の仮想化機構が認識する共有領域Aのアドレスに変換し、
    前記ドライバAが展開された前記物理メモリの領域内に、前記第一の仮想化機構が認識するアドレスに変換された共有領域Aを生成し、
    前記ドライバ生成機構1は、
    前記コントローラ情報に格納される識別子を用いて、前記アドレス管理情報を検索し、
    前記アドレス管理情報に含まれる識別子と、前記コントローラ情報に格納される識別子とが一致する場合、前記一致する識別子に対応する共有領域1のアドレスを取得し、
    前記取得した共有領域1のアドレスを、前記第二の仮想計算機が認識する共有領域2のアドレスに変換し、
    前記変換した共有領域2のアドレスを、前記第二の仮想計算機に送信し、
    前記第二の仮想計算機は、
    前記第一の仮想計算機から受けた割込に対応するデバイスのドライバを、第二の仮想計算機のドライバ2とし、
    前記ドライバ生成機構1から受信した前記共有領域2のアドレスを、前記ドライバ2に格納し、
    前記第二の仮想計算機のドライバ2は、
    前記第二の仮想計算機のIOの実行要求を受信し、
    前記共有領域2に、前記受信したIOの実行要求を格納し、
    前記第一の仮想化機構は、
    前記IOの実行要求の前記共有領域2への格納により、前記共有領域2と対応する前記共有領域Aを参照し、
    前記IOの実行要求を、前記第一の仮想計算機に割当てられたデバイスに対して実行し、
    前記IOの実行完了を、前記ドライバ1に送信し、
    前記第一の仮想計算機のドライバ1は、
    前記第一の仮想化機構から受信したIOの実行完了を、前記ドライバ2に送信し、
    前記第二の仮想計算機のドライバ2は、
    前記ドライバ1から、IOの実行完了を受信する
    ことを特徴とする仮想計算機システム。
  2. 前記第二の仮想計算機は、前記第一の仮想計算機に割当てられたデバイスのドライバ1を認識することを特徴とする請求項1記載の仮想計算機システム。
  3. 前記共有領域は、前記第一の仮想化機構と前記第二の仮想計算機から操作可能であることを特徴とする請求項2記載の仮想計算機システム。
  4. 前記仮想計算機の構成を多段とすることを特徴とする請求項3記載の計算機システム。
JP2013087040A 2013-04-18 2013-04-18 仮想計算機システムおよび仮想計算機におけるi/o実施方法 Expired - Fee Related JP5941868B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013087040A JP5941868B2 (ja) 2013-04-18 2013-04-18 仮想計算機システムおよび仮想計算機におけるi/o実施方法
US14/254,581 US9262184B2 (en) 2013-04-18 2014-04-16 Virtual computer system and I/O implementing method in virtual computer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013087040A JP5941868B2 (ja) 2013-04-18 2013-04-18 仮想計算機システムおよび仮想計算機におけるi/o実施方法

Publications (2)

Publication Number Publication Date
JP2014211727A JP2014211727A (ja) 2014-11-13
JP5941868B2 true JP5941868B2 (ja) 2016-06-29

Family

ID=51730053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013087040A Expired - Fee Related JP5941868B2 (ja) 2013-04-18 2013-04-18 仮想計算機システムおよび仮想計算機におけるi/o実施方法

Country Status (2)

Country Link
US (1) US9262184B2 (ja)
JP (1) JP5941868B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10162663B2 (en) * 2014-02-17 2018-12-25 Hitachi, Ltd. Computer and hypervisor-based resource scheduling method
CN106886429B (zh) * 2015-12-16 2020-11-06 华为技术有限公司 一种加载驱动程序的方法和服务器
CN107807843B (zh) * 2017-10-26 2019-05-24 北京百度网讯科技有限公司 虚拟机中的i/o请求处理方法、设备及计算机可读介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2523502B2 (ja) * 1986-06-04 1996-08-14 株式会社日立製作所 リカ−シブ仮想計算機の制御方式
JP4100968B2 (ja) * 2002-06-06 2008-06-11 株式会社日立製作所 データマッピング管理装置
US20060005190A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for implementing an operating system in a virtual machine environment
JP4864817B2 (ja) 2007-06-22 2012-02-01 株式会社日立製作所 仮想化プログラム及び仮想計算機システム
JP5246014B2 (ja) * 2009-04-22 2013-07-24 富士通株式会社 仮想化プログラム、仮想化処理方法及び装置
US20110153909A1 (en) * 2009-12-22 2011-06-23 Yao Zu Dong Efficient Nested Virtualization
JP2011145912A (ja) * 2010-01-15 2011-07-28 Fujitsu Ltd 仮想計算機を使用したクライアントシステム、仮想計算機を使用したクライアント制御方法及びそのプログラム

Also Published As

Publication number Publication date
JP2014211727A (ja) 2014-11-13
US9262184B2 (en) 2016-02-16
US20140317619A1 (en) 2014-10-23

Similar Documents

Publication Publication Date Title
JP5643190B2 (ja) 局所的集合内のタスクを汎用的集合に割り当てるための方法及びコンピュータ読取可能記録媒体
US9996401B2 (en) Task processing method and virtual machine
JP5597196B2 (ja) プロセス内のスケジューラインスタンス
KR20110019729A (ko) 스케줄러 내의 스케줄링 컬렉션
US8291426B2 (en) Memory allocators corresponding to processor resources
CN115185880B (zh) 一种数据存储方法及装置
JP5941868B2 (ja) 仮想計算機システムおよび仮想計算機におけるi/o実施方法
TW200925871A (en) Dynamic logical data channel assignment using time-grouped allocations
US20200371827A1 (en) Method, Apparatus, Device and Medium for Processing Data
JP5420972B2 (ja) メモリ管理装置
TWI783401B (zh) 記憶體管理方法和相關產品
CN111767082A (zh) 计算芯片启动方法、装置和计算机***
JP5093242B2 (ja) 自己診断処理を行う情報処理装置、自己診断処理方法及び自己診断処理プログラム
CN110618794B (zh) 一种SSD固件访问NandFlash的方法和***
US20100250507A1 (en) Enumeration of a concurrent data structure
JP2011039790A (ja) 仮想マシンイメージ転送装置及び方法及びプログラム
CN104714844B (zh) 轻量级操作***部署方法及装置
JP5163128B2 (ja) 共有メモリ型マルチプロセッサにおける手続の呼び出し方法、手続の呼び出しプログラム、記録媒体、およびマルチプロセッサ
JP3726701B2 (ja) カーネル空間のデマンドページング・スワップアウト方式および方法
CN108021442A (zh) 释放物理内存的***、装置及方法
WO2024060228A1 (zh) 获取数据的方法、装置、***及存储介质
CN110928582B (zh) 信息处理设备和配置信息处理设备的目标装置的方法
US20170322825A1 (en) Method of processing input and output of virtual machine
JP5195997B2 (ja) カーネルソースコード最適化方法、カーネルソースコード最適化装置及びプログラム
CN114138451A (zh) 集群部署方法、装置、磁盘分配方法、电子设备和介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150518

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160422

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160523

R151 Written notification of patent or utility model registration

Ref document number: 5941868

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees