(57)【要約】【課題】ＰＣ間のデバイス共有を容易にする。【解決手段】ＰＣ１０１の備えるネットワークカード１０８について、自身のＰＣ１０１に接続されたデバイス１０６のＩＤごとに、そのデバイス１０６のアドレス情報を示したデバイス管理情報２０８を備える構成とした。そして、このネットワークカード１０８は、他のＰＣ１１１から、デバイス１０６のデバイス制御メッセージを受信したとき、このデバイス制御メッセージに示されるデバイスのＩＤと、デバイス管理情報２０８とを参照して、どのデバイスのどのアドレスへのアクセス要求かを判断する。そして、その判断結果に基づき、ＣＰＵ１０２を経由せず、直接そのデバイス１０６へ処理を実行する。【選択図】図１
2010176212.tif 000002
【特許請求の範囲】
【請求項１】
端末装置に接続されたネットワーク機器であって、
前記端末装置に接続されたデバイスの識別情報および前記デバイスの前記端末装置上のアドレスを示すデバイス管理情報を記憶する記憶部と、
他の端末装置からネットワークを介して送信されたデバイス制御情報を受信する通信処理部と、
前記受信したデバイス制御情報に示されるデバイスの識別情報を読み出し、前記デバイス管理情報を用いて前記読み出した識別情報に対応するデバイスのアドレスを特定し、前記端末装置のＣＰＵを経由せずに、前記デバイス制御情報に従って前記特定したアドレスのデバイスへアクセスする通信部と、
を備えることを特徴とするネットワーク機器。
【請求項２】
前記通信処理部は、
他の端末装置からカプセル化されたデバイス制御情報を受信し、
前記通信部は、
前記受信したデバイス制御情報をデカプセル化し、前記デカプセル化したデバイス制御情報に示されるアクセス先のデバイスの識別情報を読み出すリモート通信部と、
前記読み出したアクセス先のデバイスの識別情報と、前記デバイス管理情報とを参照して、前記アクセス先のデバイスのアドレスを特定し、前記デバイス制御情報に従い、前記特定したアドレスのデバイスからのデータの読み出し、または、データの書き込みを実行するローカル通信部とを備えることを特徴とする請求項１に記載のネットワーク機器。
【請求項３】
前記リモート通信部は、
前記デバイスから読み出されたデータ、または、データの書き込み結果をカプセル化し、前記他の端末装置へ送信することを特徴とする請求項２に記載のネットワーク機器。
【請求項４】
請求項２または請求項３に記載のネットワーク機器を備える端末装置であって、
前記ネットワーク機器のデバイス管理情報は、
前記他の端末装置に接続されたデバイスの識別情報ごとに、前記デバイスの接続される端末装置のネットワークアドレスを示した情報をさらに含み、
前記端末装置は、
前記端末装置に接続されたデバイスおよび他の端末装置に接続されたデバイスの識別情報ごとに、前記デバイスのアドレスを示したアドレス情報を記憶する記憶部と、
前記デバイスへのアクセス要求を受け付けたとき、前記アドレス情報と、前記アクセス要求に示されるアクセス先のデバイスのアドレスとを参照して、前記アクセス先のデバイスのアドレスが、前記ネットワーク機器配下のアドレスであるとき、前記ネットワーク機器に対し、前記デバイスへのアクセス要求を依頼するアクセス処理部とを備え、
前記アクセス処理部から、前記デバイスへのアクセス要求の依頼を受け付けたとき、前記デバイス管理情報を参照して、前記デバイスの接続される端末装置のネットワークアドレスを特定し、ネットワーク経由で、前記アクセス要求をカプセル化したデバイス制御情報を、前記特定したネットワークアドレスに該当する他の端末装置のデバイス宛に送信することを特徴とする端末装置。
【請求項５】
前記端末装置は、
ネットワーク経由で、他の端末装置から、当該他の端末装置が備えるデバイスの識別情報を示したデバイス情報および当該他の端末装置のネットワークアドレスを受信する受信処理部と、
前記受信したデバイス情報に含まれるデバイスの識別情報に対し、自身の端末装置におけるネットワーク機器配下のアドレスを割り当て、前記デバイスの識別情報と、前記割り当てたアドレスとを対応付けた情報を、前記ネットワーク機器へ出力し、前記対応付けた情報を前記アドレス情報に記録するアドレス管理部とをさらに備え、
前記ネットワーク機器は、
前記アドレス管理部から出力された前記デバイスの識別情報およびネットワークアドレスを前記デバイス管理情報に記録することを特徴とする請求項４に記載の端末装置。
【請求項６】
前記ネットワーク機器は、
自身の端末装置に接続されたデバイスのデバイス情報を、ネットワーク経由で、他の端末装置へ送信することを特徴とする請求項４または請求項５に記載の端末装置。
【請求項７】
端末装置の備えるネットワーク機器が、
他の端末装置からデバイス制御情報を受信し、
自身の端末装置に接続されたデバイスの識別情報ごとに、前記デバイスのアドレス情報を示したデバイス管理情報と、前記受信したデバイス制御情報に示されるアクセス先のデバイスの識別情報とを参照して、前記デバイスの前記自身の端末装置におけるアドレスを特定し、
前記デバイス制御情報に従い、前記特定したアドレスのデバイスからのデータの読み出し、または、データの書き込みを実行するアクセス制御方法。
【請求項８】
デバイスが接続された第１の端末装置と、ネットワーク経由で、前記デバイスへアクセスする第２の端末装置とを含んでなるデバイス共有システムであって、
前記第２の端末装置は、
前記端末装置に接続されたデバイスおよび他の端末装置に接続されたデバイスの識別情報ごとに、前記デバイスのアドレスを示したアドレス情報を記憶する記憶部と、
前記デバイスへのアクセス要求を受け付けたとき、前記アドレス情報と、前記アクセス要求に示されるアクセス先のデバイスのアドレスとを参照して、前記アクセス先のデバイスのアドレスが、前記ネットワーク機器配下のアドレスであるとき、前記ネットワーク機器に対し、前記デバイスへのアクセス要求を依頼するアクセス処理部と、
前記アクセス処理部から、前記デバイスへのアクセス要求の依頼を受け付けたとき、前記第１の端末装置に接続されたデバイスの識別情報ごとに、前記デバイスの接続される端末装置のネットワークアドレスを示した第２のデバイス管理情報を参照して、前記デバイスの接続される端末装置のネットワークアドレスを特定し、ネットワーク経由で、前記アクセス要求をカプセル化したデバイス制御情報を、前記特定したネットワークアドレスに該当する第１の端末装置のデバイス宛に送信する第２のネットワーク機器とを備え、
前記第１の端末装置は、
当該第１の端末装置に接続されたデバイスの識別情報ごとに、前記デバイスの前記端末装置上のアドレスを示した第１のデバイス管理情報と、
前記第２の端末装置からカプセル化されたデバイス制御情報を受信する通信処理部と、
前記受信したデバイス制御情報をデカプセル化し、前記デカプセル化したデバイス制御情報に示されるアクセス先のデバイスの識別情報を読み出すリモート通信部と、
前記読み出したアクセス先のデバイスの識別情報と、前記第１のデバイス管理情報とを参照して、前記アクセス先のデバイスのアドレスを特定し、前記デバイス制御情報に従い、前記特定したアドレスのデバイスからのデータの読み出し、または、データの書き込みを実行するローカル通信部とを有する第１のネットワーク機器を備えることを特徴とするデバイス共有システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク経由でのデバイス共有技術に関する。
【背景技術】
【０００２】
近年、ネットワーク技術の発展により、様々な機器がネットワークで接続されるようになっている。例えば、Ｗｉｎｄｏｗｓ（登録商標）ＯＳ（Operating System）の場合、ＳＭＢ（Server Message Block）プロトコルが標準搭載されており、このプロトコルを用いることで、他のＰＣ（Personal Computer）に接続されているプリンタや、他のＰＣの記憶部内のファイルやフォルダを利用することが可能である。また、特許文献１には、専用ソフトウェアをインストールすることで、他のＰＣに接続されたＵＳＢデバイスを自身のＰＣに接続されたＵＳＢデバイスのように利用する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２１９７１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このＷｉｎｄｏｗｓ（登録商標）ＯＳのファイル共有技術や、特許文献１に開示される技術の場合、他のＰＣに接続されたデバイスを利用する際に、必ず、そのＰＣのＣＰＵ（Central Processing Unit）が仲介しなければならない。このため、ＰＣ間で大量のデータの送受信を行う場合、ＣＰＵの処理負荷が大きくなり、デバイスが接続されているＰＣの備えるシステムに悪影響を与える可能性がある。このような問題は、ＰＣ同士を接続するネットワークの高速化が進むと、より顕著な問題となる。また、デバイス共有のためには専用のソフトウェアが必要となるため、ＰＣに用いるＯＳが制限されてしまうという問題もある。そこで、本発明は、このような問題を解決し、デバイス共有システムにおけるＰＣのＣＰＵの負荷を削減し、デバイスの共有を行いやすくすることを目的とする。
【課題を解決するための手段】
【０００５】
前記した課題を解決するため、本発明のネットワーク機器は、端末装置に接続されたネットワーク機器であって、端末装置に接続されたデバイスの識別情報およびデバイスの端末装置上のアドレスを示すデバイス管理情報を記憶する記憶部と、他の端末装置からネットワークを介して送信されたデバイス制御情報を受信する通信処理部と、受信したデバイス制御情報に示されるデバイスの識別情報を読み出し、デバイス管理情報を用いて読み出した識別情報に対応するデバイスのアドレスを特定し、端末装置のＣＰＵを経由せずに、デバイス制御情報に従って特定したアドレスのデバイスへアクセスする通信部と、を備える構成とした。このような構成のネットワーク機器によれば、他の端末装置から、自身の端末装置に接続されるデバイスへのアクセスを受け付けたとき、デバイス管理情報を参照して、そのアクセス先アドレス（物理アドレス）を特定し、その特定したアドレス宛に直接アクセス（データの書き込みや読み出し）を行う。つまり、このようなネットワーク機器を備える端末装置は、ＣＰＵを経由せずに、直接デバイスへアクセスを行うことができ、デバイス共有システムにおける各端末装置のＣＰＵの負荷を削減できる。その他の構成については、後記する。
【発明の効果】
【０００６】
本発明によれば、デバイス共有システムにおけるＰＣのＣＰＵの負荷を削減し、デバイスの共有を行いやすくなる。
【図面の簡単な説明】
【０００７】
【図１】本実施の形態のデバイス共有システムの構成を例示した図である。
【図２】図１のネットワークカードの構成を示した図である。
【図３】図２のデバイス管理情報を例示した図である。
【図４】図１のＯＳの構成を示した図である。
【図５】本実施の形態のデバイス共有システムにおけるデバイス情報登録処理の流れを示したシーケンス図である。
【図６】本実施の形態のデバイス共有システムにおけるデバイス情報登録処理の流れを示したシーケンス図である。
【図７】本実施の形態のデバイス共有システムにおけるＰＣが、他のＰＣのデバイスやメインメモリに対し、書き込み処理を行うときの処理手順を示したシーケンス図である。
【図８】本実施の形態のデバイス共有システムにおけるＰＣが、他のＰＣのデバイスやメインメモリに対し、読み出し処理を行うときの処理手順を示したシーケンス図である。
【図９】本実施の形態のデバイス共有システムにおけるＰＣが、ＤＭＡ転送の設定を行うときの処理手順を示したシーケンス図である。
【発明を実施するための形態】
【０００８】
以下、本発明を実施するための形態（以下、実施の形態という）について説明する。まず、図１を用いて、本実施の形態のデバイス共有システムの構成を説明する。図１は、本実施の形態のデバイス共有システムの構成を例示した図である。
【０００９】
ここでは、デバイス共有システムが、ＰＣ（Personal Computer、第１の端末装置）１０１と、ネットワーク１２１経由で接続されるＰＣ（第２の端末装置）１１１とを備え、ＰＣ１１１が、ネットワーク１２１経由で、ＰＣ１０１に接続されるデバイス１０６にアクセスする場合を例に説明する。このネットワーク１２１は電波、光、音、電気信号等を用いてメッセージやパケットを交換するためのネットワークであり、ルータやケーブル等を備える。
【００１０】
ＰＣ１０１は、このＰＣ１０１において各種処理の実行を行うＣＰＵ（Central Processing Unit）１０２と、デバイス１０６と、メインメモリ１０７と、ネットワークカード（ネットワーク機器）１０８と、不揮発性記憶装置１０５とを備える。これらは、バス１１０により接続される。
【００１１】
このデバイス１０６は、例えば、プリンタや、ＵＳＢ（Universal Serial Bus）メモリ等である。メインメモリ１０７は、このＰＣ１０１の備えるプログラムの実行におけるワーキングエリアや、一時バッファとして用いられる記憶領域である。このメインメモリ１０７上に、ＰＣ１０１の基本システムであるＯＳ（Operating System）１０７１、デバイスデバイス１０６を動作させるためのデバイスドライバ１０７２、その他アプリケーションプログラム（図示省略）がロードされる。ＯＳ１０７１は、ＰＣ１０１を動作させるだめの基本システムとなるプログラムである。また、このＯＳ１０７１によりＣＰＵ１０２は、デバイス１０６、メインメモリ１０７、ネットワークカード１０８等の各種デバイスにアドレスを割り当てる。さらに、デバイスドライバ１０７２は、このＰＣ１０１の備えるアプリケーションプログラムにより、各種デバイスにアクセスするためのインタフェースを提供するためのプログラムである。なお、ＯＳ１０７１に基づき、ＣＰＵ１０２がデバイス１０６等に割り当てたアドレスは、アドレス情報（後記）として、メインメモリ１０７の所定領域に記憶される。ネットワークカード１０８は、ネットワーク１２１経由でデータの送受信を行うためのインタフェースであり、仮想バススイッチ１０９（後記）を備える。不揮発性記憶装置１０５は、磁気ディスク装置、フラッシュメモリ等から構成され、ＯＳ１０７１、デバイスドライバ１０７２、各種アプリケーションプログラム等、様々なデータが格納される。
【００１２】
また、ＰＣ１１１も、このＰＣ１１１の各種処理の実行を行うＣＰＵ１１２と、デバイス１１６と、メインメモリ１１７と、ネットワークカード１１８、不揮発性記憶装置１１５とを備える。これらは、バス１２０により接続される。メインメモリ１１７には、ＯＳ１１７１と、デバイスドライバ１１７２とがロードされる。ネットワークカード１１８は、仮想バススイッチ１１９を備える。これらの機能は、前記したＰＣ１０１の各構成（ＣＰＵ１０２、デバイス１０６、メインメモリ１０７、ネットワークカード１０８、不揮発性記憶装置１０５）の機能と同じなので説明を省略する。
【００１３】
なお、図１における、ＯＳ１０７１，１１７１およびデバイスドライバ１０７２，１１７２は、ＣＰＵ１０２，１１２により実行可能な状態としてメインメモリ１０７，１１７上にロードされた状態を示している。また、ここで、ＰＣ１０１，１１１における、バスの規格は、例えば、ＰＣＩｅ（PCI Express）や、ＵＳＢ（Universal Serial Bus）等である。さらに、このＰＣ１０１，１１１には、キーボードやマウス等の入力デバイス、液晶モニタ等の表示デバイス等が接続されていてもよい。
【００１４】
ここでデバイス共有システムの各構成の動作を簡単に説明しておく。デバイス共有システムのＰＣ１０１，１１１が起動されると、ＰＣ１０１，１１１は互いにネットワーク１２１経由で、自身のＰＣに接続されるデバイスのデバイス情報（デバイスのベンダＩＤ、デバイスＩＤ、デバイスが接続されるＰＣのネットワークアドレス等）を交換する。ＰＣ１０１，１１１は、他のＰＣからデバイス情報を受信すると、このデバイス情報をデバイス管理情報２０８，２１８に記録しておく。
【００１５】
なお、各ＰＣ１０１，１１１は、他のＰＣから受信したデバイス情報をもとに、自身のＰＣにおけるアドレス情報（後記）を作成する。例えば、ＰＣ１１１は、作成したアドレス情報に基づき、自身のＰＣからみたデバイス構成を図１の吹き出し部分に示すような構成として把握する。つまり、ＰＣ１１１は、自身のＰＣのＲｏｏｔ  Ｃｏｍｐｌｅｘ（ルート）配下に、デバイス１１６と、仮想バススイッチ１１９とがあり、その仮想バススイッチ１１９配下に、仮想バススイッチ１０９と、デバイス１１８とがあるという構成を把握する。さらに、その仮想バススイッチ１０９配下に、ネットワーク１０８と、デバイス１０６とがあるという構成を把握する。ＰＣ１１１は、外部のデバイス（例えば、ＰＣ１０１のデバイス１０６）について、このようなデバイス構成により把握するので、この外部のデバイスへのアクセスについて、あたかも自身のＰＣに接続されるデバイスのようにアクセス要求を行うことができる。
【００１６】
例えば、ＰＣ１１１が、仮想バススイッチ１１９およびネットワーク１２１経由で、ＰＣ（例えば、ＰＣ１０１）に接続されるデバイス１０６へデバイス制御メッセージを送信する場合を考える。この場合、ＰＣ１０１の仮想バススイッチ１０９は、ＰＣ１１１からデバイス１０６へのデバイス制御メッセージを受信すると、デバイス管理情報２０８を参照して、そのデバイス制御メッセージがどのデバイスのメッセージかを特定する。そして、仮想バススイッチ１０９は、そのメッセージの宛先となるデバイス（例えば、デバイス１０６）へ直接アクセスする。つまり、仮想バススイッチ１０９は、ＣＰＵ１０２を経由せず、直接デバイス１０６へアクセスし、そのデバイス制御メッセージに基づくデータの書き込みや読み出しを行う。そして、仮想バススイッチ１０９は、その処理結果をネットワークパケットにカプセル化して、他のＰＣへ返信する。
【００１７】
ここで、このＰＣ１１１の仮想バススイッチ１１９は、ＣＰＵ１１２から他のＰＣ（例えば、ＰＣ１０１）に接続されるデバイス（例えば、デバイス１０６）へのデバイス制御メッセージをネットワーク１２１経由で送信するとき、そのデバイス制御メッセージをネットワークパケットにカプセル化して、他のＰＣへ送信する。また、他のＰＣからデバイス制御メッセージによる処理結果を受信すると、この処理結果をデカプセル化して、ＣＰＵ１１２に受け渡す。このようにすることで、ＰＣ１１１のＯＳ１０７１は、自身が備えるデバイス１１６へアクセスするのと同様に、他のＰＣのデバイス（デバイス１０６）へアクセスすることができる。
【００１８】
次に、このようなネットワークカード１０８，１１８について、詳細に説明する。図２は、図１のネットワークカードの構成を示した図である。ネットワークカード１０８，１１８は互いに同じ構成であるので、ここでは、代表してネットワークカード１０８の構成を説明する。
【００１９】
ネットワークカード１０８は、バスＩ／Ｆ（インタフェース）部２０２、仮想バススイッチ１０９、通信処理部２０４およびデバイス管理情報２０８を含んで構成されている。このデバイス管理情報２０８は、このネットワークカード１０８の記憶部に記憶される。
【００２０】
バスＩ／Ｆ部２０２は、ネットワークカード１０８がＰＣ内のバス（図１のバス１１０）と通信するためのインタフェースである。このバスＩ／Ｆ部２０２は、バスに流れる各種電気信号をデコードして仮想バススイッチ１０９に送る。また、このバスＩ／Ｆ部２０２は、仮想バススイッチ１０９から渡されたデータをバスに流す。
【００２１】
仮想バススイッチ１０９は、ネットワーク１２１経由で他のＰＣから、自身のＰＣ（ＰＣ１０１）のデバイスへのデバイス制御メッセージを受信したとき、ＣＰＵ（ＣＰＵ１０２）を経由せず、直接、このデバイスへアクセスする。この仮想バススイッチ１０９は、デバイス管理部２０５、リモート通信部２０６およびローカル通信部２０７を含んで構成される。
【００２２】
デバイス管理部２０５は、同じＰＣに接続されるデバイスのデバイス情報およびネットワーク１２１により接続された他のＰＣのデバイス情報を示したデバイス管理情報２０８（詳細は後記）のデータの追加、削除および更新を行う。具体的には、自身のＯＳ１０７１により作成されたアドレス情報に示される自身のＰＣのデバイスのＩＤと、そのデバイスに割り当てられたアドレスをコピーして、デバイス管理情報２０８を作成しておく。そして、リモート通信部２０６（詳細は後記）経由で受信した、他のＰＣのデバイスのデバイス情報と、ＯＳ１０７１によりそのデバイスに割り当てられたアドレスとを対応付けてデバイス管理情報２０８に記録する。
【００２３】
リモート通信部２０６は、通信処理部２０４およびネットワーク１２１経由で他のＰＣのネットワークカード（例えば、図１のＰＣ１１１のネットワークカード１１８）と通信を行う。例えば、ＣＰＵ１０２から出力された、他のＰＣのデバイスに対するデバイス制御メッセージをカプセル化し、通信処理部２０４およびネットワーク１２１経由で、他のＰＣのネットワークカードへ送信する。また、リモート通信部２０６は、他のＰＣのネットワークカードから送信されてきたデバイス制御メッセージを、通信処理部２０４およびネットワーク１２１経由で受信すると、このデバイス制御メッセージをデカプセル化し、このデバイス制御メッセージに含まれるアクセス先のデバイスＩＤ等を読み出す。
【００２４】
デバイス管理情報２０８は、自身のＰＣのメインメモリ（図１のＰＣ１０１のメインメモリ１０７）や各種デバイス、ネットワーク１２１を介して接続されている他のＰＣ（例えば、図１のＰＣ１１１）のメインメモリ１１７や各種デバイスの識別情報や、自身のＰＣ上でのアドレスを示した情報である。
【００２５】
図３は、図２のデバイス管理情報を例示した図である。例えば、デバイス管理情報２０８は、図３に示すように、デバイス（図１のデバイス１０６，１１６）の識別情報であるベンダＩＤおよびデバイスＩＤと、メインメモリフラグと、そのデバイスのアドレスであるＩ／Ｏ（Input/Output）アドレスおよびメモリアドレスと、ネットワークアドレスとが格納される。
【００２６】
図３に示すデバイス管理情報２０８のベンダＩＤ３０４の行は、デバイスの製造ベンダを一意に識別するための識別子であるベンダＩＤが格納される領域である。このデバイスＩＤ３０５の行は、ベンダごとにデバイスを一意に識別するための識別子であるデバイスＩＤが格納される領域である。各デバイスは、ベンダＩＤとデバイスＩＤと組み合わせることで一意に特定することができ、逆に一意に特定可能であれば、ベンダＩＤ３０４とデバイスＩＤ３０５との組み合わせに限定されない。
【００２７】
図３に示すデバイス管理情報２０８のメインメモリフラグ３０６の行は、当該デバイスが自身のＰＣのメインメモリ（図１のＰＣ１０１のメインメモリ１０７）であるか、それ以外のデバイスであるか否かを示す情報が格納される領域である。ここでは、メインメモリフラグの値が「０」以外（例えば「１」）であれば、このデバイスは自身のＰＣのメインメモリであることを示し、「０」であればそれ以外のデバイスであることを示す。また、Ｉ／Ｏアドレス３０７の行は、当該デバイスの、自身のＰＣにおいて割り当てられているＩ／Ｏアドレスが格納される領域である。さらに、メモリアドレス３０８の行は、当該デバイスの、自身のＰＣにおいて割り当てられているメモリアドレスが格納される領域である。また、ネットワークアドレス３０９の行は、当該デバイスの接続されているＰＣのネットワークアドレスが格納される領域である。
【００２８】
例えば、図３に示すデバイス管理情報２０８において、列３０１に示す情報は、ベンダＩＤが「０ｘ０１」、デバイスＩＤが「０ｘ２３」のデバイスのＩ／Ｏアドレスは「０ｘ００ｆｅ」、メモリアドレスは「０ｘ４５６７」であり、このデバイスは、ネットワークアドレスが「１９２．１６８．０．１」のＰＣに存在することを意味する。また、図３に示すデバイス管理情報２０８において、列３０２に示す情報は、ネットワークアドレスが「１２７．０．０．１」のＰＣ、すなわち自身のＰＣのメインメモリ（図１のＰＣ１０１のメインメモリ１０７）の情報であり、そのメモリアドレスが「０ｘ８９ａｃ」であることを意味する。なお、図３のデバイス管理情報２０８の各項目はあくまで一例であり、必要に応じて項目数が増減してもよい。このようなデバイス管理情報２０８は、ＰＣ（図１のＰＣ１０１）が、自身のＰＣ、または、他のＰＣ（図１のＰＣ１１１）のデバイスにアクセスするときや、他のＰＣから、自身のＰＣのデバイスへのアクセスを受け付けたとき、そのアクセス先アドレスを特定するときに参照される。
【００２９】
図２の通信処理部２０４は、仮想バススイッチ１０９から出力されたデータを、ネットワーク１２１に流すために、規定のデータ長への分割、各種ヘッダの付与等のパケット化処理を行う。また、通信処理部２０４は、ネットワーク１２１を介して他のＰＣから送られてきたパケットのデータ再構築を行い、仮想バススイッチ１０９へ入力する。
【００３０】
次に、図４を用いて、図１のＯＳ１０７１，１１７１を詳細に説明する。図４は、図１のＯＳの構成を示した図である。ＯＳ１０７１，１１７１は互いに同じ構成を持つので、ここでは、代表してＯＳ１０７１を説明する。
【００３１】
ＯＳ１０７１は、受信処理部１０７３と、アクセス処理部１０７４と、アドレス管理部１０７５と、アドレス情報１０７６とを備える。
【００３２】
この受信処理部１０７３は、図３のネットワークカード１０８経由で、他のＰＣからのデバイス情報を受信し、アドレス管理部１０７５へ出力する。
【００３３】
アクセス処理部１０７４は、図１のＣＰＵ１０２から、メインメモリやデバイス（図１のメインメモリ１０７やデバイス１０６）へのアクセス要求（デバイス制御メッセージ）を受け付けたとき、アドレス情報１０７６と、このアクセス要求に示されるデバイスのアドレスとを参照して、当該デバイスへのアクセス処理を実行する。ここで、アクセス処理部１０７４が、このアドレス情報１０７６を参照して、アクセス先アドレスは自身のＰＣのメインメモリ１０７やデバイス１０６のアドレスであると判断したとき、そのアドレスをもとに、そのメインメモリ１０７や、デバイス１０６へアクセスする。一方、アクセス処理部１０７４が、このアクセス先アドレスはネットワークカード１０８配下のアドレスであると判断したとき、このネットワークカード１０８に対し、アクセス要求を依頼する。
【００３４】
アドレス管理部１０７５は、受信処理部１０７３からデバイス情報（例えば、このデバイスの接続されるＰＣのネットワークアドレス、ベンダＩＤ、デバイスＩＤ）を受信すると、このデバイス情報に示されるデバイスに対し、アドレス（例えば、Ｉ／Ｏアドレス、メモリアドレス）の割り当てを行う。そして、この割り当てたアドレスを、デバイス情報に含まれるデバイスの識別情報（ベンダＩＤおよびデバイスＩＤ）、ネットワークアドレスと対応付けて、アドレス情報１０７６に記録する。
【００３５】
アドレス情報１０７６は、ＰＣに接続されたデバイスの識別情報（ベンダＩＤおよびデバイスＩＤ）ごとに、そのデバイスの、自身のＰＣにおけるアドレスと、そのネットワークアドレスとを示した情報である。このアドレス情報１０７６は、ＯＳ１０７１がアクセス先のデバイスのアドレスを特定するときに参照される。このアドレス情報１０７６の構成は、デバイス管理情報２０８（図３参照）と同じであるので説明を省略する。
【００３６】
次に、図１のデバイス共有システムにおいて、ＰＣ１０１，１１１がネットワーク１２１を介してデバイスを利用する一連の処理の流れを、図５〜図８を用いて説明する。
【００３７】
図１のＰＣ１０１，１１１のネットワークカード１０８，１１８が起動すると、ＰＣ１０１，１１１は互いにそれぞれのＰＣの備えるデバイスに関するデバイス情報を交換し、受信したデバイス情報をそれぞれのデバイス管理情報に登録する。このときの処理手順について、図５および図６を用いて説明する。図５および図６は、本実施の形態のデバイス共有システムにおけるデバイス情報登録処理の流れを示したシーケンス図である。
【００３８】
ここでは、要求元ＰＣ（デバイス情報登録の要求元ＰＣ）のネットワークカードが、要求先ＰＣ（デバイス情報登録の要求先ＰＣ）のネットワークカードへ、この要求元ＰＣに接続されるデバイスのデバイス情報を送信し、要求先ＰＣのネットワークカードがこのデバイス情報をデバイス管理情報に登録する手順について説明する。なお、以下の説明において、要求元ＰＣは、図１のＰＣ１０１であり、要求先ＰＣは、図１のＰＣ１１１である場合を例に説明するが、これに限定されるものではない。
【００３９】
最初に、要求元ＰＣ（図１のＰＣ１０１）のネットワークカード１０８が起動すると、このネットワークカード１０８のデバイス管理部２０５（図２参照）は、リモート通信部２０６経由で、デバイス１０６のデバイス情報を、ネットワーク１２１を介して要求先ＰＣ（デバイス登録の要求先ＰＣ、図１のＰＣ１１１）のネットワークカード１１８へ送信する（Ｓ４０４）。このデバイス情報は、デバイスのベンダＩＤ、デバイスＩＤ等を含み、ＰＣが各デバイスにアドレスを割り当てるために必要なデータである。
【００４０】
続いて、要求先ＰＣ（ＰＣ１１１）のネットワークカード１１８は、Ｓ４０４で送信されたデバイス情報を、この要求先ＰＣのＯＳ１１７１へ出力する（Ｓ４０５）。
【００４１】
この要求先ＰＣ（ＰＣ１１１）のＯＳ１１７１は、デバイス情報を受信すると、この受信したデバイス情報に示されるデバイスに対して、アドレスの割り当てを行う（Ｓ４０６）。そして、ＯＳ１１７１は、割り当てたアドレスを要求先ＰＣのネットワークカード１１８へ出力する（Ｓ４０７）。また、このＯＳ１１７１は、デバイス情報と、そのデバイスに割り当てたアドレスとを自身のアドレス情報１０７６（図４参照）にも登録する。
【００４２】
続いて、要求先ＰＣ（ＰＣ１１１）のネットワークカード１１８は、デバイス管理部２０５（図２参照）により、自身のデバイス管理情報２０８に、デバイス情報と、ＯＳ１１７１により割り当てられたアドレスとを登録する（Ｓ４０８）。登録が完了したら、ネットワークカード１１８のデバイス管理部２０５は、ネットワークカード登録ＯＫのメッセージを要求元ＰＣのネットワークカード１０８へ送信する（Ｓ４０９）。このようにして、要求元ＰＣのデバイスのデバイス情報およびそのデバイスのアドレスが、要求先ＰＣのネットワークカードのデバイス管理情報に登録される。なお、要求元ＰＣに複数のデバイスが接続される場合、要求元ＰＣおよび要求先ＰＣは、Ｓ４０４〜Ｓ４０９に示す処理を、デバイスの数だけ繰り返す。
【００４３】
次に、要求元ＰＣ（デバイス情報登録の要求元ＰＣ、ＰＣ１０１）のネットワークカード１０８が、要求先ＰＣ（デバイス情報登録の要求先ＰＣ、ＰＣ１１１）に接続されるデバイスのデバイス情報を取得し、このデバイス情報を要求元ＰＣ（ＰＣ１０１）のネットワークカード１０８のデバイス管理情報２０８に登録する手順について説明する。
【００４４】
最初に、要求元ＰＣ（ＰＣ１０１）のネットワークカード１０８は、要求先ＰＣ（ＰＣ１１１）のネットワークカード１１８に対して、デバイス情報取得要求を送信する（Ｓ５０４）。
【００４５】
次に、要求先ＰＣ（ＰＣ１１１）のネットワークカード１０８は、自身のデバイス管理情報２０８を参照し、自身のＰＣの全デバイスのデバイス情報を要求元ＰＣ（ＰＣ１０１）のネットワークカード１０８へ送信する（Ｓ５０５）。
【００４６】
続いて、要求元ＰＣ（ＰＣ１０１）のネットワークカード１０８は、受信したデバイス情報を要求元ＰＣのＯＳ１０７１へ出力する（Ｓ５０６）。
【００４７】
次に、要求元ＰＣ（ＰＣ１０１）のＯＳ１０７１は、デバイス情報に示されるデバイスに対してアドレスを割り当て（Ｓ５０７）、割り当てたアドレスを要求元ＰＣ（ＰＣ１０１）のネットワークカード１０８へ出力する（Ｓ５０８）。また、このＯＳ１０７１は、割り当てたアドレスを、自身のアドレス情報１０７６（図４参照）にも登録する。
【００４８】
続いて、要求元ＰＣ（ＰＣ１０１）のネットワークカード１０８は、自身のデバイス管理情報２０８にデバイス情報とアドレスとを登録する（Ｓ５０９）。ここでも、要求元ＰＣ（ＰＣ１０１）のネットワークカード１０８が、Ｓ５０５にて複数のデバイスのデバイス情報を受信した場合は、Ｓ５０６〜Ｓ５０９をデバイスの数だけ繰り返す。このようにして、要求元ＰＣに、要求先ＰＣのデバイスのデバイス情報が登録される。
【００４９】
次に、図１のデバイス共有システムのＰＣが、他のＰＣのデバイスやメインメモリに対しアクセスし、データの書き込みや読み出しを行う場合の処理手順について、図７および図８を用いて説明する。図７は、本実施の形態のデバイス共有システムにおけるＰＣが、他のＰＣのデバイスやメインメモリに対し、書き込み処理を行うときの処理手順を示したシーケンス図である。また、図８は、本実施の形態のデバイス共有システムにおけるＰＣが、他のＰＣのデバイスやメインメモリに対し、読み出し処理を行うときの処理手順を示したシーケンス図である。
【００５０】
まず、図７を用いて、デバイス共有システムのアクセス元のＰＣから、アクセス先のＰＣに対し、書き込み処理を行う場合の処理手順を説明する。なお、以下の説明において、ここでのアクセス元ＰＣは、図１のＰＣ１０１であり、アクセス先ＰＣは、図１のＰＣ１１１である場合を例に説明するが、これに限定されるものではない。また、アクセス元およびアクセス先は、それぞれＰＣのＣＰＵ、メインメモリ、デバイス等であるものとして説明する。
【００５１】
最初に、アクセス元は、アクセス先アドレスとそのアクセス先アドレスへの書き込みデータとを含むデバイス制御メッセージに基づき、そのアクセス先アドレスへの書き込みデータを送信する（Ｓ６０５）。ここで、もし、このアクセス先アドレスが、自身のＰＣに存在するデバイスのアドレスである場合、ＣＰＵ１０２は、そのデバイスにデータを書き込む。一方、このアクセス先アドレスが自身のＰＣに存在するデバイスのアドレスではなかった場合、アクセス元ＰＣ（ＰＣ１０１）のネットワークカード１０８が受信する。なお、ここで、このアクセス先アドレスが、自身のＰＣに存在するデバイスのアドレスか否かは、図４のＯＳ１０７１のアクセス処理部１０７４が、アドレス情報１０７６を参照して判断する。具体的には、このアクセス先アドレスが、アドレス情報１０７６において、ネットワークカード１０８に割り当てられたアドレスであった場合、ＣＰＵ１０２は、そのアクセス先アドレスは、他のＰＣに存在するデバイスのアドレスと判断する。一方、このアクセス先アドレスが、アドレス情報１０７６において、ネットワークカード１０８に割り当てられたアドレスではないとき、ＣＰＵ１０２は、そのアクセス先アドレスは、自身のＰＣに存在するデバイスのアドレスと判断する。
【００５２】
続いて、アクセス元ＰＣ（ＰＣ１０１）のネットワークカード１０８は、デバイス管理情報２０８と、アクセス元から受信したアクセス先アドレスをもとに、アクセス先のデバイスを特定し（Ｓ６０６）、そのデバイスが存在するＰＣのネットワークアドレスを特定する。また、ネットワークカード１０８は、デバイス管理情報２０８から、このアクセス先アドレスのデバイスのデバイス情報を読み出す。
【００５３】
次に、ネットワークカード１０８は、Ｓ６０５で送信されたデバイスのアクセス先アドレスがメモリアドレスの場合は、デバイス管理情報２０８に示される当該デバイスのメモリアドレスを参照して、そのアクセス先アドレスのベースアドレスからのオフセット値（アドレスオフセット値）を取得する。そして、ネットワークカード１１８は、アクセス先のデバイスのデバイス情報と、取得したアドレスオフセット値と、このデバイスへ書き込むデータ（転送データ）とをアクセス先のＰＣのネットワークカード１１８へ送信する（Ｓ６０７）。なお、このとき、ネットワークカード１０８は、アクセス先のデバイスのデバイス情報と、取得したアドレスオフセット値と、このデバイスへ書き込むデータ（転送データ）とを、ネットワークパケットにカプセル化して送信する。
【００５４】
続いて、アクセス先ＰＣのネットワークカード１１８は、アクセス元ＰＣから、ネットワークパケットを受信すると、このパケットをデカプセル化して、アクセス先のデバイスのデバイス情報と、アドレスオフセット値と、デバイスへ書き込むデータ（転送データ）とを読み出す。そして、ネットワークカード１１８は、自身のデバイス管理情報２０８を参照し、読み出したデバイス情報およびアドレスオフセット値から、自身のＰＣでのアクセス先アドレスを取得する（Ｓ６０８）。そして、ネットワークカード１１８は、取得したアドレス宛に書き込みデータを出力する（Ｓ６０９）。この書き込みデータを受け取ったアクセス先は、書き込みデータをアクセス先アドレスで指定される領域に書き込み（Ｓ６１０）、アクセス元に、その書き込みの結果（書き込みが成功すればＯＫ）を返す（Ｓ６１１，Ｓ６１２，Ｓ６１３）。
【００５５】
このようにして、アクセス元ＰＣからの書き込み要求を受け付けたアクセス先ＰＣのネットワークカード１１８は、アクセス先ＰＣのＣＰＵ１１２を経由せずに、直接アクセス先へデータを書き込むことができる。
【００５６】
次に、図８を用いて、デバイス共有システムのアクセス元のＰＣから、アクセス先のＰＣに対し、読み出し処理を行う場合の処理手順を説明する。
【００５７】
最初に、アクセス元は、アクセス先アドレスと読み出しサイズ（読み出し対象のデータのデータサイズ）とを含むデバイス制御メッセージを受け取ると、自身のＰＣ内でのアクセス先の場所を表すアドレスに対し、アクセス先アドレスと読み出しサイズとを送信する（Ｓ７０５）。ここで、もし、このアクセス先アドレスが、自身のＰＣに存在するデバイスのアドレスである場合は、ＣＰＵ１０２は、そのデバイスからデータを読み出す。一方、このアクセス先アドレスが自身のＰＣに存在するデバイスのアドレスではなかった場合は、アクセス元ＰＣ（ＰＣ１０１）のネットワークカード１０８がデバイス制御メッセージ（デバイス制御情報）を受信する。なお、ここでも、このアクセス先アドレスが、自身のＰＣに存在するデバイスのアドレスか否かは、ＯＳ１０７１のアクセス処理部１０７４が、アドレス情報１０７６を参照して判断する。
【００５８】
続いて、アクセス元ＰＣ（ＰＣ１０１）のネットワークカード１０８は、デバイス管理情報２０８と、アクセス元から受信したアクセス先アドレスをもとに、アクセス先ＰＣのネットワークカードを特定する（Ｓ７０６）。また、ネットワークカード１０８は、デバイス管理情報２０８から、このアクセス先アドレスのデバイスのデバイス情報を読み出す。
【００５９】
次に、ネットワークカード１０８は、前記したＳ６０７と同様に、Ｓ７０５で送信されたアドレスがメモリアドレスの場合は、デバイス管理情報２０８に示される当該デバイスのメモリアドレスを参照して、そのアクセス先アドレスのベースアドレスからのオフセット値（アドレスオフセット値）を取得する。そして、ネットワークカード１１８は、アクセス先のデバイスのデバイス情報と、取得したアドレスオフセット値と、このデバイスから読み出すデータサイズとをアクセス先のＰＣのネットワークカード１１８へ送信する（Ｓ７０７）。なお、ここでも、ネットワークカード１０８は、アクセス先のデバイスのデバイス情報と、取得したアドレスオフセット値と、読み出しデータサイズとをネットワークパケットにカプセル化して送信する。
【００６０】
続いて、アクセス先ＰＣのネットワークカード１１８は、アクセス元ＰＣから、ネットワークパケットを受信すると、このパケットをデカプセル化して、アクセス先のデバイスのデバイス情報と、取得したアドレスオフセット値とを読み出す。そして、ネットワークカード１１８は、自身のデバイス管理情報２０８を参照し、読み出したデバイス情報およびアドレスオフセット値から、自身のＰＣでのアクセス先アドレスを取得する（Ｓ７０８）。そして、ネットワークカード１１８は、この取得したアドレスに対して読み出しデータサイズを渡す（Ｓ７０９）。
【００６１】
次に、アクセス先は、受け取った読み出しデータサイズ分のデータをアクセス先アドレスで指定される領域から読み出して（Ｓ７１０）、アクセス元に、その読み出したデータを送信する（Ｓ７１１，Ｓ７１２，Ｓ７１３）。
【００６２】
このようにして、アクセス元ＰＣからの読み出し要求を受け付けたアクセス先ＰＣのネットワークカード１１８は、アクセス先ＰＣのＣＰＵ１１２を経由せずに、直接アクセス先からデータを読み出し、その読み出しデータをアクセス元へ返すことができる。
【００６３】
次に、本実施形態のデバイス共有システムにおいて、ＰＣのデバイスやメインメモリ間でのＤＭＡ転送（Direct Memory Access転送、ＣＰＵを介さずに直接データ転送を行うこと）の設定を行ってもよい。この場合の一連の処理の流れを、図９を用いて説明する。図９は、本実施の形態のデバイス共有システムにおけるＰＣが、ＤＭＡ転送の設定を行うときの処理手順を示したシーケンス図である。
【００６４】
以下の説明において、アクセス元は、ＤＭＡ転送の設定を行う主体であり、例えば、アクセス元ＰＣ（ＰＣ１０１）のＣＰＵ１０２等である。また、アクセス先は、ＤＭＡ転送の設定を指示されるアクセス先ＰＣ（ＰＣ１１１）のデバイス１１６またはメインメモリ１１７に設置されるコントローラ（図示省略）である。
【００６５】
最初に、アクセス元は、自身のＰＣ内でのアクセス先の場所を表すアドレスに対し、アクセス先アドレス（つまり、ＤＭＡ転送の設定先のコントローラのあるデバイスまたはメインメモリのアドレス）と、このＤＭＡ転送における転送元アドレスおよび転送先アドレスと、転送データサイズとを送信する（Ｓ８０５）。すなわち、アクセス元は、どのアドレスのデータを、どの程度、どのアドレスに転送するかを示したＤＭＡ転送の設定情報を、そのＤＭＡ転送を行うデバイスに対し送信する。
【００６６】
ここで、このアクセス先アドレスが、自身のＰＣに存在するデバイスのアドレスである場合は、そのデバイスのコントローラにＤＭＡ転送の設定を行う。一方、このアクセス先アドレスが自身のＰＣに存在するデバイスのアドレスではなかった場合は、アクセス元ＰＣ（ＰＣ１０１）のネットワークカード１０８が、設定情報（アクセス先アドレスと、ＤＭＡ転送の転送元アドレスおよび転送先アドレスと、転送データサイズ）を受信する。なお、ここでも、このアクセス先アドレスが、自身のＰＣに存在するデバイスのアドレスか否かは、ＯＳ１０７１のアクセス処理部１０７４が、アドレス情報１０７６を参照して判断する。
【００６７】
続いて、アクセス元ＰＣ（ＰＣ１０１）のネットワークカード１０８は、デバイス管理情報２０８と、アクセス元から受信した設定情報に含まれるアクセス先アドレスとを参照して、アクセス先のデバイス、つまりＤＭＡ転送の設定先のデバイスのあるアクセス先ＰＣのネットワークカードを特定する（Ｓ８０６）。
【００６８】
また、アクセス元ＰＣ（ＰＣ１０１）のネットワークカード１０８は、受信した設定情報に含まれるＤＭＡ転送の転送元アドレスおよび転送先アドレスから、その転送元アドレスおよび転送先アドレスに対応するデバイス情報と、アドレスオフセット値を取得する（Ｓ８０７）。
【００６９】
そして、アクセス元ＰＣのネットワークカード１０８は、アクセス先アドレス、ＤＭＡ設定の転送先アドレス、転送元アドレスそれぞれに対応するデバイスのデバイス情報およびアドレスオフセット値と、転送サイズとをアクセス先ＰＣのネットワークカード１１８へ送信する（Ｓ８０８）。
【００７０】
続いて、アクセス先ＰＣのネットワークカード１１８は、自身のデバイス管理情報２０８を参照し、受信したデバイス情報およびアドレスオフセット値から、アクセス先アドレスと、ＤＭＡ転送の転送先アドレスおよび転送元アドレスとを取得する（Ｓ８０９）。
【００７１】
そして、ネットワークカード１１８は、アクセス先アドレスに対し、ＤＭＡ設定の転送元アドレス、転送先アドレス、転送サイズを送信する（Ｓ８１０）。
【００７２】
続いて、アクセス先は、受信した転送元アドレス、転送先アドレス、転送サイズをもとに、ＤＭＡ転送設定を行い（Ｓ８１１）、アクセス元にその応答（設定成功であればＯＫ）を返す（Ｓ８１２，Ｓ８１３，Ｓ８１４）。
【００７３】
この後、ＤＭＡ転送設定が行われたＰＣ１０１，１１１は、そのＤＭＡ転送の設定に基づき、転送元アドレスのデバイスから、転送先アドレスのデバイスへのデータ転送を行う。このときのデータ転送処理は、データの書き込み処理であれば、図７に示した処理手順に従って行い、またデータの読み出し処理であれば、図８に示した処理手順により行う。
【符号の説明】
【００７４】
１０２，１１２  ＣＰＵ
１０６，１１６  デバイス
１０５，１１５  不揮発性記憶装置
１０７，１１７  メインメモリ
１０８，１１８  ネットワークカード
１０９，１１９  仮想バススイッチ
１１０，１２０  バス
１２１  ネットワーク
２０２  バスＩ／Ｆ部
２０４  通信処理部
２０５  デバイス管理部
２０６  リモート通信部
２０７  ローカル通信部
２０８，２１８  デバイス管理情報
１０７１，１１７１  ＯＳ
１０７２，１１７２  デバイスドライバ
１０７３  受信処理部
１０７４  アクセス処理部
１０７５  アドレス管理部
１０７６  アドレス情報
【図１】
2010176212.tif 000003
【図２】
2010176212.tif 000004
【図３】
2010176212.tif 000005
【図４】
2010176212.tif 000006
【図５】
2010176212.tif 000007
【図６】
2010176212.tif 000008
【図７】
2010176212.tif 000009
【図８】
2010176212.tif 000010
【図９】
2010176212.tif 000011