(57)【特許請求の範囲】
【請求項１】
複数の仮想マシンが動作するホスト計算機と、前記ホスト計算機に接続されて該ホスト計算機に複数の機能を提供するＩ／Ｏカードとを備える仮想マシンシステムであって、
前記Ｉ／Ｏカードが、前記複数の仮想マシンに対応する複数の仮想マシンインタフェースを有し、
前記仮想マシンインタフェースの各々が前記複数の機能の各々に対応する複数のページを有し、
各々の前記仮想マシンが、前記仮想マシン上における物理アドレスと、前記ホスト計算機上における前記仮想マシンインタフェース上の前記ページの物理アドレスとを変換するアドレス変換部を有すると共に、
前記ホスト計算機が、
前記複数の仮想マシンの各々に対する前記機能の各々の使用可否に関する情報を保持する仮想マシンＩ／Ｏサービス管理部と、
各々の前記複数の仮想マシンの前記アドレス変換部に、使用可能である旨の情報を前記仮想マシンＩ／Ｏサービス管理部が保持している前記機能について前記仮想マシンインタフェースの物理アドレスを書き込むアドレス変換管理部と
を有することを特徴とする仮想マシンシステム。
【請求項２】
前記ホスト計算機もしくは前記Ｉ／Ｏカードが、前記複数のページの各々が前記複数の機能のうちのいずれに対応するかに関する情報を保持する仮想マシンインタフェース情報記憶部を有することを特徴とする、請求項１に記載の仮想マシンシステム。
【請求項３】
前記アドレス変換管理部は、前記仮想マシンが起動された際、前記Ｉ／Ｏカードが前記ホスト計算機に接続された際、もしくは前記仮想マシンインタフェース情報記憶部および前記仮想マシンＩ／Ｏサービス管理部のうち少なくともいずれかに保持された情報が変更された際のいずれかに該当する場合に、前記アドレス変換部に前記仮想マシンインタフェースの物理アドレスを書き込むことを特徴とする、請求項２に記載の仮想マシンシステム。
【請求項４】
前記複数のページが、前記ホスト計算機のメモリシステムにおけるページサイズあるいはその倍数単位に前記機能を割り付けられていることを特徴とする、請求項１に記載の仮想マシンシステム。
【請求項５】
前記Ｉ／Ｏカードが、前記ホスト計算機からのアクセス要求を適切な前記仮想マシンインタフェースに配送するＩ／Ｏパケット転送部を有することを特徴とする、請求項１に記載の仮想マシンシステム。
【請求項６】
複数の仮想マシンが動作し、複数の機能を提供するＩ／Ｏカードを接続可能なホスト計算機であって、
前記Ｉ／Ｏカードが、前記複数の仮想マシンに対応する複数の仮想マシンインタフェースを有し、前記仮想マシンインタフェースの各々が前記複数の機能の各々に対応する複数のページを有するものであり、各々の前記仮想マシンが、前記仮想マシン上における物理アドレスと、前記ホスト計算機上における前記仮想マシンインタフェース上の前記ページの物理アドレスとを変換するアドレス変換部を有すると共に、
前記複数の仮想マシンの各々に対する前記機能の各々の使用可否に関する情報を保持する仮想マシンＩ／Ｏサービス管理部と、
各々の前記複数の仮想マシンの前記アドレス変換部に、使用可能である旨の情報を前記仮想マシンＩ／Ｏサービス管理部が保持している前記機能について前記仮想マシンインタフェースの物理アドレスを書き込むアドレス変換管理部と
を有することを特徴とするホスト計算機。
【請求項７】
前記複数のページの各々が前記複数の機能のうちのいずれに対応するかに関する情報を保持する仮想マシンインタフェース情報記憶部を有することを特徴とする、請求項６に記載のホスト計算機。
【請求項８】
前記アドレス変換管理部は、前記仮想マシンが起動された際、前記Ｉ／Ｏカードが接続された際、もしくは前記仮想マシンインタフェース情報記憶部および前記仮想マシンＩ／Ｏサービス管理部のうち少なくともいずれかに保持された情報が変更された際のいずれかに該当する場合に、前記アドレス変換部に前記仮想マシンインタフェースの物理アドレスを書き込むことを特徴とする、請求項７に記載のホスト計算機。
【請求項９】
複数の機能を提供するＩ／Ｏカードが接続されているホスト計算機で複数の仮想マシンを構築する方法であって、
前記Ｉ／Ｏカードが、前記複数の仮想マシンに対応する複数の仮想マシンインタフェースを有し、前記仮想マシンインタフェースの各々が前記複数の機能の各々に対応する複数のページを有するものであると共に、
前記仮想マシン上における物理アドレスと、前記ホスト計算機上における前記仮想マシンインタフェース上の前記ページの物理アドレスとを変換するアドレス変換部を前記仮想マシンに提供するアドレス変換部提供工程と、
各々の前記仮想マシンが前記アドレス変換部を利用して前記ページにアクセスするアクセス工程と
を有し、
前記アドレス変換部提供工程が、
前記ホスト計算機が備える前記複数の仮想マシンの各々に対する前記機能の各々の使用可否に関する情報を読み込む使用可否読み取り工程と、
前記使用可否読み取り工程で使用可能である旨の情報が読み取られた前記機能について、各々の前記複数の仮想マシンの前記アドレス変換部に前記仮想マシンインタフェースの物理アドレスを書き込むアドレス変換部書き込み工程と
を含むことを特徴とする仮想マシン構築方法。
【請求項１０】
前記アドレス変換部提供工程が、
前記ホスト計算機もしくは前記Ｉ／Ｏカードが備える前記複数のページの各々が前記複数の機能のうちのいずれに対応するかに関する情報を読み込むページ情報読み取り工程を有することを特徴とする、請求項９に記載の仮想マシン構築方法。
【請求項１１】
前記仮想マシンが起動された際、前記Ｉ／Ｏカードが前記ホスト計算機に接続された際、もしくは前記複数の仮想マシンの各々に対する前記機能の各々の使用可否に関する情報および前記複数のページの各々が前記複数の機能のうちのいずれに対応するかに関する情報のうち少なくともいずれかが変更された際のいずれかに該当する場合に、前記アドレス変換部提供工程が行われることを特徴とする、請求項１０に記載の仮想マシン構築方法。
【請求項１２】
複数の仮想マシンに対応し、複数の機能を提供するＩ／Ｏカードが接続されているホスト計算機にあって、
前記Ｉ／Ｏカードが、前記複数の仮想マシンに対応する複数の仮想マシンインタフェースを有し、前記仮想マシンインタフェースの各々が前記複数の機能の各々に対応する複数のページを有するものであり、各々の前記仮想マシンが、前記仮想マシン上における物理アドレスと、前記ホスト計算機上における前記仮想マシンインタフェース上の前記ページの物理アドレスとを変換するアドレス変換部を有すると共に、
前記ホスト計算機が備えるプロセッサに、
前記ホスト計算機が備える前記複数の仮想マシンの各々に対する前記機能の各々の使用可否に関する情報を読み込む使用可否読み取り処理と、
前記使用可否読み取り工程で使用可能である旨の情報が読み取られた前記機能について、前記仮想マシン上における物理アドレスと前記ホスト計算機上における前記仮想マシンインタフェース上の前記ページの物理アドレスとを変換するアドレス変換部に前記仮想マシンインタフェースの物理アドレスを書き込むアドレス変換部書き込み処理と
を実行させることを特徴とする仮想マシン構築プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホスト計算機上で動作する仮想マシンに関し、特にホスト計算機上で動作する複数の仮想マシンでのＩ／Ｏカードの使用に関する。
【背景技術】
【０００２】
コンピュータの仮想化技術は、ホスト計算機上に仮想的なコンピュータ（仮想マシン、Virtual Machine）をソフトウェア的に構築する技術である。しかしながら、仮想マシンから、ホスト計算機に物理的に接続されたグラフィックカード、浮動小数点演算アクセラレータ、生化学シミュレータのような拡張機器（以後Ｉ／Ｏカードという）を、複数の仮想マシンにおいて共有して利用したい用途もある。
【０００３】
仮想マシンからＩ／Ｏカードを利用する技術として、以下のような技術文献がある。特許文献１には、実行されるプログラムについてプログラム実行解釈部が使用禁止テーブルの内容を解釈して、使用が禁止されている機能が実行されないようにするという技術が記載されている。この技術は仮想マシンにおいても適用可能であるとされている。特許文献２には、複数の物理あるいは論理サーバがＩ／Ｏカードを共有する際に、アクセス要求に埋め込まれたサーバ識別子を用いてアクセス制御を行う方法が記載されている。
【０００４】
特許文献３には、Ｉ／Ｏカードを用いるための物理アドレスを仮想マシンに対して通知することにより、仮想マシンが仮想マシンモニタや特権仮想マシンのような別のプロセスを経由することなくホストのＩ／Ｏカードを使用できるという技術が記載されている。特許文献４には、あるコンピュータで実行されている仮想マシンを別の仮想マシンにマイグレーションする方法が記載されている。
【０００５】
特許文献５には、物理マシンと仮想マシンとの間でＩ／Ｏカードを共有するため、仮想Ｉ／Ｏアドレスと物理Ｉ／Ｏアドレスとの対応を割り当ててその情報を保持するという技術が記載されている。特許文献６には、複数の機能を持つＩ／Ｏカードで、仮想アドレスを物理アドレスに対応させて該Ｉ／Ｏカードの複数の機能を共有するという技術が記載されている。
【０００６】
【特許文献１】特開２００２−０４１１７０号公報
【特許文献２】特開２００５−１２２６４０号公報
【特許文献３】特開２００５−３２２２４２号公報
【特許文献４】特開２００５−３２７２７９号公報
【特許文献５】特開２００８−０２１２５２号公報
【特許文献６】特表２００７−５１８１６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
Ｉ／Ｏカードが複数の区分に分けられる複数の機能を持つ場合、同一のホスト計算機上で動作する仮想マシンであっても、たとえばある仮想マシンからは該Ｉ／Ｏカードの全ての機能を使用可能とする一方で、別の仮想マシンからは該Ｉ／Ｏカードの特定の機能のみを使用可能としてその他の機能は使用不可能としたい場合がある。
【０００８】
このような場合、特許文献１および２にあるように、特定の機能に対してアクセスが生じた場合に、該機能に対するアクセスが許可されているか否かをホスト計算機のＣＰＵもしくは専用の判定回路が判断する技術はある。しかしながら、該機能に対するアクセスが生じるたびにＣＰＵがそのような判断を行うようにすると、ただでさえ複数の仮想マシンに関する高負荷な処理を行っているＣＰＵに対して、さらに負荷を増大させることとなる。また、専用のハードウェアである判定回路を追加することは、機器のコスト上昇につながる。
【０００９】
特許文献３の方法では、Ｉ／Ｏカードを仮想マシンに割り当てる際にアクセスが可能であるかの判断を行っているが、単一のＩ／Ｏカードに対して占有させるか否かという程度の制御しか行えない。特許文献４〜６、さらには特許文献１〜６の全てを組み合わせた技術では、ＣＰＵの負荷およびその他のハードウェアのコストを増大させずに、仮想マシンごとおよびＩ／Ｏカードの機能ごとに使用の可否を制御できるようにするという技術は記載されていない。
【００１０】
本発明の目的は、ＣＰＵの負荷およびその他のハードウェアのコストを増大させずに、仮想マシンごとおよびＩ／Ｏカードの機能ごとに使用の可否を制御できる仮想マシンシステム、ホスト計算機、Ｉ／Ｏカード、仮想マシンモニタ方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明に係る仮想マシンシステムは、複数の仮想マシンが動作するホスト計算機と、ホスト計算機に接続されて該ホスト計算機に複数の機能を提供するＩ／Ｏカードとを備える仮想マシンシステムであって、前記Ｉ／Ｏカードが、前記複数の仮想マシンに対応する複数の仮想マシンインタフェースを有し、前記仮想マシンインタフェースの各々が前記複数の機能の各々に対応する複数のページを有し、各々の前記仮想マシンが、前記仮想マシン上における物理アドレスと、前記ホスト計算機上における前記仮想マシンインタフェース上の前記ページの物理アドレスとを変換するアドレス変換部を有すると共に、前記ホスト計算機が、前記複数の仮想マシンの各々に対する前記機能の各々の使用可否に関する情報を保持する仮想マシンＩ／Ｏサービス管理部と、各々の前記複数の仮想マシンの前記アドレス変換部に、使用可能である旨の情報を前記仮想マシンＩ／Ｏサービス管理部が保持している前記機能について前記仮想マシンインタフェースの物理アドレスを書き込むアドレス変換管理部とを有することを特徴とする。
【００１２】
上記目的を達成するため、本発明に係るホスト計算機は、複数の仮想マシンが動作し、複数の機能を提供するＩ／Ｏカードを接続可能なホスト計算機であって、Ｉ／Ｏカードが、複数の仮想マシンに対応する複数の仮想マシンインタフェースを有し、仮想マシンインタフェースの各々が複数の機能の各々に対応する複数のページを有するものであり、各々の仮想マシンが、仮想マシン上における物理アドレスと、ホスト計算機上における仮想マシンインタフェース上のページの物理アドレスとを変換するアドレス変換部を有すると共に、複数の仮想マシンの各々に対する機能の各々の使用可否に関する情報を保持する仮想マシンＩ／Ｏサービス管理部と、各々の複数の仮想マシンのアドレス変換部に、使用可能である旨の情報を仮想マシンＩ／Ｏサービス管理部が保持している機能について仮想マシンインタフェースの物理アドレスを書き込むアドレス変換管理部とを有することを特徴とする。
【００１４】
上記目的を達成するため、本発明に係る仮想マシン構築方法は、複数の機能を提供するＩ／Ｏカードが接続されているホスト計算機で複数の仮想マシンを構築する方法であって、Ｉ／Ｏカードが、複数の仮想マシンに対応する複数の仮想マシンインタフェースを有し、仮想マシンインタフェースの各々が複数の機能の各々に対応する複数のページを有するものであると共に、仮想マシン上における物理アドレスと、ホスト計算機上における仮想マシンインタフェース上のページの物理アドレスとを変換するアドレス変換部を仮想マシンに提供するアドレス変換部提供工程と、各々の仮想マシンがアドレス変換部を利用してページにアクセスするアクセス工程と有し、アドレス変換部提供工程が、ホスト計算機が備える複数の仮想マシンの各々に対する機能の各々の使用可否に関する情報を読み込む使用可否読み取り工程と、使用可否読み取り工程で使用可能である旨の情報が読み取られた機能について、各々の複数の仮想マシンのアドレス変換部に仮想マシンインタフェースの物理アドレスを書き込むアドレス変換部書き込み工程とを含むことを特徴とする。
【００１５】
上記目的を達成するため、本発明に係る仮想マシン構築プログラムは、複数の仮想マシンに対応し、複数の機能を提供するＩ／Ｏカードが接続されているホスト計算機にあって、Ｉ／Ｏカードが、複数の仮想マシンに対応する複数の仮想マシンインタフェースを有し、仮想マシンインタフェースの各々が複数の機能の各々に対応する複数のページを有するものであり、各々の仮想マシンが、仮想マシン上における物理アドレスと、ホスト計算機上における仮想マシンインタフェース上のページの物理アドレスとを変換するアドレス変換部を有すると共に、ホスト計算機が備えるプロセッサに、ホスト計算機が備える複数の仮想マシンの各々に対する機能の各々の使用可否に関する情報を読み込む使用可否読み取り処理と、使用可否読み取り工程で使用可能である旨の情報が読み取られた機能について、仮想マシン上における物理アドレスとホスト計算機上における仮想マシンインタフェース上のページの物理アドレスとを変換するアドレス変換部に仮想マシンインタフェースの物理アドレスを書き込むアドレス変換部書き込み処理とを実行させることを特徴とする。
【発明の効果】
【００１６】
本発明は、各々の仮想マシンが、仮想マシン上とホスト計算機上における物理アドレスとを変換するアドレス変換部を有するように構成したので、仮想マシンからＩ／Ｏカードの特定の機能に対するアクセスが生じるたびにＣＰＵが各々の仮想マシンの各々の機能に対するアクセス権限を判断する必要はない。これによって、ＣＰＵの負荷およびその他のハードウェアのコストを増大させずに、仮想マシンごとおよびＩ／Ｏカードの機能ごとに使用の可否を制御できるという、従来にない優れた仮想マシンシステム、ホスト計算機、Ｉ／Ｏカード、仮想マシンモニタ方法およびプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１７】
［第１の実施の形態］
図１は、本発明の第１の実施の形態に係る仮想マシンシステム１の構成を示すブロック図である。仮想マシンシステム１は、ホスト計算機２にＩ／Ｏカード４０が接続されてなる。ホスト計算機２は一般的なコンピュータ装置であり、ＣＰＵ１１、ＲＡＭ１２、およびブリッジ１３を備える。ＣＰＵ１１およびＲＡＭ１２は、いずれもコンピュータ装置においては一般的な演算装置および記憶装置であるが、各々が複数個備えられているものとしてもよい。
【００１８】
ブリッジ１３は拡張機器を接続してＣＰＵ１１との間を中継する装置であり、ＣＰＵ１１はＲＡＭ１２上で実行されているソフトウェアからの命令に基づいてブリッジ１３を介して拡張機器を操作し、その結果を該ソフトウェアに対して出力することができる。なお、コンピュータ装置を構成するためにはこれら以外の要素も必要であるが、それらは当業者には公知であり、本実施の形態を説明する上では特に言及する必要はないので図示していない。
【００１９】
ブリッジ１３には、Ｉ／Ｏカード４０が接続される。Ｉ／Ｏカード４０は、Ｉ／Ｏパケット転送部４１と、複数の仮想マシンインタフェース４２ａ〜４２ｎから構成される。複数の仮想マシンインタフェース４２ａ〜４２ｎは各々、後述する複数台の仮想マシン３０ａ〜３０ｎに対応する。Ｉ／Ｏカード４０は、他のデバイスからブリッジ１３を介して受けた要求に応じて処理を行った後に、ブリッジ１３を経由して出力を返戻する。
【００２０】
ＲＡＭ１２では、ＣＰＵ１１によって仮想マシンモニタ２０が実行されている。仮想マシンモニタ２０は、ホスト計算機２上に複数台の仮想マシン３０ａ〜３０ｎを構築するソフトウェアであり、後述するアドレス変換管理部２１、Ｉ／Ｏ管理部２２、仮想マシンインタフェース情報記憶部２３、および仮想マシンＩ／Ｏサービス管理部２４を備える。
【００２１】
仮想マシンモニタ２０に構築される複数台の仮想マシンのうちの１つである仮想マシン３０ａは、アプリケーション３１ａ、ＯＳ３２ａ、デバイスドライバ３３ａ、および仮想マシンアドレス変換部３４ａを備え、ＯＳ３２ａによる制御でアプリケーション３１ａを実行する仮想的な計算機である。
【００２２】
アプリケーション３１ａがブリッジ１３に接続されているＩ／Ｏカード４０を使用する場合、まずＯＳ３２ａに対してそのことを要求する。ＯＳ３２ａは、アプリケーション３１ａからの要求に応じて、ハードウェア資源要求をデバイスドライバ３３ａに出力する。デバイスドライバ３３ａは、ＯＳ３２ａからの要求に応じて、仮想マシンモニタ２０に対してハードウェア使用要求を出力する。仮想マシンモニタ２０がデバイスドライバ３３ａからの要求に応じてＩ／Ｏカード４０を使用して動作結果を得ると、その動作結果はデバイスドライバ３３ａとＯＳ３２ａとを経由してアプリケーション３１ａに返される。
【００２３】
仮想マシンアドレス変換部３４ａは、仮想マシン３０ａ内で用いる物理アドレスと、ホスト計算機２で用いる物理アドレスとを対応させる対応表である。仮想マシンアドレス変換部３４ａは、仮想マシンモニタ２０によって書き換えが行われ、仮想マシン３０ａからは読み出しのみが可能である。
【００２４】
仮想マシンモニタ２０に構築されるその他の仮想マシン３０ｂ〜３０ｎの構成および機能も、仮想マシン３０ａの構成と同一である。以後、たとえば仮想マシン３０ｂはアプリケーション３１ｂ、ＯＳ３２ｂ、デバイスドライバ３３ｂ、および仮想マシンアドレス変換部３４ｂを備える…などのように、各仮想マシンの構成要素を表記する。
【００２５】
仮想マシンモニタ２０で、アドレス変換管理部２１は、Ｉ／Ｏ管理部２２が保持する情報を元に、各仮想マシン３０ａ〜３０ｎ内で保持されている仮想マシンアドレス変換部３４ａ〜３４ｎの情報を書き換える。Ｉ／Ｏ管理部２２は、アドレス変換管理部２１からの指示によって、仮想マシンインタフェース情報記憶部２３と、仮想マシンＩ／Ｏサービス管理部２４から、ホスト計算機２の物理アドレス空間に対し、Ｉ／Ｏカード４０の仮想マシンインタフェース４２ａ〜４２ｎをどのようにマップされるべきかの情報を読み込む。
【００２６】
アドレス変換管理部２１は、仮想マシン３０ａ〜３０ｎのうちいずれかが起動する際、Ｉ／Ｏカード４０がブリッジ１３に接続される際、もしくは仮想マシンインタフェース情報記憶部２３および仮想マシンＩ／Ｏサービス管理部２４のうち少なくともいずれかに保持された情報が変更された際に動作し、仮想マシンアドレス変換部３４ａ〜３４ｎの中で起動される仮想マシンに該当するものを書き換える。なお、仮想マシンインタフェース情報記憶部２３および仮想マシンＩ／Ｏサービス管理部２４に保持された情報を変更する手段および方法については任意である。
【００２７】
仮想マシンインタフェース情報記憶部２３は、Ｉ／Ｏカード４０の仮想マシンインタフェース４２ａ〜４２ｎの機能と領域の対応関係に関する情報を保持する。仮想マシンＩ／Ｏサービス管理部２４は、仮想マシン３０ｂ〜３０ｎに対し、Ｉ／Ｏカード４０の機能のどの部分を使用することが可能であるかの設定情報を保持する。なお、仮想マシンインタフェース情報記憶部２３と、仮想マシンＩ／Ｏサービス管理部２４とに記憶される情報は、あらかじめ設定されているものとする。
【００２８】
以下、仮想マシンモニタ２０の管理下で仮想マシン３０ａおよび３０ｂという２台の仮想マシンが動作している場合の一例に基づいて、各動作部が記憶しているデータの内容およびホスト計算機２で行われる動作の内容を説明する。また、この例ではホスト計算機２は１つのみのブリッジ１３を備え、ブリッジ１３に１つのみのＩ／Ｏカード４０が接続され、Ｉ／Ｏカード４０の持つ機能は基本機能と拡張機能という２種類の区分に分かれているものとする。
【００２９】
図２は、図１で示したＩ／Ｏカード４０が有する仮想マシンインタフェース４２ａおよび４２ｂの構成を示す概念図である。仮想マシンインタフェース４２ａおよび４２ｂは、それぞれ仮想マシン３０ａおよび３０ｂに対応するものであり、それぞれＲＡＭ１２のメモリページシステム３ページ相当の大きさを持つ。以後、仮想マシンインタフェース４２ａの持つページはページ１０１ａ１〜ａ３、仮想マシンインタフェース４２ｂの持つページはページ１０１ｂ１〜ｂ３とのように表記する。
【００３０】
図３は、図１で示した仮想マシンインタフェース情報記憶部２３が保持する情報の内容の一例を示す概念図である。仮想マシンインタフェース情報記憶部２３は、対象となるデバイスを表すデバイス名１１１と、ＲＡＭ１２のメモリページシステム上の何ページ目かを表すページ１１２と各ページが表す機能１１３といったデータを含む。
【００３１】
ここでは、デバイス名１１１がＩ／Ｏカード４０で、ページ１１２の１〜２ページ目で機能１１３が「基本機能」、ページ１１２の３ページ目で機能１１３が「拡張機能」を表している。これは、図２で示した仮想マシンインタフェース４２ａおよび４２ｂにおいて、１ページ目と２ページ目が基本機能、３ページ目が拡張機能を実現するものであることを意味する。
【００３２】
図４は、図１で示した仮想マシンＩ／Ｏサービス管理部２４が保持する情報の内容の一例を示す概念図である。仮想マシンＩ／Ｏサービス管理部２４は、対象となる仮想マシンおよびＩ／Ｏカードを表す仮想マシン名１２１およびＩ／Ｏカード名１２２と、基本機能および拡張機能の別を表す機能区分１２３と、各々の機能に対するアクセス権１２４といったデータを含む。
【００３３】
ここでは、仮想マシン３０ａは、Ｉ／Ｏカード４０の基本機能のみの使用が許可され、拡張機能の使用は不許可である。そして仮想マシン３０ｂは、Ｉ／Ｏカード４０の基本機能および拡張機能の両方の使用が許可される。以上の旨を示すデータが、仮想マシンＩ／Ｏサービス管理部２４に記憶されている。
【００３４】
Ｉ／Ｏ管理部２２は、仮想マシンインタフェース情報記憶部２３に保持されたＩ／Ｏカード４０についての情報と、仮想マシンＩ／Ｏサービス管理部２４に保持された仮想マシン毎のアクセス権情報を元に、ＲＡＭ１２上の物理メモリアドレス空間と仮想マシンインタフェース４２ａおよび４２ｂのマッピングを行う。
【００３５】
図５は、図１で示したＲＡＭ１２上のアドレス空間２００における仮想マシンインタフェース４２ａおよび４２ｂのマッピングの様子を示す概念図である。アドレス空間２００は、仮想マシンインタフェース４２ａおよび４２ｂのためにＲＡＭ１２上に確保されている。
【００３６】
前述のように、仮想マシン３０ａは、Ｉ／Ｏカード４０の基本機能のみの使用が許可され、拡張機能の使用は不許可であるとする情報が仮想マシンＩ／Ｏサービス管理部２４に記憶されている。このため、Ｉ／Ｏ管理部２２は仮想マシンインタフェース情報記憶部２３を参照して、仮想マシンインタフェース４２ａはページ１０１ａ１〜ａ２が基本機能に該当し、ページ１０１ａ３が拡張機能に該当するとの情報を得る。これに基づいてアドレス変換管理部２１は、基本機能に該当するページ１０１ａ１〜ａ２のみをアドレス空間２００内にマッピングする。拡張機能に該当するページ１０１ａ３はマッピングしない。仮想マシンインタフェース４２ｂはページ１０１ｂ１〜ｂ３に該当する基本機能および拡張機能の両方の使用が許可されるので、ページ１０１ｂ１〜ｂ３の全てがアドレス空間２００内にマッピングされる。
【００３７】
図５に示した例では、アドレス空間２００の中で、物理アドレス０ｘ１００００に仮想マシンインタフェース４２ａのページ１０１ａ１、物理アドレス０ｘ１１０００に仮想マシンインタフェース４２ａのページ１０１ａ２がマッピングされる。また物理アドレス０ｘ２５０００に仮想マシンインタフェース４２ｂのページ１０１ｂ１、物理アドレス０ｘ２６０００に仮想マシンインタフェース４２ｂのページ１０１ｂ２、物理アドレス０ｘ２７０００に仮想マシンインタフェース４２ｂのページ１０１ｂ３がそれぞれマッピングされる。このアドレス空間２００上のマッピングに基づいて、仮想マシン３０ａおよび３０ｂは各々、仮想マシンインタフェース４２ａおよび４２ｂとのデータ交換を行うことができる。
【００３８】
図６は、図１で示したアドレス変換管理部２１によって作成される仮想マシンアドレス変換部３４ａおよび３４ｂの内容の一例を示す概念図である。また図７は、図１で示したアドレス変換管理部２１が図６に示した仮想マシンアドレス変換部３４ａおよび３４ｂを作成する動作を表すフローチャートである。
【００３９】
アドレス変換管理部２１は、仮想マシン３０ａもしくは３０ｂが動作開始する際、ブリッジ１３にＩ／Ｏカード４０が接続される際、もしくは仮想マシンインタフェース情報記憶部２３および仮想マシンＩ／Ｏサービス管理部２４に保持された情報が変更された際に動作を開始して、仮想マシンインタフェース情報記憶部２３に保持されたＩ／Ｏカード４０についての情報と、仮想マシンＩ／Ｏサービス管理部２４に保持された仮想マシン毎のアクセス権情報とを、Ｉ／Ｏ管理部２２を介して読み込む（ステップＳ３０１〜２）。そしてアドレス空間２００内にマッピングされた各ページについての情報も読み込む（ステップＳ３０３）。
【００４０】
アドレス変換管理部２１は、以上で読み込んだ情報に基づいて、仮想マシンＩ／Ｏサービス管理部２４で起動される仮想マシンの仮想マシン名１２１、Ｉ／Ｏカード名１２２および機能区分１２３のうちのいずれかに対して、対応するアクセス権１２４について判断する（ステップＳ３０４〜３０５）。アクセス権１２４が「許可」であれば、該当する仮想マシン名１２１の仮想マシンアドレス変換部３４ａもしくは３４ｂに、該当する情報を書き込む（ステップＳ３０６）。アクセス権１２４が「不許可」であれば書き込まない。
【００４１】
アドレス変換管理部２１は、ステップＳ３０５〜３０６の処理を、該当する仮想マシン名１２１、Ｉ／Ｏカード名１２２および機能区分１２３の全てに対して行ったかを判断し（ステップＳ３０７）、完了していなければ他の仮想マシン名１２１、Ｉ／Ｏカード名１２２および機能区分１２３に移動してステップＳ３０５からの処理を繰り返す（ステップＳ３０８）。ステップＳ３０７で「完了した」と判断されれば、アドレス変換管理部２１は該当する仮想マシンの動作を開始させ（ステップＳ３０９）、自らの動作を終了する。
【００４２】
図６に示される各仮想マシンの仮想マシンアドレス変換部３４ａもしくは３４ｂには、Ｉ／Ｏカード名１２２および機能区分１２３ごとに、対応するアドレス空間２００内のアドレス１３１と、仮想マシン３０ａもしくは３０ｂのアドレス空間２１０の物理アドレス１３２とが書き込まれる。その際、アクセス権１２４が「許可」である機能区分１２３についてのみ書き込まれ、アクセス権１２４が「不許可」であれば書き込まれない。
【００４３】
図６（ａ）は、仮想マシン３０ａの仮想マシンアドレス変換部３４ａである。アプリケーション３１ａがＩ／Ｏカード４０の基本機能にアクセスしたい場合、仮想マシン３０ａのアドレス空間２１０の物理アドレス０ｘ０００００にアクセスすると、デバイスドライバ３３ａは仮想マシンアドレス変換部３４ａを参照して、ＲＡＭ１２のアドレス空間２００のアドレス０ｘ１００００にアクセスすることができる。ただしＩ／Ｏカード４０の拡張機能に対応するエントリは仮想マシンアドレス変換部３４ａには存在しないので、仮想マシン３０ａにとってはＩ／Ｏカード４０の拡張機能はそもそも存在しないのと同じことになり、もちろんアクセスすることはできない。
【００４４】
図６（ｂ）は、仮想マシン３０ｂの仮想マシンアドレス変換部３４ｂである。アプリケーション３１ａがＩ／Ｏカード４０の基本機能にアクセスしたい場合、仮想マシン３０ｂのアドレス空間２１０の物理アドレス０ｘ０００００にアクセスすると、デバイスドライバ３３ｂは仮想マシンアドレス変換部３４ｂを参照して、ＲＡＭ１２のアドレス空間２００のアドレス０ｘ２５０００にアクセスする。同様に、アプリケーション３１ａがＩ／Ｏカード４０の拡張機能にアクセスしたい場合、仮想マシン３０ｂのアドレス空間２１０の物理アドレス０ｘ０２０００にアクセスすると、デバイスドライバ３３ｂは仮想マシンアドレス変換部３４ｂを参照して、ＲＡＭ１２のアドレス空間２００のアドレス０ｘ２７０００にアクセスする。これによって仮想マシン３０ｂは、Ｉ／Ｏカード４０の基本機能と拡張機能の両方にアクセスできる。
【００４５】
これによって、Ｉ／Ｏカード４０上の基本機能には仮想マシン３０ａおよび３０ｂの両方からのアクセスを許可し、拡張機能には仮想マシン３０ｂからのアクセスのみを許可して仮想マシン３０ａからのアクセスを遮断するという動作が可能となった。
【００４６】
図７に示した動作は、仮想マシン３０ａもしくは３０ｂが動作開始する際、ブリッジ１３にＩ／Ｏカード４０が接続される際、もしくは仮想マシンインタフェース情報記憶部２３および仮想マシンＩ／Ｏサービス管理部２４のうち少なくともいずれかに保持された情報が変更された際にのみ行われ、通常動作時においてＣＰＵ１１に常駐するものではない。従って、各々の仮想マシンからＩ／Ｏカード４０を使用する要求があるたびにＣＰＵ１１がそれらのアクセス権限について判断する必要はないので、通常動作時におけるＣＰＵ１１に対する負荷を増大させることはない。
【００４７】
本実施の形態では、以上に述べたように仮想マシンアドレス変換部３４ａおよび３４ｂを備えることによって、通常動作時におけるＣＰＵ１１に対する負荷を増大させることなく、複数の仮想マシンの各々に対して異なるサービスレベルを提供することができる。この動作は、各々のソフトウェアをわずかに改変するだけで実施でき、ハードウェアの変更を必要とはしない。
【００４８】
以上に述べた動作は、３台以上の仮想マシンの場合、ブリッジ１３に複数のＩ／Ｏカード４０が接続されている場合、およびＩ／Ｏカード４０の機能が３つ以上の区分に分かれる場合にも容易に拡張できる。もちろん、Ｉ／Ｏカード４０の機能が実際には何であるかについても不問である。
【００４９】
［第２の実施の形態］
図８は、本発明の第２の実施の形態に係る仮想マシンシステム１ｂの構成を示すブロック図である。仮想マシンシステム１ｂは、ホスト計算機２ｂにＩ／Ｏカード４０ｂが接続されてなる。ホスト計算機２ｂに含まれる仮想マシンモニタ２０ｂは、第１の実施の形態に係るホスト計算機２に含まれる仮想マシンモニタ２０と比べて、仮想マシンインタフェース情報記憶部２３が省略されている。そのかわりＩ／Ｏカード４０ｂは、第１の実施の形態に係るＩ／Ｏカード４０と比べて、仮想マシンインタフェース情報記憶部４３が追加されている。これ以外は、仮想マシンシステム１ｂの構成は第１の実施の形態に係る仮想マシンシステム１と同一であるので、これ以上の説明を省略する。
【００５０】
仮想マシンインタフェース情報記憶部４３は、第１の実施の形態に係る仮想マシンインタフェース情報記憶部２３と同じく、仮想マシンインタフェース４２ａ〜４２ｎの機能と領域の対応関係に関する情報を保持する。そして仮想マシンインタフェース情報記憶部４３に記憶された情報は、仮想マシンモニタ２０ｂのＩ／Ｏ管理部２２から参照可能である。
【００５１】
図９は、図８で示した仮想マシンインタフェース情報記憶部４３が保持する情報の内容の一例を示す概念図である。仮想マシンインタフェース情報記憶部４３は、各々のＩ／Ｏカード４０についてのみの情報を保持する。従って、第１の実施の形態に係る仮想マシンインタフェース情報記憶部２３と比べてデバイス名１１１が省略され、ページ１１２と機能１１３などのデータを含んでいる。
【００５２】
このようにしても、第２の実施の形態に係る仮想マシンシステム１ｂは、第１の実施の形態に係る仮想マシンシステム１と同一の動作を行うことができ、同一の効果を得ることができる。よって、これ以上の構成および動作についての説明を省略する。
【００５３】
［その他の実施の形態］
以上で説明した第１および第２の実施の形態以外にも、次に示すような変形が考えられる。たとえば、ＣＰＵをブリッジを介してＩ／Ｏカードと接続するかわりに、ＣＰＵとＩ／Ｏカードとを直結するようにしてもよい。また、Ｉ／Ｏカードをホスト計算機と接続するＩ／Ｏパケット転送部のかわりに、バスインタフェースを利用して接続するようにしてもよい。
【００５４】
さらに、仮想マシン上のアプリケーションがＯＳおよびデバイスドライバを介してアクセス要求を行うかわりに、ＯＳとデバイスドライバのうちの両方あるいは片方を省略して、アプリケーションがより直接的に仮想マシンに対してアクセス要求を行うようにすることもできる。当然ながら、以上に述べた実施の形態およびその変形を、相互に組み合わせて実施することもできる。
【００５５】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることは言うまでもないことである。
【産業上の利用可能性】
【００５６】
複数の仮想マシンを構築して動作する計算機において利用可能である。
【図面の簡単な説明】
【００５７】
【図１】本発明の第１の実施の形態に係る仮想マシンシステム
【図２】図１で示したＩ／Ｏカードが有する仮想マシンインタフェースの構成を示す概念図である。
【図３】図１で示した仮想マシンインタフェース情報記憶部が保持する情報の内容の一例を示す概念図である。
【図４】図１で示した仮想マシンＩ／Ｏサービス管理部が保持する情報の内容の一例を示す概念図である。
【図５】図１で示したＲＡＭ上のアドレス空間における仮想マシンインタフェースのマッピングの様子を示す概念図である。
【図６】図１で示したアドレス変換管理部によって作成される仮想マシンアドレス変換部の内容の一例を示す概念図である。
【図７】図１で示したアドレス変換管理部が図６に示した仮想マシンアドレス変換部を作成する動作を表すフローチャートである。
【図８】本発明の第２の実施の形態に係る仮想マシンシステムの構成を示すブロック図である。
【図９】図８で示した仮想マシンインタフェース情報記憶部が保持する情報の内容の一例を示す概念図である。
【符号の説明】
【００５８】
１、１ｂ  仮想マシンシステム
２、２ｂ  ホスト計算機
１１  ＣＰＵ
１２  ＲＡＭ
１３  ブリッジ
２０、２０ｂ  仮想マシンモニタ
２１  アドレス変換管理部
２２  Ｉ／Ｏ管理部
２３、４３  仮想マシンインタフェース情報記憶部
２４  仮想マシンＩ／Ｏサービス管理部
３０ａ〜ｎ  仮想マシン
３１ａ〜ｎ  アプリケーション
３２ａ〜ｎ  ＯＳ
３３ａ〜ｎ  デバイスドライバ
３４ａ〜ｎ  仮想マシンアドレス変換部
４０ａ〜ｎ  Ｉ／Ｏカード
４１  Ｉ／Ｏパケット転送部
４２ａ〜ｎ  仮想マシンインタフェース
【図１】
0005104501.tif 000002
【図２】
0005104501.tif 000003
【図３】
0005104501.tif 000004
【図４】
0005104501.tif 000005
【図５】
0005104501.tif 000006
【図６】
0005104501.tif 000007
【図７】
0005104501.tif 000008
【図８】
0005104501.tif 000009
【図９】
0005104501.tif 000010