JP2004258840A - 仮想化されたi/oデバイスをもつ計算機システム - Google Patents

仮想化されたi/oデバイスをもつ計算機システム Download PDF

Info

Publication number
JP2004258840A
JP2004258840A JP2003046885A JP2003046885A JP2004258840A JP 2004258840 A JP2004258840 A JP 2004258840A JP 2003046885 A JP2003046885 A JP 2003046885A JP 2003046885 A JP2003046885 A JP 2003046885A JP 2004258840 A JP2004258840 A JP 2004258840A
Authority
JP
Japan
Prior art keywords
command
computer
server computer
client
hypervisor
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.)
Withdrawn
Application number
JP2003046885A
Other languages
English (en)
Inventor
Akihiro Takamura
明裕 高村
Yoshio Miki
良雄 三木
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 JP2003046885A priority Critical patent/JP2004258840A/ja
Priority to US10/629,804 priority patent/US20040167996A1/en
Publication of JP2004258840A publication Critical patent/JP2004258840A/ja
Withdrawn legal-status Critical Current

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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45541Bare-metal, i.e. hypervisor runs directly on hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】クライアントコンピュータからサーバコンピュータのI/Oデバイスを使用可能にする。
【解決手段】OSとハードウェアとの間に介在するハイパバイザがI/Oデバイスの仮想化を行なう。
【選択図】 図4

Description

