(57)【要約】【課題】複数のＯＳが動作する仮想計算機システムに関し、複数のＯＳから同一のネットワークデバイスを共有し、データの送受信の際にもコピー動作による性能低下が生じず、余計なバッファも不要とする。【解決手段】複数のオペレーティングシステム１、２と、外部ネットワークとデータの送受信を行なうネットワークデバイス３と、前記各オペレーティングシステムのそれぞれに対応して設けられ、前記オペレーティングシステムの指示に基づいて、前記ネットワークデバイスを制御する複数のデバイスドライバ１ａ、２ａと、前記各デバイスドライバから指示を受けて、各指示に応じて前記ネットワークデバイスを制御する一方、前記ネットワークデバイスから割り込み指示を受けて、前記各デバイスドライバに対して割り込みを行なう仮想デバイス４と、を備える。【選択図】図１
2009157731.tif 000002
【特許請求の範囲】
【請求項１】
複数のオペレーティングシステムと、
外部ネットワークとデータの送受信を行なうネットワークデバイスと、
前記各オペレーティングシステムのそれぞれに対応して設けられ、前記オペレーティングシステムの指示に基づいて、前記ネットワークデバイスを制御する複数のデバイスドライバと、
前記各デバイスドライバから指示を受けて、各指示に応じて前記ネットワークデバイスを制御する一方、前記ネットワークデバイスから割り込み指示を受けて、前記各デバイスドライバに対して割り込みを行なう仮想デバイスと、を備えることを特徴とする仮想計算機システム。
【請求項２】
複数のオペレーティングシステムと、
外部ネットワークとデータの送受信を行なうネットワークデバイスと、
前記各オペレーティングシステムのそれぞれに対応して設けられ、前記オペレーティングシステムの指示に基づいて、前記ネットワークデバイスを制御する複数のデバイスドライバと、を備えると共に、
前記ネットワークデバイスは、前記各デバイスドライバから指示を受けて、各指示に応じて前記ネットワークデバイスを制御する一方、前記ネットワークデバイスから割り込み指示を受けて、前記各デバイスドライバに対して割り込みを行なう仮想デバイスを備えることを特徴とする仮想計算機システム。
【請求項３】
前記仮想デバイスは、
前記各デバイスドライバからの指示に基づいて、前記ネットワークデバイスの実レジスタに対して、値の設定を行なう仮想レジスタ部と、
前記各デバイスドライバからの割り込み登録設定を受ける一方、前記ネットワークデバイスから割り込みを受けて前記各デバイスドライバに対して割り込みを行なう割り込み制御部と、
前記各デバイスドライバから、前記ネットワークデバイスの実レジスタの読み取り開始ポインタおよび書き込み開始ポインタの値についての指示を受けて、前記ネットワークデバイスの実レジスタに対して設定する読み取り開始ポインタおよび書き込み開始ポインタの値を決定するポインタ管理部と、を備えることを特徴とする請求項１または請求項２記載の仮想計算機システム。
【請求項４】
前記仮想レジスタ部は、少なくとも、前記各デバイスドライバから指定された読み取り開始ポインタおよび書き込み開始ポインタの値を保持する第１のレジスタと、前記ネットワークデバイスの実レジスタに設定する読み取り開始ポインタおよび書き込み開始ポインタの値を保持する第２のレジスタと、を備えることを特徴とする請求項３記載の仮想計算機システム。
【請求項５】
前記ネットワークデバイスの実レジスタは、リングバッファであることを特徴とする請求項３または請求項４記載の仮想計算機システム。
【請求項６】
前記リングバッファは、複数の読み取りポインタと、少なくとも一つの書き込みポインタとを備え、
前記仮想デバイスは、前記ネットワークデバイスに対して、最も後方の読み取りポインタを実レジスタに設定することを特徴とする請求項５記載の仮想計算機システム。
【請求項７】
複数のオペレーティングシステムと、外部ネットワークとデータの送受信を行なうネットワークデバイスと、前記各オペレーティングシステムのそれぞれに対応して設けられ、前記オペレーティングシステムの指示に基づいて、前記ネットワークデバイスを制御する複数のデバイスドライバと、仮想デバイスと、から構成される仮想計算機システムの制御方法であって、
前記仮想デバイスにおいて、前記各デバイスドライバから指示を受けるステップと、
前記各指示に応じて前記ネットワークデバイスを制御するステップと、
前記ネットワークデバイスから割り込み指示を受けるステップと、
前記各デバイスドライバに対して割り込みを行なうステップと、を少なくとも含むことを特徴とする仮想計算機システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のオペレーティングシステムから同一の周辺機器を制御可能とする仮想計算機システムおよび仮想計算機システムの制御方法に関する。
【背景技術】
【０００２】
一般に、複数のオペレーティングシステム（以下、単に「ＯＳ」と呼称する。）が動作する仮想計算機システムでは、同一の周辺機器に対して複数のＯＳが同時にアクセスしないように設計されている。つまり、どちらか一方のＯＳが常時占有して使用するか、または各ＯＳが時分割で排他的に使用して周辺機器を共有するかのどちらかが一般的である。
【０００３】
後者の例としては、例えば、特開平７−２２５６９４号公報に開示された技術が知られている。この技術では、仮想計算機モニタ上で、各ＯＳが周辺機器にアクセスすることを監視し、現在の周辺機器の使用状態を格納する管理テーブルを用いて、時分割で排他的にアクセスさせることで、複数のＯＳによる周辺機器の共有を可能としている。また、仮想計算機システムの例として、ＶＭＷＡＲＥ（登録商標）が挙げられ、複数のＯＳによる周辺機器の共有を可能としている。
【０００４】
図５は、従来のシステム構成の一例を示すブロック図である。このシステムは、ＯＳ４０、ＯＳ４０のデバイスドライバ、およびネットワークデバイス４２から構成されている。デバイスドライバ４０は、バッファ４１ａ、割込み管理部４１ｂ、およびポインタ管理部４１ｃから構成されている。また、ネットワークデバイス４２は、レジスタ４２ａ、割込み管理部４２ｂおよび送受信バッファ４２ｃから構成されている。この送受信バッファ４２ｃは、メモリ配列の先頭と末尾とを論理的に接続したリングバッファである。なお、図５において、Ｒは、デバイスドライバの読み込み開始ポインタであり、Ｗは、デバイスドライバの書き込み開始ポインタである。
【０００５】
図６は、従来のシステムを模式的に表したブロック図である。このシステムは、ＣＰＵ５０、メインメモリ５１およびネットワークデバイス４２がシステムバス５２を介して接続されている。ネットワークデバイス４２は、送受信バッファ４２ｃを備えている。このネットワークデバイス４２のデータ送受信処理は、次のように行なわれる。すなわち、図６に示すように、システムバス５２を介して、システムがメインメモリ５１内に確保したデータ送受信用のバッファとネットワークデバイス４２のデータ送受信用のバッファ４２ｃとが接続され、両バッファ間でデータの送受信が行なわれる。ネットワークデバイス４２では、ネットワークデバイス４２の物理ＭＡＣ／ＰＨＹ層を介して外部のネットワークと接続して、データの送受信を行なっている。システムがデータを送受信するには、システムが確保したバッファ５１およびネットワークデバイス４２のデータ送受信用のバッファ４２ｃの間において、データをやりとりし、ネットワークデバイス４２が外部のネットワークとデータ送受信することで実現される。
【０００６】
システムがデータを送信するには、システムのデータ送受信バッファ５１からネットワークデバイス４２のデータ送受信バッファ４２ｃに送信するデータをコピーする。そして、ネットワークデバイス４２が、外部のネットワークにデータを送信する。逆に、システムがデータを取得するには、ネットワークデバイス４２のデータ送受信バッファ４２ｃからシステム用のデータ送受信バッファ５１にデータをコピーする。予め、ネットワークデバイス４２では、外部のネットワークから自分宛のデータを取得して、ネットワークデバイス用のデータ送受信バッファ４２ｃに格納している。
【特許文献１】特開平７−２２５６９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特開平７−２２５６９４号公報に開示された技術では、例えば、ネットワークデバイス、Ｉ２Ｃ、ＩＥＥＥ、ＦＤＤＩなどの周辺機器に対しては、データを受信した際に、どちらのＯＳに対して処理を行なわせるかを判定できない。このため、データ受信時にはこの技術を適用することはできない。
【０００８】
また、仮想計算機の例として挙げられるＶＭＷＡＲＥなどでは、例えばネットワークデバイスに対して、複数のＯＳによる共有が可能となっている。しかしながら、データ送受信時には、ネットワークデバイスのバッファとは直接やり取りを行なわず、仮想デバイスに対して一度コピー動作を行なっている。このため、性能低下が生じている。また、仮想デバイス内に、コピー動作のためのバッファを余計に確保する必要がある。
【０００９】
本発明は、このような事情に鑑みてなされたものであり、複数のＯＳが動作する仮想計算機システムに関し、複数のＯＳから同一のネットワークデバイスを共有し、データの送受信の際にもコピー動作による性能低下が生じず、余計なバッファも不要とすることができる仮想計算機システムおよび仮想計算機システムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
（１）上記の目的を達成するために、本発明は、以下のような手段を講じた。すなわち、本発明の仮想計算機システムは、複数のオペレーティングシステムと、外部ネットワークとデータの送受信を行なうネットワークデバイスと、前記各オペレーティングシステムのそれぞれに対応して設けられ、前記オペレーティングシステムの指示に基づいて、前記ネットワークデバイスを制御する複数のデバイスドライバと、前記各デバイスドライバから指示を受けて、各指示に応じて前記ネットワークデバイスを制御する一方、前記ネットワークデバイスから割り込み指示を受けて、前記各デバイスドライバに対して割り込みを行なう仮想デバイスと、を備えることを特徴としている。
【００１１】
このように、仮想デバイスが、各デバイスドライバから指示を受けて、各指示に応じてネットワークデバイスを制御する一方、ネットワークデバイスから割り込み指示を受けて、前記各デバイスドライバに対して割り込みを行なうので、データ受信の動作を複数のオペレーティングシステムに行なわせることが可能となる。
【００１２】
（２）また、本発明の仮想計算機システムは、複数のオペレーティングシステムと、外部ネットワークとデータの送受信を行なうネットワークデバイスと、前記各オペレーティングシステムのそれぞれに対応して設けられ、前記オペレーティングシステムの指示に基づいて、前記ネットワークデバイスを制御する複数のデバイスドライバと、を備えると共に、前記ネットワークデバイスは、前記各デバイスドライバから指示を受けて、各指示に応じて前記ネットワークデバイスを制御する一方、前記ネットワークデバイスから割り込み指示を受けて、前記各デバイスドライバに対して割り込みを行なう仮想デバイスを備えることを特徴としている。
【００１３】
このように、ネットワークデバイスが備える仮想デバイスが、各デバイスドライバから指示を受けて、各指示に応じてネットワークデバイスを制御する一方、ネットワークデバイスから割り込み指示を受けて、前記各デバイスドライバに対して割り込みを行なうので、データ受信の動作を複数のオペレーティングシステムに行なわせることが可能となる。
【００１４】
（３）また、本発明の仮想計算機システムにおいて、前記仮想デバイスは、前記各デバイスドライバからの指示に基づいて、前記ネットワークデバイスの実レジスタに対して、値の設定を行なう仮想レジスタ部と、前記各デバイスドライバからの割り込み登録設定を受ける一方、前記ネットワークデバイスから割り込みを受けて前記各デバイスドライバに対して割り込みを行なう割り込み制御部と、前記各デバイスドライバから、前記ネットワークデバイスの実レジスタの読み取り開始ポインタおよび書き込み開始ポインタの値についての指示を受けて、前記ネットワークデバイスの実レジスタに対して設定する読み取り開始ポインタおよび書き込み開始ポインタの値を決定するポインタ管理部と、を備えることを特徴としている。
【００１５】
この構成により、コピー動作を行なうことなくデータ受信を行なうことができるので、コピー動作による性能低下を回避することが可能となる。また、余分なバッファを設ける必要がなくなるため、メモリ資源の節約および有効活用が可能となる。
【００１６】
（４）また、本発明の仮想計算機システムにおいて、前記仮想レジスタ部は、少なくとも、前記各デバイスドライバから指定された読み取り開始ポインタおよび書き込み開始ポインタの値を保持する第１のレジスタと、前記ネットワークデバイスの実レジスタに設定する読み取り開始ポインタおよび書き込み開始ポインタの値を保持する第２のレジスタと、を備えることを特徴としている。
【００１７】
この構成により、仮想デバイスが、各デバイスドライバに代わってネットワークデバイスに対する処理を行なうことが可能となり、データ受信の動作を複数のオペレーティングシステムに行なわせることが可能となる。
【００１８】
（５）また、本発明の仮想計算機システムにおいて、前記ネットワークデバイスの実レジスタは、リングバッファであることを特徴としている。
【００１９】
この構成により、固定長のメモリを有効に活用することができると共に、データが頻繁に更新される場合でも、適切な処理を行なうことが可能となる。
【００２０】
（６）また、本発明の仮想計算機システムにおいて、前記リングバッファは、複数の読み取りポインタと、少なくとも一つの書き込みポインタとを備え、前記仮想デバイスは、前記ネットワークデバイスに対して、最も後方の読み取りポインタを実レジスタに設定することを特徴としている。
【００２１】
この構成により、最も後方の読み取りポインタよりも前にデータを書き込まないように制御することが可能となる。また、コピー動作を行なうことなくデータ受信を行なうことができるので、コピー動作による性能低下を回避することが可能となる。また、余分なバッファを設ける必要がなくなるため、メモリ資源の節約および有効活用が可能となる。
【００２２】
（７）また、本発明の仮想計算機システムの制御方法は、複数のオペレーティングシステムと、外部ネットワークとデータの送受信を行なうネットワークデバイスと、前記各オペレーティングシステムのそれぞれに対応して設けられ、前記オペレーティングシステムの指示に基づいて、前記ネットワークデバイスを制御する複数のデバイスドライバと、仮想デバイスと、から構成される仮想計算機システムの制御方法であって、前記仮想デバイスにおいて、前記各デバイスドライバから指示を受けるステップと、前記各指示に応じて前記ネットワークデバイスを制御するステップと、前記ネットワークデバイスから割り込み指示を受けるステップと、前記各デバイスドライバに対して割り込みを行なうステップと、を少なくとも含むことを特徴としている。
【００２３】
このように、仮想デバイスが、各デバイスドライバから指示を受けて、各指示に応じてネットワークデバイスを制御する一方、ネットワークデバイスから割り込み指示を受けて、前記各デバイスドライバに対して割り込みを行なうので、データ受信の動作を複数のオペレーティングシステムに行なわせることが可能となる。
【発明の効果】
【００２４】
本発明によれば、複数のオペレーティングシステムから仮想デバイスを介して周辺機器にアクセスすることによって、複数のオペレーティングシステムから同一の周辺機器の制御が可能となる。例えば、複数のオペレーティングシステムから仮想デバイスを介してネットワークデバイスにアクセスする場合は、データの送受信動作において、データのバッファ間のコピー動作を行なうことによる性能低下を回避することができると共に、そのためのバッファを設ける必要がなくなる。
【発明を実施するための最良の形態】
【００２５】
（第１の実施形態）
次に、本発明の実施の形態について、図面を参照しながら説明する。図１は、本発明の仮想計算機システムの概略構成を示すブロック図である。この仮想計算機システムは、第１のＯＳ１および第１のデバイスドライバ１ａと、第２のＯＳ２および第２のデバイスドライバ２ａと、外部のネットワークとデータ送受信を行なうネットワークデバイス３と、第１のＯＳ１または第２のＯＳ２からネットワークデバイス３の共有を可能とする仮想デバイス４と、で構成されている。第１のデバイスドライバ１ａおよび第２のデバイスドライバ２ａは、それぞれバッファ１ｂ、２ｂ、ポインタ管理部１ｃ、２ｃ、割込み管理部１ｄ、２ｄとから構成されている。また、ネットワークデバイス３は、レジスタ３ａ、送受信バッファ３ｂ、および割込み管理部３ｃにより構成されている。但し、これはあくまでも例示であって、ＯＳおよびそのデバイスドライバは２つのみに限定されるわけではない。本実施形態では、ＯＳおよびそのデバイスドライバが２つずつである場合を例にとって説明する。
【００２６】
仮想デバイス４は、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａから要求を受け、ネットワークデバイス３の実レジスタに対して、実際に値の設定を行なう仮想レジスタ部４ａと、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａからの割込み登録設定を行ない、さらに、ネットワークデバイス３から割り込みを受けて、第１のＯＳ１または第２のＯＳ２に対して割り込みを行なう割り込み管理部４ｂと、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａからネットワークデバイス３のバッファの読み取り開始ポインタまたは書き込み開始ポインタの指定を受けて、実際にネットワークデバイス３に対して設定するバッファの読み取り開始ポインタまたは書き込み開始ポインタの値を決定するポインタ管理部４ｃと、から構成されている。なお、図１において、ｒ１は、第１のＯＳ１用の読み込み開始ポインタであり、ｒ２は、第２のＯＳ２用の読み込み開始ポインタである。また、Ｒは、各デバイスドライバの読み込み開始ポインタであり、Ｗは、各デバイスドライバの書き込み開始ポインタである。
【００２７】
仮想レジスタ部４ａは、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａから指定された読み取り開始ポインタまたは書き込み開始ポインタを保持するレジスタを備え、さらに、実際にネットワークデバイス３に設定する読み取り開始ポインタ、書き込み開始ポインタの値を保持するレジスタを備える。なお、仮想レジスタ部４ａは、割り込みマスクレジスタなどネットワークデバイス３の実レジスタが備えているものは全て備えている。
【００２８】
本実施形態に係るシステム構成では、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａは、デバイス初期化設定、データ送受信設定、レジスタ設定、割込み設定など、通常の実デバイスに行なっていた設定を、同じように仮想デバイス４に対して行なう。
【００２９】
仮想デバイス４は、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａからデバイスの初期化、データ送受信、割り込みなどの設定を受けると、実際のネットワークデバイス３に対してこれらの処理を行なう。例えば、デバイスの初期化処理では、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａごとにネットワークデバイス３の初期化を複数回行なうのではなく、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａが仮想デバイス４にデバイス初期化の設定を行なうと、仮想デバイス４が実際のネットワークデバイス３に対して、一度だけ初期化を行なうようにする。
【００３０】
また、データ送受信処理では、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａが仮想デバイス４に対して、データの転送元、転送先、転送サイズを設定することで、仮想デバイス４が実際のネットワークデバイス３とデータ転送を行なう。また、割込み処理では、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａが仮想デバイス４に対して割込み登録設定を行なうと、仮想デバイス４が実際のネットワークデバイス３に対して割込み登録を行なう。仮想デバイス４は、ネットワークデバイス３から割り込みを受けると、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａに対して割り込みを行なう。
【００３１】
次に、仮想デバイス４を介した第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａによるネットワークデバイス３の初期化、データ送受信、割込みの各処理について説明する。本実施形態では、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａは、常に仮想デバイス４を介して、ネットワークデバイス３に対して、データを送受信する。第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａは、これまでと同じように通常の実デバイスに対して行なっていた設定を、仮想デバイス４に対して行なう。
【００３２】
仮想デバイス４を介して、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａがネットワークデバイス３とデータを送受信する動作について説明する。例えば、ＶＭＷＡＲＥ（登録商標）のように、従来の仮想デバイスを用いた送受信では図５および図６に示したように、仮想デバイス内にバッファを用意し、データ送受信時に、一旦仮想デバイスに対してバッファのコピーが行なわれていた。そのため、性能の低下が起こり、また、仮想デバイスでのコピー処理のために、余計なバッファが必要となっていた。
【００３３】
これに対し、本実施形態では、仮想デバイス４でコピー動作を行なわずに、複数のＯＳのデバイスドライバ（第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａ）の送受信バッファと、ネットワークデバイス３の送受信バッファの間でデータを転送して、データ送受信を行なう。このため、従来技術と比べて、性能の低下もなく、余計なバッファが必要ではなくなる。また、上記のネットワークデバイス３の送受信バッファは、リングバッファを想定している。
【００３４】
仮想デバイス４は、データ送受信を行なうためには、ネットワークデバイス３の初期化処理、ネットワークデバイス３の割り込み処理、ネットワークデバイス３のデータ送受信バッファの読み込み開始ポインタおよび書き込み開始ポインタの設定、ネットワークデバイスの送受信バッファのデータ転送が必要である。
【００３５】
仮想デバイス４を介したネットワークデバイス３の初期化処理は、図２に示す手順で行われる。図２は、ネットワークデバイスの初期化処理の手順を示すフローチャートである。第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａから初期化設定が行なわれても、仮想デバイス４は、実際のネットワークデバイス３に対して１回だけ初期化設定を行なう。既に、ネットワークデバイス３に対して初期化処理が行なわれている場合は、初期化処理は行なわない。
【００３６】
図２に示すように、第１または第２のＯＳ２のデバイスドライバが仮想デバイス４に対してデバイスの初期化処理を行なう（ステップＳ１）。仮想デバイス４は、ネットワークデバイス３に対して初期化処理が行なわれているかどうかを判断し（ステップＳ２）、初期化処理が行なわれていない場合のみ、実際にネットワークデバイス３の初期化処理を行なう。仮想デバイス４が行なうネットワークデバイス３の初期化の手順は、一般にＯＳのデバイスドライバがネットワークデバイスに対して行なう設定と同じである。
【００３７】
すなわち、まず、ネットワークデバイスの初期化処理として、実レジスタのリセットレジスタに書込み、リセット処理を行なう（ステップＳ３）。次に、割り込みステータスレジスタや割り込みマスクレジスタなど、ネットワークデバイスの各レジスタをクリアする（ステップＳ４）。ＭＡＣアドレスを物理アドレスレジスタに設定する（ステップＳ５）。
【００３８】
次に、ネットワークデバイスの送受信バッファをクリアし、ネットワークデバイスの送受信バッファをリングバッファとして使用するため、送受信で用いるバッファの格納開始位置を示す格納開始レジスタ、格納終了位置を示す格納終了レジスタ、現在の書き込み開始位置を示す書き込み開始ポインタを格納する書込み開始レジスタ、現在の読み込み開始位置を示す読み込み開始ポインタを格納する読み込み開始レジスタなどの各レジスタをクリアする（ステップＳ６）。また、データの送受信通知を割り込みにより受けるため、割り込み関連のレジスタを初期化し、割り込みマスクを解除して割り込み受付可能状態にする（ステップＳ７）。
【００３９】
次に、割込み処理について説明する。図３は、本実施形態に係る割込み処理の手順を示すフローチャートである。図３に示すように、まず、ＯＳの第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａは、仮想デバイス４に対して、割り込みハンドラの登録など割り込みの設定を行なう（ステップＴ１）。次に、ＯＳの第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａが仮想デバイス４に対して、読み込み開始ポインタまたは書き込み開始ポインタの設定を行なう（ステップＴ２）。
【００４０】
ネットワークデバイス３のバッファ３ｂと、第１のデバイスドライバ１ａのバッファ１ｂまたは第２のデバイスドライバ２ａのバッファ２ｂとの間で、データ転送を行なう（ステップＴ３）。仮想デバイス４は、管理している複数のデバイスドライバの読み込み開始ポインタを更新する（ステップＴ４）。仮想デバイス４は、ポインタ管理部４ｃが複数のネットワークドライバの読み込み開始ポインタからネットワークデバイス３に設定する読み込み開始ポインタを決定する。設定する読み込み開始ポインタは、複数のネットワークドライバのうち、最も後方のポインタとする（ステップＴ５）。最後に、仮想デバイス４は、読み込み開始ポインタをネットワークデバイス３のレジスタ３ａに入力して更新する（ステップＴ６）。
【００４１】
ネットワークデバイス３の送受信バッファ３ｂは、リングバッファであることを想定している。この「リングバッファ」とは、メモリ配列の先頭と末尾を論理的に接続したもので、メモリ配列の末尾の次はメモリ配列の先頭に戻るようにしてバッファを構成となる。固定長のメモリを有効に利用でき、頻繁にデータが更新される場合に適したバッファ構成である。リングバッファには、読み取り開始ポインタと書き込み開始ポインタが存在する。書き込み開始ポインタは読み込み開始ポインタを超えて書き込むことはできない。
【００４２】
一般的に、受信バッファでは、書き込み開始ポインタはハード側が制御し、読み込み開始ポインタはソフト側が制御する。送信バッファでは書き込み開始ポインタはソフト側が制御し、読み込み開始ポインタはハード側が制御する。
【００４３】
次に、仮想デバイス４を介したネットワークデバイス３のデータ受信時の処理について説明する。一般に、ＯＳのネットワークデバイスドライバでは、自身宛に送信されたデータかを判定し、自分宛でなければ、パケットデータの破棄を行なう。本実施形態では、ネットワークデバイス３で取得したデータを、仮想デバイス４側でどちらのＯＳに対するデータかを判断するのではなく、両方のＯＳのネットワークデバイスドライバに、データを送信して処理を行なわせる。
【００４４】
データを受信する時には、ネットワークデバイス３から仮想デバイス４に対して割込みが発生し、仮想デバイスから第１のデバイスドライバ１ａおよび第２のデバイスドライバ２ａの両方に対して、ＯＳのネットワークデバイスドライバに対して割り込みを掛けて、バッファ間の転送を行なって、データの転送を行なう。ここで、第１のデバイスドライバ１ａおよび第２のデバイスドライバ２ａは、それぞれ読み込みを行ない、読み込んだデータが自分宛でない場合は、それを破棄する。
【００４５】
本実施形態において実装するネットワークの受信バッファは、１つの読み取り開始ポインタと１つの書き込み開始ポインタを備えたリングバッファであり、最も後方の読み取り開始ポインタを越えて、仮想デバイスを介してデータを書き込まないように制御する。
【００４６】
仮想デバイス４は、ネットワークデバイス３の受信バッファからそれぞれのＯＳのデバイスドライバの受信バッファにデータ転送を行なうように、ネットワークデバイスに対して設定する。なお、データ転送は、ネットワークデバイス３の受信バッファと、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａの受信バッファ１ｂまたはバッファ２ｂの間で直接行なわれる。そして、仮想デバイス４は、データの読み取り処理後に、仮想デバイス４の仮想レジスタ部４ａに、読み取り開始ポインタを更新する。もう一方の読み取り開始ポインタと比較して、最も後方の読み取り開始ポインタであるかを判定し、読み取り開始ポインタが最も後方である場合に、実際のネットワークデバイス３の実レジスタに読み取り開始ポインタを更新する。
【００４７】
図４は、仮想デバイス４を介した、ネットワークデバイス３のデータ送信時の処理を示すフローチャートである。ネットワークデバイス３の送信バッファ３ｂは、読み取り開始ポインタと書き込み開始ポインタを１つずつ備えたリングバッファであり、読み取り開始ポインタを越えて、データを書き込まないように制御する。まず、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａからのデータ書き込み要求がくると（ステップＲ１）、仮想デバイス４は、第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａの送信バッファ１ｂまたは送信バッファ２ｂから、実際のネットワークデバイス３の送信バッファへデータ転送を行なうように設定する（ステップＲ２）。次に、仮想デバイス４は、仮想デバイス４の仮想レジスタ部４ａに、書き込み開始ポインタを更新する（ステップＲ３）。次に、ネットワークデバイス３のレジスタ３ａに、書き込み開始ポインタの値を更新する（ステップＲ４）。
【００４８】
このように複数のＯＳのデバイスドライバからのデータ送信は、シーケンシャルに行なう。第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａとネットワークデバイス３との間で、バッファ転送を行なって、データを送信する。送信完了の割り込みは、バッファ間転送を行なった第１のデバイスドライバ１ａまたは第２のデバイスドライバ２ａに対してそれぞれ行なう。
【００４９】
（第２の実施形態）
第１の実施形態では、ネットワークデバイス３の共有を、仮想デバイス４を別途備えることで実現したが、第２の実施形態では、仮想デバイス４の機能をネットワークデバイス３に持たせることにより実現する。ネットワークデバイスに複数のＯＳ用の読み取り開始ポインタを格納するレジスタを用意し、複数のＯＳのデバイスドライバから制御を受け、データ送受信を行なう。図１で示したネットワークデバイスに、従来備えているレジスタに加えて、第１のＯＳ１用の読み込み開始ポインタを格納するレジスタ、第２のＯＳ２用の読み込み開始ポインタを格納するレジスタの２つを用意する。また、第１のＯＳ１用の読み込み開始ポインタと第２のＯＳ２用の読み込み開始ポインタの２つから、ネットワークデバイスに設定する読み込み開始ポインタを求めるポインタ管理部を設ける。ポインタ管理部から出力された読み込み開始ポインタは、ネットワークデバイスの読み込み開始ポインタを格納するレジスタに対して設定される。
【００５０】
逆に、書込みを行なう場合は、第１のＯＳ１用の書き込み開始ポインタを格納するレジスタ、第２のＯＳ２用の書き込みポインタを格納するレジスタの２つを別途用意する。第１のＯＳ１用の書き込み開始ポインタと第２のＯＳ２用の書き込み開始ポインタの２つから、ネットワークデバイスに設定する書き込み開始ポインタを求めるポインタ出力部を設ける。ポインタ管理部は、このポインタ出力部として機能する。ポインタ出力部としてのポインタ管理部から出力された書き込み開始ポインタはネットワークデバイスの読み込み開始ポインタを格納するレジスタに対して保存する。データ送受信処理の流れは、第１の実施形態と同様であるので、省略する。
【００５１】
以上のように、本発明の実施形態について説明を行なったが、今回開示した実施形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれる。
【図面の簡単な説明】
【００５２】
【図１】本発明の仮想計算機システムの概略構成を示すブロック図である。
【図２】ネットワークデバイスの初期化処理の手順を示すフローチャートである。
【図３】本実施形態に係る割込み処理の手順を示すフローチャートである。
【図４】仮想デバイスを介した、ネットワークデバイスのデータ送信時の処理を示すフローチャートである。
【図５】従来のシステム構成の一例を示すブロック図である。
【図６】従来のシステムを模式的に表したブロック図である。
【符号の説明】
【００５３】
１  第１のＯＳ
１ａ  第１のデバイスドライバ
１ｂ  バッファ
１ｃ  ポインタ管理部
１ｄ  割込み管理部
２  第２のＯＳ
２ａ  第２のデバイスドライバ
２ｂ  バッファ
２ｃ  ポインタ管理部
２ｄ  割込み管理部
３  ネットワークデバイス
３ａ  レジスタ
３ｂ  送受信バッファ
３ｃ  割込み管理部
４  仮想デバイス
４ａ  仮想レジスタ部
４ｂ  割込み管理部
４ｃ  ポインタ管理部
【図１】
2009157731.tif 000003
【図２】
2009157731.tif 000004
【図３】
2009157731.tif 000005
【図４】
2009157731.tif 000006
【図５】
2009157731.tif 000007
【図６】
2009157731.tif 000008