(57)【特許請求の範囲】
【請求項１】
コンピューティング環境において、少なくとも１つのプロセッサーで少なくとも部分的に遂行される方法であって、
分散システムのオーケストレーターモジュールによって、サービスを提供する分散システムの複数のコンピューターノードのノードメンバーシップを判定するステップと、
前記分散システムの自己更新実行を遂行するステップであって、
当該ステップが、前記分散システムによって提供されるサービスを維持しながら前記メンバーシップ内の前記複数のコンピューターノードのノード構内のソフトウェアインベントリーに１つまたは複数の更新を適用することを含み、
当該ステップが、更新されるべき前記複数のコンピューターノードの１つのコンピューターノードに対して、
当該コンピューターノードから他のコンピューターノードに、いずれかのサービス作業負荷を移行させる前に、少なくとも前記1つ又は複数の更新の一部を獲得し、
前記サービス作業負荷を、当該コンピューターノードから、他のコンピューターノードに移行し、
前記1つ又は複数の更新をインストールし、
当該コンピューターノードに対して前記更新が完了した後に、当該コンピューターノード上で少なくとも１つのサービス作業負荷を元に戻すこと、
を含むものと、
を含み、更に、
前記サービス作業負荷を含む、前記分散システムの前記複数のコンピューターノードの動作状態を判定し、
前記サービス作業負荷が移行することによって、前記分散システムによって提供されたサービスが維持できない、という判定に応じて、別の時点まで前記自己更新実行を遅延させること、
を含む、
方法。
【請求項２】
前記自己更新実行を遂行するステップが、前記メンバーシップ内の前記複数のコンピューターノードを、少なくとも１回、リブート(rebooting)もしくは再始動する(restarting)ステップ、またはリブートと再始動の両方を行うステップを含む、請求項１に記載の方法。
【請求項３】
前記移行することが、当該コンピューターノードを休止することを含む、請求項１に記載の方法。
【請求項４】
前記自己更新実行を遂行することが、
前記オーケストレーターモジュールを、前記複数のコンピューターノードの、これから更新される１つのコンピューターノードから、他のコンピューターノードに、移行することを含む、請求項１に記載の方法。
【請求項５】
前記自己更新実行を遂行することが、前記自己更新実行の完了前に、更新されたコンピューターノード上で、１つ又は複数のサービス作業負荷を再開することを含む、請求項１に記載の方法。
【請求項６】
前記オーケストレーターモジュールが、自己更新関連の作業負荷と関連付けられ、
自己更新実行を遂行することが、自己更新関連の作業負荷を、前記複数のコンピューターノードの、１つのコンピューターノードから、他のコンピューターノードに、移行する、
請求項１に記載の方法。
【請求項７】
前記分散システムが、フェイルオーバークラスターを備え、
前記オーケストレーターモジュールが、自己更新関連の作業負荷と関連付けられ、
自己更新実行を遂行することが、前記複数のコンピューターノードの、１つのコンピューターノードから、他のコンピューターノードへの、自己更新関連の作業負荷のフェイルオーバを含む、
請求項１に記載の方法。
【請求項８】
更新関連の状態情報を、前記複数のコンピューターノードの共用記憶領域に持続する(persisting)ステップと、
前記自己更新中に、前記オーケストレーターモジュールを、前記複数のコンピューターノード内の、１つのコンピューターノードから、他のコンピューターノードに、移行するステップと、
１つのコンピューターノードから、他のコンピューターノードへの、前記オーケストレーターモジュールの移行の後に、前記他のノードにおいて更新関連の状態情報を読み出すステップと、
を更に含む、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明の一実施例は、例えば、分散システムにおける自己更新機能性に関する。
【背景技術】
【０００２】
[0001]分散システムは、クラスターとして配列されたものなど、ノード／サーバーの１コレクションを介してクライアントに様々なコンピューターサービス（アプリケーションを含む）を提供する。コンピューターソフトウェアが分散システムでの生産において配備されるとき、その分散システムによって提供されるサービスを中断することなしに最新の修正およびソフトウェア改良でそのソフトウェアを最新に保つことは、企業などにとって困難である。結果として、分散システムを更新するために、管理者は、そのコレクションによって提供されるサービスに影響を及ぼすことなしに、分散システムコレクション内のノード／サーバーでのソフトウェアインベントリーの更新を目的とする比較的緻密な計画を実行し、それは、更新に関して「サービスを意識した」と称され得る。
【０００３】
[0002]通常の管理者ステップは、ノードが、たとえばそのコレクション全体の耐故障性の「限界量」（たとえば、クラスタークォーラム）がその更新プロセスをとおして持続することを確保し、ノード中心の更新ソフトウェアを使用して各ノードを更新しながら、更新され得るように、そのような分散システムコレクション内の各サーバー／ノードからおよびそこにサービスを移行／リホストするステップを含む。一部の管理者は、これらのタスクを手動で実行し、一方、他の管理者はアドホックスクリプトを使用してそのプロセスの部分を自動化することを試みる。場合によっては、特定のタイプのソフトウェア更新管理ソフトウェアに結合された特定のタイプのクラスター化されたサービスのための終端間ツールが、存在し得る。いずれの場合にも、そのような情報技術（ＩＴ）プロセスは、困難であり、間違いが発生しやすく、管理するためのＩＴ専門家を必要とし、継続的に維持するには費用が高い。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
[0003]分散システムの数が増大するにつれて、これらの手動プロセス／スクリプト、およびそれらを実行／維持する必要があることになるＩＴ管理者の運用費用は、ＩＴ機関にとって大きな運営費負担になる。これは、小規模および中規模の会社、および、利用可能な現地のＩＴ専門家がいないいくつかの支店を有する傾向がある組織にとって、特に当てはまる。
【課題を解決するための手段】
【０００５】
[0004]本概要は、発明を実施するための手段で以下にさらに説明される代表的な概念の選択を簡潔な形で紹介するために提供される。本概要は、本特許請求されている対象の主な特徴または本質的な特徴を識別するものではなく、本特許請求されている対象の範囲を限定することになるいかなる方法でも使用されることを意図されていない。
【０００６】
[0005]簡潔には、本明細書に記載の主題の様々な態様は、サービスを提供するコンピューターノードの分散システムがその分散システムのコンポーネントを介して自己更新される技術に向けられる。コンピューターノードのメンバーシップが判定され、コンポーネントは、その分散システムによって提供されるサービスを維持しながら、そのメンバーシップ内の複数のコンピューターノードの各々に１つまたは複数の更新を適用する更新実行を遂行する。その更新実行の遂行は、潜在的には複数回、そのメンバーシップ内の複数のコンピューターノードの各々をリブートおよび／または再始動するステップを含み得る。
【０００７】
[0006]一態様では、その更新実行の遂行は、更新されることになる各コンピューターノードから任意の作業負荷を移行するステップと、そのコンピューターノードの更新の完了後にそのコンピューターノードで少なくとも１つの作業負荷を元に戻すステップとを含む。その更新実行の遂行は、オーケストレーター任務を１つのコンピューターノードから別のコンピューターノードに移行するステップを含み得る。更新関連の状態情報は、そのオーケストレーター任務を１つのコンピューターノードから他のコンピューターノードに移行する前に持続することができ、そのオーケストレーター任務を１つのコンピューターノードから他のコンピューターノードに移行した後に第２のノードで読み取ることができる。
【０００８】
[0007]他の利点が、図面と併用されるときに以下の詳細な説明から明らかとなり得る。
[0008]本発明は、例を用いて説明され、同様の参照番号が同様の要素を指示する以下のような添付の図面で限定されない。
【図面の簡単な説明】
【０００９】
【図１Ａ】[0009]分散システムのソフトウェアコンポーネントを介して自己更新を遂行する分散システムの例示的コンポーネントを示すブロック図である。
【図１Ｂ】[0010]分散システムのハードウェア／ファームウェアを介して自己更新を遂行する代替分散システムの例示的コンポーネントを示すブロック図である。
【図２】[0011]自己更新実行中の様々な状態での例示的自己更新分散システムのコンピューターノードおよびコンポーネントの例示的表現を示すブロック図である。
【図３】自己更新実行中の様々な状態での例示的自己更新分散システムのコンピューターノードおよびコンポーネントの例示的表現を示すブロック図である。
【図４】自己更新実行中の様々な状態での例示的自己更新分散システムのコンピューターノードおよびコンポーネントの例示的表現を示すブロック図である。
【図５】自己更新実行中の様々な状態での例示的自己更新分散システムのコンピューターノードおよびコンポーネントの例示的表現を示すブロック図である。
【図６】自己更新実行中の様々な状態での例示的自己更新分散システムのコンピューターノードおよびコンポーネントの例示的表現を示すブロック図である。
【図７】[0012]自己更新実行中の様々な状態での例示的自己更新分散システムで取られ得る例示的ステップを表す流れ図である。
【図８】[0013]本明細書に記載の様々な実施形態が実装され得る例示的非限定的なネットワーク化された環境を表すブロック図である。
【図９】[0014]本明細書に記載の様々な実施形態の１つまたは複数の態様が実装され得る例示的非限定的なコンピューティングシステムまたはオペレーティング環境を表すブロック図である。
【発明を実施するための形態】
【００１０】
[0015]本明細書に記載の技術の様々な態様は、概して、分散システムがサービスを意識した形で現在の所望のソフトウェアレベルにそれのノードを自己更新することを可能にすることを目的とする。一般に、これは、分散システムソフトウェアを更新するための現地のＩＴ専門家の存在を要しない、終端間分散システム更新解決法を提供する。
【００１１】
[0016]自己更新する分散システムは、外部の助けまたは監視の必要なしに動作することができることが、理解されよう。その分散システム内の個々のコンピューターノードは、全体としての分散システムのグローバルサービス可用性検討項目を考慮しながら、同時にそれら自体を自己更新するのに十分に知的であり、ＩＴ組織に適用可能なものとしての更新（パッチ）適用性規則およびポリシーによって支配され続けることが可能である。
【００１２】
[0017]フェイルオーバークラスターなどの分散システムの様々な例が本明細書では使用されるが、本明細書に記載の例のいずれも限定ではないことを理解されたい。そのようなものとして、本発明は、本明細書に記載のいずれの特定の実施形態、態様、概念、構造、機能または例にも限定されない。そうではなくて、本明細書に記載のいずれの特定の実施形態、態様、概念、構造、機能または例も非限定的であり、本発明は、概して、コンピューティングおよび分散システムにおいて利益および利点を提供する様々な方法で使用され得る。
【００１３】
[0018]一般におよび本明細書に記載のように、自己更新するクラスターソフトウェア（たとえば、プロセス／スレッド）は、所有者ノードで実行し、その分散システムのメンバーシップを判定し、それらのメンバーの各々を更新する（新たな、切断されたまたは機能しない機械などの非メンバーが分散システムのメンバーになることを可能にする前にまたはその一部として、更新がそれらの非メンバーで行われ得ることに留意されたい）。この目的のために、その自己更新するクラスターソフトウェアは、それ自体を除く他の各ノードを更新することができ、そこでそれが実行するノードを更新するように動作することもできる。１つのシナリオでは、その自己更新するクラスターソフトウェアは、その所有者ノードから新たな所有者ノードに「移行され」、次いで、それは、そのノードに任意の必要とされるリブートを行うステップを含めて、その自己更新するクラスターソフトウェアのインスタンスを実行して前の所有者ノードを更新する。その更新に関連する状態情報は、持続され、「共用記憶装置」を介して新たな所有者ノードに通信され得る。「共用なし」分散システムのある種の実施形態で、共用記憶装置は、すべてのノードへの真の共用記憶接続性をたとえ必要としなくても、そのサービスが、永続的ストアとして分散システム内のノードからアクセス可能である、分散記憶サービスで置き換えることができることに留意されたい。さらに、代替シナリオでは、その自己更新するクラスターソフトウェアは、それ自体のノードに更新をインストールするために別のノードで実行する必要はないことに留意されたい。たとえば、リブートが必要とされない場合に、その自己更新するクラスターソフトウェアは、その更新をインストールするだけでよい。別法として、リブートが必要とされ、その所有者ノードがそれの作業負荷をその分散システムのサービスを継続することができる他のノードに移行することができる場合、その所有者ノードの自己更新するソフトウェアは、それ自体をリブートしてその更新を完了することができ、その所有者ノードは、任意のアクセス可能な記憶領域に書き込んで、１つまたは複数のリブートにわたり状態情報を持続することができる。
【００１４】
[0019]図１Ａは、複数のコンピューターノード１０４１〜１０４Ｎを備える自己更新する分散システム１０２の例示的一実装形態を備えるブロック図である。コンピューターノードは、たとえば、仮想機械または物理機械でもよい。分散システムは、わずか２つのノードから現実的である任意の数までのノードを有することができる。実際に、本明細書に記載の自己更新技術は、いくつかある利益のなかでも、小さい自己更新するサーバークラスターが、手動のメンテナンスをほとんどまたは全く必要としないアプライアンスタイプのデバイスとして構成され得るという点で、わずか２ブレードのサーバークラスターで有益である。
【００１５】
[0020]各々のノードは、システム１０２のノードの間で分散され得るサービス（場合によりアプリケーションを含む）を備える１つまたは複数のそれぞれの作業負荷（１０６１〜１０６Ｊおよび１０７１〜１０７Ｋとして図示される）を含む。そのような分散システムの一例は、１つのノードが、予測されていない（たとえば、クラッシュ関連の）または意図的な（たとえば、メンテナンス関連の）事象から生じ得る、故障または停止をした場合に、有効な１つのノードの作業負荷が自動的に１つまたは複数の他のノードに「移行する」（「フェイルオーバー」）、フェイルオーバークラスターである。この目的のために、１つのノードから作業負荷を移行させる必要に応じて、対応する作業負荷のインスタンスが、１つまたは複数の他のノードで起動され、それによって、ノードクライアントに透過的に動作し続ける。他のタイプの分散システムは、自動負荷バランシングを行うためまたは手動メンテナンスの一部としてなど、他の理由で作業負荷を移行する。分散システム通信機構１１０１〜１１０Ｎに結合された共用ネットワークインフラストラクチャー１０８は、作業負荷のそのような移行に必要とされる通信を円滑に進める。
【００１６】
[0021]一般に、分散システムのノードは、ノードのそれぞれのノード構内のソフトウェアインベントリー１１２１〜１１２Ｎへの更新で時々更新される必要がある。これらの更新の多数は、ノードのリブートおよび／またはノードのサービスの停止を伴い、これまで管理者はそのような更新を予定されていた。
【００１７】
[0022]本明細書に記載のように、分散システム１０２は、それのソフトウェアの一部分として分散システム１０２に自己更新関連のソフトウェアを追加することによって、自己更新するように構成される。たとえば、自己更新作業負荷に向けられた．ｄｌｌファイルが、各ノードのノード構内のソフトウェアインベントリー１１２１〜１１２Ｎの一部分としてインストールされ得る。その自己更新関連のソフトウェアは、オーケストレーター１２０のローカルプロキシーとして実行するときに、その分散システムによって提供されるサービスを維持しながら、そのメンバーシップ内の複数のコンピューターノードの各々に１つまたは複数の更新を適用することが、理解されよう。
【００１８】
[0023]図１Ｂのノード１３０１および１３０２の分散システムに表された一代替実装形態で、更新は、各ノードに永続的に結合された組込み型ハードウェアおよび／またはファームウェアコンポーネント１３４（「永続的に」は、遠隔コンピューターとは異なり、容易に切り離すことを意図されていないことを意味するものである）にノード１３０１および１３０２を結合するインターフェースを介して、更新実行をインスタンス化および調整する専用の自己更新機構１３２を使用することに基づき得る。ノード１３０１および１３０２の２つのみのノードが図１Ｂの例には示されるが、そのような実装形態は、任意の現実的な数のノードを含み得ることが理解されよう。さらに、図１Ｂの分散システムは、アプライアンスタイプのデバイスに便宜的に組み込まれ得ることに留意されたい（実装形態が図１Ａに例示されるように）。
【００１９】
[0024]一般に、その自己更新関連のソフトウェアは、一実装形態で、制御された形で分散システムノードの各々を連続して（または、大きな分散システムの小さいグループ内でなどの他の方法で）更新する、分散システムをとおした１つの自己更新周期を備える「更新実行」を始動する。一実装形態では、その自己更新関連のソフトウェアは、作業負荷を備える。いくつかある利益の中でも、これは、分散システム１０２内でコンピューターノード故障に耐性のあることを含めて、更新関連のソフトウェアを分散システムにわたり高度に使用可能にする。
【００２０】
[0025]一実装形態では、更新実行をインスタンス化および調整するソフトウェアの一部分（たとえば、プロセス／スレッド）は、サービスを意識した更新オーケストレーター、または単に「オーケストレーター」と呼ばれる。そのオーケストレーターは、制御された形で分散システムノードの各々を連続して（または、大きい分散システムの小さいグループ内など、他の方法で）更新する。本明細書に記載の自己更新モードで、オーケストレーターは、そのオーケストレーターが前に稼働したノードを更新する前に、別のノードにそのオーケストレーターを移行することによって生じ得る現在の更新実行中にやはり更新されることになる分散システムノードで実行され得る。
【００２１】
[0026]図１Ａに表すように、サービスを意識した更新オーケストレーター１１４１〜１１４Ｎ（たとえば、１つまたは複数のプロセスおよび／または１つまたは複数のスレッドを備える）は、分散システム１０２を更新する終端間動作をオーケストレートする。一般に、オーケストレーター（たとえば、１１４１）の１つのみのインスタンスが、その分散システム内で同時に実行し、更新実行の過程で必要とされるようにその分散システム内のコンピューターノードを横切って移行することができる（破線ブロック１１４Ｎへの破線矢印によって指示されるように）。
【００２２】
[0027]図１Ａの例示的実装形態で、各ノードは、１つまたは複数の適切なソフトウェア更新ソース１１８から更新を自動的にダウンロードする１つまたは複数のノードソフトウェア更新ツール１１６１〜１１６Ｎを含む。ソフトウェア更新のための様々な異なるソースが、たとえば、企業構内の分布点から、公共インターネット（たとえば、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｕｐｄａｔｅ）から、公共クラウド（たとえば、Ｗｉｎｄｏｗｓ  Ａｚｕｒｅ（商標））から、プライベートクラウド（たとえば、Ｗｉｎｄｏｗｓ  Ａｚｕｒｅ  Ｐｒｉｖａｔｅ  Ａｐｐｌｉａｎｃｅ）から、および／または同様のものから、サポートされ得る。
【００２３】
[0028]図１Ａに表された例で、ローカルオーケストレータープロキシー（たとえば、Ｗｉｎｄｏｗｓ（登録商標）  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｓｔｒｕｍｅｎｔａｔｉｏｎ、または、ＷＭＩベースのコンポーネント）が、プロキシー１２０１〜１２０Ｎによって表されるように、各分散システムノードでインストールされる。各プロキシーは、オーケストレーターからノードの対話を円滑に進め、更新実行中におよびその後に、分散された状態管理を提供する。プロキシー１２０１〜１２０Ｎはまた、それらの対応するノード構内のソフトウェア更新ツール１１６１〜１１６Ｎと対話して、そのコンピューターノードにローカルなそれらの対応するソフトウェアインベントリー１１２１〜１１２Ｎにソフトウェア更新をもたらす。
【００２４】
[0029]図２〜６は、例示的な３ノード（ノード２２０１〜２２０３によって表される）分散システムで自己更新がどのように行われ得るかの様々な例示的状態を介する一例を示す。図２によって表されるように、ノードのうちの１つは、自己更新関連の作業負荷２２２のインスタンスの実行に関する所有者ノード２２０１である。自己更新関連の作業負荷２２２は、適切なインターフェースを介する手動の対話によって、および／または、リブートの後に自動的になど、別の事象に応答して、スケジューラーコンポーネントによって起動され得る。
【００２５】
[0030]一実装形態で、自己更新関連の作業負荷２２２は、更新を行うために動作するオーケストレーターコード２２３を含み得る。一代替実装形態で、自己更新関連の作業負荷２２２は、更新を行うために動作するオーケストレーターコード２２３のローカルインスタンス（たとえば、ノードのノード構内のソフトウェアインベントリー内で保持されるものとしての）を起動するように動作し得る。いずれの場合にも、この例では、作業負荷／オーケストレーターコード２２２および２２３は、本明細書に記載のように更新実行の途中にノード２２０１〜２２０３を横切って移行することができる。
【００２６】
[0031]各コンピューターノード２２０１〜２２０３は、いくつかの分散システムサービス作業負荷２２４１〜２２４３をホスティングする。一般に、これらの作業負荷２２４１〜２２４３によって提供されるサービスは、分散システムが所望のソフトウェア更新で更新される間に、使用可能であり続ける必要がある。
【００２７】
[0032]一般に、図３に表すように、オーケストレーターコード２２２は、この例ではノード２２０２である更新されるノードの作業負荷を移行するように動作する。これは、移行されるシステムサービス作業負荷３２４２としてノード２２０３に移行されるシステムサービス作業負荷２２４２によって表される（同様に、破線の「Ｘ」で消された破線のノード／作業負荷２２４２によって表される）。たとえば、フェイルオーバークラスターにおいて、これは、クラスターシステムソフトウェアＣＳＳがノード２２０２を休止させることを要求することによって、知られている方式で、自動的に起こり得る。クラスターシステムソフトウェアＣＳＳにとって、それ自体の機構に基づいて、ノード２２０３に作業負荷を移行することの代わりにまたはそれに加えて、ノード２２０１に作業負荷２２４２またはそのいくらかのサブセットを移行することは実行可能であるが、これは簡潔さを目的として図３には示されないことに留意されたい。
【００２８】
[0033]移行された後は、オーケストレーターコード２２２は次いで、効率のために既にそれらの更新のうちのいくつかまたはすべてをダウンロードしてあることがある、および、他の方法でそれらの更新の準備をするための１つまたは複数のステップを踏んであることのある、ノード２２０２を更新するように動作する。もうシステムサービス作業負荷を実行していないノード２２０２は、ノードソフトウェアを（および、場合によってはファームウェアさえも）所望の更新状態にするために必要とされる回数リブートされ得る。
【００２９】
[0034]前述のように、共用記憶領域２２６（たとえば、高い信頼性のあるおよび使用可能な）は、自己更新に関連する状態情報を読み取るおよび書き込むためを含めて、ノードにアクセス可能である。オーケストレーターコードは、たとえば、所有者ノード２２０１の故障のためを含む、オーケストレーターコード２２２のいかなる故障にもかかわらず、更新状態が知られるように、任意の適切な時間に共用記憶領域に情報を書き込んで更新実行の状態を反映することができる。たとえば、ノード２２０２への更新が完了した後は、状態情報は、更新されてその更新が完了したことを指示し、それによって、別のノードがその更新実行を引き継ぐ必要がある場合に、この状態情報は知られる。
【００３０】
[0035]この時、ノード２２０２は、更新され、１つまたは複数の作業負荷の実行を再開することができる。図４の例では、ノード２２０３からの作業負荷２２４３および３２４２は、この目的のためにノード２２０２に移行される。この場合にもやはり、ノード２２０３の作業負荷のうちのいくらかまたはすべてはノード２２０１に移行され得ることが実現可能であるが、この例では、簡潔さを目的として、それらはノード２２０２に移行されるものとして示され、移行されたシステムサービス作業負荷４４４として表される。移行した後は、ノード２２０３は、更新の準備ができている。
【００３１】
[0036]任意のリブート動作を含めて、更新された後は、ノード２２０３は、１つまたは複数の作業負荷の実行を再開することができる。図４の例の後に、所有者ノード２２０１のみが、まだ更新される必要がある。前述のように、その分散システムの能力および構成に応じて、オーケストレーターコード２２３は、それの作業負荷を移行し、それ自体のノードソフトウェアを更新し、リブートに続いて自動的に再始動し、それによって別のノードに移行することなしにそのノードを更新することができ得る。しかし、図２〜６の例では、オーケストレーターコード２２３は、それが現在実行しているノード２２０１が更新されることを可能にするために、別のノードに移行する必要がある。
【００３２】
[0037]オーケストレーターコード２２３が別のノードに移行し得る１つの方法は、クラスターシステムソフトウェアＣＳＳへの要求による。もう１つの方法は、クラスターシステムソフトウェアＣＳＳによって可能にされる場合には、ノード２２０１がそれ自体を休止することを要求することであり、そうである場合には、作業負荷が移行され、自己更新関連の作業負荷２２２もまた作業負荷であるので、移行が、既存のクラスタリング技術を使用し、自動的に起こる。
【００３３】
[0038]図５の例では、ノード２２０１を更新するために、ノード２２０１の自己更新関連の作業負荷２２２（および、そこに組み込まれる場合には、オーケストレーターコード２２３）とシステムサービス作業負荷２２４１とが、その他のノード２２０２および２２０３に、クラスターシステムソフトウェアＣＳＳによって指示されるようにそれらのノードでそのインスタンスを開始することによって、移行される。クラスターシステムソフトウェアＣＳＳは、それ自体の機構に従ってその他のノード２２０２および２２０３に作業負荷を移行することができることが理解されるが、図５の例では、自己更新関連の作業負荷２２２は、自己更新関連の作業負荷５２２の別のインスタンスとしてノード２２０２に移行され、システムサービス作業負荷２２４１は、ノード２２０３に移行されてシステムサービス作業負荷５５５になる。オーケストレーターコード５２３が自己更新関連の作業負荷５２２に組み込まれない場合、そのとき、起動するときに、自己更新関連の作業負荷５２２は、オーケストレーターコード５２３を起動するように動作する。この時、ノード２２０２は、自己更新関連の作業負荷５２０／オーケストレーターコード５２３の所有に関して新たな所有者になる。
【００３４】
[0039]オーケストレーターコード５２３は、起動されるときに、共用記憶領域２２８を読み取り、保持された状態情報からノード２２０１が更新を必要とすることを判定する。これは、ノード２２０１から任意の他の作業負荷を移行するステップを含み得る（前述のように、そのような他の作業負荷は、自己更新関連の作業負荷２２２の移行とともに既に移行されてある場合があるが）。ノード２２０１は、次いで、必要に応じてリブート動作を含めて、更新される。
【００３５】
[0040]図６は、更新実行がそれらの３つのノードについて完了した後のノード２２０１〜２２０３の例示的分散システムを示す。この時、自己更新関連の作業負荷は、更新実行が完了したことを指示して、共用記憶領域２２６に状態情報を書き込む（または、その情報を消去する）ことができることに留意されたい。自己更新関連の作業負荷５２２（および／またはオーケストレーターコード５２３）は、次いで、次の更新事象またはスケジュールまで、全部または部分的に休止および／または終了し得る（図６に破線の四角形として示すように）。システムサービス作業負荷６６０１〜６６０３によって表されるように、クラスターシステムソフトウェアＣＳＳは、作業負荷を平衡させるためなどに、要望に応じて作業負荷を周囲に移行することができることにさらに留意されたい。これは、更新の後にその機械に更新の前にまたは更新の一部として更新された機械から移行された少なくとも１つの作業負荷を戻すステップを含み得る。
【００３６】
[0041]必須ではないが、ユーザーインターフェースが提供されて、図１Ａのローカルプロキシー１２０１〜１２０Ｎに結合されたまたはその一部分としてなどの更新プロセスとユーザーが対話することを可能にすることができる。その対話の部分は、初期化でもよい（たとえば、変更されない限りおよび変更されるまでそのシステムのために一度セットアップされた）。たとえば、更新関連のソフトウェアのいずれのオプションも、たとえばデフォルト値に関して、ユーザー構成可能でもよい。ユーザーはまた、たとえば共用記憶領域または別のアクセス可能な場所に記録されたものとしての、更新の状態に関する情報を見て、進捗を監視することができる。適切なインターフェースで、ユーザーは、分散システムに非メンバーデバイスを結合して、ある程度その更新と対話することができる。
【００３７】
[0042]たとえば、自己更新モードは、ユーザーインターフェースまたはコマンドライン、たとえばＷｉｎｄｏｗｓ（登録商標）ＰｏｗｅｒＳｈｅｌｌ  ｃｍｄｌｅｔ、などから、ユーザーによって要求される場合には、一時的に中断され得る。ユーザーが、たとえば同様の対話を介して、その自己更新関連の作業負荷を再び有効にするとき、次の更新実行発生が、分散作業負荷オプションで定義されたスケジュールによって判定される。
【００３８】
[0043]一実装形態では、たとえば、分散システム更新インフラストラクチャーにおける変更された設定を検査するために、または、更新がそのスケジュールを待つ必要がないことを確保するために、分散システム全体が自己更新モードであり続ける間であっても、更新実行は、要望に応じて開始され得る。ユーザーインターフェースまたはコマンドラインオプション（たとえば「ＵｐｄａｔｅＮｏｗ」オプション）は、この一度のための既定義の自己更新スケジュールを無効にし、更新実行を始動する。
【００３９】
[0044]図７は、オーケストレータープロセスが、ユーザー定義されたスケジュールでなど、分散システム所有者ノードで実行し、任意のユーザー定義の実行オプションで更新実行を始める、一実装形態のための例示的ステップを要約する流れ図である。この例で分かるように、所有者ノードが更新されることになるとき、オーケストレーターは、異なるコンピューターノード、通常はこの更新実行で既に更新されたもの、に移行される。この例で同様に分かるように、新たな（移行された）オーケストレータープロセスは、同更新実行を継続し、その更新実行が、それまでに更新されなかった任意の残りのシステムノードを更新することによって、適切に完了することを確保する。
【００４０】
[0045]ステップ７００は、更新されることになるそれらのノードを備えるメンバーシップを判定するオーケストレーターを対象とする。通常、分散システムは、それのすべてのノードを互いの更新に関して無矛盾の状態にすることを要求する（一時的に、更新実行中を除いて）が、代替実装形態は、異なるメンバーセットへの更新を可能にし得る。ステップ７００はまた、更新が、その分散システムによって提供されるサービスの可用性を維持する方法で適用され得ることを確保する（たとえば、クラスターシステムソフトウェアを介して）、オーケストレーターまたは他の更新関連のソフトウェアを表す。たとえば、１つのみのノードが現在動作する場合、その更新実行は、その１つのノードを休止またはシャットダウンすることを許され得ない。さらに、その分散システムがその時に高負荷である場合など、その作業負荷が、そこへ移行される場合に１つまたは複数の別のノードまたはノードによって適切に処理されることができない場合には、その更新は、より忙しくない時間に延期され得る。それにより、更新は、提供されるシステムサービスを妨げることなしにその更新を可能にするのに十分なノード／リソースが使用可能であるまで、待つことを要求し得る。
【００４１】
[0046]ステップ７０２は、共用記憶領域を検査してこの更新実行のための任意の既存の状態を取得するオーケストレーターを表す。この例では、オーケストレーターは、起動されるとき、それが新たな実行を始動するまたは別の実行を完了するかを知らず、したがって、状態情報にアクセスすることに留意されたい（パラメーターまたは同様のものが新たな更新実行を識別するために使用されることが実現可能であるが）。
【００４２】
[0047]ステップ７０４は、更新されることになる次のノードを休止するステップを表す。これは、たとえばノードがシステム固有の識別を有するときなどに、状態情報から、そして、更新されたどの１つまたは複数のもの（もしあれば）がその状態情報内に記録されたデータであるかから、判定可能である。前述のように、休止要求（たとえば、クラスターシステムソフトウェアに行われる）は、休止されたノードの作業負荷を１つまたは複数の他のノードに移行する。
【００４３】
[0048]ステップ７０６は、準備が整ったときに、たとえば、それの作業負荷が移行された後に、休止されたノードを更新する。たとえば、更新されるコードに応じて、作業負荷が移行される間に更新処理のいくらかが開始することが実現可能であることに留意されたい。
【００４４】
[0049]ステップ７０８は、ステップ７０６で更新されたノードの更新を反映するために共用記憶領域内の状態情報を更新するステップを表す。更新は、通常は、前述のように、１回または複数回リブートするステップを含む。状態情報は、たとえば、何らかの状況／進捗データを時折提供するために、または、故障の場合に備えて準備するためになど、他の時に更新され得る（図７には示さず）が、重要な時間は、別のノードがこの時に更新実行を再開することができるので、ノード更新が完了したときであることに留意されたい。
【００４５】
[0050]ステップ７１０は、分散システムのメンバーとして休止されたノードを加えて戻す。これは、クラスターシステムソフトウェアへの要求によって行うことができ、現在更新されるノードがクラスターシステムソフトウェアによって導かれるように分散システムサービス作業負荷の処理を開始することを可能にする。その作業負荷のうちの１つは、２ノードシステムの場合などに、自己更新関連の作業負荷でもよい。
【００４６】
[0051]ステップ７１２は、オーケストレーターを実行するノードを含まない、更新されることになるすべての他のメンバーノードが、更新されたかどうかを評価する。そうでない場合、ステップ７１２は、ステップ７０４に分岐して戻り、その更新実行を継続する。
【００４７】
[0052]更新されるべきすべての他のノードが更新された後は、ステップ７１２は、ステップ７１４に分岐する。ステップ７１４は、その更新実行が完了した、すなわち、そのオーケストレーターを実行するノードを含むすべてのメンバーノードが更新されたかどうかを評価する。そうでない場合に、ステップ７１６は、そのオーケストレーターを移行するステップを表し、これは、それがそのオーケストレーターを含む自己更新関連の作業負荷を移行することによって、または、それがそのオーケストレーターを起動するときにその自己更新関連の作業負荷を移行することによってでもよい。いずれの場合にも、そのオーケストレーターは、新たなノードに移行され、ステップ７１８で起動する。
【００４８】
[0053]ステップ７１８は、ステップ７０２に戻り、そのプロセスを繰り返す。故障がなかった通常のシナリオでは、ステップ７０４で、更新されないノードのみが、元々そのオーケストレーターを実行したものであるが、故障を理由に、更新する１つまたは複数のノードが存在し得ることが実現可能である。いずれの場合にも、メンバーであるまたはメンバーのままであるすべてのノードが更新されるまで、そのプロセスは繰り返す。
【００４９】
[0054]ある時点で、ステップ７１４で、そのオーケストレーターを実行するノードは、ステップ７１２で評価されるように他のすべてのノードでの更新実行を完了し、ステップ７１４で評価されるように、それ自体が更新された。この時点で、その更新実行は完了し、共用記憶領域内の状態情報は、ステップ７２０で更新完了を反映するために更新される。実装形態に応じて、たとえば、次の更新実行が、新しい更新実行全体が遂行されることになることを実現するように、状態情報が消去され得るが、そのノードが更新されたバージョンデータなどの他の情報は、保持され得る。
例示的なネットワーク化されたおよび分散された環境
[0055]本明細書に記載された様々な実施形態および方法は、コンピューターネットワークの一部分としてまたは分散コンピューティング環境において配備することが可能な、任意の種類の１つまたは複数のデータストアに接続され得る、任意のコンピューターまたは他のクライアントもしくはサーバーデバイスに関して実装され得ることが、当業者には理解されよう。この点で、本明細書に記載の様々な実施形態は、任意の数のメモリーまたは記憶ユニットと、任意の数のアプリケーションおよび任意の数の記憶ユニットにわたり生じるプロセスとを有する任意のコンピューターシステムまたは環境において、実装され得る。これは、遠隔またはローカル記憶領域を有する、ネットワーク環境または分散コンピューティング環境において配備されたサーバーコンピューターおよびクライアントコンピューターを有する環境を含むが、これに限定されない。
【００５０】
[0056]分散されたコンピューティングは、コンピューティングデバイスおよびシステムの間の通信交換によってコンピューターリソースおよびサービスの共用を実現する。これらのリソースおよびサービスは、ファイルなどのオブジェクトの情報、キャッシュ記憶、および、ディスク記憶の交換を含む。これらのリソースおよびサービスはまた、負荷バランシング、リソースの拡張、処理の特殊化などのための複数の処理ユニットにわたる処理能力の共用を含む。分散されたコンピューティングは、ネットワーク接続性を活用し、クライアントが彼らの集団の力を利用して企業全体に利益をもたらすことを可能にする。この点で、様々なデバイスが、本開示の様々な実施形態について説明されるようなリソース管理機構に関与することができるアプリケーション、オブジェクト、または、リソースを有し得る。
【００５１】
[0057]図８は、例示的なネットワーク化されたまたは分散されたコンピューティング環境の概略図である。その分散されたコンピューティング環境は、コンピューティングオブジェクト８１０、８１２などと、例示的アプリケーション８３０、８３２、８３４、８３６、８３８によって表されるようなプログラム、方法、データストア、プログラマブルロジックなどを含み得るコンピューティングオブジェクトまたはデバイス８２０、８２２、８２４、８２６、８２８などとを備える。コンピューティングオブジェクト８１０、８１２など、および、コンピューティングオブジェクトまたはデバイス８２０、８２２、８２４、８２６、８２８などは、パーソナルデジタルアシスタント（ＰＤＡ）、音声／ビデオデバイス、携帯電話、ＭＰ３プレーヤー、パーソナルコンピューター、ラップトップなどの異なるデバイスを備え得ることが、理解されよう。
【００５２】
[0058]各コンピューティングオブジェクト８１０、８１２など、および、コンピューティングオブジェクトまたはデバイス８２０、８２２、８２４、８２６、８２８などは、直接にまたは間接的にのいずれかで、通信ネットワーク８４０を介して、１つまたは複数の他のコンピューティングオブジェクト８１０、８１２など、および、コンピューティングオブジェクトまたはデバイス８２０、８２２、８２４、８２６、８２８などと通信することができる。図８には単一の要素として示されるが、通信ネットワーク８４０は、図８のシステムにサービスを提供する他のコンピューティングオブジェクトおよびコンピューティングデバイスを備えることができ、および／または、図示されない複数の相互接続されたネットワークを表し得る。各コンピューティングオブジェクト８１０、８１２など、またはコンピューティングオブジェクトもしくはデバイス８２０、８２２、８２４、８２６、８２８などはまた、本開示の様々な実施形態に従って提供されるアプリケーションとの通信またはその実装に適した、ＡＰＩもしくは他のオブジェクトを利用することができるアプリケーション８３０、８３２、８３４、８３６、８３８などのアプリケーション、ソフトウェア、ファームウェア、および／またはハードウェアも含み得る。
【００５３】
[0059]分散されたコンピューティング環境をサポートする様々なシステム、コンポーネント、およびネットワークが存在する。たとえば、コンピューティングシステムは、ローカルネットワークまたは広く分散されたネットワークによって、ワイヤードまたはワイヤレスシステムにより、ともに接続され得る。現在、任意のネットワークインフラストラクチャーが、たとえば、様々な実施形態で説明されるようなシステムに起こされる例示的通信のために使用され得るが、多数のネットワークが、広く分散されたコンピューティングのためのインフラストラクチャーを提供し、多数の異なるネットワークを包含するインターネットに結合される。
【００５４】
[0060]したがって、クライアント／サーバー、ピアトゥピア、またはハイブリッドアーキテクチャーなど、ネットワークトポロジーのホストおよびネットワークインフラストラクチャーが、使用され得る。「クライアント」は、それが関係しない別のクラスまたはグループのサービスを使用するクラスまたはグループのメンバーである。クライアントは、別のプログラムまたはプロセスによって提供されるサービスを要求するプロセス、たとえば、概略的に１セットの命令またはタスク、でもよい。クライアントプロセスは、その他のプログラムまたはそのサービス自体に関する任意の作業詳細を「知る」必要なしに、要求されたサービスを使用する。
【００５５】
[0061]クライアント／サーバーアーキテクチャー、具体的にはネットワーク化されたシステム、では、クライアントは、通常は、別のコンピューター、たとえばサーバー、によって提供される共用ネットワークリソースにアクセスするコンピューターである。図８の説明では、任意のコンピューターが、状況に応じて、クライアント、サーバー、またはその両方と考えられ得るが、非限定的例として、コンピューティングオブジェクトまたはデバイス８２０、８２２、８２４、８２６、８２８などはクライアントと考えることができ、そして、コンピューティングオブジェクト８１０、８１２などはサーバーと考えることができ、サーバーの機能を果たすコンピューティングオブジェクト８１０、８１２などは、クライアントコンピューティングオブジェクトまたはデバイス８２０、８２２、８２４、８２６、８２８などからのデータの受信、データの記憶、データの処理、クライアントコンピューティングオブジェクトまたはデバイス８２０、８２２、８２４、８２６、８２８などへのデータの送信など、データサービスを提供する。
【００５６】
[0062]サーバーは、通常は、インターネットまたはワイヤレスネットワークインフラストラクチャーなど、遠隔またはローカルネットワークを介してアクセス可能な遠隔コンピューターシステムである。クライアントプロセスは、第１のコンピューターシステム内でアクティブでもよく、サーバープロセスは、第２のコンピューターシステム内でアクティブでもよく、通信媒体を介して互いに通信し、それによって、分散された機能性を提供し、複数のクライアントがそのサーバーの情報収集能力を活用することを可能にする。
【００５７】
[0063]通信ネットワーク８４０またはバスがインターネットであるネットワーク環境で、たとえば、コンピューティングオブジェクト８１０、８１２などは、他のコンピューティングオブジェクトまたはデバイス８２０、８２２、８２４、８２６、８２８などが、ハイパーテキスト転送プロトコル（ＨＴＴＰ）などのいくつかの知られているプロトコルのいずれかを介してそれと通信するウェブサーバーでもよい。サーバーの機能を果たすコンピューティングオブジェクト８１０、８１２などはまた、分散コンピューティング環境の特性であり得るように、クライアント、たとえば、コンピューティングオブジェクトまたはデバイス８２０、８２２、８２４、８２６、８２８など、の機能を果たすこともできる。
例示的コンピューティングデバイス
[0064]前述のように、有利には、本明細書に記載の技法は、任意のデバイスに適用することができる。したがって、ハンドヘルド、ポータブルおよび他のコンピューティングデバイスとすべての種類のコンピューティングオブジェクトとは、様々な実施形態に関連する使用を企図されていることが理解されよう。したがって、図９で以下に記載する以下の汎用遠隔コンピューターは、コンピューティングデバイスの一例にすぎない。
【００５８】
[0065]実施形態は、デバイスまたはオブジェクトのためのサービスの開発者による使用のために、オペレーティングシステムを介して部分的に実装することができ、および／または、本明細書に記載の様々な実施形態の１つまたは複数の機能的態様を遂行するように動作するアプリケーションソフトウェア内に含まれ得る。ソフトウェアは、クライアントワークステーション、サーバーまたは他のデバイスなどの１つまたは複数のコンピューターによって実行される、プログラムモジュールなど、コンピューター実行可能命令との一般的関連で説明され得る。そのコンピューターシステムは、データを通信するために使用され得る様々な構成およびプロトコルを有し、したがって、特定の構成またはプロトコルが限定するものとして考えられることはないことが、当業者には理解されよう。
【００５９】
[0066]したがって、図９は、本明細書に記載の実施形態の１つまたは複数の態様が実装され得る適切なコンピューティングシステム環境９００の一例を示すが、前述から明らかなように、コンピューティングシステム環境９００は、適切なコンピューティング環境の単に１つの例であり、使用または機能性の範囲に関して限定を示唆するものではない。加えて、コンピューティングシステム環境９００は、例示的コンピューティングシステム環境９００内に示されたコンポーネントのいずれか１つまたは組合せに関する依存を有するものとして解釈されることを意図されていない。
【００６０】
[0067]図９を参照すると、１つまたは複数の実施形態を実装するための例示的遠隔デバイスは、コンピューター９１０の形で汎用コンピューティングデバイスを含む。コンピューター９１０のコンポーネントは、処理ユニット９２０、システムメモリー９３０、および、システムメモリーを含む様々なシステムコンポーネントを処理ユニット９２０に結合するシステムバス９２２を含み得るが、これらに限定されない。
【００６１】
[0068]コンピューター９１０は、通常は、様々なコンピューター可読媒体を含み、コンピューター９１０によってアクセスされ得る任意の使用可能な媒体でもよい。システムメモリー９３０は、読取り専用メモリー（ＲＯＭ）および／またはランダムアクセスメモリー（ＲＡＭ）など、揮発性および／または不揮発性メモリーの形のコンピューター記憶媒体を含み得る。例として、また限定ではなく、システムメモリー９３０はまた、オペレーティングシステム、アプリケーションプログラム、他のプログラムモジュール、およびプログラムデータも含み得る。
【００６２】
[0069]ユーザーは、入力デバイス９４０を介してコンピューター９１０にコマンドおよび情報を入力することができる。監視するまたは他のタイプの表示装置もまた、出力インターフェース９５０などのインターフェースを介してシステムバス９２２に接続される。監視に加えて、コンピューターはまた、出力インターフェース９５０を介して接続され得る、スピーカーおよびプリンターなど、他の周辺出力デバイスも含み得る。
【００６３】
[0070]コンピューター９１０は、遠隔コンピューター９７０などの１つまたは複数の他の遠隔コンピューターへの論理的接続を使用するネットワーク化されたまたは分散された環境で動作することができる。遠隔コンピューター９７０は、パーソナルコンピューター、サーバー、ルーター、ネットワークＰＣ、ピアデバイスもしくは他の一般のネットワークノード、または任意の他の遠隔媒体消費または伝送デバイスでもよく、コンピューター９１０に関して前述された要素のいずれかまたはすべてを含み得る。図９に示す論理的接続は、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）など、ネットワーク９６０およびインターフェース９７２を含むが、他のネットワーク／バスもまた含み得る。そのようなネットワーク環境は、家庭、事務所、企業規模のコンピューターネットワーク、イントラネットおよびインターネットにおいて普通のものである。
【００６４】
[0071]前述のように、例示的実施形態が様々なコンピューティングデバイスおよびネットワークアーキテクチャーに関して説明されたが、基礎となる概念は、任意のネットワークシステム、および、リソース使用の効率を改善することが望ましい任意のコンピューティングデバイスまたはシステムに適用され得る。
【００６５】
[0072]また、同じまたは同様の機能を実装するための複数の方法、たとえば、アプリケーションおよびサービスが本明細書に記載の技法を活用することを可能にする、適切なＡＰＩ、ツールキット、ドライバーコード、オペレーティングシステム、制御、独立型のまたはダウンロード可能なソフトウェアオブジェクトなど、が存在する。したがって、本明細書に記載の実施形態は、ＡＰＩ（または他のソフトウェアオブジェクト）の観点から、ならびに、本明細書に記載するような１つまたは複数の実施形態を実装するソフトウェアまたはハードウェアオブジェクトから、企図される。したがって、本明細書に記載の様々な実施形態は、完全にハードウェア内にある、部分的にハードウェア内にあり部分的にソフトウェア内にある、ならびに、ソフトウェア内にある態様を有し得る。
【００６６】
[0073]誤解を避けるために、本明細書で開示される主題は、そのような例によって限定されない。加えて、「例」として本明細書に記載されるいずれの態様または設計も、他の態様または設計より好ましいまたは有利なものとして必ずしも解釈されるべきではなく、当業者に知られている同等の例示的構造および技法を排除することを意図されていない。さらに、「含む」、「有する」、「包含する」、および他の同様の言葉が使用される範囲において、誤解を避けるために、そのような用語は、特許請求で使用されるときに任意の追加のまたは他の要素を排除することなしに開放移行語としての「備える」という用語と同様の形で包含的であることを意図される。
【００６７】
[0074]前述のように、本明細書に記載の様々な技法は、ハードウェアまたはソフトウェアに関連して、または、適切であれば、それらの両方の組合せに関連して、実装され得る。本明細書では、「コンポーネント」、「モジュール」、「システム」および同様の用語は、コンピューター関連の実体、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかを同様に指すものである。たとえば、コンポーネントは、プロセッサーで実行するプロセス、プロセッサー、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および／またはコンピューターでもよいが、これらに限定されない。例として、コンピューターで実行するアプリケーション、および、そのコンピューターの両方が、コンポーネントでもよい。１つまたは複数のコンポーネントは、実行のプロセスおよび／またはスレッド内にあってもよく、コンポーネントは、１台のコンピューターに局在化されても、および／または、２台以上のコンピューター間で分散されてもよい。
【００６８】
[0075]前述のシステムは、いくつかのコンポーネント間の対話に関して説明された。そのようなシステムおよびコンポーネントは、それらのコンポーネントもしくは指定されたサブコンポーネント、指定されたコンポーネントもしくはサブコンポーネントのうちのいくつか、および／または、追加のコンポーネント、ならびに、前述の様々な置換および組合せによるものを含み得ることが、理解されよう。サブコンポーネントはまた、親コンポーネント（階層的）内に含まれるのではなくて他のコンポーネントに通信で結合されたコンポーネントとして実装され得る。追加で、１つまたは複数のコンポーネントが、集合体機能を提供する単一のコンポーネントに結合される、または、いくつかの別個のサブコンポーネントに分割することが可能であること、そして、管理層などの任意の１つまたは複数の中間層が、統合された機能を提供するために、提供されてそのようなサブコンポーネントに通信で結合することができることに留意されたい。本明細書に記載の任意のコンポーネントはまた、本明細書に具体的に記載されないが当業者に一般に知られている１つまたは複数の他のコンポーネントと対話することができる。
【００６９】
[0076]本明細書に記載の例示的システムを考えると、記載される主題に従って実装され得る方法論もまた、様々な図面のフローチャートを参照して理解され得る。説明の簡素化を目的として、本方法論は、一連のブロックとして図示および記載されるが、いくつかのブロックは、本明細書に図示および記載されるものとは異なる順番でおよび／または他のブロックと同時に生じ得るので、様々な実施形態は、それらのブロックの順番によって限定されないことが理解および認識されよう。非順次的なまたは分岐した流れが、フローチャートを介して示されるが、同じまたは同様の結果を達成する様々な他の分岐、流れの経路、および、ブロックの順番が実装され得ることが理解されよう。さらに、いくつかの図示されたブロックは、以下に記載の方法論を実装する際のオプションである。
結論
[0077]本発明は、様々な修正および代替構造を受け入れることができるが、そのある特定の説明される実施形態が、図中に示され、前述で詳細に説明されてある。しかし、開示された特定の形に本発明を限定する意図はなく、反対に、その意図は、本発明の趣旨および範囲内にあるすべての修正、代替構造、および同等のものを包含することであることを理解されたい。
【００７０】
[0078]本明細書に記載の様々な実施形態に加えて、他の同様の実施形態が使用可能であり、または、修正および追加が、そこから逸脱することなしに、対応する実施形態の同じまたは同等の機能を実行するための記載された実施形態に行われ得ることが理解されよう。さらに、複数の処理チップまたは複数のデバイスが、本明細書に記載の１つまたは複数の機能の性能を共用することができ、同様に、記憶が複数のデバイスにわたって実施され得る。したがって、本発明は、任意の単一の実施形態に限定されるものではなく、そうではなくて、添付の特許請求の範囲による広がり、趣旨および範囲において解釈されるものである。
【図１Ａ】
0006358958.tif 000002
【図１Ｂ】
0006358958.tif 000003
【図２】
0006358958.tif 000004
【図３】
0006358958.tif 000005
【図４】
0006358958.tif 000006
【図５】
0006358958.tif 000007
【図６】
0006358958.tif 000008
【図７】
0006358958.tif 000009
【図８】
0006358958.tif 000010
【図９】
0006358958.tif 000011