【0001】
【発明の属する技術分野】
本発明は、ネットワークを用いて接続された計算ノードをもつコンピュータシステムにおいて、特定の計算ノードに接続されたI/Oデバイスを他の計算ノードからでもアクセス可能なコンピュータシステムに関する。
【0002】
【従来の技術】
コンピュータシステムは、ハードウェアコストの削減、システム構築の容易化などの理由から、機能の異なる複数の計算ノードをネットワークで結合して構築することが多い。しかしながら、この様に機能の異なる複数の計算ノードがネットワークで結合されたコンピュータシステムでは、特定の計算ノードにのみ接続されたI/Oデバイスがあることが多い。この時、他の計算ノードからこの特定のI/Oデバイスを使用するためには、I/Oデバイスが接続されている計算ノードにloginしたり、ノード間のデータ転送が必要になる。
【0003】
このようなコンピュータシステムの利便性を高めるため、従来は、OS(オペレーティングシステム)が、特定の計算ノードに接続されたI/Oデバイスを任意の計算ノードからアクセス可能とする機能を提供していた。この機能をここではI/Oデバイスの仮想化機能と呼ぶ。以下、I/Oデバイスを持つ計算ノードをサーバコンピュータ、サーバコンピュータのI/Oデバイスにアクセスするコンピュータをクライアントコンピュータと呼ぶ。例えば、特開平10−21203号公報(特許文献1)に記載のように、クライアントコンピュータのOSがサーバコンピュータのI/O装置へのアクセス要求を出すために、クライアントコンピュータのOSがサーバコンピュータへのI/Oアクセスが出来る機能を持つOSでなくてはならない。
【0004】
OSによるI/Oデバイスの仮想化機能は以下の様に実現されている。クライアントコンピュータにあるアプリケーションプログラムが、サーバコンピュータに接続されているI/Oデバイス上にあるファイルを読み出す場合を考える。クライアントコンピュータとサーバコンピュータはネットワークを介して接続されている。クライアントコンピュータにあるアプリケーションプログラムがファイルを読み出す場合、ファイルの読み出し要求はOSの一部であるファイルシステムに伝えられる。ファイルシステムでは、ファイルの論理名から、そのファイルを含むI/Oデバイスが接続されているサーバコンピュータとサーバコンピュータ上での論理ファイル名を得る。そして、クライアントコンピュータのファイルシステムは、ネットワークを介してサーバコンピュータのファイルシステムに対して、サーバコンピュータ上でのファイルの論理名を伝える。サーバコンピュータのOSの一部であるファイルシステムは、ファイルの論理名からそのファイルを含むI/OデバイスとI/Oデバイスへの入出力を行なうデバイスドライバを特定する。デバイスドライバは、I/Oデバイスに読み出しコマンドを発行してファイルを読み出す。サーバコンピュータのファイルシステムは読み出したファイルをネットワークを介してクライアントコンピュータのファイルシステムに送る。クライアントコンピュータのファイルシステムは、アプリケーションプログラムに読み出したファイルを送る。これらの一連の処理により、クライアントコンピュータにあるプログラムが、サーバコンピュータに接続されているI/Oデバイスにあるファイルを読み出すことができる。
【0005】
しかしながら、実際のコンピュータシステムでは、OSによるI/Oデバイスの仮想化機能は使用できないことが多い。これは、I/Oの仮想化機能は、多くの場合同一OS間でのみ使用可能であることと、通常、複数種類のOSが一つのコンピュータシステム内に混在することが原因である。I/Oの仮想化が同一OS間に限られるのは、OSごとにI/Oデバイスの仮想化方法が異なるからである。また、コンピュータシステムが複数種類のOSで構成されるのは、コンピュータシステムは一度に構築されるのではなく、拡張を繰り返して構築されることが多いが、拡張の際に、その時で最も条件のよいハードウェア、OS、ソフトウェアを選択するため、コンピュータシステム全体としては複数種類のOSが混在することになってしまうためである。
【0006】
【特許文献1】
特開平10−21203号公報
【0007】
【発明が解決しようとする課題】
上記従来技術では、ネットワークを用いて接続されたサーバコンピュータとクライアントコンピュータからなるコンピュータシステムにおいて、サーバコンピュータとクライアントコンピュータのOSが異なる場合に、サーバコンピュータに接続されたI/Oデバイスがクライアントコンピュータでは使用できないという問題がある。
【0008】
本発明の目的は、ネットワークを用いて接続されたサーバコンピュータとクライアントコンピュータからなるコンピュータシステムにおいて、サーバコンピュータとクライアントコンピュータのOSが異なる場合でも、サーバコンピュータのOSもクライアントコンピュータのOSも変更することなく、サーバコンピュータに接続されたI/Oデバイスがクライアントコンピュータで使用することを可能にすることである。
【0009】
【課題を解決するための手段】
上記目的を達成するため、本発明では、OSよりハードウェアに近い階層で動作するハイパバイザを設ける。クライアントコンピュータのハイパバイザには、オペレーティングシステムとオペレーティングシステム上のプログラムを変更することなく、サーバコンピュータのI/Oデバイスへのアクセスを検出するための論理I/Oデバイスアクセス検出部と、サーバコンピュータのI/Oデバイスへのアクセスがあった時に、サーバコンピュータのI/Oデバイスへのコマンドをネットワークを介して送信する仮想I/Oクライアント処理を有する。サーバコンピュータのハイパバイザには、I/Oデバイスへのコマンドをネットワークから受信して、I/Oデバイスへコマンド発行する仮想I/Oサーバ処理とを有する。
【0010】
【発明の実施の形態】
本発明の第一の実施の形態では、サーバコンピュータとクライアントコンピュータの間での通信は、両者のハイパバイザが定めるプロトコルで通信が行なわれるものである。一方、第二の実施の形態では、サーバコンピュータとクライアントコンピュータの間での通信は、サーバコンピュータ上で動作するOSのプロトコルで行なわれる。
【0011】
図1に第一、第二の実施形態で共通に用いられるコンピュータシステムを示す。
本実施形態のコンピュータシステムは、1台以上のクライアントコンピュータ101と1台以上のサーバコンピュータ102と、これらのコンピュータを相互に結合するネットワーク103からなる。
【0012】
クライアントコンピュータ101は、プログラムとデータを格納するメモリ901とメモリ901内のプログラムに従って処理を行うプロセッサ900とネットワークに接続するためのNIA(ネットワークインターフェースアダプタ)902とプログラムとデータを保存するHDD(ハードディスク)903を有する。
【0013】
同様に、サーバコンピュータ102は、プログラムとデータを格納するメモリ911とメモリ911内のプログラムに従って処理を行うプロセッサ910とネットワークに接続するためのNIA912とプログラムとデータを保存するHDD913とI/Oデバイス914を有する。I/Oデバイス914は例えばリムーバブルディスクドライブであるとする。
【0014】
図2に、第一と第二の実施形態におけるHDD903の内容を示す。HDD903には、アプリケーションプログラム121とオペレーティングシステム122とハイパバイザ123とブートローダ124が格納されている。
【0015】
アプリケーションプログラム121 はファイルの読み出し210とファイルの書き込み360を含むプログラムであり、ハイパバイザの機能によってサーバコンピュータ102に接続されたI/O デバイス914からの読み出しと書き込みを行なう。ハイパバイザ123には記憶保護割込処理300 と仮想I/Oクライアント処理260が含まれる。記憶保護割込処理300はアプリケーションプログラム121がファイルの読み出し210 とファイルの書き込み360を行なった時に、プロセッサ900の記憶保護制御を用いて論理I/Oデバイスへの読み出しコマンドと書き込みコマンドを検出し、ハイパバイザへ制御を移す。仮想I/Oクライアント処理260は記憶保護割込処理300 によって起動され、ネットワーク103を介してサーバコンピュータ102に接続されたI/O デバイス914からの読み出しと書き込みを行なう。ブートローダ124はクライアントコンピュータ101の起動時にオペレーティングシステム122の起動前にハイパバイザ123を起動させ、記憶保護割込が起きた時にハイパバイザ123の記憶保護割込処理300が呼び出されるようにする。
【0016】
なお、本実施形態におけるアプリケーションプログラム121にはファイルの読み出し210とファイルの書き込み360が含まれているが、ファイルの読み出し210、ファイルの書き込み360のいずれか一方だけでも本実施形態と同様である。
【0017】
図3に、第一の実施形態におけるHDD913の内容を示す。HDD913には、オペレーティングシステム132とハイパバイザ133とブートローダ134 が格納されている。
【0018】
ハイパバイザ133には記憶保護割込処理380とNIA受信割込処理280とが含まれる。記憶保護割込処理380はオペレーティングシステム132のNIA受信割込処理が呼び出される前にハイパバイザ133のNIA受信割込処理280が呼び出されるようにする。NIA受信割込処理280では、クライアントコンピュータ101からネットワーク103を介してI/Oデバイス914の読み出し/書き込み要求が来た時に、仮想I/Oクアライアント処理260を呼び出す。仮想I/Oクライアント処理260は読み出し/書き込み要求に応じてI/Oデバイスの読み出し/書き込みを行なう。ブートローダ134はサーバコンピュータ102の起動時にオペレーティングシステム122の起動前にハイパバイザ123を起動させ、記憶保護割込とNIA受信割込が起きた時に、それぞれハイパバイザ133 の記憶保護割込処理380とNIA受信割込処理280とが呼び出されるようにする。
【0019】
ブートローダ124はサーバコンピュータ102の起動時にオペレーティングシステム132の起動前にハイパバイザ133を起動させ、NIA受信割込が起きた時にハイパバイザ133のNIA受信割込処理280が呼び出されるようにする。
【0020】
図4に第一、第二の実施形態で共通に用いられるファイルの読み出し手順の詳細を示す。
【0021】
クライアントコンピュータ101のアプリケーションプログラム121がファイルの読み出しを行なう場合、まず、オペレーティングシステム122はデバイスドライバの検索211を実行する。デバイスドライバは、オペレーティングシステムでI/Oデバイスを使用可能にするためのソフトウェアである。デバイスドライバはI/O デバイスごとに異なるため、プログラムが指定したファイルを格納しているI/Oデバイスに対応するデバイスドライバを検索する。
【0022】
次に、デバイスドライバの呼び出し212を実行して、デバイスドライバの検索211でみつかったデバイスドライバを呼び出す。さらに、デバイスドライバは、読み出しコマンド発行213を行ない、読み出しコマンドを論理I/Oデバイスの制御用メモリアドレスに書き込みを行なう。読み出しコマンド発行213により、プロセッサの記憶保護機能によって記憶保護割込が発生し、論理I/Oデバイスアクセス検出214が行なわれる。記憶保護割込によって制御がハイパバイザの記憶保護割込処理300に移る。ハイパバイザによって仮想I/Oクライアント処理260が行われ、サーバコンピュータのI/Oデバイスからの読み出しが完了する。
【0023】
図5に第一、第二の実施形態で共通に用いられるファイルの書き込み手順の詳細を示す。書き込みも図4のファイルの読み出し手順と基本的には同一であるが、読み出しコマンド発行213の代わりに書き込みコマンドの発行363を行なうことが異なる。
【0024】
図6に第一、第二の実施形態で共通に用いられる記憶保護割込処理300の手順の詳細を示す。記憶保護割込処理300はクライアントコンピュータ101で実行されるハイパバイザ内のプログラムで、特定のメモリアドレスに対する読み出し/書き込みが起きた時に発生する記憶保護割込によって呼び出される。記憶保護割込処理300は、割込要因となったメモリへの読み出し/書き込みアドレスによって(1) 論理I/O デバイスに対する読み出しコマンド、もしくは、書き込みコマンドを検出し、仮想I/Oクライアント処理260 を呼び出す、(2)OSが記憶保護割込アドレスに対する書きこみをした時にOSの記憶保護割込先アドレスを登録する、(3)前記以外の理由による割込であれば、OS の記憶保護割込先アドレスに分岐する、という3つの処理を行なう。
【0025】
記憶保護割込によって記憶保護割込処理300が呼び出されると、まず、記憶保護割込アドレス判定301を行ない、記憶保護割込となった原因が記憶保護割込の分岐先アドレスに対する書き込みであるかを判定する。記憶保護割込の分岐先アドレスに対する書き込みであれば、OSの記憶保護割込を登録302で、分岐先アドレスに書き込もうとしたデータを、OSの記憶保護割込へ分岐304での分岐先アドレスに登録し、記憶保護割込処理300を終了する。次に、I/Oアドレス判定303 を行ない、記憶保護割込となった原因が論理I/Oデバイスのメモリアドレスに対する書き込みで、論理I/Oデバイスへの読み出しコマンドの発行、もしくは、書き込みコマンドの発行であるかを判定する。論理I/Oデバイスへの読み出しコマンドの発行、もしくは、書き込みコマンドの発行であれば、仮想I/Oクライアント処理260を呼び出し、記憶保護割込処理300を終了する。I/Oアドレスに対する書き込みでなければ、OSの記憶保護割込へ分岐304を実行し、OSの記憶保護割込に分岐する。
【0026】
図7に第一、第二の実施形態で共通に用いられるサーバコンピュータ側の記憶保護割込処理380の手順の詳細を示す。記憶保護割込処理380はサーバコンピュータ102で実行されるハイパバイザ内のプログラムで、特定のメモリアドレスに対する読み出し/書き込みが起きた時に発生する記憶保護割込によって呼び出される。記憶保護割込処理380は、割込要因となったメモリへの読み出し/書き込みアドレスによって(1)OSがNIA受信割込アドレスに対する書き込みをした時にOSの記憶保護割込先アドレスを登録する、(2)OSが記憶保護割込アドレスに対する書き込みをした時にOSの記憶保護割込先アドレスを登録する、(3)前記以外の理由による割込であれば、OS の記憶保護割込先アドレスに分岐する、という3つの処理を行なう。
【0027】
記憶保護割込によって記憶保護割込処理380が呼び出されると、まず、記憶保護割込アドレス判定381を行ない、記憶保護割込となった原因が記憶保護割込の分岐先アドレスに対する書き込みであるかを判定する。記憶保護割込の分岐先アドレスに対する書き込みであれば、OSの記憶保護割込アドレスを登録382で、分岐先アドレスに書き込もうとしたデータを、OSの記憶保護割込へ分岐385での分岐先アドレスに登録し、記憶保護割込処理380を終了する。次に、NIA受信割込アドレス判定383 を行ない、記憶保護割込となった原因がNIA受信割込の分岐先アドレスに対する書き込みであるかを判定する。NIA受信割込の分岐先アドレスに対する書き込みであれば、NIA受信割込アドレスを登録385で、分岐先アドレスに書き込もうとしたデータを、OSのNIA受信割込処理へ分岐289での分岐先アドレスに登録し、記憶保護割込処理380を終了する。NIA受信割込の分岐先アドレスに対する書き込みでなければ、OSの記憶保護割込へ分岐384を実行し、OSの記憶保護割込に分岐する。
【0028】
図8に第一の実施形態における仮想I/Oクライアント処理260の手順の詳細を示す。仮想I/Oクライアント処理は、I/Oデバイスの制御用メモリアドレスに書き込みを行なうと記憶保護割込によって呼び出され、ネットワークを介してサーバコンピュータ102 に接続されているI/Oデバイス914に対して読み出し/書き込みを行なう。まず、コマンド判定261でI/Oデバイスの制御用メモリアドレスに書き込まれたデータが読み出しコマンドであるか書き込みコマンドであるかを判定する。読み出しコマンドである場合は、読み出しコマンドの送信262で読み出しコマンドと読み出しコマンドのパラメータ(本実施形態ではセクタ番号とセクタ数)をサーバコンピュータ102 に送信を行ない、続いて読み出しデータの受信263でサーバコンピュータ102がI/O読み出し処理で得たデータを受信する。書き込みコマンドである場合は、書き込みコマンドの送信264で書き込みコマンドと書き込みコマンドのパラメータ(本実施形態ではセクタ番号とセクタ数)をサーバコンピュータ102に送信を行ない、続いて書き込みデータの送信265 で書き込みを行なうデータをサーバコンピュータ102に送信する。
【0029】
図9に第一の実施形態におけるNIA受信割込処理280の手順の詳細を示す。NIA受信割込処理280はサーバコンピュータ102で実行されるハイパバイザ内のプログラムで、NIA912がネットワークからデータを受信すると割込が発生して呼び出される。NIA 受信割込処理280が呼び出されると、仮想I/Oコマンド判定281を実行し、NIAが受信したデータがクライアントコンピュータ101の読み出しコマンドの送信262、もしくは書き込みコマンドの送信264であるものかどうかを判定する。読み出しコマンドの送信262、もしくは、書き込みコマンドの送信264 である場合は、仮想I/Oサーバ処理400を実行し、それ以外の場合は、OSのNIA受信割込処理へ分岐289を実行し、OSで受信割込処理を実行する。
【0030】
図10に第一の実施形態における仮想I/Oサーバ処理400の手順の詳細を示す。まず、コマンド判定288を実行し、読み出しコマンドか書き込みコマンドかを判定する。読み出しコマンドである場合は、I/Oデバイス914に対して読み出しコマンド発行282 を行ない読み出しコマンドと読み出しコマンドのパラメータ(本実施形態ではセクタ番号とセクタ数)をI/Oデバイスのメモリアドレスに書き込みを行なう。読み出しコマンド発行282 が行なわれると、I/O デバイス内でI/O読み出し処理283が実行され、I/Oデバイス914からデータの読み出しが行われる。続いて、読み出し結果の送信284 を行ない、I/Oデバイス914 から読み出したデータをクライアントコンピュータ101に送信する。書き込みコマンドである場合は、書き込みデータの受信285でクライアントコンピュータ101から書き込みデータを受信する。書き込みコマンド発行286が行なわれると、I/O デバイス内でI/O書き込み処理287が実行され、I/Oデバイス914へデータの書き込みが行われる。
【0031】
図11に第一、第二の実施形態で共通に用いられるクライアントコンピュータ101における起動時処理320の手順の詳細を示す。起動時処理320はクライアントコンピュータ101が起動する時に呼び出され、ハイパバイザの起動、OSの起動と記憶保護割込の設定が行う。
【0032】
まず、プログラムローダをディスクからメモリに転送し、プログラムローダ起動321を行う。プログラムローダは、ハイパバイザをディスクからメモリに転送し、ハイパバイザ起動322を行なう。ハイパバイザは、読み出しコマンド発行213、書き込みコマンド発行363、記憶保護割込アドレスの変更を記憶保護機構を用いて監視するために、特権レベル取得323と記憶保護割込設定324を行い、I/Oデバイスのメモリアドレス、もしくは、記憶保護割込の分岐先アドレスへの書き込み、読み出しがある場合に記憶保護割込みが発生し、記憶保護割込処理300へ分岐する様に設定する。
【0033】
ここで、特権レベルについて説明する。通常プロセッサはOSカーネルが動作する特権レベルと、ユーザプログラムが動作する一つ以上の非特権レベルを持っている。特権レベルでは一切の制限なく全てのハードウェアをアクセスでき、逆に非特権レベルではハードウェアへのアクセスは一切出来ないようになっている。特権レベル取得では、プロセッサの動作モードを切り替え、特権レベルを使用可能にした上で特権レベルでプログラムを動作させるようにする。
【0034】
続いて、プログラムローダは、OSをディスクからメモリに転送し、OSの起動325を行う。OSは 記憶保護割込設定326 記憶保護割込の分岐アドレスにOS の記憶保護割込処理のアドレスの書き込みを行なう。この時、従来は記憶保護割込処理がOSに設定されるが、本実施例では、記憶保護割込が発生し、ハイパバイザの記憶保護割込処理300内でOSの記憶保護割込304での分岐先アドレスとして登録される。
【0035】
図12に第一の実施形態におけるサーバコンピュータ102における起動時処理の手順の詳細を示す。起動時処理340はクライアントコンピュータ102が起動する時に呼び出され、ハイパバイザの起動、OSの起動、記憶保護割込の設定、NIA受信割込の設定を行なう。
【0036】
まず、プログラムローダをディスクからメモリに転送し、プログラムローダ起動341を行う。プログラムローダは、ハイパバイザをディスクからメモリに転送し、ハイパバイザ起動342を行なう。ハイパバイザは、NIA受信割込の分岐先アドレスと記憶保護割込の分岐先アドレスの変更を記憶保護機構を用いて監視するために、特権レベル取得343と記憶保護割込設定344を行い、記憶保護割込の分岐先アドレスとNIA受信割込の分岐先アドレスへの書き込み、読み出しがある場合に記憶保護割込みが発生し、記憶保護割込処理380へ分岐する様に設定する。さらに、NIA受信割込設定345 によりNIAがデータを受信した時にNIA 受信割込処理280へ分岐する様に設定する。
【0037】
続いて、プログラムローダは、OSをディスクからメモリに転送し、OSの起動346を行う。OSは 記憶保護割込設定347 で記憶保護割込の分岐先アドレスにOS の記憶保護割込処理のアドレスの書き込みを行なう。この時、従来は記憶保護割込処理がOSに設定されるが、本実施例では、記憶保護割込が発生し、ハイパバイザの記憶保護割込処理380内でOSの記憶保護割込384での分岐先アドレスとして登録される。同様に、OSは NIA受信割込設定348でNIA 受信割込の分岐先アドレスにOS のNIA受信割込処理のアドレスの書き込みを行なう。この時、従来はNIA受信割込処理がOSに設定されるが、本実施例では、記憶保護割込が発生し、ハイパバイザの記憶保護割込処理380内でOSのNIA受信割込処理へ分岐289での分岐先アドレスとして登録される。以上の手順により、記憶保護割込とNIA受信割込をハイパバイザへ分岐する様にできる。
【0038】
図13に第二の実施形態における仮想I/Oクライアント処理260の手順の詳細を示す。第二の実施形態では、サーバコンピュータのI/OデバイスへのコマンドをハイパバイザがサーバコンピュータのOSが解釈可能なプロトコルに変換してからコマンドをサーバコンピュータに送るところが第一の実施形態と異なる。まず、コマンド判定421でI/Oデバイスのメモリアドレスに書き込まれたデータが読み出しコマンドであるか書き込みコマンドであるかを判定する。
【0039】
読み出しコマンドである場合は、読み出しコマンドの変換422で読み出しコマンドをサーバコンピュータのOSが解釈可能なプロトコルに変換する。サーバコンピュータのOSがUNIX(X/Open Company Limitedが独占的にライセンスしている米国ならびに他の国における登録商標)であるならば、例えば、読み出しコマンドを rshサーバコンピュータdd if=I/Oデバイス名 skip=読み出し開始ブロック番号 count=読み出しを行なうブロック数 を実行した時にサーバコンピュータに送信されるデータとする。読み出しコマンドの送信423では読み出しコマンドの変換422によって作成されたコマンドをサーバコンピュータ102 に送信する。続いて読み出しデータの受信424でサーバコンピュータ102のOSが読み出しコマンドを実行した結果を受信する。
【0040】
書き込みコマンドである場合は、書き込みコマンドの変換425で書き込みコマンドをサーバコンピュータのOSが解釈可能なプロトコルに変換する。サーバコンピュータのOSがUNIXであるならば、例えば、書き込みコマンドを rshサーバコンピュータdd of=I/Oデバイス名 seek=書き込み開始ブロック番号 count=書き込みを行なうブロック数 を実行した時にサーバコンピュータに送信されるデータとする。書き込みコマンドの送信426は読み出しコマンドの変換425によって作成されたコマンドをサーバコンピュータ102 に送信する。続いて書き込みデータの送信427で書き込みを行なうデータをサーバコンピュータ102に送信する。
【0041】
以上のような実施の形態によって、I/Oデバイスの仮想化がハイパバイザによって行うことができるようになるため、サーバコンピュータとクライアントコンピュータのオペレーティングシステムやアプリケーションプログラムを変更することなく、サーバコンピュータに接続されたI/Oデバイスであっても、クライアントコンピュータに接続されたI/Oデバイスであるかのように扱うことができる。
【0042】
また、第二の実施の形態のように、上記クライアントコンピュータのハイパバイザの仮想I/Oクライアント処理は、サーバコンピュータのオペレーティングシステムでサポートされているプロトコルでサーバコンピュータに読み出しコマンドもしくは書き込みコマンドを送信する。
【0043】
これによって、I/Oデバイスの仮想化がクライアントコンピュータのハイパバイザによって行うことができるようになるため、クライアントコンピュータへハイパバイザを導入するだけで、サーバコンピュータとクライアントコンピュータのオペレーティングシステムやアプリケーションプログラムを変更することなく、サーバコンピュータに接続されたI/Oデバイスであっても、クライアントコンピュータに接続されたI/Oデバイスであるかのように扱うことができる。
【0044】
【発明の効果】
本発明によれば、クライアントコンピュータのOSが論理I/Oデバイスにアクセスすると、ハイパバイザがネットワークを介してサーバコンピュータのI/Oデバイスへコマンドを発行する。これにより、クライアントコンピュータとサーバコンピュータのOSが異なる場合でも、OSやアプリケーションプログラムを変更することなく、クライアントコンピュータからサーバコンピュータのI/Oデバイスをアクセスすることができる。
【図面の簡単な説明】
【図1】本発明を実施する計算機システムの構成図。
【図2】クライアントコンピュータのハードディスクに格納されたソフトウェア。
【図3】サーバコンピュータのハードディスクに格納されたソフトウェア。
【図4】読み出し処理を示すフローチャート。
【図5】書き込み処理を示すフローチャート。
【図6】クライアントコンピュータの記憶保護割込処理を示すフローチャート。
【図7】サーバコンピュータの記憶保護割込処理を示すフローチャート。
【図8】クライアントコンピュータの仮想I/O処理を示すフローチャート。
【図9】サーバコンピュータのNIA受信割込処理を示すフローチャート。
【図10】サーバコンピュータの仮想I/O処理を示すフローチャート。
【図11】クライアントコンピュータの起動時処理のフローチャート。
【図12】サーバコンピュータの起動時処理のフローチャート。
【図13】第二の実施形態におけるクライアントコンピュータの仮想I/O処理を示すフローチャート。
【符号の説明】
210:ファイルの読み出し、211:デバイスドライバの検索、
212:デバイスドライバの呼び出し、213:読み出しコマンド発行、
214:論理I/Oデバイスアクセス検出、
260:仮想I/Oクライアント処理。

