(57)【要約】  分散ネットワークにおいてリソース管理を行うシステムおよび方法が開示される。ネットワークにおけるデバイス群の集合の結合が緩いと、それらデバイスは、ネットワークにおけるその他のデバイスに関する電力の制約を知らない可能性がある。一般に、壁から給電されるデバイスは、バッテリ駆動型のモバイルデバイスとは大きく異なる電力設定を有する。本発明は、ネットワークにおける各デバイス（またはノード）のローカルなリソース要求を知る役割を担うローカルサービスに従属するように使用することができる、時間に関する統合ポリシを提供する。そのような分散時間システムにおいて、特定の時間領域内の全てのサービスは、速度を上げるか、速度を下げるか、または完全に停止させることができる。
2008546274.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上のデバイスによって利用されるリソースを管理するシステムであって、
前記ネットワーク上のデバイスによって利用されるリソースに関連付けられた時間領域を保持する分散クロックサービスと、
前記デバイスによって利用される前記リソースのレートを変更するために、前記分散クロックサービスに前記時間領域を変更させるリソース利用コーディネータと
を備えたことを特徴とするシステム。
【請求項２】
前記分散クロックサービスは、前記時間領域を追跡するタイムキーパサービスを含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記リソース利用コーディネータは、前記デバイスによって利用される前記リソースのレートを変更するために、前記タイムキーパサービスに前記時間領域を変更させることを特徴とする請求項２に記載のシステム。
【請求項４】
前記タイムキーパサービスは、前記デバイス上に存在することを特徴とする請求項３に記載のシステム。
【請求項５】
前記タイムキーパサービスは、前記デバイスからリモートにあるネットワークノード上に存在することを特徴とする請求項３に記載のシステム。
【請求項６】
前記リソースは電力に関連付けられ、前記リソース利用コーディネータは、前記デバイスによって消費される電力のレートを変更するために、前記分散クロックサービスに前記時間領域を変更させることを特徴とする請求項１に記載のシステム。
【請求項７】
第１のネットワークノードが前記デバイスにメッセージを送信し、前記リソース利用コーディネータは、前記第１のネットワークノードが前記デバイスにメッセージを送信するレートを変更するために、前記分散クロックサービスに前記時間領域を変更させることを特徴とする請求項１に記載のシステム。
【請求項８】
第２のネットワークノードが前記第１のネットワークノードにメッセージを送信し、前記リソース利用コーディネータは、前記第２のネットワークノードが前記第１のネットワークノードにメッセージを送信するレートを変更するために、前記分散クロックサービスに第２の時間領域を変更させることを特徴とする請求項７に記載のシステム。
【請求項９】
前記分散クロックサービスは、前記デバイス上で実行される１つまたは複数のサービスによって生成されるタイミングイベントを管理するシーケンサを含むことを特徴とする請求項１に記載のシステム。
【請求項１０】
リソース利用を管理する方法であって、
デバイスの現在の状態の指示を提供する情報を受信することと、
前記デバイスの前記現在の状態と、前記デバイスによって利用されるリソースに関連付けられたリソース管理ポリシとに基づいて、前記リソースの利用に影響を及ぼすサービスを識別することと、
前記サービスが前記リソースの利用に影響を及ぼすレートを変更することと
を備えることを特徴とする方法。
【請求項１１】
前記サービスが前記リソースの利用に影響を及ぼすレートを前記変更することは、前記サービスに関連付けられた時間領域を変更することを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記時間領域を変更することは、前記サービスがメッセージを生成するレートに影響を及ぼすことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記時間領域を変更することは、前記サービスが前記デバイスに対するメッセージを生成するレートに影響を及ぼすことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記時間領域を変更することは、前記デバイスに対するメッセージを生成するリモートデバイスに対するメッセージを前記サービスが生成するレートに影響を及ぼすことを特徴とする請求項１２に記載の方法。
【請求項１５】
前記時間領域を変更することは、前記サービスが前記デバイス上の中央演算処理装置を利用する割合に影響を及ぼすことを特徴とする請求項１１に記載の方法。
【請求項１６】
前記サービスが前記リソースの利用に影響を及ぼすレートを前記変更することは、前記サービスによって利用される帯域幅を変更することを含むことを特徴とする請求項１０に記載の方法。
【請求項１７】
前記サービスが前記リソースの利用に影響を及ぼすレートを前記変更することは、前記サービスによって利用される帯域幅を変更することを含むことを特徴とする請求項１０に記載の方法。
【請求項１８】
前記リソースは電力に関連付けられ、前記サービスが前記リソースの利用に影響を及ぼすレートを前記変更することは、前記サービスが前記デバイスによるバッテリ利用に影響を及ぼすレートを変更することを含むことを特徴とする請求項１０に記載の方法。
【請求項１９】
リソース利用を管理する方法であって、
デバイスの状態の変化を検出することと、
前記デバイスの前記状態の変化によって影響が及ぼされるリソースを識別することと、
前記リソースの利用に影響を及ぼすサービスに関連付けられた時間領域を変更することによって、前記リソースが利用されるレートに影響を及ぼすことと
を備えることを特徴とする方法。
【請求項２０】
前記デバイスの前記状態と、前記リソースに関連付けられたリソース管理ポリシとに基づいて、前記リソースの利用に影響を及ぼすサービスを識別すること
をさらに備えることを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、分散ネットワークにおいてリソース管理を行うシステムおよび方法に関する。より詳細には、本発明は、ネットワークノードにおけるローカルなリソース要求を知る役割を担うサービスに従属する（slave）ように使用することができる、時間に関する統合ポリシ（federation policy）を使用するシステムおよび方法に関する。
【背景技術】
【０００２】
ネットワークにおけるデバイス群の集合の結合が緩いと、それらデバイスは、ネットワークにおけるその他のデバイスに関する特定の制約を知らない可能性がある。例えば、壁から給電されるデバイス（wall-powered device）は、バッテリ駆動型のモバイルデバイスとは大きく異なる電力設定を有する可能性がある。しかし、これらのデバイスが対話するとき、デバイスがリモートサービスの電力消費設定に基づいてレートを上げるかまたはレートを下げる、構造的に一貫した方法は存在しない。
【０００３】
例えば、送信されるあらゆるパケットは、リモートデバイスの限られたバッテリに、より多くの無線電力およびＣＰＵエネルギを消費するように要求するので、壁から給電されるデバイスは、バッテリ駆動型のデバイスに送信される作業量を低減させる必要がある場合がある。さらに、バッテリ駆動型のデバイスは、計算または記憶が（エネルギ消費の観点から）コストがかかりすぎて計算作業をローカルで実行できないために、計算または記憶を別のデバイスに譲りたいと望む場合がある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、分散ネットワークを形成する複数のノードの間で、バッテリ寿命、帯域幅の利用、および処理能力などのリソースを管理するためのシステムおよび方法が利用可能であることが望ましい。
【課題を解決するための手段】
【０００５】
本発明は、分散ネットワークにおいてデバイスのリソースを管理するシステムおよび方法を提供する。そのようなリソースの例には、バッテリ寿命、ネットワーク帯域幅、ＣＰＵの利用などを含めることができる。具体的には、本発明は、（それぞれがネットワークノードとみなすことができる）デバイス群のネットワークにおけるそのようなリソースを管理するための、分散され統合された方法を提供する。本明細書で使用される用語「統合された（federated）」は、あるシステムにおいて、デバイスをローカルで制御することもできるが、何らかの共通性を有する複数のデバイスを、何らかの集中的な方法で共同利用のためにまとめることもできるシステムを指す。
【０００６】
そのようなシステムにおいて、デバイスの要求を知る役割を担うローカルサービスに従属するように、時間に関する統合ポリシを使用することができる。そのような時間に関する統合ポリシは以前に開示されている。例えば、米国特許出願第０９／８３６８３４号明細書には、複数のデバイスまたはサービスを１つのマスタクロックに従属させることができる分散時間システムが開示および特許請求されている。そのような分散時間システムにおいて、所与の時間領域内の全てのサービスは、速度を上げるか、速度を下げるか、または完全に停止させることができる。例えば、クロックチックなどの信号ソースは、サービスをどのくらい速く実行することができるかを管理する周期的なイベントとして送信することができる。複数のサービスを１つの分散クロックに従属させることにより、その時間領域内のいくつかのサービスは、わずかな速度であっても、または速度が０であっても、決まった方法で（in a lockstep fashion）実行することが可能となる。
【０００７】
さらに、サービスを、所与の期間、「リース」として許可することができる「リースホルダ（leaseholder）」サービスを提供することができる。一旦リースが失効したときにサービスが自身のリースを更新しない場合、そのサービスは、活動停止状態にあるとみなされ、その他のノードの利用可能なリモートサービスのリストから、ガベージ収集する（garbage-collect）ことができる。本発明の一側面にしたがうと、様々な時間領域が使用されているので、リースが早期に失効することがないことを確実にするとともに、デバイスリソースを管理することができる。
【０００８】
本発明にしたがうと、ローカルデバイスは、当該ローカルデバイスの１つまたは複数のリソースを管理するために、当該ローカルデバイスの現在のポリシまたは現在の状態に基づいて、１つ以上のローカルサービスまたはリモートサービスの制御動作に影響を及ぼすことができる。例えば、バッテリ寿命を管理するために、バッテリ利用を制御することができる。例えば、ネットワーク帯域幅を管理するために、パケット帯域幅を管理することができる。例えば、ＣＰＵの利用を管理するために、ワークアイテムのスケジューリングおよびバッテリ利用を制御することができる。したがって、ローカルデバイスは、時間サービスおよびリースホルダサービスに、バッテリ電力またはＣＰＵを制御するため、受信メッセージのトラヒックを変更させる（すなわち、速度を下げさせるか、速度を上げさせるか、または停止させる）ことができるか、あるいはネットワーク帯域幅を管理するため、Ｉ／Ｏ帯域幅を変更させる（すなわち、低減させるか、または増大させる）ことができる。
【０００９】
ローカルデバイスの電力状態または電力ポリシに、特定のＩ／Ｏパターンを従属させることができる。そのようなＩ／Ｏパターンには、ワークアイテムのスケジューリングと、活性レート（liveness rate）（または、リースホルダサービスの周期的な任意のシグナリング）と、メモリ割り当てレート（さらに、どのくらいの時間の間、そのメモリが使用できる状態であるか）と、境界転送サービス（すなわち、ネットワークコントローラ、ネットワークコントローラ上のスタック、およびシリアルバスコントローラなどの、Ｉ／Ｏをシステムに出し入れするためのハードウェアを実際に使用するサービス）に関するＩ／Ｏレートとを含めることができる。
【００１０】
本発明にしたがう例示的なシステムは、分散クロックサービスとリソース利用コーディネータ（resource utilization coordinator）とを備えることができる。分散クロックサービスは、複数の時間領域のそれぞれを特定のリソースまたはアクティビティに関連付けることができる、それらそれぞれの時間領域を保持する。リソース利用コーディネータは、リソースがネットワーク上のデバイスによって利用されるレートを変更するために、分散クロックサービスに少なくとも１つの時間ベース（time base）を変更させる。
【発明を実施するための最良の形態】
【００１１】
（例示的なコンピューティング環境）  
図１および以下の記載は、本発明の例示的な実施形態を実施することができる好適なコンピューティング環境の、簡潔かつ全般的な説明を提供するように意図されている。しかし、ハンドヘルドコンピューティングデバイス、ポータブルコンピューティングデバイス、およびその他のあらゆる種類のコンピューティングデバイスが、本発明に関連して使用できるよう意図されていることを理解されたい。以下では汎用コンピュータについて説明するが、これは一例に過ぎない。本発明は、ネットワークサーバと相互運用したり対話したりするシンクライアント上で動作可能である。したがって、本発明の例示的な実施形態は、非常に少ない、または最小のクライアントリソースが関与するネットワーク化されたホスト型サービスの環境、例えば、クライアントデバイスが単にワールドワイドウェブに対するブラウザまたはインターフェースとして機能するネットワーク化された環境において、実装することもできる。そのようなコンピューティングデバイスは、直接的なヒューマンインターフェースを有する必要がなく、ネットワークを介してのみアクセス可能であってもよいことを理解されたい。
【００１２】
必須ではないが、本発明は、開発者または試験者による使用のためにアプリケーションプログラミングインターフェース（ＡＰＩ）を介して実装することができるし、かつ／または、１つまたは複数のコンピュータ（例えば、クライアントワークステーション、サーバ、またはその他のデバイス）によって実行される、プログラムモジュールなどのコンピュータ実行可能命令との一般的な関連で説明されるネットワーク閲覧ソフトウェアに含めることができる。一般に、プログラムモジュールには、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。通常、プログラムモジュールの機能は、様々な実施形態において、必要に応じて組み合わせてもよいし分散されてもよい。さらに、当業者であれば、本発明は、その他のコンピュータシステム構成を用いて実施できることが理解されよう。本発明について使用するのに適したその他のよく知られているコンピューティングシステム、コンピューティング環境、および／またはコンピューティング構成には、パーソナルコンピュータ（ＰＣ）、現金自動預け払い機（ＡＴＭ）、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどが含まれるが、これらに限定されるものではない。本発明の一実施形態は、通信ネットワークまたはその他のデータ伝送媒体を介して接続されたリモート処理デバイスによってタスクが実行される分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含むローカルコンピュータ記憶媒体およびリモートコンピュータ記憶媒体の両方に配置することができる。
【００１３】
したがって、図１は、本発明を実施することができる好適な例示的コンピューティングシステム環境１００を示すが、上記にて明らかにしたように、コンピューティングシステム環境１００は、好適なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲についていかなる限定を示唆するようにも意図されてはいない。同様に、コンピューティング環境１００は、例示的な動作環境１００に示された任意の１つのコンポーネントまたはコンポーネントの組合せに関して、いかなる依存関係または要件を有するようにも解釈するべきではない。
【００１４】
図１を参照すると、本発明を実施するための例示的なシステムは、コンピュータ１１０の形態の汎用コンピューティングデバイスを含む。コンピュータ１１０のコンポーネントには、処理ユニット１２０と、システムメモリ１３０と、システムメモリ１３０を含む様々なシステムコンポーネントを接続するシステムバス１２１とを含めることができるが、これらに限定されるものではない。システムバス１２１は、様々なバスアーキテクチャのいずれかを使用した、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む複数のタイプのいずれのバス構造であってもよい。そのようなアーキテクチャには、ＩＳＡバス、ＭＣＡバス、ＥＩＳＡバス、ＶＥＳＡローカルバス、および（メザニンバスとしても知られる）ＰＣＩバスが含まれるが、これらに限定されるものではない。
【００１５】
通常、コンピュータ１１０は、様々なコンピュータ読み取り可能な媒体を備える。コンピュータ読み取り可能な媒体は、コンピュータ１１０によってアクセスできる任意の入手可能な媒体とすることができ、コンピュータ読み取り可能な媒体には、揮発性媒体および不揮発性媒体、ならびに取り外し可能な媒体および取り外し不可能な媒体のいずれもが含まれる。コンピュータ読み取り可能な媒体には、コンピュータ記憶媒体および通信媒体を含めることができる。コンピュータ記憶媒体には、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または技術で実現された揮発性媒体および不揮発性媒体、ならびに取り外し可能な媒体および取り外し不可能な媒体のいずれもが含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくはその他のメモリ技術、ＣＤＲＯＭ、ＤＶＤ、もしくはその他の光ディスク記憶デバイス、磁気カセット、磁気テープ、磁気ディスク記憶デバイス、もしくはその他の磁気記憶デバイス、または所望の情報を記憶するために使用でき、かつコンピュータ１１０によってアクセスすることができる任意のその他の媒体が含まれるが、これらに限定されるものではない。通常、通信媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波やその他の搬送機構などの変調されたデータ信号として具現化したものであり、任意の情報配信媒体を含む。用語「変調されたデータ信号」は、信号内の情報を符号化するような方法で、その信号の１つまたは複数の特徴が設定または変更された信号を意味する。通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体と、音響、無線周波数（ＲＦ）、赤外線、およびその他の無線媒体などの無線媒体とが含まれるが、これらに限定されるものではない。このような媒体の任意の組合せもコンピュータ読み取り可能な媒体の範囲に含まれるべきである。
【００１６】
システムメモリ１３０は、ＲＯＭ１３１およびＲＡＭ１３２などの揮発性メモリおよび／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動中などにコンピュータ１１０内の要素間で情報を転送することに役立つ基本的なルーチンを含むＢＩＯＳ１３３は一般に、ＲＯＭ１３１に記憶される。通常、ＲＡＭ１３２には、処理ユニット１２０によって直ちにアクセスでき、かつ／または、処理ユニット１２０によって現在操作されているデータおよび／またはプログラムモジュールが含まれる。例えば、図１には、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７が示されているが、これらに限定されるものではない。ＲＡＭ１３２には、その他のデータおよび／またはプログラムモジュールが含まれてもよい。
【００１７】
コンピュータ１１０は、その他の取り外し可能な／取り外し不可能な揮発性／不揮発性コンピュータ記憶媒体を備えてもよい。例として、図１には、取り外し不可能な不揮発性磁気媒体に対して読み書きを行うハードディスクドライブ１４１と、取り外し可能な不揮発性磁気ディスク１５２に対して読み書きを行う磁気ディスクドライブ１５１と、ＣＤＲＯＭまたはその他の光媒体などの取り外し可能な不揮発性光ディスク１５６に対して読み書きを行う光ディスクドライブ１５５とが示されている。例示的な動作環境において使用することができるその他の取り外し可能な／取り外し不可能な揮発性／不揮発性コンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれるが、これらに限定されるものではない。ハードディスクドライブ１４１は一般に、インターフェース１４０などの取り外し不可能なメモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は一般に、インターフェース１５０などの取り外し可能なメモリインターフェースを介してシステムバス１２１に接続される。
【００１８】
図１に示して上述したドライブ群およびそれらドライブに関連するコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、およびその他のデータの記憶領域をコンピュータ１１０に提供する。例えば、図１において、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶するものとして示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであってもよいし、異なってもよいことに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７は、少なくともそれらが別のコピーであることを示すために、ここでは異なる番号が付されている。ユーザは、キーボード１６２や、一般的にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１６１などの入力デバイスを介して、コンピュータ１１０に命令および情報を入力することができる。その他の入力デバイス（図示せず）としては、マイクロホン、ジョイスティック、ゲームパッド、衛星通信用パラボラアンテナ、スキャナなどを挙げることができる。これらのおよびその他の入力デバイスは、システムバス１２１に接続されたユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されることが多いが、パラレルポート、ゲームポート、またはＵＳＢなどのその他のインターフェースおよびバス構造を介して接続されてもよい。
【００１９】
モニタ１９１またはその他のタイプのディスプレイデバイスも、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタ１９１に加えて、コンピュータは、出力周辺インターフェース１９５を介して接続することができる、スピーカ１９７およびプリンタ１９６などのその他の出力周辺デバイスを備えることもできる。
【００２０】
コンピュータ１１０は、リモートコンピュータ１８０などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境において動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の一般的なネットワークノードであってもよく、図１には、メモリ記憶デバイス１８１のみが示されているが、リモートコンピュータ１８０は通常、コンピュータ１１０に関して上述した要素の多くまたは全てを含む。図１に示された論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３が含まれるが、その他のネットワークが含まれてもよい。そのようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。
【００２１】
ＬＡＮネットワーキング環境において使用される場合、コンピュータ１１０は、ネットワークインターフェースまたはネットワークアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境において使用される場合、コンピュータ１１０は通常、インターネットなどのＷＡＮ１７３を介して通信を確立するためのモデム１７２、またはその他の手段を備える。モデム１７２は、内蔵型でも外付け型でもよく、ユーザ入力インターフェース１６０またはその他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク環境において、コンピュータ１１０に関連して示したプログラムモジュール、またはそのプログラムモジュールの一部は、リモートメモリ記憶デバイスに記憶することもできる。例えば、図１には、メモリデバイス１８１に存在するものとしてリモートアプリケーションプログラム１８５が示されているが、これに限定されるものではない。図示されたネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立するその他の手段も使用できることが理解されよう。
【００２２】
当業者であれば、コンピュータ１１０またはその他のクライアントデバイスが、コンピュータネットワークの一部として配置され得ることが理解できよう。この点で、本発明は、任意の数のメモリまたは記憶ユニットと、任意の数の記憶ユニットまたは記憶ボリュームにわたって生じる任意の数のアプリケーションおよびプロセスとを有する任意のコンピュータシステムに関連する。本発明の一実施形態は、ネットワーク環境内に配置された、リモート記憶デバイスまたはローカル記憶デバイスを有するサーバコンピュータおよびクライアントコンピュータを含む環境に適用することができる。本発明は、プログラミング言語の機能性、解釈能力、および実行能力を有するスタンドアロンのコンピューティングデバイスに適用することもできる。
【００２３】
（例示的な分散ネットワーク）  
図２は、複数のネットワークノード１０Ａ〜Ｈを含む例示的な分散ネットワークを示している。そのようなノードは、例えば、パーソナルコンピュータであってもよいし、例えば、サーバ、ルータ、ネットワークＰＣ、ピアデバイスなどの、処理能力およびデータ記憶能力を有する任意のその他のネットワークデバイスであってもよい。ノード１０Ａ〜Ｈは、例えば、イントラネットまたはインターネットなどの、ＬＡＮまたはＷＡＮを介して互いに相互接続されるピアデバイスであってもよい。
【００２４】
各ノード１０Ａ〜Ｈには一意なアドレスを割り当てることができる。アドレスの長さは、各ノードが確実に一意なアドレスを有するように選択することができる。一例では、ネットワークが数千万のノードを含むことが予想されるインターネットベースのシステムにおいては、１６０ビットのアドレスを使用することができる。そのようなアドレス指定方式は、伝送制御プロトコル（「ＴＣＰ」）上でルーティングオーバーレイ（routing overlay）を形成することができる。
【００２５】
複数のノード１０Ａ〜Ｈ間に分散されたプロセスは、シンプルオブジェクトアクセスプロトコル（「ＳＯＡＰ」）メッセージを用いて、ネットワークを介して互いに通信することができる。ＳＯＡＰは、周知のライトウェイトなＸＭＬベースの分散コンピューティングプロトコルである。ＳＯＡＰメッセージは、ＳＯＡＰエンベロープ（envelope）を含むＸＭＬドキュメントである。エンベロープは、オプションであるＳＯＡＰヘッダと、必須のＳＯＡＰボディとを含む。ＳＯＡＰメッセージのヘッダは、メッセージのメタデータを表し、ＳＯＡＰを拡張する方法を提供する。ＳＯＡＰメッセージのボディは、実際のメッセージペイロードである。分散されたプロセスは、ネットワークを介してＳＯＡＰパケットを送信することによって、互いに通信することができる。
【００２６】
プロセスは、（例えば、図示されているようにノード１０Ａ上の）メッセージの送信元、（例えば、図示されているようにノード１０Ｇ上の）意図されるメッセージの受信側、または（例えば、図示されているようにノード１０Ｃ上の）中間点である可能性がある。メッセージの送信元は、ＳＯＡＰメッセージをネットワーク上に最初に送信するプロセスである。意図されるメッセージの受信側は、最終的にそのメッセージが到達することになるプロセスである。したがって、メッセージの送信元から発生するＳＯＡＰメッセージには、意図されるメッセージの受信側に関連付けられたアドレスを含めることができる。
【００２７】
（分散時間管理）  
図３は、時間サービスを利用することができる分散環境における分散クロックサービスを示している。そのような分散クロックサービスの態様（aspect）は、複数の分散サービスが均一に影響され得るように、複数のネットワークノードのうちのいずれかまたは全ての上のサービスコード内に統合することができる。図示されるように、各ノードは、コアサービスとして、ベースタイムキーパサービスを有することができる。ベースタイムキーパは、ネットワークタイムプロトコル（ＮＴＰ）を使用して、ノードにおける実時間を管理するサービスとすることができる。ベースタイムキーパは、タイムゾーンに依存しなくてよい「実時間」（例えば、世界標準時（ＵＴＣ））を追跡することができる。
【００２８】
ノードが孤立している場合、時間の概念は、ローカルマシンのシステムクロックとすることができる。ノードがアクティブなリングの一部である場合、どのサーバが最も高いタイミング精度を有するかに基づくサーバ選択プロセスを使用して、ベースタイムキーパのマスタを選択することができる。ＮＴＰを使用して、ノードを同期させる。その場合、ＮＴＰアルゴリズムを使用して、同一のリング上の全てのベースタイムキーパを同期させることができる。
【００２９】
例示的な一実施形態において、ベースタイムキーパは、最初は孤立していてよく、ローカルマシンのＵＴＣを用いて自身で動作する（self-run）ことができる。孤立状態にある間、ベースタイムキーパは、周期的にその他のノードの探索を試みることができる。その他のノードが発見されると、ベースタイムキーパは、その他のノードとのサーバ選択プロセスに関与して、どのノードのベースタイムキーパが最良の時間マスタであるかを決定することができる。このノードが成熟した（mature）リング（例えば、３つ以上のノードが参加して、動作しているリング）に参加しようとしている場合、ベースタイムキーパは既に存在している可能性がある。この場合、サーバ選択プロセスは依然として実行されてよいが、より多くのノードがリングに参加するにつれて、現在のマスタが、マスタの座を取って代わられる可能性は低くなる。
【００３０】
あらゆるノードは、当該ノード上で特定の「時間領域」を追跡する少なくとも１つのタイムキーパサービスを有することができる。時間領域は、実時間に関連する時間の表現である。時間領域は、実時間より速くてもよいし、実時間より遅くてもよいし、実時間と同じであってもよい。時間領域は、一時停止させることもできるし、調整することもできる。時間領域は、一意的な概念の時間経過が望まれるときにはいつでも使用することができる。例えば、時間領域は、特定のリソースの使用を管理するために生成することができる。単一の時間領域が、複数のノードに関与してもよい。また、単一のノードが、複数の時間領域に関与してもよい。したがって、ノードは、２つ以上のタイムキーパを有する場合もある。正確なローカルタイミングのために、ノードが関与しているあらゆる時間領域に対して、ノード内でそれぞれのタイムキーパを生成することができる。タイムキーパサービスは、デバッグまたはその他の目的のためにタイミング調整を許可することによって、ベースタイムキーパの特徴を拡張させることができる。タイムキーパの状態には、タイムキーパと、（ローカルなベースタイムキーパによって表される）実時間との間の線形関係を規定する値を含めることができる。
【００３１】
「シーケンサ」は、所与の時間領域に関するノード内のタイミングイベントをスケジューリングするサービスである。ノード内の複数のエンティティが、同じ時間領域と、周期的な希望の通知とを使用している場合、シーケンサは、１つまたは複数の適切なタイムキーパと対話することによって、この機能を提供することができる。様々な時間領域が、様々なシーケンサを必要とする可能性がある。シーケンサは、タイムキーパと共に構成することができ、周期的なアラートおよび非周期的なアラートのための共通サービスとして動作することができる。その他のサービスは、タイムアウトおよびその他のタイミング信号を管理するために、シーケンサと共に構成することができる。シーケンササービスは、現在の時間を知るために、関連するタイムキーパ（すなわち、所望の時間領域を表すタイムキーパ）に問い合わせを行うことができる。失効アラートを生成するために、シーケンサは、関連するタイムキーパにサブスクライブする（subscribe）ことができる。このようにして、シーケンサがタイミングイベントを管理することができるのに対し、時間経過は、基礎となるタイムキーパによって制御される。
【００３２】
タイムマネージャは、複数のノードにまたがる時間領域を管理する役割を担うことができるサービスである。タイムマネージャは、所与の時間領域にサブスクライブする１つ以上のタイムキーパのグループを保持することができる。リング上の全てのタイムキーパが同じグループ内にあってもよい。しかし、ある場合には、別個の時間領域を管理することが望ましいことがある。したがって、時間は、マシンをまたがって速度を下げさせるか、停止させるか、または反転させる（reverse）ことさえもできる。時間領域ごとに１つの時間マネージャのみが必要とされる場合もある。
【００３３】
図３に示された例では、（「Ａ」および「Ｂ」で表された）２つのノードが１つの時間領域に関与しており、ノードＢのタイムキーパがマスタであり、ノードＡのタイムキーパがスレーブである。（「Ｃ」で表された）第３のノードは別個の時間領域を保持する。図３には明示されていないが、単一のノードが、必要に応じて、複数のタイムキーパおよびシーケンサをインスタンス化する（instantiate）ことができることを理解されたい。
【００３４】
メッセージの再生をサポートするために、全てのメッセージにはタイムスタンプを付けることができる。タイムスタンプは、ベースタイムキーパから生成することができる。というのは、このことが、メッセージの順序付けにおける真の表示とすることができるからである。したがって、マシンをまたがるタイムスタンプを合理化することができるように、１つの分散マスタクロックに複数のＣＰＵを従属させることができる。そうでなければ、マシン間のクロックのずれによって、時間追跡の比較が役に立たなくなってしまうおそれがある。
【００３５】
図４Ａおよび図４Ｂは、シーケンサの動作を示している。図４Ａに示されるように、１つまたは複数のサービス（例えば、ＳＶＣ  Ｃ、ＳＶＣ  Ｄ、およびＳＶＣ  Ｅ）は、同じシーケンサを利用することができる。図示されるように、ＳＶＣ  Ｃは、１つおきのクロックチック（Δｔ）ごとに１回メッセージを送信する。ＳＶＣ  Ｄは、４クロックチックごとに１回メッセージを送信する。ＳＶＣ  Ｅは、図示された７クロックチックの間に１回メッセージを送信する。シーケンサは、複数のサービスからのメッセージを１つのシーケンスにして、それらメッセージを適切な時間にネットワーク上に振り分ける（dispatch）。
【００３６】
図４Ａに示されるように、全てのサービスは、同じ時間領域内で動作することができる。しかし、図４Ｂに示されるように、ＳＶＣ  Ｃに対する時間領域は変更されている（例えば、半分の速度に減速されている）。例えば、ＳＶＣ  Ｃは、２クロックチックごとにメッセージを送信するのではなく、４クロックチックごとにメッセージを送信するように減速されている。シーケンサは、ＳＶＣ  Ｃが半分の速度でメッセージを送出することになっていることを知り、その結果、ＳＶＣ  Ｃからのメッセージを半分の頻度でシーケンスに入れる。このように、シーケンサは、同じ時間領域内で実行されている任意の数のサービスに対して順序付けを行うことができる。
【００３７】
（周期的な分散された時間によるリソース管理）  
図５は、周期的な分散された時間によって、分散ネットワークにおけるデバイスリソースを管理するための例示的なシステム２００の機能上のフロー図であり、図６は、周期的な分散された時間によって、分散ネットワークにおけるデバイスリソースを管理するための例示的な方法３００のフローチャートである。
【００３８】
ステップ３０２において、ローカルデバイス２０２が、当該デバイスによって利用される、管理されたリソースに影響を及ぼす状態変化を検出する。そのようなローカルデバイスの例には、無線電話、携帯情報端末（「ＰＤＡ」）、ラップトップコンピュータ、デスクトップパーソナルコンピュータ（「ＰＣ」）などが含まれる。そのような状態変化の例には、無線電話またはＰＤＡがクレードルから外されたこと、ラップトップコンピュータの電源コードが抜かれたことなどが含まれる。そのようなリソースの例には、例えば、バッテリ寿命、ネットワーク帯域幅、ＣＰＵの利用などが含まれる。
【００３９】
ステップ３０４において、ローカルデバイス２０２上のサービスは、意思決定部（decision-maker）２０４に状態変化を通知することができる。ローカルデバイス上のサービスは、任意のメッセージフォーマットを使用して意思決定部に通知することができるが、例示的な一実施形態では、ウェブサービスアプリケーションプロトコル（ＷＳＡＰ）ＮＯＴＩＦＹ動作が実行される。ＷＳＡＰは、米国特許出願第１０／８５６３９９号明細書に開示され、特許請求されている。この開示は、参照することにより、本明細書に組み込まれるものである。このＷＳＡＰは、どのように状態変化が観測され、伝播されるかに関するいくつかの基本的な動詞（verb）を定義する。例えば、ＷＳＡＰは、ＮＯＴＩＦＹ動作に基づく単純なイベント通知モデルを定義する。ＮＯＴＩＦＹ動作を使用して、状態変化が発生したことを報告することができる。したがって、ローカルデバイスは、ネットワーク内に分散されたその他のサービスがそのローカルデバイスの状態を認識することができるように、そのローカルデバイスの状態を公開することができる。ＮＯＴＩＦＹ動作は、米国特許出願第１０／８５６３９９号明細書において、より詳細に説明されている。
【００４０】
意思決定部は、バッテリ寿命、ネットワーク帯域幅、ＣＰＵなどの、１つまたは複数の管理されたリソースに関連付けることができる。好ましくは、意思決定部は、ただ１つの管理されたリソースにのみ関連付けられ、したがって、リソースごとに異なる意思決定部が存在することができる。したがって、ローカルデバイスは、任意の数の意思決定部と通信することができる。ローカルデバイスにおいて状態変化が発生したとき、ローカルデバイス２０２は、１つまたは複数の意思決定部の全てに対して、状態変化を通知することができる。意思決定部２０４は、ローカルデバイス２０２上に存在してもよいし、その他のネットワークノード上に存在してもよい。意思決定部２０４は、ネットワーク上の任意の数のデバイスにサービスを提供することができる。
【００４１】
デバイス上のサービスは、意思決定部が通知されることを要求せずに、意思決定部に通知を行うことができるし、意思決定部２０４は、特定のイベントに対して「サブスクライブする」ことができる。すなわち、意思決定部２０４は、その特定のイベントが発生するときにそれを通知するようローカルデバイスに伝えることができる。
【００４２】
ＷＳＡＰは、サブスクライバ（subscriber）がイベントソースに要求を発行するＳＵＢＳＣＲＩＢＥ動作を提供する。その要求には、サブスクライバが状態変化を観測することを望んでいる対象となるイベント通知元（event notification source）の一部を識別する問い合わせ（query）が含まれる。ＳＵＢＳＣＲＩＢＥ動作が受理された場合、イベント通知元は、当該イベント通知元の現在の状態を示すＮＯＴＩＦＹ動作を開始する。この初期ＮＯＴＩＦＹ動作の後、イベント通知元は、イベント通知元の状態が適切に変化するたびに、新たなＮＯＴＩＦＹ動作を発行する。したがって、ＳＵＢＳＣＲＩＢＥ動作を用いて、サービスの状態変化をサブスクライブすることができる。サブスクリプション（subscription）は、失効時間によって制限することができるか、またはＵＮＳＵＢＳＣＲＩＢＥ動作を用いて任意の時間に終了させることができ、アンサブスクライバ（unsubscriber）は、イベントソースにＵＮＳＵＢＳＣＲＩＢＥ動作を送信して、それ以降の通知を取り消す。ＳＵＢＳＣＲＩＢＥ動作およびＵＮＳＵＢＳＣＲＩＢＥ動作は、米国特許出願第１０／８５６３９９号明細書において、より詳細に説明されている。
【００４３】
ステップ３０６において、意思決定部２０４は、状態変化通知を受信し、状態変化と、管理されているリソースとに基づいて、もし行うべきことがあるならば、何を行うべきかを決定する。意思決定部２０４は、デバイスの現在の状態と、当該デバイスによって利用されるリソースに関連付けられたリソース管理ポリシとに基づいて、リソースの利用に影響を及ぼすサービスを識別することができる。
【００４４】
例えば、意思決定部がバッテリ寿命を管理することに関連付けられている場合、意思決定部は、（例えば、ローカルデバイスによって、またはローカルデバイスに対してメッセージが送信されるレートを制御することによって、）ローカルデバイスによって利用されている電力を最も有効に制御する方法を決定することができる。管理されているリソースがネットワーク帯域幅である場合、意思決定部は、（例えば、パケットが送信されるレートを制御することによって、）パケット帯域幅を最も有効に制御する方法を決定することができる。管理されているリソースがＣＰＵである場合、意思決定部は、電力消費および処理要求を最も有効に制御する方法（例えば、ワークアイテムのスケジューリングなど）を決定することができる。
【００４５】
意思決定部２０４が、状態変化と管理されているリソースとに基づいて、もし行うべきことがあるならば、何を行うべきかを決定した後で、意思決定部２０４は、ステップ３０８において、意思決定部２０４が変更したいと望むものをコーディネータ２０６に通知することができる。例えば、デバイスＢが、ちょうど今クレードルから外された無線デバイスであると仮定する。デバイスＢ上のサービスは、バッテリ寿命を制御するための意思決定部に、そのデバイスの状態が変更されたことを通知することができる。次いで、意思決定部は、バッテリ寿命の制御に関する予め定められたリソース管理ポリシに基づいて、デバイスが、そのデバイスのワークアイテムを発行するために、約１０％というわずかな処理レートまでレートが下げられるべきであること（すなわち、どれぐらいの頻度でデバイスが何かを行うためにウェイクアップ（wake up）し、再びスリープ状態に戻るのか）を決定することができる。したがって、デバイスが電源に接続されたとき、時間を実時間までスケーリングすることができ、時間を１００％で実行することができる。しかし、デバイスがバッテリ電力で動作している場合、時間をより低い割合までダウンスケーリングすることができる。したがって、デバイスがより低速で何らかのことを行っているので、リソースの寿命（例えば、バッテリ寿命）を延長させることができる。
【００４６】
意思決定部２０４は、ローカルデバイスの状態と、管理されたリソースに関連付けられたリソース管理ポリシとに基づいてリソースを適切に管理するために、意思決定部２０４が決定したどのようなアクションが取られるべきかを指示するメッセージをコーディネータ２０６に送信することによって、コーディネータ２０６に通知を行うことができる。例えば、意思決定部２０４は、ローカルデバイスが低電力モードであることと、リモートデバイスが、そのリモートデバイスがローカルデバイスに送信するメッセージの数または種類を少なくすべきであることとを指示するメッセージを、コーディネータ２０６に送信することができる。
【００４７】
ステップ３１０において、コーディネータ２０６はアクションが取られるようにする。コーディネータ２０６は、意思決定部２０４によってなされた決定によって引き起こされる全ての変化をもたらすために、１つまたは複数のデバイスに、１つまたは複数のメッセージを送信することができる。そのようなメッセージには、ローカルデバイスに関連する、ＵＲＩなどの識別子を含めることができる。コーディネータからそのようなメッセージを受信する１つまたは複数のデバイスには、ローカルデバイス、およびネットワーク上の１つまたは複数の任意のその他のデバイスを含めることができる。そのようなメッセージには、コーディネータの指示に従うために、デバイスが行う必要がある（または、行う必要がない）ことが何であるかを、指示されているデバイスに理解させることを可能にする情報も含めることができる。例えば、メッセージには、ローカルデバイスが低電力モードであることと、したがってリモートデバイスはメッセージがローカルデバイスに送信されるレートを（例えば、そのようなメッセージトラヒックに関する、リモートデバイスにおける時間を遅くすることによって）下げるべきであることとを、指示されているデバイスに理解させることを可能にするレート情報を含めることができる。
【００４８】
メッセージは、コーディネータから、関連付けられた時間領域を管理するタイムマネージャに送信することができる。次いで、タイムマネージャは、サブスクライブされたタイムキーパにレートの変更を通知することになる。次に、このタイムキーパは、影響が及ぼされるサービスがメッセージトラヒックを生成するレートを高くするか、または低くするために、より高い頻度で、またはより低い頻度で、影響が及ぼされるサービスに関連付けられたシーケンサをウェイクアップさせることになる。
【００４９】
コーディネータ２０６は、ネットワーク上の任意の場所における「トラヒックジャム」を回避するために、「上流の」トラヒックを調整するよう試みることもできる。すなわち、コーディネータ２０６は、上流のデバイス（メッセージを送信するデバイス）にメッセージを送信して、下流のデバイス（メッセージを受信するデバイス）が低速で実行されていることを上流のデバイスに通知することができる。メッセージには、上流のデバイスが、メッセージが下流のデバイスに送信されるレートを（この場合もまた、例えば、そのようなメッセージトラヒックに関する、上流のデバイスにおける時間を遅くすることによって）下げるべきであることを、上流のデバイスに理解させることを可能にする、レート情報などの情報を含めることもできる。
【００５０】
コーディネータは、バッテリ寿命、ネットワーク帯域幅、ＣＰＵなどの管理されたリソースに関連付けることができる。好ましくは、コーディネータはただ１つの管理されたリソースにのみ関連付けられ、したがってリソースごとに異なるコーディネータが存在することができる。したがって、意思決定部はただ１つのコーディネータとのみ通信している可能性があり、１つのコーディネータはただ１つの意思決定部のみと通信している可能性がある。しかし、コーディネータは２つ以上の管理されたリソースと関連付けられてもよいこと、意思決定部は２つ以上の管理されたリソースと関連付けられてもよいこと、および、したがって任意の数の意思決定部が任意の数のコーディネータと通信していてよいことを理解されたい。
【００５１】
コーディネータは、ローカルデバイス上、または任意のその他のネットワークノード上に存在することができる。したがって、ローカルデバイスは、自身がコーディネータとなることもできるし、コーディネータとなるべき別のデバイスに役割を委任することもできる。そのような委任は、複数のリモートデバイスを調整するために必要とされる全てのメッセージではなく、ただ１つのメッセージ（すなわち、委託メッセージ）のみをロ―カルデバイスが送信することを可能にするので、そのような委託は低電力モードにおいて特に望ましいといえる。
【００５２】
コーディネータに関連付けられたリソースを使用している、またはコーディネータに関連付けられたリソースが使用されるようにされている任意のデバイスは、当該コ―ディネータを識別することができる。コーディネータは、各デバイス上で何らかのことがあるレートで発生しているべきであることを知らせるために、そのレートについてそのデバイスに通知する。したがって、各デバイスは、時間領域の一貫性のある状態を把握することができる。
【００５３】
管理されたリソースごとに１つの時間領域が存在することが好ましい。例えば、データ記憶デバイスに関するバッテリ使用を管理するために１つの時間領域が存在してもよいし、帯域幅に関するバッテリ使用、音声に関するバッテリ使用、ネットワークに関するデータストアの使用などを管理するためにその他の時間領域が存在してもよい。複数の時間領域は、システムが様々な相対時間を保持することを可能にする。例えば、ローカルデバイスは、ＶｏＩＰを使用している可能性がある。そのようなデバイスは、そのデバイスが低帯域幅環境において動作している場合には、データよりも音声に対してより高い優先度を与えることを望むことができる。デバイスがある特定の時間に電話をかけるために使用されていない場合、デバイスはデータのために利用可能な帯域幅を増やしたいと望むことができる。ローカルデバイスが何をしたいと望むのかについての決定は、場所、現在の電力状態などによって変わり得る。そのような決定は、周期的に、または不定期に変わり得る。例えば、１ミリ秒ごとにデバイスが自身の状態を再評価し、その状態を意思決定部に通知することができる。各時間領域は、ノードごとに少なくとも１つのタイムマネージャと１つのタイムキーパとを必要とする可能性がある。
【００５４】
さらに、サービスを、所与の期間、「リース」として許可することができる「リースホルダ（leaseholder）」サービスを提供することができる。一旦リースが失効したときにサービスが自身のリースを更新しない場合、そのサービスは、活動停止状態にあるとみなされ、その他のノードの利用可能なリモートサービスのリストから、「ガベージ収集する」ことができる。
【００５５】
本発明の一側面にしたがうと、様々な時間領域が使用されているので、リースが早期に失効することがないことを確実にするとともに、デバイスリソースを管理することができる。特定のデバイス上の特定のリースされたサービスに関しては、時間を比較的遅く実行することができるので、リースサービスは、（リースされたサービスが実行されている時間領域と比較して速い時間領域において実行されているリモートサービスによって決定されるように、）そのリースが失効する前に、そのサービスのリースを更新しない可能性がある。しかし、同じ時間領域において実行されているリースの全ての態様に対して、更新レートは、時間領域が変わるときでさえ適切にスケーリングすることができる。
【００５６】
本発明の一側面にしたがうと、例えば、バッテリ駆動型のデバイスとすることができる第１のデバイスは、計算または記憶を別のデバイスに譲りたいと望む可能性がある。例示的な一実施形態において、サービスは再配置可能とすることができる。したがって、上記の譲ることは、いくつのサービスが移動されるべきか、および、どこにそれらサービスが配置されるべきかを決定する単純なプロセスとすることができる。全ての名前はグローバルにアドレスの付与が可能であり、全てのサービスの状態は観測可能であるので、再配置を可能にすることができる。これは、任意のサービスが停止され、そのサービスの状態が保存され、そのサービスが新たな場所に作成され、（保存されたバージョンで）置き換えられることを意味する。次いで、相手側サービスに、新たな名前を通知することができる。その名前は、変更されていてもよいし、変更されていなくてもよい。
【００５７】
（周期的な分散された時間によるリソース管理を使用するための例示的なシステム）  
分散ストレージネットワークのメンバである無線電話の例を検討する。分散ストレージネットワークは、「Systems And Methods For Providing Distributed, Decentralized Data Storage And Retrieval」という名称で２００５年４月２０日に出願された、同時継続の米国特許出願第１１／１１０１２８号明細書において、開示および特許請求されている。この開示は、参照することによって、本明細書に組み込まれるものである。無線電話が比較的広帯域幅の環境において（例えば、その無線電話のクレードルにおいて）動作している場合、その無線電話は、ネットワーク内の分散ストレージのために、全てのデータを一度にアップロードしたいと望む可能性がある。しかし、その無線電話が、無線（、したがって低帯域幅の）環境において動作している場合、その無線電話は、後で充電器に再び戻ったときに行うことができる、データの同期のためではなく通話のためにバッテリが利用可能であるように、データをアップロードすることよりもバッテリ寿命を節約することを選択することができる。
【００５８】
そのような例において、その無線電話は、当該ローカルデバイスがデータストレージアプリケーションのために２５％で、ブロードバンド接続帯域幅のために７０％で、および音声のために１００％で動作したいことを、バッテリ使用を管理しているコーディネータに通知することを望むことができる。その場合、コーディネータは、その無線電話と直接的に、または間接的に何らかの協調関係を有する全てのデバイスにこの情報を発信することができる。したがって、コーディネータは、データの同期が実行されるレートを下げることができる。言うまでもなく、リソースは、ローカルデバイスに関連する任意のアルゴリズムに従って、優先順位を付けることができることを理解されたい。
【００５９】
別の例では、ユーザがラップトップコンピュータを使用している可能性がある。たとえラップトップが壁に付けられたコンセントに接続されているとしても、ユーザは、システムリソースを優先順位付けすることを望むことができる。例えば、ユーザが作業している間に、ユーザは、コンピュータに、ユーザが使用しているツール（例えば、ワードプロセッサ）へ追加的な処理能力を投入させたいと望む可能性がある。例えば、ユーザから直接的に関与していないバックグラウンドのプロセスは、ユーザが作業している間、より少ない処理リソースの割り当てを受ける可能性がある。ユーザが休憩を取った場合（システムが、ＨＭＩがある期間の間アイドル状態であったことを検出した場合）、コンピュータは、ユーザが戻ったことを検出するまで、バックグラウンドのタスクを実行することに追加的なリソースを割り当てることができる。したがって、本発明の原理は、単一のデバイスに適用することができ、ネットワークをまたいで適用される必要がない場合もある。そのような用途においては、意思決定部およびコーディネータは、ローカルデバイス上に存在している。
【００６０】
以上、周期的な分散された時間による分散された電力管理のためのシステムおよび方法を説明した。様々な図に示されたいくつかの好ましい実施形態に関連して本発明を説明したが、その他の同様の実施形態を使用することもでき、本発明の範囲から逸脱することなく、本発明を実施するために、説明した実施形態に変更または追加がなされ得ることを理解されたい。したがって、本発明は、任意の１つの実施形態に限定されるべきではなく、むしろ特許請求の範囲にしたがう範囲内で解釈されるべきである。
【図面の簡単な説明】
【００６１】
【図１】本発明の諸側面を実施することができる例示的なコンピューティング環境を示すブロック図である。
【図２】例示的な分散ネットワークを示す図である。
【図３】分散ネットワーク環境において使用することができる時間サービスを示す図である。
【図４Ａ】シーケンサによって管理されるタイミングイベントを示す図である。
【図４Ｂ】シーケンサによって管理されるタイミングイベントを示す図である。
【図５】分散ネットワークにおけるデバイスリソースを管理するための例示的なシステムにおける機能上のフロー図である。
【図６】分散ネットワークにおけるデバイスリソースを管理するための例示的な方法を示すフローチャートである。
【図１】
2008546274.tif 000003
【図２】
2008546274.tif 000004
【図３】
2008546274.tif 000005
【図４Ａ】
2008546274.tif 000006
【図４Ｂ】
2008546274.tif 000007
【図５】
2008546274.tif 000008
【図６】
2008546274.tif 000009