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