Claims (8)

  1. 第1のハイパバイザと、その上で動作する第1のOSとを有するクライアントコンピュータと、第2のハイパバイザと、その上で動作する第2のOSと、物理I/Oデバイスとを有するサーバコンピュータとを備え、前記クライアントコンピュータと前記サーバコンピュータとはネットワークで接続されており、前記第1のハイパバイザは前記サーバコンピュータの前記物理I/Oデバイスへのアクセスである論理I/Oデバイスアクセスを検出する論理I/Oデバイスアクセス検出手段と、前記論理I/Oデバイスアクセスがあったとき、前記論理I/Oデバイスアクセスのコマンドを前記ネットワークを介して前記サーバコンピュータへ送信する仮想I/Oクライアント処理とを有し、前記第2のハイパバイザは前記コマンドを前記ネットワークを介して受信して前記物理I/Oデバイスへコマンドを発行する仮想I/Oサーバ処理を有することを特徴とする仮想化されたI/Oデバイスをもつ計算機システム。
  2. 前記クライアントコンピュータと前記サーバコンピュータの間での通信は前記第1と第2のハイパバイザが定めるプロトコルで行なわれることを特徴とする請求項1記載の仮想化されたI/Oデバイスをもつ計算機システム。
  3. 前記クライアントコンピュータと前記サーバコンピュータの間での通信は前記サーバコンピュータ上で動作する第2のOSのプロトコルで行なわれることを特徴とする請求項1記載の仮想化されたI/Oデバイスをもつ計算機システム。
  4. 前記仮想I/Oクライアント処理は前記論理I/Oデバイスアクセスのコマンドを前記サーバコンピュータの第2のOSが解釈可能なプロトコルに変換してから前記コマンドを前記サーバコンピュータに送ることを特徴とする請求項1記載の仮想化されたI/Oデバイスをもつ計算機システム。
  5. 前記クライアントコンピュータは記憶保護制御機能を有し、更に、前記記憶保護制御機能を用いて前記論理I/Oデバイスへの読み出しコマンドと書き込みコマンドとを検出し前記第1のハイパバイザへ制御を移す手段を有することを特徴とする請求項1記載の仮想化されたI/Oデバイスをもつ計算機システム。
  6. 前記クライアントコンピュータにおいて、特定のメモリアドレスに対する読み出し/書き込みが起きたときに記憶保護割込が発生し、記憶保護割込となった原因が前記論理I/Oデバイスへの読み出しコマンドの発行もしくは書き込みコマンドの発行であれば前記仮想I/Oクライアント処理を呼び出す手段を有することを特徴とする請求項5記載の仮想化されたI/Oデバイスをもつ計算機システム。
  7. 前記第1のOSはアプリケーションプログラムが指定したファイルを格納しているI/Oデバイスに対応するデバイスドライバを検索し、この検索によって見つかったデバイスドライバを呼び出す手段を有し、前記デバイスドライバは読み出しコマンドを発行し、読み出しコマンドを論理I/Oデバイスのメモリアドレスに書き込みを行なうことを特徴とする請求項6記載の仮想化されたI/Oデバイスをもつ計算機システム。
  8. 前記仮想I/Oクライアント処理はI/Oデバイスの制御用メモリアドレスに書き込まれたデータが読み出しコマンドか書き込みコマンドかを判定する手段と、読み出しコマンドである場合は読み出しコマンドと読み出しコマンドのパラメータを前記サーバコンピュータへ送信する手段と、前記サーバコンピュータがI/O読み出し処理で得たデータを受信する手段と、書き込みコマンドである場合は書き込みコマンドと書き込みコマンドのパラメータを前記サーバコンピュータに送信する手段と、書き込みデータを前記サーバコンピュータに送信する手段とを有することを特徴とする請求項1記載の仮想化されたI/Oデバイスをもつ計算機システム。
