(57)【特許請求の範囲】
【請求項１】
計算装置において作動するコンソールアプリケーションとサーバーのコントローラーが実行する第一サーバアプリケーションの間に、第一リモートＫＶＭセッションを確立するステップと、
前記コンソールアプリケーションと前記第一サーバアプリケーションの間の、前記第一リモートＫＶＭセッション関連のエラーを検出するステップと、
前記エラーに応じて、前記コンソールアプリケーションと前記サーバー上のＯＳまたはＢＩＯＳが実行する第二サーバアプリケーションの間に、第二リモートＫＶＭセッションを確立するステップと、
を含み、
前記第一リモートＫＶＭセッションは、前記計算装置と前記コントローラーの間の第一ネットワーク接続を介して確立され、
前記第二リモートＫＶＭセッションは、前記計算装置と前記第二サーバアプリケーションの間の第二ネットワーク接続を介して確立されることを特徴とする、リモートＫＶＭセッションに使用する方法。
【請求項２】
前記第一ネットワーク接続は、前記コントローラーに指定される第一ネットワークアドレスに基づいて確立され、且つ前記第二ネットワーク接続は、前記ＯＳまたは前記ＢＩＯＳに指定される少なくとも１つの第二ネットワークアドレスに基づいて確立されることを特徴とする、請求項１に記載のリモートＫＶＭセッションに使用する方法。
【請求項３】
前記エラーを検出するステップは、
前記第一リモートＫＶＭセッションの期間に、前記ＯＳもしくは前記ＢＩＯＳに指定されるネットワークアドレスの要求、またはリモートＫＶＭ機能を実行する要求を前記コントローラーへ周期的に送信するステップと、
前記要求に対する応答が、所定期間内に前記コンソールアプリケーションによって受信されるかを判断するステップと、
を含むことを特徴とする、請求項１に記載のリモートＫＶＭセッションに使用する方法。
【請求項４】
前記第二サーバアプリケーションから、前記コントローラーのネットワークアドレス要求に対し、または前記リモートＫＶＭ機能を実行する要求に対する応答の受信失敗に基づき、第二リモートＫＶＭセッション関連の第二エラーを検出するステップと、
前記第二エラーに応じて、前記コンソールアプリケーションと前記第一サーバアプリケーションの間の第一リモートＫＶＭセッションを再確立するステップとをさらに含み、
前記第一リモートＫＶＭセッションは、前記計算装置と前記第一サーバアプリケーションの間の前記第一ネットワーク接続を介して再確立されることを特徴とする、請求項３に記載のリモートＫＶＭセッションに使用する方法。
【請求項５】
プロセッサーによって実行されると、前記プロセッサーに以下の動作を実行させる命令が格納された非一時的なコンピューター可読媒体であって、
前記動作は、
計算装置において作動するコンソールアプリケーションとサーバーのコントローラーが実行する第一サーバアプリケーションの間に、第一リモートＫＶＭセッションを確立するステップと、
前記コンソールアプリケーションと前記第一サーバアプリケーションの間の、前記第一リモートＫＶＭセッション関連のエラーを検出するステップと、
前記エラーに応じて、前記コンソールアプリケーションと前記サーバー上のＯＳまたはＢＩＯＳが実行する第二サーバアプリケーションの間に、第二リモートＫＶＭセッションを確立するステップと、
を含み、
そのうち、前記第一リモートＫＶＭセッションは、前記計算装置と前記コントローラーの間の第一ネットワーク接続を介して確立され、
前記第二リモートＫＶＭセッションは、前記計算装置と前記第二サーバアプリケーションの間の第二ネットワーク接続を介して確立されることを特徴とする、非一時的なコンピューター可読媒体。
【請求項６】
前記エラーを検出するステップは、
前記第一リモートＫＶＭセッションの期間に、前記ＯＳもしくは前記ＢＩＯＳに指定されるネットワークアドレスの要求、またはリモートＫＶＭ機能を実行する要求を前記コントローラーへ周期的に送信するステップと、
要求に対する応答が、所定期間内に前記コンソールアプリケーションによって受信されるかを判断するステップと、
を含むことを特徴とする、請求項５に記載の非一時的なコンピューター可読媒体。
【請求項７】
前記第二ネットワーク接続は、前記ＯＳまたは前記ＢＩＯＳに指定される第二ネットワークアドレスに基づいて確立され、前記第一ネットワーク接続は、前記コントローラーに指定される第一ネットワークアドレスに基づいて確立されることを特徴とする、請求項５に記載の非一時的なコンピューター可読媒体。
【請求項８】
リモートＫＶＭセッションに使用するシステムであって、
プロセッサーと、
１つまたは複数のコンピューター可読媒体と、
コントローラーと、
を備え、
前記１つまたは複数のコンピューター可読媒体はＯＳまたはＢＩＯＳを格納し、
前記コントローラーは、
前記ＢＩＯＳから前記ＢＩＯＳ関連の第一ネットワークアドレスを受信し、
前記コントローラー関連の第二ネットワークアドレスを前記ＢＩＯＳに送信し、
リモート装置が実行するコンソールアプリケーションと第一サーバアプリケーションの間に、リモートＫＶＭセッションを確立し、且つ前記リモートＫＶＭセッションは前記リモート装置と前記コントローラーの間のネットワーク接続を介して確立され、
前記リモートＫＶＭセッションの期間に、前記ＢＩＯＳ関連の前記第一ネットワークアドレスを前記リモート装置に送信し、
前記コントローラー関連の第二ネットワークアドレスを前記ＯＳに実行させる第二サーバアプリケーションに送信し、
前記第二サーバアプリケーションから前記ＯＳ関連の第三ネットワークアドレスを受信し、
前記ＯＳ関連の前記第三ネットワークアドレスを前記リモート装置の前記コンソールアプリケーションに送信することを特徴とする、リモートＫＶＭセッションに使用するシステム。
【請求項９】
前記コントローラーは、前記ＢＩＯＳから前記第二ネットワークアドレスを受信し、且つ前記コントローラーと前記ＢＩＯＳの間の帯域内接続を介して、前記第二ネットワークアドレスを前記ＢＩＯＳに送信することを特徴とする、請求項８に記載のリモートＫＶＭセッションに使用するシステム。
【請求項１０】
前記システムは、前記リモート装置をさらに含み、前記リモート装置はコンピューター可読媒体を有し、前記コンピューター可読媒体は前記コンソールアプリケーションを格納し、前記コンソールアプリケーションは以下の動作を実行させるコンピューター実行可能な命令を格納し、
前記動作は、
前記コンソールアプリケーションと前記コントローラーに実行される第一サーバアプリケーションの間にリモートＫＶＭセッションを確立し、且つリモートＫＶＭ機能を実行し、
前記コンソールアプリケーションと前記コントローラーが実行する前記第一サーバアプリケーションの間の、前記リモートＫＶＭセッション関連のエラーを検出し、
前記エラーに応じて、前記コンソールアプリケーションと前記ＯＳもしくは前記ＢＩＯＳに実行される第二サーバアプリケーションの間に、第二リモートＫＶＭセッションを確立し、
前記第二リモートＫＶＭセッションは前記リモート装置と前記第二サーバアプリケーションの間の第二ネットワーク接続を介して確立されることを特徴とする、請求項８に記載のリモートＫＶＭセッションに使用するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一種のリモートＫＶＭ（ｒｅｍｏｔｅｋｅｙｂｏａｒｄ，ｖｉｄｅｏ，ａｎｄ  ｍｏｕｓｅ）セッションプロトコル及びそのメカニズムに関する。
【背景技術】
【０００２】
リモート管理ソフトウェアは、使用者が遠隔からサーバーを制御または管理することができるため、その利用が普及しつつある。実際に、最新のサーバーは一般的にリモートのキーボード、ビデオ、マウス（リモートＫＶＭ）機能を有するため、使用者が別の装置から遠隔でサーバーに接続、そして制御することができる。リモートＫＶＭ機能を介して、使用者はサーバーの画面を見ることができ、そして、例えばキーボードやマウスなどのサーバーの部品にもアクセス可能である。リモートＫＶＭ機能は一般的にサーバー上のＢＭＣ（ｂａｓｅｂｏａｒｄ  ｍａｎａｇｅｍｅｎｔ  ｃｏｎｔｒｏｌｌｅｒ）を介して操作される。よって、リモートＫＶＭセッションの信頼性と安定性は、ＢＭＣとネットワーク接続に大きく依存する。ＢＭＣまたはリモートＫＶＭネットワーク接続に問題が発生すると、リモートＫＶＭセッションが不安定になる可能性がある。一般の場合では、ＢＭＣまたはリモートＫＶＭネットワーク接続に問題が発生すると、リモートＫＶＭセッションが途中で中断される。そして、その問題が続くと、使用者がリモートＫＶＭセッションを再確立することができなくなる可能性がある。これでは、特にサーバーに物理的なアクセスが困難な場合に、使用者に大きな不便がもたらされる。
【発明の概要】
【０００３】
本開示の付加的な特徴及び利点は、以下の説明で部分的に説明され、その説明から部分的に明らかになり、または本開示の原理を実施することによって理解されることができる。本開示の特徴及び利点は、特許請求の範囲に示される要素および組合せによって実現及び達成される。本開示の上述した特徴及び他の特徴は、以下の説明及び添付の特許請求の範囲からより完全に明らかになり、または本明細書に記載された原理の実施によって理解されることができる。
【０００４】
本発明は、一種のリモートＫＶＭセッションの故障を回復する技術を提示する。一部の実施例において、システムはシステム上のコンソールアプリケーションとサーバー上のコントローラー、例えばＢＭＣが執行する第一サーバアプリケーションの間に第一リモートＫＶＭセッションを確立することができる。システムとサーバー上のコントローラーの間の第一ネットワーク接続を介して第一リモートＫＶＭセッションが確立されることができる。例えば、コントローラー自体が通信インターフェースを有し、ネットワークを介してシステムに通信することができる。通信インターフェースは、サーバーがネットワーク接続を確立するために使用する他の通信インターフェースとは異なる場合がある。
【０００５】
そして、システムが第一リモートＫＶＭセッションに関連するエラーを検出することができる。例えば、システムが周期的な命令をコントローラー及び／または関連するサーバアプリケーションに送信し、コントローラーからの応答を要求することができる。この命令は、ＯＳ（ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）またはサーバーのＢＩＯＳ（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）など、サーバーの別のコンポーネントに関連するネットワークアドレスの要求であっても良い。システムが、閾値時間内または閾値回数以内に応答を受信しない場合、システムは、第一リモートＫＶＭセッション及び／またはシステムとコントローラーの間の関連する接続でエラーが発生したと判断することができる。
【０００６】
そのエラーに応じて、システムがコンソールアプリケーションと、サーバー上にＯＳまたはＢＩＯＳを介して実行された第二サーバアプリケーションの間に第二リモートＫＶＭセッションを確立することができる。第二リモートＫＶＭセッションは、システムと第二サーバアプリケーションの間の第二ネットワーク接続を介して確立されることができる。第二サーバアプリケーションは、コントローラーではなく、サーバーのＯＳまたはＢＩＯＳによって実行または管理されることができる。さらに、第二サーバアプリケーションは、第一サーバアプリケーションと異なる通信インターフェースを介してコンソールアプリケーションとの接続を確立することができる。このように、第二サーバアプリケーションは、コントローラー、第一サーバアプリケーション及び／またはコントローラーと関連する通信インターフェースにエラー若しくは故障が発生したとしても、第二サーバアプリケーション自体の機能及びコンソールアプリケーションとの通信を維持することができる。
【図面の簡単な説明】
【０００７】
本開示の上記の利点と特徴及び他の利点と特徴が得られる方法を説明するために、上記において簡単に説明した原理の具体的な説明を、特定の実施形態を参照しながら説明する。これらの図面は、本開示の例示的な実施形態のみを示しており、本発明の範囲を限定するものではないことは理解されるべきであろう。また、本開示の原理は、その付加的な特徴及び細部と共に、添付の図面を通じて説明される。
【図１Ａ】例示的なシステムの実施例を示す図である。
【図１Ｂ】例示的なシステムの実施例を示す図である。
【図２】リモートＫＶＭサービスシステムの概略図である。
【図３Ａ】リモートＫＶＭサービスの例示的なサーバー側プロセスの概略図である。
【図３Ｂ】リモートＫＶＭサービスの例示的なクライアント側プロセスの概略図である。
【図４】リモートＫＶＭサービスの例示的な通信フローのフェイルオーバーの概略図である。
【図５】リモートＫＶＭサービスのフェイルオーバーの例示的な方法を示す図である。
【発明を実施するための形態】
【０００８】
本開示の様々な実施例を以下に詳しく説明する。また、特定の実施形態について説明しているが、これらは説明のためにのみ示されていることを理解されたい。当業者は、本開示の趣旨及び範囲から逸脱することなく他の要素及び構成を使用できることを認識するであろう。
【０００９】
以下に開示されたのは、適応性と安定性に優れるリモート管理アプリケーションのためのシステム、方法及び非一時的なコンピューター可読媒体である。まずは、リモートＫＶＭの例示的なシステム及び構成を簡単に紹介する。続いて、リモートＫＶＭの実施例とその変形を詳しく説明する。これらの変形形態を、様々な実施例として説明する。本開示をまず図１Ａ、１Ｂを参照しながら説明する。
【００１０】
本明細書に使用されるリモートＫＶＭ（ｒＫＶＭ）という用語は、遠隔デスクトップソフトウェアのような遠隔管理のための任意のソフトウェア、プロトコル、インターフェース、ファームウェア、及び／またはハードウェアを指し、ネットワーク及び第一の装置、第二の装置のキーボード、ビデオ（即ち、スクリーンまたはビデオコンソールディスプレイ）、マウス、並びに記憶装置またはイメージ、メモリー装置、周辺装置などの任意の他の部品などである。さらに、装置のキーボード、ビデオ、マウスに遠隔的にアクセス、または装置のキーボード、ビデオ、マウスを遠隔的に制御するために、リモートＫＶＭはＲＤＰ（ｒｅｍｏｔｅ  ｄｅｓｋｔｏｐ  ｐｒｏｔｏｃｏｌ）、ＲＦＢ（ｒｅｍｏｔｅ  ｆｒａｍｅ  ｂｕｆｆｅｒ）、ＩＣＡ（ｉｎｄｅｐｅｎｄｅｎｔ  ｃｏｍｐｕｔｉｎｇ  ａｒｃｈｉｔｅｃｔｕｒｅ）、ＳＳＨ（ｓｅｃｕｒｅ  ｓｈｅｌｌ）、ｔｅｌｎｅｔ、ＨＴＴＰ（ｈｙｐｅｒ  ｔｅｘｔ  ｔｒａｎｓｆｅｒ  ｐｒｏｔｏｃｏｌ）などの１つ以上のプロトコル、及び／またはその後継物若しくは同等物、例えば標準プロトコルを使用してリモートＫＶＭを実行できる。
【００１１】
本明細書に使用する「ＢＩＯＳ」という用語は、システムのハードウェア部品を初期化し、システムのハードウェア部品をテストし、メモリー装置からブートローダをロードし、若しくはメモリー装置からＯＳをロードする任意のファームウェアである。例えば、本明細書に使用するＢＩＯＳという用語は、当業界にＢＩＯＳとして認知されるファームウェアまたはその後継物若しくは同等物、例えばＥＦＩ（Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ）またはＵＥＦＩ（Ｕｎｉｆｉｅｄ  Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ）である。
【００１２】
図１Ａ、１Ｂは、例示的なシステムの実施例である。本開示を実施する時、より適切な実施例が当業者には明らかである。当業者であれば、システムの他の実施例も可能であることを容易に理解できる。
【００１３】
図１Ａは、システムバス計算システム１００の構成を示し、その中の部品がバス１０２を介して電気通信している。この例示的なシステム１００は、処理装置（ＣＰＵまたはプロセッサー）１３０と、ＲＯＭ１０６及びＲＡＭ１０８などのシステムメモリー１０４のようなシステム部品を含み、プロセッサー１３０に連結するシステムバス１０２を含む。システム１００は、プロセッサー１３０に直接的にまたは近接的に連結され、若しくは一部として統合される高速メモリーのキャッシュを含むことができる。システム１００は、メモリー１０４及び／または記憶装置１１２からデータをキャッシュ１２８にコピーすることで、プロセッサー１３０による迅速なアクセスを可能にすることができる。このようにして、キャッシュは、プロセッサー１３０がデータを待つことによって発生する遅延を回避し、性能向上を提供することができる。これら及び他のモジュールは、様々な作動を実行するために、プロセッサー１３０を制御し、若しくは制御するように構成されることができる。他のシステムメモリー１０４も使用可能である。メモリー１０４は、様々な特性を有する複数の異なるタイプのメモリーを含むことができる。プロセッサー１３０は、プロセッサー１３０を制御するように構成される記憶装置１１２に格納されたモジュール１（１１４）、モジュール２（１１６）、及びモジュール３（１１８）などの任意の汎用プロセッサーのようなハードウェアモジュールまたはソフトウェアモジュールを含むことができ、若しくはソフトウェア命令が実際のプロセッサー設計に組み込まれている専用のプロセッサーである。プロセッサー１３０は、本質的に、複数のコアまたはプロセッサー、バス、メモリーコントローラー、キャッシュなどを含む完全に自己完結型の計算システム（ｃｏｍｐｌｅｔｅｌｙ  ｓｅｌｆ−ｃｏｎｔａｉｎｅｄ  ｃｏｍｐｕｔｉｎｇ  ｓｙｓｔｅｍ）であってもよい。マルチコアのプロセッサーは、対称または非対称であってもよい。
【００１４】
使用者と計算装置システム１００の対話を可能にするために、入力装置１２０は、スピーチ用のマイク、ジェスチャーまたはグラフィック入力の接触画面、キーボード、マウス、動作入力、音声などの任意の数の入力機構を表すことができる。出力装置１２２はまた、当業界に公知のいくつかの出力機構のうちの１つまたは複数であってもよい。場合によっては、マルチモジュールのシステムにより、使用者が複数タイプの入力装置によって、計算装置１００と通信できる。通信インターフェース１２４は、一般的に、使用者入力及びシステム出力を支配（ｇｏｖｅｒｎ）及び管理することができる。また、特定のハードウェア構成での操作に制限されていないので、ここでの基本的な機能は、改良されたハードウェア及びファームウェアの開発により容易に置換されることができる。
【００１５】
記憶装置１１２は、ＮＶＭｅドライブなどの不揮発性メモリーであり、若しくはコンピューターによってアクセス可能なデータを格納することができるハードディスクまたは他のタイプのコンピューター可読媒体からなるもの、例えば磁気カセット、フラッシュメモリーカード、ＤＶＤ、カートリッジ、ＲＡＭ１０８、ＲＯＭ１０６、及びそれらのハイブリッドである。
【００１６】
プロセッサー１３０を制御するために、記憶装置１１２はソフトウェアモジュール１（１１４）、モジュール２（１１６）、モジュール３（１１８）を含むことができる。他のハードウェアまたはソフトウェアモジュールも考えられる。記憶装置１１２は、システムバス１０２に連結されることができる。１つの実施態様では、特定機能を実行するハードウェアモジュールは、プロセッサー１３０、バス１０２、表示装置１３６などの必要なハードウェア部品に連結されるコンピューター可読媒体に格納されたソフトウェア部品を含み、その機能を実行することができる。
【００１７】
コントローラー１１０は、システム１００上の專用のマイクロコントローラーまたはプロセッサーであり、例えばＢＭＣである。一部の実施例では、コントローラー１１０は、ＩＰＭＩ（ＩｎｔｅｌｌｉｇｅｎｔＰｌａｔｆｏｒｍＭａｎａｇｅｍｅｎｔＩｎｔｅｒｆａｃｅ）の一部である。さらに、一部の実施例では、コントローラー１１０はシステム１００のマザーボードまたはメイン回路基板に埋め込まれることもできる。コントローラー１１０は、システム管理ソフトウェアとプラットフォームハードウェアの間のインターフェースを管理することができる。コントローラー１１０は、以下で説明されるように、コントローラーまたは周辺部品などの様々なシステム装置及び部品（内部及び／または外部）と通信することもできる。
【００１８】
コントローラー１１０は、通知、アラート、及び／またはイベントに対する特定の応答を生成し、リモート装置または部品（例えば、Ｅ−ｍａｉｌメッセージ、ネットワークメッセージなど）と通信し、自動ハードウェア回復プロセスのための命令またはコマンドを生成するなどのことができる。管理者は、以下で説明されるように、コントローラー１１０と遠隔通信して、動作または特定のハードウェア回復手順を開始または実行することもできる。
【００１９】
システム１００上の異なるタイプのセンサー（例えば、センサー１２６）は、冷却ファンのスピード、電力状態、ＯＳ状態、ハードウェア状態などのパラメータについてコントローラー１１０に報告することができる。コントローラー１１０はまた、コントローラー１１０によって受信されたイベント、アラート、及び通知を管理及び維持するためのシステムイベントログコントローラー及び／または記憶装置を含むことができる。例えば、コントローラー１１０またはシステムイベントログコントローラーは１つまたは複数の装置及び部品からのアラートまたは通知を受信し、且つそのアラートまたはその通知をシステムイベントログ記憶部品に維持することができる。
【００２０】
フラッシュメモリー（Ｆｌａｓｈｍｅｍｏｒｙ）１３２は、記憶及び／またはデータ転送をするためにシステム１００に使用された電子不揮発性コンピューター記憶媒体またはチップであっても良い。フラッシュメモリー１３２は、電気的に消去及び／または再プログラムされることができる。フラッシュメモリー１３２は、例えば、ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、ＲＯＭ、不揮発性ランダムアクセスメモリー（ＮＶＲＡＭ）、またはＣＭＯＳ（ｃｏｍｐｌｅｍｅｎｔａｒｙ  ｍｅｔａｌ−ｏｘｉｄｅ  ｓｅｍｉｃｏｎｄｕｃｔｏｒ）を含むことができる。フラッシュメモリー１３２は、システム１００に最初に電源を入れる時に、システム１００によって実行されるＢＩＯＳ１３４のファームウェアを、ＢＩＯＳ１３４に対して特定された設定のセットと共に格納することができる。フラッシュメモリー１３２はまた、ＢＩＯＳ１３４に使用される設定を格納することができる。
【００２１】
ＢＩＯＳ１３４は、システム１００が起動されるたびにシーケンスプログラムとしてロードされることができる。ＢＩＯＳ１３４は、その設定のセットに基づいてシステム１００に存在するハードウェアを識別、初期化、及びテストすることができる。ＢＩＯＳ１３４は、システム１００上でＰＯＳＴ（Ｐｏｗｅｒ−ｏｎ−Ｓｅｌｆ−Ｔｅｓｔ）などの自己テストを実行することができる。自己テストは、ＨＤＤ（ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅｓ）、光学読取装置（ｏｐｔｉｃａｌ  ｒｅａｄｉｎｇ  ｄｅｖｉｃｅｓ）、冷却装置、記憶モジュール、拡張カード（ｅｘｐａｎｓｉｏｎ  ｃａｒｄｓ）などの様々なハードウェア部品の機能をテストすることができる。ＢＩＯＳ１３４は、ＯＳを格納するためにメモリー１０４、ＲＯＭ１０６、ＲＡＭ１０８及び／または記憶装置１１２の領域にアドレス指定して割り当てることができる。ＢＩＯＳ１３４は、ブートローダー及び／またはＯＳをロードし、システム１００の制御をＯＳに渡すことができる。
【００２２】
システム１００のＢＩＯＳ１３４は、ＢＩＯＳ１３４がシステム１００内の様々なハードウェア部品をどのように制御するかを定義するファームウェアの設定を含むことができる。ファームウェア設定は、システム１００内の様々なハードウェア部品の起動の順番を決めることができる。ＢＩＯＳ１３４は、ＵＥＦＩなどのインタフェースを提供することができ、ファームウェア初期設定おけるパラメーターとは異なる様々なパラメーターを設定することができる。例えば、使用者（例えば、管理者）は、ＢＩＯＳ１３４を使用して、クロック及びバススピードを指定し、システム１００にどの周辺機器が取り付けられているかを定義し、健康状態（例えば、ファンスピード及びＣＰＵ温度限界）の設定を行い、またはシステム１００の全体的な性能及び電力使用に影響を及ぼす様々な他のパラメータを提供することができる。
【００２３】
ＢＩＯＳ１３４は、フラッシュメモリー１３２に格納されているものとして示されているが、当業者であれば、ＢＩＯＳ１３４は、例えば、メモリー１０４またはＲＯＭ１０６などの他のメモリー部品に格納されることができることを容易に認識するであろう。しかしながら、ＢＩＯＳ１３４は、説明のための非限定的な例として、フラッシュメモリー１３２に格納されているものとして示されている。
【００２４】
システム１００は、１つまたは複数のセンサー１２６を含むことができる。１つまたは複数のセンサー１２６は、例えば、１つまたは複数の温度センサー、熱センサー、酸素センサー、化学センサー、ノイズセンサー、熱センサー、電流センサー、電圧検出器、空気流量センサー、流量センサー、赤外線温度計、熱流量センサー、温度計、高温計などを含むことができる。例えば、１つまたは複数のセンサー１２６は、バス１０２を介してプロセッサー、キャッシュメモリー１２８、フラッシュメモリー１３２、通信インターフェース１２４、メモリー１０４、ＲＯＭ１０６、ＲＡＭ１０８、コントローラー１１０及び記憶装置１１２に通信することができる。
【００２５】
システム１００内の様々な部品（例えばセンサー１２６、プロセッサー１３０、コントローラー１１０、記憶装置１１２など）は、例えば、Ｉ２Ｃバス（ｉｎｔｅｒ−ｉｎｔｅｇｒａｔｅｄｃｉｒｃｕｉｔ  ｂｕｓ）、ＳＭＢバス（ｓｙｓｔｅｍ  ｍａｎａｇｅｍｅｎｔ  ｂｕｓ）、ｅＳＰＩ（ｅｎｈａｎｃｅｄ  ｓｅｒｉａｌ  ｐｅｒｉｐｈｅｒａｌ  ｉｎｔｅｒｆａｃｅ）、ＬＰＣ（ｌｏｗｐｉｎｃｏｕｎｔ）、ＧＰＩＯインターフェース（ｇｅｎｅｒａｌ  ｐｕｒｐｏｓｅ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｉｎｔｅｒｆａｃｅ）、ＰＣＩｅインターフェース（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ  ｉｎｔｅｒｆａｃｅ）などの、１つまたは複数の手段でシステム１００内の他の部品に通信することができる。
【００２６】
図１Ｂに示されるのは、チップセット構成を有する例示的なコンピューターシステム１５０であり、そのコンピューターシステム１５０は、上記の方法または操作を実行し、且つＧＵＩ（ｇｒａｐｈｉｃａｌｕｓｅｒｉｎｔｅｒｆａｃｅ）を生成して表示することができる。コンピューターシステム１５０は、上記方法を実行するためのコンピューターハードウェア、ソフトウェア、及びファームウェアを含むことができる。システム１５０は、識別された計算を実行するように構成されたソフトウェア、ファームウェア、及びハードウェアを実行することができる任意の数の物理的及び／または論理的に異なるものを表すプロセッサー１６０を含むことができる。プロセッサー１６０は、チップセット１５２と通信することができ、チップセット１５２は、プロセッサー１６０の入力と出力を制御することができる。この例では、チップセット１５２は、ディスプレイなどの情報を出力装置１６４に出力し、磁気媒体、固体媒体または不揮発性媒体（例えば、ＮＶＭｅ）を含むことができる記憶装置１６６において情報を読み書きすることができる。チップセット１５２はまた、ＲＡＭ１６８からデータを読み取り、ＲＡＭ１６８にデータを書き込むこともできる。様々な使用者インターフェース部品１５６に連結するブリッジ１５４は、チップセット１５２に連結するために提供される。このような使用者インターフェース部品１５６は、キーボード、マイク、接触タッチ検出及び処理回路、マウスのようなポインティング装置などを含むことができる。一般的に、システム１５０への入力は、機械及び／または人間など様々なソースからである。
【００２７】
チップセット１５２はまた、異なる物理的なインターフェースを有する１つまたは複数の通信インターフェース１５８と連結することもできる。そのような通信インターフェースは、有線及び無線のローカルエリアネットワークインターフェース、プロードバンドワイヤレスネットワークインターフェース、及びパーソナルエリアネットワークインターフェースを含むことができる。本明細書で開示されるＧＵＩを生成、表示、及び使用するための方法のいくつかのアプリケーションは、記憶装置１６６またはＲＡＭ１６８に格納されたデータを解析するプロセッサー１６０によって、物理的なインターフェースを介して受信し、若しくは機器の自ら生成した順序づけられたデータセットを受信することを含むことができる。さらに、機械は、使用者インターフェース部品１５６を介して使用者からの入力を受信し、プロセッサー１６０を使用して、その入力を解明することによって、ブラウジング機能のような適切な機能を実行することができる。
【００２８】
さらに、チップセット１５２は、ファームウェア１６２と通信し、ファームウェア１６２は、電源を入れたときにコンピューターシステム１５０によって実行されることができる。ファームウェア１６２の設定によって、ファームウェア１６２はコンピューターシステム１５０内のハードウェアを識別、初期化またはテストすることができる。ファームウェア１６２は、システム１５０上で例えばＰＯＳＴなどの自己テストを実行することができる。自己テストは、様々なハードウェア部品（１５２−１６８）の機能性をテストすることができる。ファームウェア１６２は、ＲＡＭ１６８内にＯＳを格納する領域をアドレス指定して割り当てることができる。ファームウェア１６２は、ブートローダー及び／またはＯＳをロードし、システムの制御をＯＳに渡すことができる。場合によって、ファームウェア１６２は、ハードウェア部品（１５２−１６０及び１６４−１６８）と通信することができる。ここで、ファームウェア１６２は、チップセット１５２及び／または、１つ若しくは複数の他の部品を介して、ハードウェア部品（１５２−１６０及び１６４−１６８）と通信することができる。場合によっては、ファームウェア１６２は、ハードウェア部品（１５２−１６０及び１６４−１６８）と直接に通信することができる。
【００２９】
さらに、チップセット１５２は、ＢＭＣ１７０と通信することができる。ＢＭＣ１７０は、図１Ａに示された上記のコントローラー１１０と同様に、管理、監視、及び制御動作を実行することができる特殊なプロセッサーまたはコントローラーであってもよい。例えば、ＢＭＣ１７０は、システム１５０及びその中の部品のいずれかを監視し、ログを生成し、１つまたは複数の特定部品に制御信号を送信し、及び／または独立するネットワーク接続でもあるネットワーク接続を介して他の装置または部品と通信することができる。
【００３０】
理解されるべきなのは、例示的なシステム１００及びシステム１５０は、１つ以上のプロセッサー（例えばプロセッサー１３０及び１６０）を有することができ、またはより大きな処理能力を提供するためにネットワーク化された計算装置のグループまたはクラスタの一部であっても良い。
【００３１】
図２は、リモートＫＶＭシステム２００の概略図である。システム２０４は、ネットワーク２０２上でシステム１５０とのリモートＫＶＭセッションを確立することができる。ネットワーク２０２は、１つまたは複数のネットワークを含むことができる。さらに、ネットワーク２０２は、インターネットなどの公衆ネットワークを含むことができ、ローカルエリアネットワークなどのプライベートネットワークも含むことができ、及び／または上記両方を組み合わせたＶＰＮ（ｖｉｒｔｕａｌ  ｐｒｉｖａｔｅ  ｎｅｔｗｏｒｋ）も含むことができる。
【００３２】
システム２０４は、デスクトップコンピューター、ラップトップコンピューター、タブレットコンピューター、スマートフォンなどのようなネットワーク接続を有する任意の計算装置とすることができる。システム２０４は、システム１５０上のリモートＫＶＭサーバーアプリケーション２２２〜２２６とのリモートＫＶＭセッションを確立するために使用されるリモートＫＶＭコンソールアプリケーションを含むことができる。
【００３３】
システム１５０は、ネットワーク２０２上に接続を確立して維持するために通信インターフェース１５８を含むことができる。システム１５０はまた、様々な命令を実行し、様々な構成要素、動作、及び通信を制御するためのプロセッサー１６０及びＢＭＣ１７０を含むことができる。システム１５０はまた、記憶装置１６６のようなシステム１５０上の記憶装置に格納されることができるＯＳ２０８を含むことができる。ＯＳ２０８は、システムのハードウェアとソフトウェアリソースを借りることができ、且つコンピュータープログラムサービスを提供することができる。さらに、ＯＳ２０８は、通信インターフェースを使用して、ネットワーク２０２を介して他の装置と接続することができる。ＯＳ２０８は、ＯＳ２０８に割り当てられた特定のネットワークアドレス（例えば、インターネットプロトコルアドレス）を使用して、ネットワーク２０２を介して通信することができる。
【００３４】
ＢＩＯＳ１６２は、ネットワーク２０２上で通信インターフェース１５８を介して通信することもできる。ＢＩＯＳ１６２は、ネットワーク２０２上で、ＢＩＯＳ１６２に指定された特定ネットワークアドレスを介して通信することができる。ＢＩＯＳ１６２に割り当てられたネットワークアドレスは、ＯＳ２０８に割り当てられたネットワークアドレスとは異なる場合がある。しかし、一部の状況では、ＢＩＯＳ２０２は、ＯＳ２０８がロードされ実行されている間に、ネットワーク通信を送受信しないこともある。したがって、場合によっては、ＢＩＯＳ１６２は、アドレス衝突を起こすことなくＯＳ２０８と同じネットワークアドレスを割り当てられることがある。
【００３５】
ＢＭＣ１７０は、ビデオのためのＶＧＡ（ｖｉｄｅｏ  ｇｒａｐｈｉｃ  ｓａｒｒａｙ）などのビデオ部品２１４を含むことができる。ビデオ部品２１４は、ビデオ用の特定のハードウェア及び／またはソフトウェアを含むことができる。ＢＭＣ１７０はまた、ネットワーク２０２上でネットワーク接続を確立するための通信インターフェース２１２を含むことができる。ＢＭＣ１７０上の通信インターフェース２１２は、通信インターフェース２１２に割り当てられたネットワークアドレスを使用して、ＢＭＣ１７０がネットワーク２０２上で通信できるようにする。通信インターフェース２１２（あるいはＢＭＣ１７０）に割り当てられたネットワークアドレスは、ＢＩＯＳ１６２及びＯＳ２０８に割り当てられたネットワークアドレスとは異なることができる。従って、いくつかの例では、システム１５０は、ＢＩＯＳ１６２、ＯＳ２０８及びＢＭＣ１７０に対して異なるネットワークアドレスを有することができる。
【００３６】
システム１５０は、ビデオ使用に割り当てられたメモリーを含むことができる表示メモリー２１０を含むことができる。表示メモリー２１０は、ＲＡＭなどのハードウェアメモリー部品、及び／または論理ファイル若しくはディスクなどの仮想メモリーを含むことができる。システム１５０はまた、プロセッサー１６０、記憶装置１６６、ＢＩＯＳ１６２、ＢＭＣ１７０、表示メモリー２１０、及び他の任意の部品間のデータフローを管理することができるチップセット１５２を含むことができる。チップセット１５２は、様々な部品との帯域内接続（ｉｎ−ｂａｎｄ  ｃｏｎｎｅｃｔｉｏｎ）を可能にすることができる。
【００３７】
システム１５０は、ＯＳ２０８によってホストされるリモートＫＶＭサーバアプリケーション２２４、ＢＩＯＳ１６２によってホストされるリモートＫＶＭサーバアプリケーション２２２、及び／またはＢＭＣ１７０によってホストされるリモートＫＶＭサーバアプリケーション２２６を含むことができる。リモートＫＶＭサーバアプリケーション２２２−２２６を使用して、システム２０４上のリモートＫＶＭコンソールアプリケーション２０６とのリモートＫＶＭセッションを確立して維持することができる。
【００３８】
ＢＭＣ１７０上のリモートＫＶＭサーバアプリケーション２２６は、ＢＭＣ１７０上の通信インタフェース２１２を使用して、システム２０４上のリモートＫＶＭコンソールアプリケーション２０６とのＢＭＣ接続２２０をネットワーク２０２上で確立することができる。さらに、ＢＩＯＳ１６２上のリモートＫＶＭサーバアプリケーション２２２及びＯＳ２０８上のリモートＫＶＭサーバアプリケーション２２４は、システム１５０上の通信インタフェース１５８を使用して、システム２０４上のリモートＫＶＭコンソールアプリケーション２０６とのホスト接続２１８をネットワーク２０２上で確立することができる。ホスト接続２１８及びＢＭＣ接続２２０は、ネットワーク２０２上で、システム２０４上のリモートＫＶＭコンソールアプリケーション２０６とのリモートＫＶＭセッションに使用されることができる。
【００３９】
さらに、ホスト接続２１８及びＢＭＣ接続２２０は、ネットワーク２０２上でリモートＫＶＭコンソールアプリケーション２０６及びシステム２０４と通信するために、異なるネットワークアドレスを使用することができる。例えば、ＢＭＣ接続２２０は、ＢＭＣ１７０に割り当てられたネットワークアドレスに基づくことができると共に、ホスト接続２１８は、ＯＳ２０８及び／またはＢＩＯＳ１６２に割り当てられた１つまたは複数の異なるネットワークアドレスに基づくことができる。
【００４０】
リモートＫＶＭサーバアプリケーション２２２−２２６は、リモートＫＶＭセッションのフェイルオーバーを提供するために使用されることができる。例えば、リモートＫＶＭコンソールアプリケーション２０６は、ＢＭＣ接続２２０を介してリモートＫＶＭサーバアプリケーション２２６とのリモートＫＶＭセッションを確立することができる。リモートＫＶＭコンソールアプリケーション２０６は、ＢＩＯＳ１６２及び／またはＯＳ２０８のネットワークアドレスを要求するコマンドを周期的にＢＭＣ１７０に送信することができる。リモートＫＶＭコンソール２０６アプリケーションは、ＢＭＣ１７０からＢＩＯＳ１６２及び／またはＯＳ２０８のネットワークアドレスを周期的に受信することができる。次に、リモートＫＶＭコンソールアプリケーション２０６は、リモートＫＶＭコンソールアプリケーション２０６とリモートＫＶＭサーバアプリケーション２２６の間のＢＭＣ接続２２０上のエラーまたは故障を検出した場合に、ＢＩＯＳ１６２及び／またはＯＳ２０８のネットワークアドレスを使用して、ホスト接続２１８上でリモートＫＶＭセッションを続行するか、または新しいリモートＫＶＭセッションを確立することができる。
【００４１】
リモートＫＶＭコンソール２０６アプリケーションは、パケット損失、接続劣化、ユーザ入力、リモートＫＶＭサーバアプリケーション２２６が応答しないという判断、または他の任意の要因などのイベントに基づいて、エラーまたは故障を検出することができる。例えば、リモートＫＶＭコンソールアプリケーション２０６は、所定期間内にリモートＫＶＭサーバアプリケーション２２６からの１つまたは複数の応答を受信していない場合、問題を検出することができる。説明するために、前述のように、リモートＫＶＭコンソールアプリケーション２０６は、ＢＩＯＳ１６２及び／またはＯＳ２０８のネットワークアドレスを要求するコマンドを周期的にリモートＫＶＭサーバアプリケーション２２６に送ることができる。したがって、リモートＫＶＭコンソールアプリケーション２０６は、一定期間内にリモートＫＶＭサーバアプリケーション２２６からの応答を受信できない場合、一定期間内のリモートＫＶＭサーバアプリケーション２２６からの応答が特定回数未満である場合、及び／または応答の遅延が閾値を超える場合に、エラーを検出することができる。
【００４２】
リモートＫＶＭコンソール２０６が故障を検出すると、リモートＫＶＭコンソールアプリケーション２０６は、ホスト接続２１８を介してリモートＫＶＭサーバアプリケーション２２２または２２４との接続をトリガーすることができる。したがって、リモートＫＶＭコンソールアプリケーション２０６は、ホスト接続２１８上でリモートＫＶＭサーバアプリケーション２２２または２２４と接続して、システム１５０とのリモートＫＶＭセッションを継続または再確立することができる。このようにして、リモートＫＶＭコンソールアプリケーション２０６は、ＢＭＣ１７０、リモートＫＶＭサーバアプリケーション２２６、通信インターフェース２１２、及び／またはＢＭＣ接続２２０に問題または故障が発生したとしても、システム１５０とのリモートＫＶＭセッションを継続または維持することができる。そうでなければ、リモートＫＶＭコンソールアプリケーション２０６とリモートＫＶＭサーバアプリケーション２２６の間のリモートＫＶＭセッションが影響されることがある。
【００４３】
ホスト接続２１８上でリモートＫＶＭサーバアプリケーション２２２または２２４とのリモートＫＶＭセッション中、リモートＫＶＭコンソールアプリケーション２０６は、ＢＭＣ１７０及びリモートＫＶＭサーバアプリケーション２２６のネットワークアドレスを要求するコマンドを周期的にリモートＫＶＭサーバアプリケーション２２２または２２４に送ることができる。したがって、リモートＫＶＭコンソールアプリケーション２０６は、リモートＫＶＭサーバアプリケーション２２２または２２４から周期的に応答を受信し、ＢＭＣ１７０及びリモートＫＶＭサーバアプリケーション２２６のネットワークアドレスを識別することができる。リモートＫＶＭコンソールアプリケーション２０６は、前述したような任意の故障またはエラーを検出するために応答を監視することができる。リモートＫＶＭコンソールアプリケーション２０６がエラーまたは故障を検出した場合、システム１５０とのリモートＫＶＭセッションを継続または再確立するために、ＢＭＣ接続２２０上でリモートＫＶＭサーバアプリケーション２２６に再接続することができる。このようにして、リモートＫＶＭコンソールアプリケーション２０６は、ホスト接続２１８（例えば、ＢＩＯＳ１６２、ＯＳ２０８、通信インターフェース１５８など）に問題が発生しても、システム１５０とのリモートＫＶＭセッションを維持することができる。
【００４４】
ＢＭＣ１７０、ＢＩＯＳ１６２、及びＯＳ２０８は、それぞれのネットワークアドレスを互いに交換することができるので、リモートＫＶＭコンソールアプリケーション２０６から受信した要求またはコマンドに応じて、それぞれが他のネットワークアドレスをリモートＫＶＭコンソールアプリケーション２０６に提供することができる。例えば、ＢＭＣ１７０、ＢＩＯＳ１６２、及びＯＳ２０８は、それぞれのネットワークアドレスを帯域内接続によって互いに交換することができる。ＢＭＣ１７０がリモートＫＶＭコンソールアプリケーション２０６からＢＩＯＳ１６２及び／またはＯＳ２０８のネットワークアドレスの要求を受信すると、ＢＭＣ１７０は、ＢＩＯＳ１６２及び／またはＯＳ２０８から受信した１つまたは複数のネットワークアドレスを帯域内接続を介して応答することができる。
【００４５】
ＢＭＣ１７０、ＢＩＯＳ１６２、及びＯＳ２０８は、それぞれのリモートＫＶＭサーバアプリケーション２２２〜２２６を使用して、それぞれのネットワークアドレスを互いに交換することができる。例えば、各リモートＫＶＭサーバアプリケーション２２２〜２２６は、自身のネットワークアドレスを他のリモートＫＶＭサーバアプリケーション２２２〜２２６に報告するように構成されることができる。いくつかの例では、ＢＩＯＳ１６２及びＯＳ２０８はそれぞれ、ＢＩＯＳ１６２及びＯＳ２０８のネットワークアドレスをＢＭＣ１７０に報告し、ＢＭＣ１７０からＢＭＣのネットワークアドレスを取得するように設計されたプログラムを含むことができる。これらのプログラムは、独立なプログラムであっても、リモートＫＶＭサーバアプリケーション２２２及び２２４に組み込まれていてもよい。さらに、これらのプログラムは、ＬＰＣ、ＳＭＢｕｓ、Ｉ２Ｃ、ｅＳＰＩ、ＰＣＩｅなどの帯域内接続を介して通信することができる。
【００４６】
図３Ａは、リモートＫＶＭサービスの例示的なサーバー側プロセス３００の概略図である。ステップ３０２において、サーバシステム１５０は、ＢＭＣ１７０及びＢＩＯＳ１６２の電源入れてから開始する。ステップ３０４において、ＢＭＣ１７０は、そのリモートＫＶＭサーバアプリケーション２２６を起動し、ステップ３０６において、ＢＩＯＳ１６２は、自身のリモートＫＶＭサーバアプリケーション２２２を起動する。
【００４７】
ステップ３０８において、ＢＩＯＳ１６２は、自身のネットワークアドレス（例えば、ＩＰアドレス）をＢＭＣ１７０に送信し、ＢＭＣ１７０からＢＭＣのネットワークアドレスを取得する。ＢＩＯＳ１６２は、帯域内接続及びコマンドを介してＢＭＣ１７０と通信することができる。
【００４８】
ステップ３１０において、ＢＭＣ１７０は、ＢＩＯＳ１６２のネットワークアドレスをリモートシステム２０４のリモートＫＶＭコンソールアプリケーション２０６に送信する。ＢＭＣ１７０は、リモートＫＶＭコンソールアプリケーション２０６から受信したコマンドまたは要求に応じて、ＢＩＯＳのネットワークアドレスを送信することができる。例えば、ＢＭＣ１７０は、リモートＫＶＭコンソールアプリケーション２０６からＢＩＯＳのネットワークアドレスを要求するコマンドを受信し、ステップ３１０で、ＢＩＯＳのネットワークアドレスを含むメッセージをリモートＫＶＭコンソールアプリケーション２０６に応答することができる。
【００４９】
場合によっては、ステップ３１０は、複数回実行されることができる。例えば、ＢＭＣ１７０は、ＢＩＯＳ１６２のネットワークアドレスをリモートＫＶＭコンソールアプリケーション２０６に周期的に送信することができる。ＢＭＣ１７０はまた、周期的にＢＩＯＳ１６２のネットワークアドレスをリモートＫＶＭコンソールアプリケーション２０６に送信することができるＢＭＣ１７０をトリガーすることができる、リモートＫＶＭコンソールアプリケーション２０６からのコマンドまたは要求を周期的に受信することもできる。
【００５０】
ステップ３１２において、サーバシステム１５０は、ＯＳ２０８をブートしてＯＳ２０８からリモートＫＶＭサーバアプリケーション２２４を起動することができる。ステップ３１４において、ＢＭＣ１７０及びＯＳ２０８は、ネットワークアドレスを交換することができる。例えば、ＯＳ２０８は、ＢＭＣ１７０のネットワークアドレスを要求し、ＯＳ２０８のネットワークアドレスをＢＭＣ１７０に報告するプログラムを実行することができる。このプログラムは、独立なプログラムであってもよく、ＯＳ２０８によってホストされるリモートＫＶＭサーバアプリケーション２２４の一部であってもよい。
【００５１】
ステップ３１６において、ＢＭＣ１７０は、ＯＳ２０８のネットワークアドレスをリモートＫＶＭコンソールアプリケーション２０６に送信することができる。ＢＭＣ１７０は、リモートＫＶＭコンソールアプリケーション２０６からのコマンドまたは要求に応じて、ＯＳ２０８のネットワークアドレスをリモートＫＶＭコンソールアプリケーション２０６に送信することができる。さらに、ＢＭＣ１７０は、異なる時間にＯＳ２０８のネットワークアドレスを送信することができる。例えば、ＢＭＣ１７０は、リモートＫＶＭコンソールアプリケーション２０６からの要求またはコマンドに応じて、ＯＳ２０８のネットワークアドレスを周期的に送信することができる。
【００５２】
図３Ｂは、リモートＫＶＭサービスの例示的なクライアント側プロセス３５０の概略図である。ステップ３５２において、システム２０４は、リモートＫＶＭコンソールアプリケーション２０６を起動することができる。ステップ３５４において、リモートＫＶＭコンソールアプリケーション２０６は、リモートＫＶＭセッションを確立するために、ＢＭＣのリモートＫＶＭサーバアプリケーション２２６に接続することができる。リモートＫＶＭコンソールアプリケーション２０６は、ＢＭＣ１７０のネットワークアドレスを使用してＢＭＣ接続２２０を介してリモートＫＶＭサーバアプリケーションと接続することができる。
【００５３】
ステップ３５５において、リモートＫＶＭコンソールアプリケーション２０６は、現在のリモートＫＶＭセッションを介してＢＭＣリモートＫＶＭサーバアプリケーション２２６とのリモートＫＶＭ機能を実行することができる。リモートＫＶＭ機能とは、リモートＫＶＭコンソールアプリケーション２０６がＢＭＣリモートＫＶＭサーバアプリケーション２２６にクエリする、及び／またはセッションの状態（例えば、活動中及び動作中、非活動中など）或いは表示メモリーのデータを確認するために使用されるコマンドであってもよい。
【００５４】
ステップ３５６において、リモートＫＶＭコンソールアプリケーション２０６は、ＢＩＯＳ１６２及び／またはＯＳ２０８のネットワークアドレスを要求するコマンドをＢＭＣ１７０に送信することができる。リモートＫＶＭコンソールアプリケーション２０６は、そのコマンドを複数回送信することができる。リモートＫＶＭコンソールアプリケーション２０６は、例えばそのコマンドを一定の時間間隔またはイベントに基づいて定期的に送信することができる。
【００５５】
ステップ３５８において、リモートＫＶＭコンソールアプリケーション２０６は、ＢＭＣ１７０からのコマンドに対する応答を受信したかどうかを判断することができる。リモートＫＶＭコンソールアプリケーション２０６が応答を受信した場合、プロセス３５０はステップ３５５に戻り、そこでリモートＫＶＭコンソールアプリケーション２０６は、リモートＫＶＭサーバアプリケーション２２６とのリモートＫＶＭセッションを継続することができる。ステップ３６０において、リモートＫＶＭコンソールアプリケーション２０６が応答を受信しない場合、リモートＫＶＭコンソールアプリケーション２０６は、リモートＫＶＭサーバアプリケーション２２２または２２４に接続する。リモートＫＶＭコンソールアプリケーション２０６は、ステップ３５６でＢＭＣ１７０から受信したネットワークアドレス情報を使用してリモートＫＶＭサーバアプリケーション２２２または２２４に接続することができる。
【００５６】
リモートＫＶＭサーバアプリケーション２２２または２２４に接続することによって、リモートＫＶＭコンソールアプリケーション２０６は、ホスト接続２１８を介してリモートＫＶＭセッションを継続または再確立することができる。したがって、リモートＫＶＭコンソールアプリケーション２０６が、ＢＭＣ接続２２０を介してリモートＫＶＭサーバアプリケーション２２６に接続して問題を検出した場合、ホスト接続２１８を介してサーバシステム１５０とのリモートＫＶＭセッションを継続し、あらゆる中断を制限することができる。
【００５７】
ステップ３６１において、リモートＫＶＭコンソールアプリケーション２０６は、現有のリモートＫＶＭセッションを介して、ＯＳ／ＢＩＯＳリモートＫＶＭサーバアプリケーション２２２または２２４とのリモートＫＶＭ機能を実行することができる。また、リモートＫＶＭ機能とは、リモートＫＶＭサーバアプリケーション２２２及び／または２２４にクエリする、及び／またはセッションの状態または表示メモリーのデータを確認するためにリモートＫＶＭコンソールアプリケーション２０６によって使用されるコマンド（例えば、アクティブ及び動作中、非アクティブなど）であっても良い。
【００５８】
ステップ３６２において、リモートＫＶＭコンソールアプリケーション２０６は、ＢＭＣ１７０のネットワークアドレスを要求するコマンドをＯＳ２０８及び／またはＢＩＯＳ１６２に送信することができる。リモートＫＶＭコンソールアプリケーション２０６は、例えば一定の時間間隔またはイベントに基づいて定期的にこのコマンドを送信することができる。
【００５９】
ステップ３６４で、リモートＫＶＭコンソールアプリケーション２０６は、ステップ３６１または３６２からのコマンドに対する応答を受信したかどうかを判断する。リモートＫＶＭコンソールアプリケーション２０６は、応答を受信したと判断した場合、ステップ３６１に戻り、リモートＫＶＭサーバアプリケーション２２２または２２４に接続したままにする。一方、リモートＫＶＭコンソールアプリケーション２０６が閾値時間内に応答を受信しなかったと判断した場合、ステップ３５４に戻り、そこでリモートＫＶＭサーバアプリケーション２２６に接続して、ＢＭＣ接続２２０上でリモートＫＶＭセッションを継続または再確立することができる。
【００６０】
図４は、リモートＫＶＭサービスの例示的な通信フロー４００のフェイルオーバーの概略図である。メッセージ４０２において、ＢＩＯＳ１６２はまずＢＩＯＳネットワークアドレスをＢＭＣ１７０に送信する。メッセージ４０４において、ＢＭＣ１７０はＢＭＣネットワークアドレスをＢＩＯＳ１６２に送信する。
【００６１】
メッセージ４０６において、リモートＫＶＭコンソールアプリケーション２０６は、ＢＭＣ１７０（すなわち、リモートＫＶＭサーバアプリケーション２２６）とリモートＫＶＭ接続を確立する。メッセージ４０８において、リモートＫＶＭコンソールアプリケーション２０６は、ＢＩＯＳネットワークアドレスを要求するコマンドをＢＭＣ１７０に送信する。
【００６２】
メッセージ４１０において、ＢＭＣ１７０は、ＢＩＯＳネットワークアドレスをリモートＫＶＭコンソールアプリケーション２０６に送信する。ＯＳ２０８がブートした後、メッセージ４１２において、ＯＳ２０８はＯＳネットワークアドレスをＢＭＣ１７０に送信する。メッセージ４１４において、ＢＭＣ１７０は、ＢＭＣネットワークアドレスをＯＳ２０８に送信する。
【００６３】
メッセージ４１６で、コンソール２０６は、ＯＳネットワークアドレスを要求するコマンドをＢＭＣ１７０に送信する。メッセージ４１８において、ＢＭＣ１７０は、ＯＳネットワークアドレスをコンソール２０６に送信する。
【００６４】
メッセージ４２０において、コンソール２０６は、別のコマンドをＢＭＣ１７０に送信して、ＯＳネットワークアドレス及び／またはＢＩＯＳネットワークアドレスを要求するか、またはリモートＫＶＭ機能を実行する。メッセージ４２２において、ＢＭＣ１７０は、ＯＳネットワークアドレスまたはＢＩＯＳネットワークアドレスを送信することができず、またはコンソール２０６へのリモートＫＶＭコマンドに応答することができない。コンソール２０６は、コマンドを含むメッセージ４２０に対する応答を受信しなかったと判断し、その後、ＯＳ２０８及びリモートＫＶＭサーバアプリケーション２２４に接続するためにＯＳ２０８にメッセージ４２４を送信することができる。
【００６５】
メッセージ４２６において、コンソール２０６は、ＢＭＣネットワークアドレスを要求するコマンドをＯＳ２０８に送信する。メッセージ４２８において、ＯＳ２０８はＢＭＣネットワークアドレスをコンソール２０６に送ることができる。
【００６６】
メッセージ４３０において、コンソール２０６は、ＢＭＣネットワークアドレスを要求する別のコマンドをＯＳ２０８に送信する。コンソール２０６がＯＳ２０８から応答を受信しない場合、コンソール２０６はＢＭＣネットワークアドレスを使用してＢＭＣ１７０に接続することができる。その後、コンソール２０６は、定期的にコマンドを送信し続け、応答を待つことができる。コンソール２０６が１つ以上の応答を受信しない場合、コンソール２０６は再びＯＳ２０８またはＢＩＯＳ１６２に接続することができる。
【００６７】
図５は、リモートＫＶＭサービスのフェイルオーバーの例示的な方法を示す。ステップ５００において、コンソールアプリケーション２０６は、リモートＫＶＭコンソールアプリケーション２０６とリモートＫＶＭサーバアプリケーション２２６の間にリモートＫＶＭセッションを確立する。リモートＫＶＭセッションは、ＢＭＣ１７０とクライアント２０４の間にＢＭＣ接続２２０を介して確立することができる。
【００６８】
ステップ５０２において、リモートＫＶＭコンソールアプリケーション２０６は、リモートＫＶＭコンソールアプリケーション２０６とリモートＫＶＭサーバアプリケーション２２６の間のリモートＫＶＭセッションに関するエラーを検出することができる。例えば、リモートＫＶＭコンソールアプリケーション２０６は、１つまたは複数のコマンドをリモートＫＶＭサーバアプリケーション２２６に送信し、リモートＫＶＭサーバアプリケーション２２６からの１つまたは複数の応答を待つことができる。１つまたは複数のコマンドは、リモートＫＶＭサーバアプリケーション２２６にＢＩＯＳ及び／またはＯＳネットワークアドレスをリモートＫＶＭコンソールアプリケーション２０６に送信するようにトリガーする要求を含むことができる。リモートＫＶＭコンソールアプリケーション２０６が応答を受信しない場合、リモートＫＶＭコンソールアプリケーション２０６は、エラーが発生したと判断することができる。エラーの判定は、所定期間内に１つまたは複数の応答を受信しないこと、予想より少ない応答を受信すること、または遅延閾値時間を有する応答を受信することなどによってトリガーされ得る。
【００６９】
ステップ５０４において、エラーに応じて、リモートＫＶＭコンソールアプリケーション２０６は、リモートＫＶＭコンソールアプリケーション２０６とリモートＫＶＭサーバアプリケーション２２２または２２４の間にリモートＫＶＭセッションを確立することができる。例えば、リモートＫＶＭコンソールアプリケーション２０６は、リモートＫＶＭサーバアプリケーション２２６が利用可能でない場合、リモートＫＶＭサーバアプリケーション２２２または２２４とリモートＫＶＭセッションを確立することができ、逆も同様である。リモートＫＶＭセッションは、前のリモートＫＶＭセッションの継続または拡張、新しいリモートＫＶＭセッション、またはリモートＫＶＭサーバーアプリケーション２２６，２２２または２２４と再確立された前のリモートＫＶＭセッションとすることができる。
【００７０】
リモートＫＶＭコンソールアプリケーション２０６は、リモートＫＶＭセッション中に現在接続されているリモートＫＶＭサーバアプリケーション２２２−２２６の間で、メッセージを送信し続け、応答を待つことができる。リモートＫＶＭコンソールアプリケーション２０６が閾値数の応答を受信できなかった場合、リモートＫＶＭセッションを維持または再確立するために別のリモートＫＶＭサーバアプリケーションに接続することができる。
【００７１】
リモートＫＶＭサーバアプリケーション２２２または２２４に接続するとき、リモートＫＶＭコンソールアプリケーション２０６は、リモートＫＶＭサーバアプリケーション２２６に接続するときとは異なるネットワークアドレス及び／または通信インタフェースに接続することができる。このようにして、リモートＫＶＭコンソールアプリケーション２０６は、リモートＫＶＭセッションのフェイルオーバー経路及び接続を維持することができる。
【００７２】
サーバ側では、ＢＩＯＳ１６２、ＢＭＣ１７０、及びＯＳ２０８は、それぞれのネットワークアドレス情報を交換するために帯域内接続を介して通信することができる。例えば、ＢＭＣ１７０は、ＢＩＯＳ１６２及びＯＳ２０８に接続して、ネットワークアドレス情報を交換することができる。したがって、ＢＭＣ１７０は、ＢＩＯＳ１６２及びＯＳ２０８のネットワークアドレス情報を維持することができる。ＢＩＯＳ１６２は、ＢＭＣ１７０のネットワークアドレス情報を維持することができる。ＯＳ２０８は、ＢＭＣ１７０のネットワークアドレス情報を維持することができる。したがって、ＢＩＯＳ１６２、ＢＭＣ１７０、及びＯＳ２０８は、お互いのネットワークアドレスをリモートＫＶＭコンソールアプリケーション２０６に報告することができる。
【００７３】
説明を明確にするために、本発明は、周辺機器部品相互接続エクスプレス装置を用いて説明されている。しかしながら、上記の例による方法及び概念は、他のタイプの装置のハードウェア回復のために実施されることができる。実際に、本明細書で説明する概念は、ＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）装置などの活線挿抜または活線着脱をサポートする任意の装置のホットアドやホットリムーブを含むハードウェア回復に実行されることができる。ここでも、周辺機器部品相互接続エクスプレス装置は、明確さ及び説明の目的のための非限定的な例として本明細書で使用される。
【００７４】
説明を明確にするために、いくつかの例では、本発明は、ソフトウェア、またはハードウェアとソフトウェアの組み合わせで実施される方法において、装置、装置部品、ステップまたはルーチンを含む機能ブロックを含む個々の機能ブロックを含むものとして提示することができる。
【００７５】
いくつかの実施例では、コンピューター可読記憶装置、媒体、及びメモリーは、ビットストリームなどを含む有線または無線信号を含むことができる。しかし、明言するとき、非一時的なコンピューター可読記憶媒体は、エネルギー、搬送波信号、電磁波、及び信号そのものなどの媒体を明示的に排除する。
【００７６】
上述の実施例による方法は、コンピューター可読媒体に格納されるか、または他の方法で利用可能なコンピューター実行可能命令を使用して実行されることができる。そのような命令は、例えば、汎用コンピューター、専用コンピューター、または特殊用途処理装置に特定の機能または機能のグループを実行させる、または構成するような命令及びデータを含むことができる。使用されるコンピューターリソースの一部は、ネットワークを介してアクセス可能である。コンピューター実行可能命令は、例えば、バイナリ、アセンブリ言語、ファームウェア、またはソースコードのような中間フォーマット命令であってもよい。記述された例による方法の期間に作成された命令、情報、及び／または情報を記憶するために使用されるコンピューター可読媒体は、例えば、磁気または光学ディスク、フラッシュメモリー、不揮発性メモリーを備えたＵＳＢ装置、ネットワーク記憶装置等であってもよい。
【００７７】
これらの開示による方法を実施する装置は、ハードウェア、ファームウェア及び／またはソフトウェアを含むことができ、様々なフォームファクタのいずれかをとることができる。そのようなフォームファクタの典型的な例には、ラップトップ、スマートフォン、小型フォームファクタのパーソナルコンピューター、パーソナルデジタルアシスタントなどが含まれる。本明細書に記載の機能は、周辺機器またはアドインカードにも実行されることができる。このような機能は、他の例として、異なるチップ間の回路基板上または単一の装置内で実行される異なるプロセス上に実行されることもできる。
【００７８】
その命令、当該命令を伝達するための媒体、それらを実行するための計算リソース、及びそのような計算リソースをサポートするための他の構造は、これらの開示に記載された機能を提供するための手段である。
【００７９】
添付の特許請求の範囲内の態様を説明するために様々な例及び他の情報が使用されたが、当業者がこれらの実施例を使用して多種多様な実施形態を導き出すことができるように、そのような実施例における特定の特徴または構成に基づいて、請求項を限定するものではない。さらに、いくつかの主題は、構造的特徴及び／または方法のステップの例に特定する用語で記述されているが、理解されるべきなのは、添付の特許請求の範囲に定義された主題は必ずしもこれらに記載された特徴または動作に限定されない。例えば、そのような機能は、異なる方法で配布されてもよく、本明細書で特定されたもの以外の部品で実行されてもよい。むしろ、記載された特徴及びステップは、添付の特許請求の範囲内のシステム及び方法の構成要素の例として開示される。
【００８０】
用語「ａ」または「ａｎ」とは、そのものの１つまたは複数を表す。このように、用語「１つの」（または「ａｎ」）、「１つ以上の」及び「少なくとも１つの」は、本明細書では交換可能に使用することができる。「少なくとも１つの」、「１つ以上の」、及び「及び／または」という句は、操作において結合的かつ分離的である自由な表現である。例えば、「Ａ、Ｂ及びＣの少なくとも１つ」、「Ａ、ＢまたはＣの少なくとも１つ」、「Ａ、Ｂ、Ｃのうちの１つ以上」、「Ａ、Ｂ、及び／またはＣ」及び「Ａ、Ｂ及び／またはＣ」は、Ａ単独、Ｂ単独、Ｃ単独、Ａ及びＢ一緒、Ａ及びＣ一緒、Ｂ及びＣ一緒、またはＡ、Ｂ及びＣのことである。さらに、セットの「少なくとも１つ」を示す請求項の用語は、セットの１つのメンバーまたはセットの複数のメンバーが請求項を満たすことを示す。例えば、「Ａ、Ｂ、及びＣの少なくとも１つ」または「Ａ、Ｂ、またはＣの少なくとも１つ」を意味するクレーム用語は、Ａ単独、Ｂ単独、Ｃ単独、Ａ及びＢ、Ａ及びＣ、Ｂ及びＣ、またはＡとＢとＣということである。
【００８１】
本明細書で使用される「通信する」という用語は、任意のシステム、ハードウェア、ソフトウェア、プロトコル、またはフォーマットを使用して情報またはデータを交換するための光及び／または電気信号を使用する任意の結合、接続または相互作用を表す。
【００８２】
本明細書で使用される「コンピューター可読記憶媒体」、「コンピューター可読媒体」、「コンピューター可読記憶装置」、または「コンピューター可読メモリー装置」という用語は、任意の有形記憶装置を表し、実行のためのプロセッサーのことである。そのような媒体または装置は、非揮発性媒体、揮発性媒体などを含むが、これに限定されない多くの形態を取ることができる。不揮発性媒体は、例えば、ＮＶＲＡＭ、ＳＳＤ、ＮＶＭｅ、磁気ディスクまたは光ディスクなどを含むことができる。揮発性媒体は、例えば、主メモリーのような動的メモリーを含むことができる。
【００８３】
例えば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、メモリー、磁気テープ、または任意の他の磁気媒体、光磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤなどを含むことができる。パンチカード、紙テープ、ホールパターン、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュＥＰＲＯＭ、メモリーカードのような固体媒体、他のメモリーチップまたはカートリッジ、または他の任意の他の物理的媒体コンピューターが読むことができる媒体を含むことができる。コンピューター可読媒体または装置がデータベースとして構成される場合、データベースは、リレーショナル、階層、オブジェクト指向などの任意のタイプのデータベースであってもよいことを理解されたい。したがって、開示された技術は、本発明のソフトウェア実装が格納されている有形の記憶媒体または装置、並びに認識された等価物及び後継の媒体または装置を含むと考えることができる。
【符号の説明】
【００８４】
１００、１５０、２００：システム
１０２：バス
１０４、１３２：メモリー
１０６：読み出し専用メモリー
１０８、１６８：ランダムアクセスメモリー
１１０：コントローラー
１１２、１６６：記憶装置
１１４：モジュール１
１１６：モジュール２
１１８：モジュール３
１２０：入力装置
１２２、１６４：出力装置
１２４、１５８、２１２：通信インターフェース
１２６：センサー
１２８：キャッシュメモリー
１３０、１６０：プロセッサー
１３４：ＢＩＯＳ
１３６：表示装置
１５２：チップセット
１５４：ブリッジ
１５６：使用者インターフェース部品
１６２：ＢＩＯＳ（ファームウェア）
１７０：ＢＭＣ
２０２：ネットワーク
２０４：システム
２０６：リモートＫＶＭコンソール
２０８：ＯＳ
２１０：表示装置メモリー
２１４：映像部品
２１８：ホスト接続
２２０：ＢＭＣ接続
２２２、２２４、２２６：リモートＫＶＭサーバアプリケーション
３００、３５０：プロセス
３０２、３０４、３０６、３０８、３１０、３１２、３１４、３１６、３５２、３５４、３５５、３５６、３５８、３６０、３６１、３６２、３６４、５００、５０２、５０４：ステップ
４００：通信フロー
４０２、４０４、４０６、４０８、４１０、４１２、４１４、４１６、４１８、４２０、４２２、４２４、４２６、４２８：メッセージ
ｒＫＶＭ：リモートＫＶＭ
【図１Ａ】
0006383839.tif 000002
【図１Ｂ】
0006383839.tif 000003
【図２】
0006383839.tif 000004
【図３Ａ】
0006383839.tif 000005
【図３Ｂ】
0006383839.tif 000006
【図４】
0006383839.tif 000007
【図５】
0006383839.tif 000008