JP2004258840A - 仮想化されたi/oデバイスをもつ計算機システム - Google Patents
仮想化されたi/oデバイスをもつ計算機システム Download PDFInfo
- 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
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/45541—Bare-metal, i.e. hypervisor runs directly on hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
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
【解決手段】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クライアント処理。
【発明の属する技術分野】
本発明は、ネットワークを用いて接続された計算ノードをもつコンピュータシステムにおいて、特定の計算ノードに接続された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の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デバイスをもつ計算機システム。
- 前記クライアントコンピュータと前記サーバコンピュータの間での通信は前記第1と第2のハイパバイザが定めるプロトコルで行なわれることを特徴とする請求項1記載の仮想化されたI/Oデバイスをもつ計算機システム。
- 前記クライアントコンピュータと前記サーバコンピュータの間での通信は前記サーバコンピュータ上で動作する第2のOSのプロトコルで行なわれることを特徴とする請求項1記載の仮想化されたI/Oデバイスをもつ計算機システム。
- 前記仮想I/Oクライアント処理は前記論理I/Oデバイスアクセスのコマンドを前記サーバコンピュータの第2のOSが解釈可能なプロトコルに変換してから前記コマンドを前記サーバコンピュータに送ることを特徴とする請求項1記載の仮想化されたI/Oデバイスをもつ計算機システム。
- 前記クライアントコンピュータは記憶保護制御機能を有し、更に、前記記憶保護制御機能を用いて前記論理I/Oデバイスへの読み出しコマンドと書き込みコマンドとを検出し前記第1のハイパバイザへ制御を移す手段を有することを特徴とする請求項1記載の仮想化されたI/Oデバイスをもつ計算機システム。
- 前記クライアントコンピュータにおいて、特定のメモリアドレスに対する読み出し/書き込みが起きたときに記憶保護割込が発生し、記憶保護割込となった原因が前記論理I/Oデバイスへの読み出しコマンドの発行もしくは書き込みコマンドの発行であれば前記仮想I/Oクライアント処理を呼び出す手段を有することを特徴とする請求項5記載の仮想化されたI/Oデバイスをもつ計算機システム。
- 前記第1のOSはアプリケーションプログラムが指定したファイルを格納しているI/Oデバイスに対応するデバイスドライバを検索し、この検索によって見つかったデバイスドライバを呼び出す手段を有し、前記デバイスドライバは読み出しコマンドを発行し、読み出しコマンドを論理I/Oデバイスのメモリアドレスに書き込みを行なうことを特徴とする請求項6記載の仮想化されたI/Oデバイスをもつ計算機システム。
- 前記仮想I/Oクライアント処理はI/Oデバイスの制御用メモリアドレスに書き込まれたデータが読み出しコマンドか書き込みコマンドかを判定する手段と、読み出しコマンドである場合は読み出しコマンドと読み出しコマンドのパラメータを前記サーバコンピュータへ送信する手段と、前記サーバコンピュータがI/O読み出し処理で得たデータを受信する手段と、書き込みコマンドである場合は書き込みコマンドと書き込みコマンドのパラメータを前記サーバコンピュータに送信する手段と、書き込みデータを前記サーバコンピュータに送信する手段とを有することを特徴とする請求項1記載の仮想化されたI/Oデバイスをもつ計算機システム。
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)
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)
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)
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 |
-
2003
- 2003-02-25 JP JP2003046885A patent/JP2004258840A/ja not_active Withdrawn
- 2003-07-30 US US10/629,804 patent/US20040167996A1/en not_active Abandoned
Cited By (3)
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 |