(57)【特許請求の範囲】
【請求項１】
第１の実ハードウエアデバイスを備える第１の計算機と該第１の計算機に通信路を介して接続され第２の実ハードウエアデバイスを備える第２の計算機との間で、オペレーティングシステムのカーネルの移送を行う計算機システムであって、
前記第１の計算機は、
前記第１の実ハードウエアデバイスを制御する第１のデバイスドライバの状態を記憶する第１の状態管理表と、
前記カーネルからの前記第１のデバイスドライバへの第１のアクセスの内容を監視し、その監視された前記第１のアクセスの内容に基いて、前記第１の状態管理表に記憶される前記第１のデバイスドライバの状態に変化が生じたときに、前記第１の状態管理表を、その変化した状態に応じて更新する第１の状態管理部と、
前記カーネルのコンテキストを、前記通信路を介して前記第２の計算機へ送信する送信手段とを有し、
前記第２の計算機は、
前記通信路を介して受信した前記カーネルのコンテキストに基づいて、前記第２の計算機において前記カーネルを復元する復元手段と、
前記カーネルが認識している実ハードウエアデバイスの種類と、前記第２の計算機が備える第２の実ハードウエアデバイスの種類と、前記第2の実ハードウエアデバイスを制御する第２のデバイスドライバの状態と、を記憶する第２の状態管理表と、
復元された前記カーネルからの前記第２のデバイスドライバへの第２のアクセスの内容を監視し、その監視された前記第２のアクセスの内容に基いて、前記第２の状態管理表に記憶される前記第２のデバイスドライバの状態に変化が生じたときに、前記第２の状態管理表を、その変化した状態に応じて更新する第２の状態管理部と、
を有し、
前記第１の状態管理部は、
前記送信手段が前記カーネルのコンテキストを前記第２の計算機へ送信する場合、前記カーネルを停止し、該停止後、前記第１の状態管理表の内容を前記第２の計算機へ前記通信路を介して送信し、
前記第２の状態管理部は、
前記通信路を介して受信した前記第１の状態管理表の内容に基いて、前記第２のデバイスドライバにより制御される第２の実ハードウエアデバイスの状態を、前記第１のデバイスドライバにより制御される前記第１の実ハードウエアデバイスと同一の状態に復元し、
前記カーネルが認識している前記実ハードウエアデバイスの種類と、前記第２の計算機が備える前記第２の実ハードウエアデバイスの種類とが互いに異なる場合、前記第２の状態管理表に基いて、前記第２の実ハードウエアデバイスに適合するように前記第２のアクセスの内容を変換して、前記第２の実ハードウエアデバイスへアクセスをするようにしたことを特徴とする計算機システム。
【請求項２】
さらに、前記第２の計算機は、復元された前記カーネルが使用する実ハードウエアデバイスと、その使用する実ハードウエアデバイスが接続されている前記第１の計算機又は前記第２の計算機の識別子が記録された位置管理表と、  前記第２の計算機において、復元された前記カーネルから前記使用する実ハードウエアデバイスへのアクセスが生じたときに、前記位置管理表に基いて、前記使用する実ハードウエアデバイスが前記第２の実ハードウエアデバイスである場合は、前記第２のデバイスドライバに対してアクセスを行わせ、前記使用する実ハードウエアデバイスが前記第１の実ハードウエアデバイスである場合は、前記通信路を介して、前記第１の計算機の前記第１の状態管理部に前記使用する実ハードウエアデバイスへのアクセスの内容を転送して前記第１の実ハードウエアデバイスに対してアクセスを行わせる位置管理部と、を備えることを特徴とする請求項１に記載の計算機システム。
【請求項３】
ビデオカードを備え、通信路を介してオペレーティングシステムのカーネルを受信する計算機装置であって、
前記カーネルが認識しているビデオカードの種類と、前記計算機装置が備えるビデオカードの種類と、前記ビデオカードの画面モードとフレームバッファの内容を含み前記ビデオカードを制御するデバイスドライバの状態を記憶する状態管理表と、
前記カーネルのコンテキストに基づいて、前記計算機装置において前記カーネルを復元し、復元された前記カーネルからの前記デバイスドライバへのアクセスの内容を監視し、その監視された前記アクセスの内容に基いて、前記状態管理表に記憶される前記デバイスドライバの状態に変化が生じたときに、前記状態管理表を、その変化した状態に応じて更新する状態管理部と、
を有し、
前記状態管理部は、
前記デバイスドライバにより制御される前記ビデオカードの状態を、前記カーネルのコンテキストを送信した他の計算機装置の他の状態管理表の内容に基いて、前記他の計算機装置の他のデバイスドライバにより制御される他のビデオカードと同一の状態に復元し、
前記カーネルが認識している前記ビデオカードの種類と、前記計算機装置が備える前記ビデオカードの種類とが互いに異なる場合、前記状態管理表に基いて、前記計算機装置が備える前記ビデオカードに適合するように前記アクセスの内容を変換して、前記ビデオカードへアクセスをするようにしたことを特徴とする計算機装置。
【請求項４】
さらに、復元された前記カーネルが使用するビデオカードと、その使用するビデオカードが接続されている前記計算機装置又は前記他の計算機装置の識別子が記録された位置管理表と、
前記計算機装置において、復元された前記カーネルから前記使用するビデオカードへのアクセスが生じたときに、前記位置管理表に基いて、前記使用するビデオカードが前記計算機装置が備える前記ビデオカードである場合は、前記計算機装置が備える前記デバイスドライバに対してアクセスを行わせ、前記使用するビデオカードが前記他の計算機装置が備えるビデオカードである場合は、前記通信路を介して、前記他の計算機装置の他の状態管理部に前記アクセスの内容を転送して前記他の計算機装置が備えるビデオカードに対してアクセスを行わせる位置管理部と、を備えることを特徴とする請求項３に記載の計算機装置。
【請求項５】
第１の実ハードウエアデバイスを備える第１の計算機と該第１の計算機に通信路を介して接続され第２の実ハードウエアデバイスを備える第２の計算機との間で、オペレーティングシステムのカーネルの移送を行うオペレーティングシステムの移送方法であって、
前記第１の計算機は、第１の状態管理部と、前記第１の実ハードウエアデバイスを制御する第１のデバイスドライバの状態を記憶する第１の状態管理表とを有し、
前記第１の状態管理部は、前記カーネルからの前記第１のデバイスドライバへの第１のアクセスの内容を監視し、その監視された前記第１のアクセスの内容に基いて、前記第１の状態管理表に記憶される前記第１のデバイスドライバの状態に変化が生じたときに、前記第１の状態管理表を、その変化した状態に応じて更新し、
前記第１の計算機は、前記カーネルのコンテキストを、前記第２の計算機に送信し、
前記第２の計算機は、第２の状態管理部と、第２のデバイスドライバの状態を記憶する第２の状態管理表とを有し、
前記通信路を介して受信した前記カーネルのコンテキストに基づいて、前記第２の計算機において前記カーネルを復元し、
前記第２の状態管理部は、復元された前記カーネルからの前記第２のデバイスドライバへの第２のアクセスの内容を監視し、その監視された前記第２のアクセスの内容に基いて、前記第２の状態管理表に記憶される前記第２のデバイスドライバの状態に変化が生じたときに、前記第２の状態管理表を、その変化した状態に応じて更新し、
前記第１の計算機は、前記カーネルのコンテキストを前記第２の計算機へ送信する場合、前記カーネルを停止し、該停止後、前記第１の状態管理表の内容を前記第２の計算機へ前記通信路を介して送信し、
前記第２の計算機は、前記通信路を介して受信した前記第１の状態管理表の内容に基いて、前記第２のデバイスドライバにより制御される第２の実ハードウエアデバイスの状態を、前記第１のデバイスドライバにより制御される前記第１の実ハードウエアデバイスと同一の状態に復元し、
さらに、前記第２の状態管理表は、前記カーネルが認識している前記第２の実ハードウエアデバイスの種類と、前記第２の計算機に接続された前記第２の実ハードウエアデバイスの種類を記録するデータ領域を有し、
前記カーネルが認識している前記第２の実ハードウエアデバイスの種類と、前記第２の計算機が備える前記第２の実ハードウエアデバイスの種類が異なる場合、前記第２の状態管理部は、前記第２の状態管理表に基いて、前記第２の実ハードウエアデバイスに適合するように前記第２のアクセスの内容を変換して、前記第２の実ハードウエアデバイスへアクセスをするようにしたことを特徴とするオペレーティングシステムの移送方法。
【請求項６】
さらに、前記第２の計算機は、復元された前記カーネルが使用する実ハードウエアデバイスと、その使用する実ハードウエアデバイスが接続されている前記第１の計算機又は前記第２の計算機の識別子が記録された位置管理表と、
前記第２の計算機において、復元されたカーネルから前記使用する実ハードウエアデバイスへのアクセスが生じたときに、前記位置管理表に基いて、前記位置管理部は、前記使用する実ハードウエアデバイスが前記第２の実ハードウエアデバイスである場合は、前記第２のデバイスドライバに対してアクセスを行い、前記使用する実ハードウエアデバイスが前記第１の実ハードウエアである場合は、前記通信路を介して、前記第１の計算機の前記第１の状態管理部に前記使用する実ハードウエアデバイスへのアクセスの内容を転送して前記第１の実ハードウエアデバイスに対してアクセスを行うことを特徴とする請求項５に記載のオペレーティングシステムの移送方法。
【請求項７】
ビデオカードを備え、該ビデオカードを制御するデバイスドライバの状態を記憶する状態管理表と、オペレーティングシステムのカーネルのコンテキストに基づいて前記カーネルを復元し、前記状態管理表を更新する状態管理部とを有する計算機装置に、オペレーティングシステムのカーネルの移送を行う方法であって、
前記状態管理部により、通信路を介して受信した前記オペレーティングシステムのカーネルのコンテキストに基づいて前記カーネルを復元し、
前記状態管理部により、復元された前記カーネルからのデバイスドライバへのアクセスの内容を監視し、その監視された前記アクセスの内容に基いて、前記ビデオカードの画面モードとフレームバッファの内容を含む、前記デバイスドライバの状態に変化が生じたときに、前記状態管理表を、その変化した状態に応じて更新し、
前記状態管理部により、前記デバイスドライバにより制御される前記ビデオカードの状態を、前記カーネルのコンテキストを送信した他の計算機装置の他の状態管理表の内容に基づいて、前記他の計算機装置の他のデバイスドライバにより制御される他のビデオカードと同一の状態に復元し、
前記カーネルが認識している前記ビデオカードの種類と、前記計算機装置が備える前記ビデオカードの種類が異なる場合、前記状態管理部は、前記計算機装置が備える前記ビデオカードに適合するように前記アクセスの内容を変換して、前記ビデオカードへアクセスをするようにしたことを特徴とするオペレーティングシステムの移送方法。
【請求項８】
さらに、前記計算機装置は、復元された前記カーネルが使用するビデオカードと、その使用するビデオカードが接続されている前記計算機装置又は前記他の計算機装置の識別子が記録された位置管理表と、
前記カーネルが使用するビデオカードの位置を管理する位置管理部と、
を有し、
前記計算機装置において、復元された前記カーネルから、前記カーネルが使用するビデオカードへのアクセスが生じたときに、前記位置管理表に基づいて、前記位置管理部は、前記使用するビデオカードが前記計算機装置が備える前記ビデオカードである場合は、前記計算機装置が備える前記デバイスドライバに対してアクセスを行わせ、前記使用するビデオカードが前記他の計算機装置が備えるビデオカードである場合は、前記通信路を介して、前記他の計算機装置の他の状態管理部に前記アクセスの内容を転送して前記他の計算機装置が備えるビデオカードに対してアクセスを行わせることを特徴とする請求項７に記載のオペレーティングシステムの移送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機システム、計算機装置、オペレーティングシステムの移送方法及びプログラムに関し、特に、計算機間においてオペレーティングシステムの移送を可能とする計算機システム、計算機装置、オペレーティングシステムの移送方法及びプログラムに関する。
【０００２】
【従来の技術】
互いに通信が可能な複数の計算機で構成される計算機システムにおいて、プロセスを計算機間で移送するプロセスマイグレーション技術がある。
【０００３】
プロセスマイグレーション技術は、プロセスのコンテキストを他の計算機に移送し、移送先の計算機でプロセスを復元することにより、プロセスを継続実行させるための技術である。プロセスマイグレーションにおけるコンテキストとは、中央演算装置（以下、CPUともいう）のレジスタ値や、プロセスが使用しているメモリの内容で構成される。
【０００４】
プロセスマイグレーションは、複数の計算機によって構成される計算機システムの高信頼化や負荷分散のために利用される。例えば、計算機が故障した場合、故障した計算機上で動作しているプログラムを、マイグレーション技術によってシステム内の正常な計算機に移送し、実行を継続することによってシステムを高信頼化する。あるいは、システム内の特定の計算機に負荷が集中している場合、負荷が集中している計算機上のプログラムを、マイグレーション技術によってシステム内の負荷の低い計算機に移送し、実行を継続することによってシステムの負荷分散を実現する。
【０００５】
プロセスマイグレーションの代表的な手法は、これまで種々開示されている（例えば、非特許文献１参照）。
【０００６】
プロセスマイグレーションが対象としているオペレーティングシステム（以下、OSともいう）上のプロセスではなく、OSをマイグレーションする方法として、仮想計算機の技術を利用して、ある仮想計算機上で動作するOSを、他の仮想計算機上でそのOSが動作するように、仮想計算機間でOSを移送する技術がある。
【０００７】
仮想計算機の技術は、ソフトウェアでCPUやデバイスの動作をエミュレートすることによって、ハードウェアを仮想化し、仮想的な計算機を作り出す技術である。仮想計算機の代表的な製品としてはVMware社のVMwareがある（例えば、非特許文献２参照）。
【０００８】
仮想計算機上のOSは、仮想化されたCPUとメモリ上で実行され、仮想計算機上の仮想デバイスを使用することによって動作する。一般的に、仮想計算機の動作環境であるOSはホストOSと呼ばれ、仮想計算機上で動作するOSはゲストOSと呼ばれる。通常のOSがデバイスを使用する場合は、デバイスドライバと呼ばれるデバイス制御のためのソフトウェアモジュールを通してデバイスにアクセスを行う。これに対して、仮想計算機上のゲストOSがデバイスを使用する場合は、仮想計算機が提供する仮想デバイス用のデバイスドライバを使用して、仮想デバイスに対してアクセスを行うことになる。ゲストOSから仮想デバイスへのアクセスがあると、仮想計算機はそのアクセス内容をホストOSのシステムコールに変換し、ホストOSがホストOSのデバイスドライバを介して計算機が備える実際のデバイスへのアクセスを行う。
【０００９】
仮想計算機はソフトウェアによって実現されているので、仮想CPU、仮想計算機のメモリ及び仮想デバイスの状態を含む仮想計算機のコンテキストは、すべて取得可能である。
【００１０】
仮想計算機上で動作するOSの他の仮想計算機上へのマイグレーションは、仮想計算機のコンテキストを保存して、そのコンテキストを他の仮想計算機に転送し、転送されたコンテキストに基いて、転送先の仮想計算機をマイグレーション元の仮想計算機と同一の状態にし、その仮想計算機上でOSの動作を再開させることによって実現される。
【００１１】
OSのマイグレーション元の仮想計算機と、OSのマイグレーション先の仮想計算機の状態をまったく同一にすれば、仮想計算機上で動作するOS、及び仮想デバイス用のデバイスドライバは、OSが移送されたことの影響を受けずに動作を継続することができる。
【００１２】
計算機間でOSを移送する研究として、独立行政法人産業技術総合研究所で行われているネットワーク・トランスファブル・コンピュータ（以下、ＮＴＣという）の技術がある（例えば、非特許文献３参照）。ＮＴＣでは、仮想計算機間でOSを移送する他に、仮想計算機と実計算機の間、実計算機間でOSを転送する研究を行っている。ＮＴＣでは、OSが備えるサスペンド・レジュームと呼ばれる機能、すなわち作業を中断して計算機の電源を切り、電源投入後、再度、作業を再開するための機能を利用することによって、同一の構成の計算機間でOSを移動させることを実現している。
【００１３】
【非特許文献１】
エス・エー・バターフィールドとジー・ジェイ・ポペック（Butterfield,S.A. and Popec,G.J）著、「地域分散UNIX（登録商標）システムにおけるネットワークタスキング（Network Tasking in the Locus Distributed Unix System）」、ユーズニックス夏８４年（Usenix Summer '84）、pp.62-71(1984)
【００１４】
【非特許文献２】
VMware社のVMware、http://www.vmware.com
【００１５】
【非特許文献３】
ネットワーク・トランスフェラブル・コンピュータ（Network transferable Computer）、http://www.et1.go.jp/-suzaki/NTC
【００１６】
【発明が解決しようとする課題】
しかし、プロセスマイグレーションは、プロセスのコンテキストであるCPUのレジスタ値、プロセスが使用しているメモリの内容等のプロセス生成に必要な情報のみを他の計算機に移送することによって実現されており、計算機に接続された外部デバイスについては関知していない。そのため、プロセスマイグレーションの技術は、外部デバイス等のハードウェアに直接的に関係しているOSのマイグレーションには用いることができない。
【００１７】
そして、仮想計算機間のOSのマイグレーション、及びＮＴＣにおける仮想計算機と実計算機の間あるいは実計算機間でのOSのマイグレーションでは、実計算機又は仮想計算機がゲストOSに提供するデバイスがマイグレーションの元と先で異なる種類である場合には、マイグレーションを行うことができない。これは、マイグレーション対象のゲストOSに、マイグレーション元の計算機が備えるデバイス用のデバイスドライバが組み込まれており、マイグレーション先の計算機ではデバイスの種類が異なるために、そのデバイスドライバが動作し得ないからである。
【００１８】
さらに、仮想計算機を使用したゲストOSのマイグレーションでは、仮想デバイスの状態をマイグレーション先の仮想計算機で復元することは可能であるが、マイグレーション元の仮想計算機で使用していたデバイスを、マイグレーション先の仮想計算機から継続して遠隔に使用することはできない。
【００１９】
そこで、本発明は、計算機に接続されたデバイスが異なる計算機間でも、OSのマイグレーションを実現するための計算機システムを提供することを目的とする。
【００２０】
本発明の計算機システムは、第１の実ハードウエアデバイスを備える第１の計算機と該第１の計算機に通信路を介して接続され第２の実ハードウエアデバイスを備える第２の計算機との間で、オペレーティングシステムのカーネルの移送を行う計算機システムであって、前記第１の計算機は、前記第１の実ハードウエアデバイスを制御する第１のデバイスドライバの状態を記憶する第１の状態管理表と、前記カーネルからの前記第１のデバイスドライバへの第１のアクセスの内容を監視し、その監視された前記第１のアクセスの内容に基いて、前記第１の状態管理表に記憶される前記第１のデバイスドライバの状態に変化が生じたときに、前記第１の状態管理表を、その変化した状態に応じて更新する第１の状態管理部と、前記カーネルのコンテキストを、前記通信路を介して前記第２の計算機へ送信する送信手段とを有し、前記第２の計算機は、前記通信路を介して受信した前記カーネルのコンテキストに基づいて、前記第２の計算機において前記カーネルを復元する復元手段と、前記カーネルが認識している実ハードウエアデバイスの種類と、前記第２の計算機が備える第２の実ハードウエアデバイスの種類と、前記第2の実ハードウエアデバイスを制御する第２のデバイスドライバの状態と、を記憶する第２の状態管理表と、復元された前記カーネルからの前記第２のデバイスドライバへの第２のアクセスの内容を監視し、その監視された前記第２のアクセスの内容に基いて、前記第２の状態管理表に記憶される前記第２のデバイスドライバの状態に変化が生じたときに、前記第２の状態管理表を、その変化した状態に応じて更新する第２の状態管理部と、を有し、前記第１の状態管理部は、前記送信手段が前記カーネルのコンテキストを前記第２の計算機へ送信する場合、前記カーネルを停止し、該停止後、前記第１の状態管理表の内容を前記第２の計算機へ前記通信路を介して送信し、前記第２の状態管理部は、前記通信路を介して受信した前記第１の状態管理表の内容に基いて、前記第２のデバイスドライバにより制御される第２の実ハードウエアデバイスの状態を、前記第１のデバイスドライバにより制御される前記第１の実ハードウエアデバイスと同一の状態に復元し、前記カーネルが認識している前記実ハードウエアデバイスの種類と、前記第２の計算機が備える前記第２の実ハードウエアデバイスの種類とが互いに異なる場合、前記第２の状態管理表に基いて、前記第２の実ハードウエアデバイスに適合するように前記第２のアクセスの内容を変換して、前記第２の実ハードウエアデバイスへアクセスをする。
【００２１】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
【００２２】
まず、図１に基づき、本実施の形態に係わる計算機システムの構成を説明する。図１は、本実施の形態に係わる計算機システムの構成を示す構成図である。
【００２３】
図１において、計算機システム１００は、計算機１０１及び１２１を含む。計算機１０１は、OS１０２と、状態管理部１０３と、状態管理表１０４と、位置管理部１０５と、位置管理表１０６と、デバイスドライバ１０７、１０８、１０９と、デバイス１１０、１１１、１１２を含む。OS１０２は、計算機１０１上で、デバイスドライバ１０７、１０８、１０９と、デバイス１１０、１１１、１１２の環境で動作している。
【００２４】
同様に、計算機１２１は、OS１２２と、状態管理部１２３と、状態管理表１２４と、位置管理部１２５と、位置管理表１２６と、デバイスドライバ１２７、１２８と、デバイス１２９、１３０を含む。OS１２２は、計算機１２１上で、デバイスドライバ１２７、１２８と、デバイス１２９、１３０の環境で動作する。
【００２５】
なお、OS１２２は、計算機１０１上で動作しているOS１０２が後述するマイグレーション動作によって転送されたものである。従って、計算機１０１は、OS１０２のマイグレーション元の計算機であり、計算機１２１は、OS１０２のマイグレーション先の計算機である。状態管理表１２４と位置管理表１２６も、それぞれ状態管理表１０４と位置管理表１０６が、後述するマイグレーション動作によって転送されたものである。そして、計算機１０１と計算機１２１とは、通信路１４０を介して接続されている。
【００２６】
本実施の形態に関わるOSのマイグレーションを実現するため、各計算機に、状態管理部と位置管理部が追加されている。状態管理部１０３と１２３は、それぞれ、計算機１０１と１２１内のデバイスの状態を管理するソフトウェアプログラムモジュールであり、それぞれ状態管理表１０４と１２４を管理する。位置管理部１０５と１２５は、それぞれ、計算機１０１と１２１内の各OSが使用する各デバイスの位置を管理するソフトウェアプログラムモジュールであり、それぞれ、位置管理表１０６と１２６を管理する。
【００２７】
OS１０２と１２２は、それぞれいわゆるOSのカーネルであり、各OSは、対応する状態管理部と位置管理部を介して、デバイス用の各デバイスドライバにアクセスすることによって、各デバイスを使用する。
【００２８】
状態管理部１０３と１２３は、それぞれ、OSからのデバイスへのアクセスの内容を監視し、その監視して得たアクセスの内容を、対応する位置管理部１０５、１２５と各デバイスドライバとへ転送するソフトウェアモジュールである。
【００２９】
状態管理表１０４と１２４は、それぞれOSが使用している各デバイスの状態のデータを記憶するためのテーブルである。状態管理表１０４、１２４は、後述するように、状態管理部１０３、１２３があるデバイスの状態を他のデバイスと同一の状態にするための情報を記録する。また、状態管理表１０４と１２４には、それぞれ、OSがアクセス対象としているすなわちOSから見たデバイスの種類と、計算機が実際に備えているすなわち計算機に接続されているデバイスの実際の種類のデータを記録するためのエントリすなわちデータ領域を含む。OSがアクセス対象として認識しているデバイスと、計算機が実際に備えるデバイスとの種類が異なる場合、状態管理部は、デバイスへのアクセスを計算機が実際に備えるデバイスへのアクセスに変換、すなわちデバイスの機能の変換をすることによって、OSに対して、計算機に実際に備えられたデバイスを、あたかもOSがアクセス対象としているデバイスのように見せることを実現する。
【００３０】
このデバイスの機能を変換する機能を使う際に、デバイスの種類を記録したエントリのデータが使用される。この機能は、仮想計算機による仮想デバイスの実現方法と同様なので本実施の形態では説明を省略する。同一の種類のデバイスを備える計算機間でOSのマイグレーションを行う場合には、デバイスの種類を変換する機能は不要なので、デバイスの種類の記録したエントリのデータは必要ない。
【００３１】
位置管理部１０３と１２３は、それぞれOSからデバイスへのアクセスがあると、位置管理表１０６、１２６に基づいてそのデバイスが接続されている計算機を検索する。位置管理部１０３と１２３は、検索された計算機がOSを実行している計算機であれば、そのまま対応するデバイスドライバにアクセスの要求を転送する。位置管理部１０３と１２３は、検索された計算機がプログラムを実行している計算機以外の他の計算機の場合には、その他の計算機にOSからのデバイスドライバへの要求の内容を転送する。これにより、他の計算機のデバイスが、あたかもOSが動作している計算機に接続されているように、OSに対し、見せることができる。すなわち、他の計算機に接続されたデバイスが、OSが動作している計算機に直接接続されているかのように使用することができる。
【００３２】
位置管理表１０６、１２６は、OSがアクセスを行っているデバイスが、どの計算機に接続されているかのデータを記録するためのテーブルである。位置管理表には、OSが使用するデバイスの種類と、デバイスが接続されている計算機の識別子の対応情報が記録されている。計算機の識別子は、各計算機に固有の情報であれば、識別子は、種類及び内容は何でもよい。
【００３３】
デバイスドライバ１０７はデバイス１１０を制御する専用のソフトウェアモジュールであり、デバイスドライバ１０８はデバイス１１１を制御する専用のソフトウェアモジュールであり、デバイスドライバ１０９はデバイス１１２を制御する専用のソフトウェアモジュールである。計算機１０１上で動作するOS１０２は、デバイス１１０、デバイス１１１及びデバイス１１２を対象としたアクセスを行う。ここでは、デバイス１１０は、ネットワークインターフェースカードであり、計算機１０１は、デバイス１１０と通信路１４０を介して他の計算機と通信を行うことができる。そして、デバイス１１１は、ビデオカードであり、デバイス１１２は、プリンタ装置である。
【００３４】
デバイスドライバ１２７はデバイス１２９を制御する専用のソフトウェアモジュールであり、デバイスドライバ１２８はデバイス１３０を制御する専用のソフトウェアモジュールである。計算機１２１上で動作するOS１２２は、デバイス１２９及びデバイス１３０を対象としたアクセスを行う。ここで、デバイス１２９は、ネットワークインターフェースカードであり、計算機１２１は、デバイス１２９と通信路１４０を介して他の計算機と通信を行うことができる。そして、デバイス１３０は、ビデオカードである。
【００３５】
各デバイスドライバは、各計算機が備える各デバイス用のデバイスドライバであり、仮想計算機の仮想デバイスのようなデバイスの仮想化によるアクセス方法の変換処理を行わないで、デバイスに対してアクセスを行う。従って、変換処理がないため、OSによるデバイスアクセスの速度低下を抑えることができる。
【００３６】
通信路１４０は、イーサネット（登録商標）のような計算機間を接続するネットワークを想定しているが、計算機間で通信できればよく、他の手段であってもよい。
【００３７】
各計算機には識別子が予め与えられており、各計算機は、その識別子によって特定が可能である。計算機の識別子は、計算機のホスト名やＩＰアドレスなどを用いればよいが、計算機毎に固有であればその種類は問わない。
【００３８】
本実施の形態では、計算機１０１は、３つのデバイスを備え、計算機１２１は、２つのデバイスを備えるがその個数に制限はなく、かつその種類も、上述したデバイスに限定されるものではない。
【００３９】
次に、状態管理表について説明する。状態管理表は、OSが使用するデバイス毎に、OSから見たデバイスの種類、実際の種類、項目及び状態のデータを含む。より具体的には、状態管理表は、計算機上のOSが使用するデバイス毎に、OSから見てOSがアクセス対象としているデバイスの種類、例えば、ビデオカードの製品識別子等と、実際に計算機が備えるデバイスの種類と、各デバイスの状態のデータを記録している表である。状態管理表には、状態管理部によって監視された計算機のアクセスの内容に基いて、デバイスの状態が記録される。すなわち、OSからのデバイスドライバへのアクセスの内容に基づいて、デバイスの状態に変化が生じたときには、状態管理部は、その変化した状態を状態管理表に記録する。例えば、ビデオカードへの画像データの書き込みであれば、書き込み位置データと、書き込み内容のデータが、状態管理表に書き込まれる。言い換えると、状態管理部は、OSからのデバイスへのアクセスの内容を監視し、その監視されたアクセスの内容に基いて、状態管理表に記憶されるデバイスの状態に変化が生じたときに、その変化した状態に応じて状態管理表を更新する。
【００４０】
図２及び図３は、状態管理表の構成例を示す図である。図２には、状態管理表１０４の例を示し、図３には、状態管理表１２４の例を示す。図２及び図３には、OSから見たデバイスの種類、例えばビデオカードの製品識別子「A2」等と、実際のデバイスの種類「A2」との対応が付けられ、かつ、各デバイスの状態、例えばビデオカードの状態である画面モードと、ビデオフレームバッファの内容が記録されている例が示されている。
【００４１】
次に、位置管理表について説明する。位置管理表は、OSがアクセス対象としているデバイスが、どの計算機に接続されているかのデータを記録する表で、各デバイスと、そのデバイスが接続された計算機の識別子の対応データが記録されている。
【００４２】
図４及び図５は、位置管理表の構成例を示す図である。図４には、位置管理表１０６の例を示し、図５には、位置管理表１２６の例を示す。図４の位置管理表には、ビデオカード、ネットワークインターフェイスカード及びプリンタは計算機１０１に接続されていることが記録されている。図５の位置管理表には、ビデオカード、ネットワークカードは計算機１２１に接続され、プリンタは計算機１０１に接続されていることが記録されている。
【００４３】
以上のような構成のシステムにおいて、以下、通常、OS１０２がデバイスへのアクセスを行う際の動作（１）を説明し、次に、OS１０２を計算機１０１から計算機１２１にOSのマイグレーションを行う際の動作（２）を説明し、最後に、マイグレーション先のOS１２２がデバイスへのアクセスを行う際の動作（３）を説明する。
【００４４】
（１）OS１０２のデバイスへのアクセス
まず、通常、OS１０２が計算機１０１上でのデバイスアクセスを、どのように行うかを図６に示すフローチャートを用いて説明する。図６は、計算機上のOSがデバイスにアクセスするときの状態管理部と位置管理部の処理の流れの例を示すフローチャートである。ステップ４０１から４０６までが状態管理部の処理に対応し、ステップ４０７から４１２までが位置管理部の処理に対応する。
【００４５】
図６において、OS１０２からのデバイスに対するアクセスが生じると、まず、状態管理部１０３は、ステップ４０１において、OS１０２からのデバイスへのアクセス要求の内容を監視するために受信する。そして、状態管理部１０３は、そのアクセス要求の内容に応じてデバイスの状態を状態管理表１０４に記録する（ステップ４０２）。すなわち、状態管理部１０３は、そのアクセス要求の内容に基いて、状態管理表１０４に記憶されるデバイスの状態に変化が生じたときに、その変化した状態に応じて状態管理表１０４を更新する。状態管理部１０３は、例えば、ビデオカードに対して画面モードの変更要求のアクセスを行った場合は、状態管理表１０４にその画面モードを記録し、画面への描画のためのアクセスを行った場合は、その描画の結果、変化したビデオフレームバッファの内容を記録する。
【００４６】
ここで、デバイスの状態とは、デバイスの最新の状態を意味し、後述するOSのマイグレーション先における他のデバイスにおいて、マイグレーション元のデバイスの最新の状態を復元できるように、デバイスの最新の状態のデータが状態管理表に記録されている。
【００４７】
次に、状態管理部１０３はOS１０２がアクセス対象としているデバイスと、実際のデバイスであるデバイスが同じ種類であるかを判定するために、状態管理表１０４を参照し比較する（ステップ４０３）。OS１０２がビデオカードであるデバイス１１１にアクセスしようとしている場合、図２においてビデオカードは、OS１０２がアクセス対象としているデバイスと、実際のデバイスであるデバイス１１１の種類が同じである。従って、その場合は、ステップ４０４において、YESとなり、そのままステップ４０６に進む。OS１０２がアクセス対象としているデバイスと、実際のデバイスであるデバイスの種類が違う場合は、そのアクセス内容を、実際のデバイスに適合するようにアクセスの内容を変換し（ステップ４０５）、ステップ４０６に進む。ステップ４０６で、デバイスへのアクセス要求を位置管理部１０５に転送する。
【００４８】
位置管理部１０５は、受信したアクセスの内容に基いて、アクセス対象のデバイスが計算機１０１が備えるデバイスかどうかを判断するために、位置管理表１０６を検索する（ステップ４０７）。アクセス対象のデバイスが計算機１０１が備えるデバイス１１１である場合には、ステップ４０８においてYESとなり、位置管理部１０５は、デバイス１１１に対応するデバイスドライバ１０８にアクセス要求を転送し（ステップ４０９）、デバイス１１０にアクセスが行われる（ステップ４１０）。なお、ステップ４１０は、デバイスドライバの処理である。
【００４９】
アクセス対象のデバイスが、計算機１０１が備えるデバイスでなかった場合には、ステップ４０８においてNOとなり、処理は、ステップ４１１に進む。例えば、ここで、OS１０２からのアクセス要求が、計算機１２１が備えるデバイス１３０へのアクセスだったとすると、ステップ４１１において、位置管理部１０５は、デバイスドライバ１０７、デバイス１１０、通信路１４０、デバイス１２９、デバイスドライバ１２７を通して、状態管理部１２３に、そのアクセス要求を転送する。アクセス要求を受け取った状態管理部１２３は、ステップ４０９、ステップ４１０と同様に、位置管理部１２５、デバイスドライバ１２８を介して、デバイス１３０に対してアクセスを行う。
【００５０】
以上のように、状態管理部がデバイスの状態を監視し、かつ位置管理部がデバイスの位置を管理することによって、OS１０２はデバイス１１０、または、計算機１２１が備えるデバイス１３０に対するアクセスを行うことができる。
【００５１】
（２）計算機１０１から計算機１２１へのOSのマイグレーション
次に、計算機１０１から計算機１２１にOS１０２を移送する場合、どのようにOSのマイグレーションが行われるかを説明する。ここでは、二通りのデバイスの形態を説明するために、デバイス１１１、デバイス１３０がビデオカードであり、OS１０２が計算機１０１で動作中はデバイス１１１のビデオカードを使用し、マイグレーション先の計算機１２１で動作中はデバイス１３０のビデオカードを使用する場合と、デバイス１１２がプリンタであり、OS１０２が計算機１０１で動作中はデバイス１１２のプリンタを使用し、マイグレーション先の計算機１２１で動作中も継続してデバイス１１２のプリンタを使用する場合を想定して説明する。状態管理表のビデオカードの状態として、画面モード、フレームバッファの内容などが記録されている例を用いて説明する。
【００５２】
図７は、状態管理部１０３が行うOSのマイグレーションの処理の流れの例を示すフローチャートである。何らかの理由で、例えば、計算機１０１に故障が発生した、計算機１０１のユーザからの計算機１２１へのOSのマイグレーションの指示がされた、等の理由で、状態管理部１０３にOSのマイグレーションの指示がされると、状態管理部１０３による図７の処理が実行される。
【００５３】
まず、ステップ５０１で、OSのマイグレーション中にOS１０２のコンテキスト、状態管理表１０４が更新されないように、OS１０２の動作を停止する。次に、計算機１０１と計算機１２１が通信を行えるように、デバイス１１０のネットワークカードを用いた通信の準備をする（ステップ５０２）。ここでは、計算機１０１と計算機１２１はお互いの識別子を既に認識しており、お互いを検索するといったステップは必要ないとする。
【００５４】
ステップ５０３で、マイグレーション先の計算機１２１から、計算機１０１のデバイスを使用するかどうかをチェックする。これは、状態管理部１０３は、マイグレーション先である計算機１２１のデバイス環境の情報のデータを予め有しており、その情報に基いて、マイグレーション元の計算機１０１のデバイス環境と、マイグレーション先の計算機１２１のデバイス環境とを比較して、マイグレーション先の計算機１２１が計算機１０１のデバイスを使用するか否かのチェックを行う。そして、マイグレーション先の計算機１２１がマイグレーション元の計算機１０１に接続されたデバイスを使用しない場合は、ステップ５０４でNOとなり、位置管理表１０６においてその使用するデバイスに対応する計算機の識別子を、計算機１０１の識別子に書き換える（ステップ５０５）。
【００５５】
例えば、ビデオカードの場合は、OS１０２を計算機１２１へ移送した後、デバイス１３０のビデオカードをビデオカード１１１に代えて使用する場合は、位置管理表１０６におけるビデオカードの計算機の識別子は、計算機１２１の識別子に書き換えられ、ステップ５０６へ進む。しかし、計算機１２１には、プリンタが含まれていない。プリンタ１１２は、計算機１２１からも使用されるので、ステップ５０４でYESとなって、OS１０２を計算機１２１へ移送した後も計算機１２１からデバイス１１０のプリンタを使用するために、位置管理表１０６のプリンタに対応する計算機の識別子を計算機１０１のまま書き換えないでステップ５０６に進む。
【００５６】
ステップ５０６では、計算機１０１の全てのデバイスについて、上記のチェックが終了したかを判断する。全てのデバイスについて、マイグレーション先の計算機から使用するか否かをチェックしていなければ、処理はステップ５０３へ戻る。ステップ５０６において、全てのデバイスについて、マイグレーション先の計算機から使用するか否かをチェックしていたときは、処理はステップ５０７へ進む。
【００５７】
ステップ５０７において、送信手段としての状態管理部１０３は、OS１０２のコンテキスト、状態管理表１０４及び位置管理表１０６の内容を、デバイスドライバ１０７、デバイス１１０と通信路１４０を介して計算機１２１に送信する。すなわち、OSのマイグレーションを行う際には、OSの動作を停止後、通信路を介して、OSのコンテキストと状態管理表をマイグレーション先の計算機の状態管理部へ、位置管理表をマイグレーション先の計算機の位置管理部へ転送する。計算機１２１に転送されたOS１０２はOS１２２となり、状態管理表１０４の内容は状態管理表１２４の内容となり、位置管理表１０６の内容は位置管理表１２６の内容となる。
【００５８】
次に、計算機１２１では、計算機１０１からOS１０２のコンテキスト、状態管理表１０４及び位置管理表１０６の内容を受信すると、状態管理部１２３が、デバイス１２９とデバイスドライバ１２７を介して受信したデータを受信する。図８は、状態管理部１２３におけるOSのマイグレーションの処理の流れの例を示すフローチャートである。
【００５９】
まず、復元手段としての状態管理部１２３は、通信路１４０を介して受信したOS１０２のコンテキストに基いてOSを復元し（ステップ５１１）、OS１２２を生成する。OSの復元は、従来のプロセスマイグレーションと同様にCPUのレジスタ値やOSが使用しているメモリの復元によって実現できる。続いて、必要なデバイスに対して、デバイスの状態の復元作業を開始する。そのために、OS１２２が使用するデバイスが、自己の計算機すなわち計算機１２１に接続されたデバイスであるかを判断するために、図５に示す位置管理表１２６のデータに基いて、OS１２２が使用するデバイスが自己の計算機に接続されたデバイスか否かを、デバイスの１つ１つについてチェックする（ステップ５１２）。
【００６０】
例えば、復元対象のデバイスが上述したプリンタであるデバイス１１２のように、OS１２２が計算機１０１のデバイス１１２を継続して使用し続ける場合は、ステップ５１３においてNOとなって、処理は、ステップ５１４以下の状態の復元処理を行わずに、処理は、ステップ５１８に進む。
【００６１】
ステップ５１２においてチェックした結果、OS１２２が使用するデバイスが自己の計算機に備わったデバイスである場合、ステップ５１３においてYESとなり、処理は、ステップ５１４へ進む。ステップ５１４では、状態管理部１２３は、状態管理表１２４に基いて、OS１２２に見せるデバイスと実際のデバイスを比較する。計算機１２２のOS１２２が使用するデバイスが、ビデオカードであるデバイス１１１から、同じくビデオカードであるデバイス１３０に変更するようなデバイスである場合、ステップ５１４の比較の結果、デバイス１１１の種類は「A2」であり、デバイス１３０の種類は「B2」であり、ビデオカードの種類が同じでないので、ステップ５１５においてNOとなる。ステップ５１５でNOとなると、状態管理部１２３は、デバイス１３０に適合するようなアクセス方法を用いることによって、状態管理表１２４に記録されている画面モードの設定と、フレームバッファの内容のコピーを、デバイスドライバ１２８を介して行い（ステップ５１７）、デバイス１３０の状態を、OS１０２の停止直前のデバイス１１１と同一の状態に復元する。デバイスに適合すようなアクセス方法とは、デバイス１３０へ画像データを書き込む場合のデータの供給方法が、デバイス１１１へ同じ画像データを書き込む場合のデータの供給方法と異なっている場合、デバイス１３０へのデータ供給方法に応じたアクセスである。従って、OSからのアクセスの内容が、デバイス１３０に応じて変換される。
【００６２】
なお、状態管理部１２３は、ステップ５１４において、計算機１２１に接続されたデバイスの実際の種類を、状態管理表１２４に記録あるいは書き換える。
【００６３】
OS１２２から見たデバイスの種類と、実際のデバイスの種類が同じである場合、状態管理部１２３は、状態管理表１２４に基いて、計算機１２１に接続された実際のデバイスの状態を、マイグレーション元のOS１０２が停止前に使用していたデバイスの状態と同一になるようにデバイスドライバを介して、実際のデバイスの設定すなわち状態の復元を行い（ステップ５１６）、ステップ５１８に進む。例えば、ビデオカードであるデバイス１１１と１３０が同じ種類のデバイスであれば、状態管理表１２４の内容に基いて、デバイス１３０のビデオカードの画面モードの設定を行い、フレームバッファの内容のコピーを行う。
【００６４】
ステップ５１８において、OS１２２が使用する全てのデバイスについて、ステップ５１２から５１７までの処理を実行したか否かが判断され、全てのデバイスについて判断されていないときは、処理は、ステップ５１８においてNOとなり、ステップ５１２に戻る。全てのデバイスについてステップ５１２から５１７までの処理が実行されたときは、処理は、ステップ５１８においてYESとなり、OS１２２の動作を開始する（ステップ５１９）。そして、OS１２２の動作が再開された後は、計算機１２１の動作は、上述した図６を含む通常動作に移る。
【００６５】
このようにして、OSのコンテキストおよび、デバイスの状態の復元が終了した後、OSが再実行されるので、移送されたOSは、計算機が変更されたことによる影響を受けずに動作を継続することができる。
【００６６】
例えば、上述したように、マイグレーション元にはプリンタが接続されているが、マイグレーション先には接続されていないというように、マイグレーション先の計算機で、マイグレーション元の計算機が備えるデバイスを備えていないような場合に、位置管理表の書き換え時に、マイグレーション前の計算機の識別子のままにして、位置管理表がマイグレーション先に転送される。マイグレーション先での該デバイスへのアクセスは、マイグレーション先の位置管理部がデバイスへのアクセスをマイグレーション元の計算機に転送する。この動作によって、マイグレーション後もマイグレーション先の計算機からマイグレーション元の計算機が備えるデバイスを使用し続けることができる。
【００６７】
（３）移送されたOS１２２のデバイスへのアクセス
計算機１２１へOS１０２が移送された後、OS１２２がデバイスにアクセスするときの処理の流れを図６に示すフローチャートを用いて説明する。図６において、OS１２２からのデバイスに対するアクセスが発生すると、まず、状態管理部１２３は、ステップ４０１において、OS１２２からのデバイスへのアクセス要求を受信する。そして、状態管理部１２３は、そのアクセス要求の内容に応じてデバイスの状態を状態管理表１２４に記録する（ステップ４０２）。
【００６８】
そして、状態管理部１２３はOS１２２がアクセス対象としているデバイスと、実際のデバイスであるデバイスが同じ種類であるかを判定するために、状態管理表１２４を参照し比較する（ステップ４０３）。OS１２２がビデオカードであるデバイス１３０にアクセスしようとしている場合、図３においてビデオカードは、OS１２２がアクセス対象としているデバイスと、実際のデバイスであるデバイス１３０が異なる。この場合は、そのアクセス内容を、実際のデバイスに適合するようにアクセスの内容を変換し（ステップ４０５）、ステップ４０６に進む。従って、ステップ４０６において、状態管理部１２３は、変換されたアクセス要求の内容を位置管理部１２５に転送する。OS１２２がアクセス対象としているデバイスと、実際のデバイスであるデバイスが同じ種類である場合は、ステップ４０４において、YESとなり、そのままステップ４０６に進む。ステップ４０６において、状態管理部１２３は、デバイスへのアクセス要求をそのまま位置管理部１２５に転送する。
【００６９】
次に、位置管理部１２５は、アクセス対象のデバイスが計算機１２１が備えるデバイスかどうかを判断するために、位置管理表１２６を検索する（ステップ４０７）。アクセス対象のデバイスが計算機１２１が備えるデバイス、例えばビデオカードであるデバイス１３０である場合には、ステップ４０８においてYESとなり、位置管理部１２５は、デバイス１３０に対応するデバイスドライバ１２８にアクセス要求を転送し（ステップ４０９）、デバイス１３０にアクセスが行われる（ステップ４１０）。
【００７０】
アクセス対象のデバイスが、計算機１２１が備えるデバイスでなかった場合には、ステップ４０８においてNOとなり、処理は、ステップ４１１に進む。例えば、ここで、OS１２２からのアクセス要求が、計算機１０１が備えるデバイス１１２へのアクセスだったとすると、ステップ４１１において、位置管理部１２５は、デバイスドライバ１２７、デバイス１２９、通信路１４０、デバイス１１０、デバイスドライバ１０７を通して、状態管理部１０３に、そのアクセス要求を転送する。アクセス要求を受け取った状態管理部１０３は、ステップ４０９、ステップ４１０と同様に、位置管理部１０５及びデバイスドライバ１０９を介して、デバイス１１２に対してアクセスを行う。
【００７１】
以上のように、マイグレーション先の計算機１２１において、マイグレーションされたOS１２２は、状態管理部１２３及び位置管理部１２５によって、計算機１２１に接続されたデバイスをマイグレーション元の計算機１０１において使用していた状態と同じ状態で使用でき、かつ、計算機１２１のデバイスだけでなく、マイグレーション元の計算機１０１のデバイスに対してもアクセスすることができる。
【００７２】
なお、ステップ５０７の送信されるOS１０２のコンテキストすなわちCPUやメモリに関するコンテキストの内容、その内容のマイグレーション先への送信処理、及びステップ５１１のOS１２２の復元処理は、通常のプロセスマイグレーションにおけるコンテキストの内容等の送信処理及び復元処理と同様であるので、ここでは説明を省略した。
【００７３】
また、ネットワークカードであるデバイス１１０及びデバイス１２９の状態の転送及び復元は、ビデオカードであるデバイス１１１とデバイス１３０と同様に行われる。但し、ネットワークカードの場合は、ネットワークカードの状態がマイグレーション前の状態に復元されても、計算機が接続されているネットワークが変更された場合、OS１２２が正常に外部と通信を継続できないこともある。そのような場合は、状態管理部１２３がOS１２２に、計算機が接続されているネットワークが変更になったことをOS１２２に通知して、OS１２２が持つＭｏｂｉｌｅＩＰ（ＲＦＣ２００２に開示される）等の技術を使って、ネットワークの設定を変更し、通信を継続して行えるようにしてもよい。
【００７４】
ここでは、ビデオカード、プリンタ、ネットワークカードをデバイスの例として使用したが、他のデバイス、すなわちCPUとメモリ以外の、キーボード、マウス等についても同様の方法でアクセス及びマイグレーションが行われる。
【００７５】
なお、マイグレーション元とマイグレーション先の計算機が、例えばビデオカードのような同じ用途に使用できるデバイスを備えており、マイグレーション後はマイグレーション先の計算機のデバイスを使用する場合には、OSのコンテキスト、状態管理表、位置管理表の転送時に、位置管理表中の該当するデバイスの接続先をマイグレーション先の計算機に書き換えられるが、この書き換えは、マイグレーション元の計算機で行っても、マイグレーション先の計算機で行ってもよい。
【００７６】
また、本実施の形態では、２つの計算機間でのOSのマイグレーションを説明したが、３つ以上の計算機間においても、ある計算機から他の計算機へOSのマイグレーションを行い、さらに、その他の計算機からさらに他の計算機へOSのマイグレーションを行うようにしてもよい。
【００７７】
上述したようにOSのマイグレーションができれば、計算機のユーザからみると、OS上で動いているアプリケーションプログラムも、元の計算機で動作していた状態でそのまま実行しているように見えるので、OSの相違による操作性等が変わらずに、マイグレーション先の計算機でそのアプリケーションプログラムを利用することができる。
【００７８】
本実施の形態に係るOSのマイグレーション方式によれば、状態管理部がデバイスの状態を管理し、デバイスの状態が記録された状態管理表を計算機間で転送することによって、OSにマイグレーションを意識させることなく、ハードウェアデバイスに密着したOSを計算機間で移送することが可能となる。
【００７９】
また、OSが認識するデバイスと、計算機が備えるデバイスが異なるデバイスである場合にも、状態管理部でそのアクセス方法を変換することによって、異なるデバイス構成の計算機間でも、OSにデバイスの変更を意識させずにOSのマイグレーションを行うことを実現する。
【００８０】
さらに、位置管理部によってデバイスの位置を管理し、位置管理表に基いてOSからのデバイスのアクセスを他の計算機に転送することによって、OSが動作する計算機以外の計算機のデバイスを使用することが可能となる。これによって、マイグレーション先の計算機から、マイグレーション元の計算機のデバイスを継続して使用しつづけることができる。
【００８１】
また、OSが認識するデバイスと、計算機が備えるデバイスを同じ種類のデバイスにし、OSとデバイスドライバ間のデバイスへのアクセスを状態管理部で監視することによって、従来の仮想計算機による仮想デバイスよりも少ない処理でOSからデバイスへのアクセスが可能となり、OSの速度の低下を防ぐことを実現する。
【００８２】
本明細書における各「部」は、実施の形態の各機能に対応する概念的なもので、必ずしも特定のハードウエアやソフトウエア・ルーチンに１対１には対応しない。従って、本明細書では、以下、実施の形態の各機能を有する仮想的回路ブロック（部）を想定して実施の形態を説明する。また、本実施の形態における各手順の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
【００８３】
なお、以上説明した動作を実行するプログラムは、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ等の可搬媒体や、ハードディスク等の記憶装置等に、その全体あるいは一部が記録され、あるいは記憶されている。そのプログラムがコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明の計算機システムを実現することができる。
【００８４】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【００８５】
【発明の効果】
以上説明したように、本発明によれば、計算機に接続されたデバイスが異なる計算機間でも、OSのマイグレーションを実現するための計算機システムを実現することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係わるコンピュータシステムの構成を示す構成図である。
【図２】本発明の実施の形態に係わる状態管理表の構成例を示す図である。
【図３】本発明の実施の形態に係わる状態管理表の他の構成例を示す図である。
【図４】本発明の実施の形態に係わる位置管理表の構成例を示す図である。
【図５】本発明の実施の形態に係わる位置管理表の他の構成例を示す図である。
【図６】本発明の実施の形態に係わる状態管理部と位置管理部の処理の流れの例を示すフローチャートである。
【図７】本発明の実施の形態に係わる状態管理部１０３におけるOSのマイグレーションの処理の流れの例を示すフローチャートである。
【図８】本発明の実施の形態に係わる状態管理部１２３におけるOSのマイグレーションの処理の流れの例を示すフローチャートである。
【符号の説明】
１００・・・コンピュータシステム、１０１、１２１・・・計算機、１０７、１０８、１０９、１２７、１２８・・・デバイスドライバ、１１０、１１１、１１２、１２９、１３０・・・デバイス
【図１】
0003933587.tif 000002
【図２】
0003933587.tif 000003
【図３】
0003933587.tif 000004
【図４】
0003933587.tif 000005
【図５】
0003933587.tif 000006
【図６】
0003933587.tif 000007
【図７】
0003933587.tif 000008
【図８】
0003933587.tif 000009