JP2003046885A 2003-02-25 2003-02-25 仮想化されたi/oデバイスをもつ計算機システム Withdrawn JP2004258840A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003046885A JP2004258840A (ja) 2003-02-25 2003-02-25 仮想化されたi/oデバイスをもつ計算機システム
US10/629,804 US20040167996A1 (en) 2003-02-25 2003-07-30 Computer system having a virtualized I/O device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003046885A JP2004258840A (ja) 2003-02-25 2003-02-25 仮想化されたi/oデバイスをもつ計算機システム

Publications (1)

Publication Number Publication Date
JP2004258840A true JP2004258840A (ja) 2004-09-16

Family

ID=32866553

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003046885A Withdrawn JP2004258840A (ja) 2003-02-25 2003-02-25 仮想化されたi/oデバイスをもつ計算機システム

Country Status (2)

Country Link
US (1) US20040167996A1 (ja)
JP (1) JP2004258840A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8032883B2 (en) 2009-04-28 2011-10-04 Kabushiki Kaisha Toshiba Controlling access from the virtual machine to a file
JP2011198157A (ja) * 2010-03-19 2011-10-06 Fujitsu Ltd 仮想計算機システム、仮想計算機制御装置および仮想計算機制御方法

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7249208B2 (en) * 2004-05-27 2007-07-24 International Business Machines Corporation System and method for extending the cross-memory descriptor to describe another partition's memory
US20050267998A1 (en) * 2004-05-27 2005-12-01 Ferguson Alan L Interchangeable communication modules for work machines
KR100697292B1 (ko) * 2005-10-04 2007-03-20 삼성전자주식회사 반도체 장치 및 그 형성 방법
US8572159B2 (en) * 2005-12-23 2013-10-29 Intel Corporation Managing device models in a virtual machine cluster environment
US20070240153A1 (en) * 2006-03-29 2007-10-11 Lenovo (Singapore) Pte. Ltd. System and method for installing hypervisor after user operating system has been installed and loaded
US20070240149A1 (en) * 2006-03-29 2007-10-11 Lenovo (Singapore) Pte. Ltd. System and method for device driver updates in hypervisor-operated computer system
US8176501B2 (en) * 2006-06-23 2012-05-08 Dell Products L.P. Enabling efficient input/output (I/O) virtualization
US7516658B2 (en) 2006-09-29 2009-04-14 Rosemount Inc. Electro-kinetic pressure/flow sensor
US7761612B2 (en) * 2006-12-07 2010-07-20 International Business Machines Corporation Migrating domains from one physical data processing system to another
US20080147909A1 (en) * 2006-12-18 2008-06-19 Winters Zhang Remote USB protocol for a heterogeneous system
US8312461B2 (en) * 2008-06-09 2012-11-13 Oracle America, Inc. System and method for discovering and protecting allocated resources in a shared virtualized I/O device
JP2010009396A (ja) * 2008-06-27 2010-01-14 Toshiba Corp 計算機システム、および計算機システムのデバイス制御方法
US8176304B2 (en) * 2008-10-22 2012-05-08 Oracle America, Inc. Mechanism for performing function level reset in an I/O device
US8225007B2 (en) * 2009-01-19 2012-07-17 Oracle America, Inc. Method and system for reducing address space for allocated resources in a shared virtualized I/O device
US8458368B2 (en) * 2009-05-26 2013-06-04 Oracle America, Inc. System and method for discovering and protecting shared allocated resources in a shared virtualized I/O device
US20110113426A1 (en) * 2009-11-09 2011-05-12 Hsiang-Tsung Kung Apparatuses for switching the running of a virtual machine between multiple computer devices belonging to the same computer platform and the associated switching methods
US8527745B2 (en) * 2009-12-07 2013-09-03 Oracle America, Inc. Input/output device including a host interface for processing function level reset requests and updating a timer value corresponding to a time until application hardware registers associated with the function level reset requests are available
US9201680B2 (en) * 2012-09-04 2015-12-01 Red Hat Israel, Ltd. Display power management in distributed virtualized systems
US10296356B2 (en) 2015-11-18 2019-05-21 Oracle International Corporations Implementation of reset functions in an SoC virtualized device

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619747B2 (ja) * 1984-01-18 1994-03-16 株式会社日立製作所 I/o命令実行方法、i/o割込処理方法およびそれらを用いた計算機システム
US4780821A (en) * 1986-07-29 1988-10-25 International Business Machines Corp. Method for multiple programs management within a network having a server computer and a plurality of remote computers
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
US5996026A (en) * 1995-09-05 1999-11-30 Hitachi, Ltd. Method and apparatus for connecting i/o channels between sub-channels and devices through virtual machines controlled by a hypervisor using ID and configuration information
US6629162B1 (en) * 2000-06-08 2003-09-30 International Business Machines Corporation System, method, and product in a logically partitioned system for prohibiting I/O adapters from accessing memory assigned to other partitions during DMA
US6708229B2 (en) * 2000-12-27 2004-03-16 Intel Corporation Configuring computer components
US6665759B2 (en) * 2001-03-01 2003-12-16 International Business Machines Corporation Method and apparatus to implement logical partitioning of PCI I/O slots
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
US6766398B2 (en) * 2001-04-17 2004-07-20 International Business Machines Corporation Method for processing PCI interrupt signals in a logically partitioned guest operating system
US6725284B2 (en) * 2002-04-25 2004-04-20 International Business Machines Corporation Logical partition hosted virtual input/output using shared translation control entries
US6944847B2 (en) * 2002-05-02 2005-09-13 International Business Machines Corporation Virtualization of input/output devices in a logically partitioned data processing system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8032883B2 (en) 2009-04-28 2011-10-04 Kabushiki Kaisha Toshiba Controlling access from the virtual machine to a file
JP2011198157A (ja) * 2010-03-19 2011-10-06 Fujitsu Ltd 仮想計算機システム、仮想計算機制御装置および仮想計算機制御方法
US8752046B2 (en) 2010-03-19 2014-06-10 Fujitsu Limited Virtual calculating machine system, virtual calculating machine control apparatus and virtual calculating machine control method

Also Published As

Publication number Publication date
US20040167996A1 (en) 2004-08-26

Similar Documents

Publication Publication Date Title
JP2004258840A (ja) 仮想化されたi/oデバイスをもつ計算機システム
KR101019937B1 (ko) 보안 운영 시스템 스위칭
JP4354488B2 (ja) 特権イベントを処理するための複数のバーチャルマシーンモニタの利用
RU2532708C2 (ru) Способ и устройство для осуществления операции ввода/вывода в среде виртуализации
US9519795B2 (en) Interconnect partition binding API, allocation and management of application-specific partitions
US8826269B2 (en) Annotating virtual application processes
US8544021B2 (en) Execution context isolation in a driver execution environment (DXE) with marshaling arguments to a common location in response to an LPC
US7707341B1 (en) Virtualizing an interrupt controller
US7533198B2 (en) Memory controller and method for handling DMA operations during a page copy
US6772419B1 (en) Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
US7209994B1 (en) Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
US10176007B2 (en) Guest code emulation by virtual machine function
US6275893B1 (en) Method and apparatus for providing seamless hooking and intercepting of selected kernel and HAL exported entry points in an operating system
US7434003B2 (en) Efficient operating system operation on a hypervisor
US8595723B2 (en) Method and apparatus for configuring a hypervisor during a downtime state
US20050246453A1 (en) Providing direct access to hardware from a virtual environment
KR101823888B1 (ko) 신뢰 컴퓨팅을 위한 다중노드 허브
KR20180099682A (ko) 가상 머신 감사를 위한 시스템 및 방법들
TW201120643A (en) Providing hardware support for shared virtual memory between local and remote physical memory
KR20090009866A (ko) 실행 중인 운영 체제를 이용하여 하이퍼바이저를 실행하는 컴퓨터 프로그램 제품 및 그 방법
JP2011100431A (ja) 仮想マシン制御装置及び仮想マシン制御方法
JP2007506162A (ja) バーチャルマシーンの動作の復帰に対する割込又は実行のベクトル処理
US11567884B2 (en) Efficient management of bus bandwidth for multiple drivers
JP4316882B2 (ja) エミュレートされるコンピューティング環境におけるプロセッサ制御の論理的置換のためのシステムおよび方法
EP4187387A1 (en) Inter-process communication method and apparatus, and computer storage medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060203

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20060203

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20071113