(57)【特許請求の範囲】
【請求項１】
サスペンドされているプロセスを再開すべきかどうかを、ウェイクポリシーに基づいて判断する方法であって、
論理コンテナ階層内のサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられるウェイクポリシーを保持するステップであって、前記ウェイクポリシーは、該ウェイクポリシーに関連付けられたウェイク通知であって、前記サスペンドされているプロセスについて現在係属しているウェイク通知の数を示すカウンタを備える、ステップと、
前記ウェイクポリシーに関連付けられたウェイク通知を受信したことに基づいて、前記カウンタをインクリメントするステップと、
前記ウェイク通知が現在係属していないとの通知を受信したことに基づいて、前記カウンタをデクリメントするステップと、
前記カウンタの値が、ゼロ以外の閾値を超える判断すると、
前記サスペンドされているプロセスを実行状態におくステップと、
前記論理コンテナ階層をトラバースして、前記サスペンドされているプロセスに関連付けられる１つ又は複数の追加のサスペンドされているプロセスを、該１つ又は複数の追加のサスペンドされているプロセスが、前記サスペンドされているプロセスの前記論理コンテナに関連付けられた論理コンテナに割り当てられていると判断することに基づいて識別するステップと、
前記１つ又は複数の追加のサスペンドされているプロセスを前記実行状態におくステップと、
前記カウンタの値が前記閾値未満であると判断すると、前記サスペンドされているプロセスをサスペンド状態のままにするステップと
を含む、方法。
【請求項２】
前記ウェイクポリシーは、
要求側アプリケーションから前記サスペンドされているプロセスへのプロセス間通信呼と、
サスペンドされているアプリケーションのバックグラウンド状態からフォアグラウンド状態への遷移と、
前記サスペンドされているアプリケーションに関連付けられたユーザ入力と、
前記サスペンドされているプロセスへのアクセスを要求する構成要素と
のうちの少なくとも１つに対応する、請求項１に記載の方法。
【請求項３】
前記サスペンドされているプロセスが前記実行状態にあると判断すると、前記カウンタを値０から値１へと遷移させるウェイク通知をフィルタリングするステップと、
前記サスペンドされているプロセスが前記サスペンド状態にあると判断すると、前記カウンタを値１から値０へと遷移させるウェイク通知をフィルタリングするステップと、
のうちの少なくとも一方を含む、請求項１に記載の方法。
【請求項４】
前記値を、１つ又は複数のウェイクポリシーに関連付けられた１つ又は複数の重みに基づいて調整するステップを含む、請求項１に記載の方法。
【請求項５】
前記ウェイクポリシーは、アプリケーションに対応する、請求項１に記載の方法。
【請求項６】
前記ウェイクポリシーは、テキストエディタアプリケーションに対応する、請求項１に記載の方法。
【請求項７】
前記ウェイクポリシーは、前記サスペンドされているプロセスを前記実行状態におくべき理由を示す、請求項１に記載の方法。
【請求項８】
前記サスペンドされているプロセスを前記実行状態におくべきと判断すると、前記サスペンドされているプロセスに関連付けられたメモリ内容を記憶装置からリストアするステップを含む、請求項１に記載の方法。
【請求項９】
サスペンドされているプロセスを再開すべきかどうかをウェイクポリシーに基づいて判断する方法を、コンピューティングデバイスに実行させるコンピュータプログラムであって、前記方法は、
論理コンテナ階層内のサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられるウェイクポリシーを保持するステップであって、前記ウェイクポリシーは、該ウェイクポリシーに関連付けられたウェイク通知であって、前記サスペンドされているプロセスについて現在係属しているウェイク通知の数を示すカウンタを備える、ステップと、
前記ウェイクポリシーに関連付けられたウェイク通知を受信したことに基づいて、前記カウンタをインクリメントするステップと、
前記ウェイク通知が現在係属していないとの通知を受信したことに基づいて、前記カウンタをデクリメントするステップと、
前記カウンタの値が、ゼロ以外の閾値を超える判断すると、
前記サスペンドされているプロセスを実行状態におくステップと、
前記論理コンテナ階層をトラバースして、前記サスペンドされているプロセスに関連付けられる１つ又は複数の追加のサスペンドされているプロセスを、該１つ又は複数の追加のサスペンドされているプロセスが、前記サスペンドされているプロセスの前記論理コンテナに関連付けられた論理コンテナに割り当てられていると判断することに基づいて識別するステップと、
前記１つ又は複数の追加のサスペンドされているプロセスを前記実行状態におくステップと、
前記カウンタの値が前記閾値未満であると判断すると、前記サスペンドされているプロセスをサスペンド状態のままにするステップと
を含む、コンピュータプログラム。
【請求項１０】
サスペンドされているプロセスを再開すべきかどうかを、ウェイクポリシーに基づいて判断するシステムであって、
プロセッサと、
メモリと
を備え、前記メモリは、
論理コンテナ階層内のサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられるウェイクポリシーを保持することであって、前記ウェイクポリシーは、該ウェイクポリシーに関連付けられたウェイク通知であって、前記サスペンドされているプロセスについて現在係属しているウェイク通知の数を示すカウンタを備え、
前記ウェイクポリシーに関連付けられたウェイク通知を受信したことに基づいて、前記カウンタをインクリメントし、
前記ウェイク通知が現在係属していないとの通知を受信したことに基づいて、前記カウンタをデクリメントし、
前記カウンタの値が、ゼロ以外の閾値を超える判断すると、
前記サスペンドされているプロセスを実行状態におき、
前記論理コンテナ階層をトラバースして、前記サスペンドされているプロセスに関連付けられる１つ又は複数の追加のサスペンドされているプロセスを、該１つ又は複数の追加のサスペンドされているプロセスが、前記サスペンドされているプロセスの前記論理コンテナに関連付けられた論理コンテナに割り当てられていると判断することに基づいて識別し、
前記１つ又は複数の追加のサスペンドされているプロセスを前記実行状態におき、
前記カウンタの値が前記閾値未満であると判断すると、前記サスペンドされているプロセスをサスペンド状態のままにする
ように構成されたウェイク構成要素を備える、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サスペンド状態及び実行状態においてプロセスを管理することに関する。
【背景技術】
【０００２】
電力消費を節約し、デバイス及びアプリケーションの始動待ち時間を改善し、全体的な応答性を改善したデスクトップ、ラップトップ、スマートフォン及びタブレットのような多くのコンピューティングデバイスが開発されている。例えばデバイスが１０分など、ある時間の間使用されないとき、デバイスは、アプリケーションの動作を大幅に減らすスリープ状態に置かれることがあり、その結果として電力消費の改善をもたらすことがある。その後、ユーザがデバイスを使用しようとするとき、デバイスは、ユーザにデバイスの全機能を利用可能にするためにこのスリープ状態から立ち上がる。
【発明の概要】
【０００３】
本概要の記載は、詳細な説明において下記にさらに説明される選択された概念を、簡略化した形で紹介するために設けられている。本概要は、特許請求に係る主題の重要な要因又は基本的な特徴を特定するように意図されておらず、特許請求に係る主題の範囲を限定するようにも意図されていない。
【０００４】
本明細書では、特に、アプリケーションに関連付けられた１つ又は複数のプロセスをサスペンドし、サスペンドされたプロセスを再開すべきか否かを１つ又は複数のウェイクポリシーに基づいて判断し、及び／又はアプリケーションのアプリケーション状態を管理する、１つ又は複数のシステム及び／又は技法を開示する。
【０００５】
コンピューティング環境は、プロセスに関連付けられたアプリケーションをホストすることができ、プロセスを１つ又は複数のプロセッサによってスレッドとして実行することできる。本明細書で説明される１つ又は複数のシステム及び／又は方法は、アプリケーション、プロセス、及び／又はスレッドに適用可能であることが認識される（例えばプロセスは、１つ又は複数のプロセッサ上でコードを実行するスレッドからなるため、本明細書に記載される技法及び／又はシステムはスレッドに等しく適用される）。コンピューティング環境は、複数のアプリケーション及び／又はプロセスをホストすることができるため、そのようなアプリケーション及び／又はプロセスを管理するよう論理コンテナ階層を実装してもよい。特に、アプリケーションを、論理コンテナ階層内のルート論理コンテナのような論理コンテナに割り当てることができる。同様に、プロセスを論理コンテナに割り当てることができる。論理コンテナ階層は、関連するアプリケーション、プロセス、及び／又は論理コンテナの階層のネスト化も可能にし得る。例えばテキストエディタアプリケーション（例えば親アプリケーション／プロセス）をルート論理コンテナに割り当てることができる。テキストエディタアプリケーションは、テキストエディタ印刷プロセス、テキストエディタ保存プロセス、及び／又はスペルチェッカプロセスのような１つ又は複数の子プロセスに関連付けられることがある。したがって、テキストエディタ印刷プロセス、テキストエディタ保存プロセス、及び／又はスペルチェッカプロセスは、例えばテキストエディタアプリケーションに割り当てられたルート論理コンテナに関連付けられる（例えばその中にネストされる）論理コンテナに割り当てることができる。このようなテキストエディタアプリケーション及び／又は子プロセスの間の関連付け（例えば関係）は識別可能であり得る。
【０００６】
本明細書において提供されるようなアプリケーションに関連付けられる１つ又は複数のプロセスをサスペンドする一例において、アプリケーションが非アクティブであるとの通知を受信することがある（例えばアプリケーションがユーザに可視ではないことがあり、ユーザが所定の時間内にアプリケーションと対話することができないことがあり、アプリケーションがバックグラウンド状態にあることがある等）。アプリケーションに関連付けられる１つ又は複数のプロセスを識別することができる。一例において、論理コンテナ階層を参照して１つ又は複数のプロセスを識別することができる。例えば、アプリケーションに割り当てられたルート論理コンテナを識別することができる。ルート論理コンテナに関連付けられた（例えばその中にネストされた）第１の論理コンテナに割り当てられた第１のプロセスを識別することができる。ルート論理コンテナに関連付けられた（例えばその中にネストされた）第１の論理コンテナに割り当てられた第２のプロセスを識別することができる。第１の論理コンテナに関連付けられた（例えばその中にネストされた）第２の論理コンテナに割り当てられた第３のプロセスを識別することができる。このようにして、第１のプロセス、第２のプロセス及び第３のプロセスを、アプリケーションに関連付けられているものとして識別することができる。様々なプロセス及び／又はアプリケーションがアプリケーションに関連付けられているものとして識別することができることが認識される。アプリケーションに関連付けられた１つ又は複数のプロセスを、サスペンド状態におき、該サスペンドされたプロセスを、プロセッサ実行スケジューリングの対象外にすることによって、電力消費を節約することができる。サスペンドされると、サスペンドされたアプリケーションに関連付けられる、新たに作成されたスレッド及び／又はプロセス（例えばルート論理コンテナ内にネストされている論理コンテナに割り当てられる新たに作成されたプロセス）がサスペンドされ、サスペンドの一貫性を、サスペンドされたアプリケーションに関連付けられるプロセスにわたって保つことができる。このように、アプリケーションに現在関連付けられているプロセス及び／又は新たに作成されたプロセスを、アプリケーションに関連付けられているものとして識別することができ、それに従ってサスペンドすることができる。本明細書において提供されるような１つ又は複数のプロセスのサスペンドは、デバイスがスリープモードにあるときにも又はないときにも発生し得るが、この場合、１つ又は複数のアプリケーションは非アクティブあるか又は使用されていないことを認識されたい。したがって、デバイスが使用中であっても電力を節約し、及び／又はバッテリ寿命を延長することができる。
【０００７】
本明細書において提供される、サスペンドされているプロセスを再開すべきか否かを判断する一例において、サスペンドされているプロセスに関連付けられたウェイクポリシーのセットを保持することができる。ウェイクポリシーは、サスペンドされているプロセスを再開して実行状態にする理由を示すことがある。一例において、ウェイクポリシーは、要求側アプリケーションが、プロセス間通信呼を、サスペンドされているプロセスに送るという状況に対応することがある。別の例において、ウェイクポリシーは、サスペンドされたプロセスに関連付けられるサスペンドされたアプリケーションが、フォアグランド状態に遷移する状況に対応することがある。別の例において、ウェイクポリシーは、サスペンドされたアプリケーションに関連付けられるユーザ入力が検出される状況に対応することがある。ウェイクポリシーは、サスペンドされているプロセスを起こす様々な状況及び／又は理由に対応し得ることを認識されたい。ウェイクポリシーは、ウェイクポリシーに関連付けられるウェイク通知であって、サスペンドされたプロセスについて現在係属中のウェイク通知（例えば要求側アプリケーションが、サスペンドされたプロセスにプロセス間通信を送信するなどの、ウェイクポリシーに関連付けられたイベントが発生しているという通知）の数を示すカウンタに関連付けられることがある。カウンタは、インクリメントされることもあり（例えばウェイク通知に関連付けられたイベントが係属中の場合がある）及び／又はデクリメントされることもある（例えばウェイク通知に関連付けられたイベントが完了している場合がある）。例えばプロセス間通信のウェイクポリシーのカウンタは、スプレッドシートアプリケーションがプロセス間通信呼をサスペンドされているテキストエディタに送ったという第１のウェイク通知を受信すると、１にインクリメントされてもよい。プロセス間通信ウェイクポリシーのカウンタは、ブラウザアプリケーションがプロセス間通信呼をサスペンドされているテキストエディタに送ったという第２のウェイク通知を受信すると、２にインクリメントされてもよい。
【０００８】
ウェイクポリシーのセットを評価して、サスペンドされているプロセスを実行状態におくか、又はサスペンドされているプロセスをサスペンド状態のままにするかを決定してもよい。一例において、サスペンドされているプロセスは、ウェイクポリシーに関連付けられる少なくとも１つのカウンタが閾値を超える値を含む（例えば少なくとも１つのカウンタが２より大きい値を有する）と判断したことに基づいて、実行状態におかれることがある。別の例において、１つ又は複数のカウンタの値を一緒に合計して、合計値を作成してもよい（例えば様々なウェイクポリシーに関連付けられた３つのカウンタが１の値を有することがあり、３という合計値が決定されてもよい）。合計値を、ウェイクポリシーに関連付けられた重みに基づいて調整してもよい（例えばユーザ入力に関連付けられるウェイクポリシーは、重み値２を受け取ることがあり、一方でリモートの第三者の要求に関連付けられるウェイクポリシーは重み値５を受け取ることがある。これは、リモートの第三者とは対照的にユーザに対して積極的に応答することがより有利である可能性があるためである）。同様に、特定のカウンタを無条件で観測し（例えばユーザカウンタ）、一方、別のカウンタは条件付きで（例えば周波数、ノイズ性、ソースなどに基づいて）観測されることがある。サスペンドされているプロセスが実行アプリケーションとして実行状態におかれた場合、実行中のプロセスをサスペンド状態に戻すべきか否か、及び／又はいつ戻すべきかを判断する際に、ウェイクポリシーの現在の状態及び／又はウェイク通知の完了から経過した時間を評価することがある。例えば実行中のプロセスは、追加のプロセス間通信呼が実行される場合、ある期間にわたって実行状態のままにされることがある。最適化として、特定のカウンタの「エッジ」遷移（０→１、１→０）に対して通知が配信され得る。第１の事例では、実行のためのポリシーが評価され、第２の事例では、サスペンドのためのポリシーが評価される。
【０００９】
一例において、ウェイクポリシーのセットが、論理コンテナ階層内のサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられてもよいことが認識される。したがって、サスペンドされているプロセスが実行状態におかれた場合、次いで、サスペンドされているプロセスに関連付けられる１つ又は複数のプロセス及び／又はアプリケーション（例えばサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられる論理コンテナに割り当てられているプロセス）が、実行状態におかれてもよい。
【００１０】
本明細書において提供されるような、アプリケーションを管理する一例において、アプリケーションに関連付けられたタイマのリストを保持してもよい。例えば絶対的タイマ（例えば２０１１／８／３１のＰＭ２：００のタイムアウト設定）、相対的タイマ（例えば１０分でのタイムアウト設定）、及び／又は他のタイプのタイマを保持することができる。アプリケーションがサスペンドされるべきであるという通知を受信すると、タイマのリストから導出されるタイマ再設定データ（ｔｉｍｅｒ  ｒｅｂａｓｉｎｇ  ｄａｔａ）を含むアプリケーション状態（状態情報）が作成され得る。相対的タイマのような特定のタイマは、たとえタイマの根拠となる理由が発生していなくても、アプリケーションがサスペンドされている間にタイムアウトし得るので、アプリケーション状態情報が作成され得る。例えばテキストエディタアプリケーションは、スペルチェッカプロセスについて１０分間の相対的タイマをセットしてもよい。これは、スペルチェッカプロセスは通常、エラーが発生していない限り、完了するのに１０分以上かからないためである。しかしながら、スペルチェッカプロセスは、相対的タイマが作成されてから２分後にサスペンドされ、１５分もの間にわたってサスペンドされる可能性がある。相対的タイマを調整しなければ、相対的タイマはタイムアウトし得る（例えばタイムアウトは、スペルチェッカのエラーには関連しておらず、スペルチェッカのサスペンドに関連するだけであるので、タイムアウトが不適切なことがある）。スペルチェッカは、誤ってはいないが単にサスペンドされるので、相対的タイマが、アプリケーション状態情報において、満了までの時間値のような相対的タイマ再設定データを使用して再設定され得る（例えばアプリケーション状態情報は、相対的タイマがサスペンドされたときから該相対的タイマの元の満了時刻までの期間を示す、満了までの時間値を含む相対的タイマ再設定データを含む可能性がある）。加えて、相対的タイマは、サスペンドされたアプリケーションが再開するときに、そうでなければ不要なＣＰＵ消費を引き起こす場合があり、及び／又はユーザ体験を損なう場合がある、タイマ満了までの余分な時間が生じないように調整され得る。対照的に、絶対的タイマは、絶対時間（例えば元の満了時間）に関連付けられ、したがって、アプリケーションは、タイマに関連付けられたアプリケーションがサスペンドされたか否かにかかわらず、絶対時間に到達したときに通知されることを望むことがある。したがって、絶対的タイマは、アプリケーション状態において、元の満了時間のような絶対的タイマ再設定データを使用して再設定され得る（例えばアプリケーション状態情報は、元の満了時刻を含む絶対的タイマ再設定データを含む可能性がある）。このように、タイマ再設定データを含むアプリケーション状態情報は、アプリケーションがサスペンド状態から実行状態に戻って再開するときにタイマを再設定するのに使用され得る。
【００１１】
本明細書において提供されるような、アプリケーションを管理する一例において、アプリケーションがサスペンド状態にある間、アプリケーションに関連付けられたアプリケーションメッセージキューを保持してもよい。アプリケーションメッセージキューは、アプリケーションについてのシステムメッセージ（例えば、制御パネル内の設定に関連付けられるシステムメッセージ）を記憶するように構成され得る。例えばタブレットデバイスのオペレーティングシステムは、ユーザインタフェースの色＝緑というシステムメッセージ、言語＝英語というシステムメッセージ、タブレットのビュー方向＝縦長方向というシステムメッセージ等のような、テキストエディタに関するシステムメッセージをキューに入れてもよい。アプリケーションメッセージキューは、アプリケーションがサスペンドされている間にシステムメッセージを受信し、及び／又は記憶することがある。現在キューに入っているメッセージを不正確なものにする可能性がある重複したメッセージが、経時的に受信される可能性があるため（例えばサスペンドされている間、タブレットビュー方向が縦長方向に設定される第１のメッセージを受信し、その後、タブレットビュー方向が横長方向に設定される第２のメッセージを受信することがあり、この第２のメッセージが第１のメッセージを不適切なものにする可能性がある）、アプリケーションが現在の最新のアプリケーション状態で実行状態におかれることができるように、アプリケーションメッセージキューを管理することが有利である可能性がある。したがって、アプリケーションがサスペンド状態にある間に、アプリケーションキューに向けられた第１のシステムメッセージが受信され得る。第１のシステムメッセージが、アプリケーションメッセージキュー内の第２のシステムメッセージに対応するか否かについての判断を行うことができる。第１のシステムメッセージが第２のシステムメッセージに対応すると判断されると、第１のシステムメッセージ及び／又は第２のシステムメッセージを修正及び／又は削除してもよい（例えばユーザインタフェースの色＝緑、という新たに受信した第１のシステムメッセージがアプリケーションメッセージキュー内におかれ、一方でユーザインタフェースの色＝赤、というすでにキューに入っている第２のシステムメッセージが削除され得る）。このように、アプリケーションが再開されて実行状態になると、アプリケーションは、「陳腐化」した及び／又は不適切なシステムメッセージとは対照的に、アプリケーションメッセージキューからの関連するシステムメッセージを処理することができる。アプリケーションメッセージキューを管理することは、対象のプロセスが作動可能／実行可能でないときに冗長なメッセージがシステムリソースを不必要に消費しないという点において（例えば新たなメッセージを廃棄／削除してもよいこと、より古い対応するメッセージを廃棄／削除して新たなメッセージを保持してもよいこと、メッセージをインテリジェントに統合してもよいこと等）、更なる肯定的性能の利点を有する。
【００１２】
上記及び関連する目標を達成するために、以下の説明及び添付の図面は、特定の例示的な態様及び実施態様を説明する。これらは、１つ又は複数の態様を用いることが可能な様々な方法のほんのいくつかを示しているに過ぎない。本開示の他の態様、利点及び新規の特徴は、添付の図面とともに考慮するときに以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【００１３】
【図１】アプリケーションに関連付けられる１つ又は複数のプロセスをサスペンドする例示的な方法を示すフローチャートである。
【図２】アプリケーションに関連付けられる１つまたはは複数のプロセスをサスペンドする例示的な方法を示すフローチャートである。
【図３】アプリケーションに関連付けられる１つ又は複数のプロセスをサスペンドする例示的なシステムを示す構成要素ブロック図である。
【図４】ウェイクポリシーのセットに基づいて、サスペンドされているプロセスを再開するか否かを判断する例示的な方法を示すフローチャートである。
【図５】ウェイクポリシーのセットに基づいて、サスペンドされているプロセスを再開するか否かを判断する例示的な方法を示すフローチャートである。
【図６】ウェイクポリシーに基づいて、サスペンドされているプロセスを再開するか否かを判断するための例示的なシステムを示す構成要素ブロック図である。
【図７】アプリケーションのアプリケーション状態を管理する例示的な方法を示すフローチャートである。
【図８】アプリケーションのアプリケーション状態を管理する例示的な方法を示すフローチャートである。
【図９】アプリケーションのアプリケーション状態を管理する例示的なシステムを示す構成要素ブロック図である。
【図１０】アプリケーションのアプリケーション状態を管理する例示的なシステムを示す構成要素ブロック図である。
【図１１】本明細書で説明されるプロビジョンの１つ又は複数を具現化するように構成されたプロセッサ実行可能命令を含むことができる、例示的なコンピュータ読取可能媒体の図である。
【図１２】本明細書で説明されるプロビジョンの１つ又は複数が実装され得る、例示的なコンピューティング環境の図である。
【発明を実施するための形態】
【００１４】
以下では、特許請求に係る主題が図面を参照して説明されるが、図面において、同様の参照符号は概して全体を通じて同様の要素を参照するのに使用される。以下の記載では、説明のために、特許請求に係る主題の完全な理解を提供するよう多数の具体的な詳細を説明する。しかしながら、特許請求に係る主題は、これらの具体的な詳細なしに実施されることができることが明らかである。他の事例において、特許請求に係る主題の説明を容易にするために、構造及びデバイスがブロック図の形式で図示されている。
【００１５】
アプリケーションに関連付けられる１つ又は複数のプロセスをサスペンドし、１つ又は複数のウェイクポリシーに基づいて、サスペンドされたプロセスを再開すべきか否かを判断し、アプリケーションのアプリケーション状態を管理する１つ又は複数のシステム及び／又は技法が本明細書において提供される。具体的には、アプリケーションに関連付けられる１つ又は複数のプロセスがサスペンドされることがある（例えばアプリケーションに関連付けられるプロセスを論理コンテナ階層に基づいて識別し、グループとしてサスペンドすることがある）。サスペンドされたプロセスは、サスペンドされたプロセスを再開して実行状態にする理由を示すウェイクポリシーのセットを保持していることに基づいて再開され得る（例えば、要求側アプリケーションからサスペンドされているプロセスへの閾値数のプロセス間通信呼が受信される場合、そのプロセス間通信呼を処理するためにサスペンドされているプロセスが実行状態におかれる）。アプリケーションがサスペンドされている間、アプリケーション状態情報が、サスペンドされているアプリケーションに関連付けられるタイマから導出され、タイマは、サスペンドされているアプリケーションが再開されて実行状態になると、アプリケーション状態情報を使用して再設定され得る。加えて、アプリケーションがサスペンドされている間、アプリケーションメッセージキューが管理され、それによって、アプリケーションキューから不適切な及び／又は陳腐化したメッセージが修正及び／又は削除される。このように、実行状態に入ると、アプリケーションは、関連するシステムメッセージを処理することができ、その結果アプリケーションが現在のアプリケーション状態におかれることができる。
【００１６】
アプリケーションに関連付けられる１つ又は複数のプロセスをサスペンドする一実施形態が、図１の例示的な方法１００によって図示されている。１０２において、方法が開始する。１０４において、アプリケーションが非アクティブであるとの通知が受信され得る（例えばアプリケーションはバックグラウンド状態に遷移していることがあり、アプリケーションがユーザに可視でないこと（例えばモニタ上のフォアグランドに提供されている異なるアプリケーションの後ろにあること）があり、ユーザがある期間の間アプリケーションと対話していないことがある等）。１０６において、アプリケーションに関連付けられる１つ又は複数のプロセスが識別され得る。一例において、論理コンテナ階層（例えば図３の論理コンテナ階層３０８）を参照して、いずれのプロセスがアプリケーションに関連付けられているかを判断することができる。例えばアプリケーションが、論理コンテナ階層内のルート論理コンテナに割り当てられ、アプリケーションに関連付けられているプロセスが、ルート論理コンテナに関連付けられた（例えばその中にネストされた）論理コンテナに割り当てられる可能性がある。
【００１７】
１つ又は複数のプロセスを識別する一例において、第１のプロセスが、ルート論理コンテナに関連付けられた（例えばその中にネストされた）第１の論理コンテナに割り当てられるとの判断に基づいて、アプリケーションに関連付けられているものとして判断されることがある（例えば第１のプロセスは、アプリケーションの直接の子プロセスであり得る）。別の例において、第２のプロセスが、ルート論理コンテナに関連付けられた第１の論理コンテナに割り当てられるとの判断に基づいて、その第２のプロセスは、アプリケーションに関連付けられているものとして判断されることがある（例えば第２のプロセスは、アプリケーションの直接の子プロセスであり得る）。別の例において、第２のプロセスが、第１の論理コンテナに関連付けられている第２の論理コンテナに割り当てられているという判断に基づいて、第２のプロセスは、アプリケーションに関連付けられているものとして判断されることがある（例えば第２のプロセスは、第１のプロセスの直接の子プロセス及び／又はアプリケーションの間接的な子プロセスであり得る）。このように、アプリケーションに関連付けられる１つ又は複数のプロセスが判断され得る。
【００１８】
１０８において、１つ又は複数のプロセスがサスペンド状態におかれる。例えば、サスペンドされているプロセスは、プロセッサが実行するのに不適切であるとしてマークされてもよく、その結果、サスペンドされているプロセスを含むスレッドは、スレッドスケジューラによって実行用の候補とみなされないことがある。一例において、アプリケーション、及び／又は１つ又は複数のプロセスに関連付けられている他のアプリケーションに、サスペンドを通知してもよく、これにより、そのようなアプリケーションに、状態情報を保存する機会を与えてもよい（例えばソーシャルネットワークアプリケーションは、ユーザによって閲覧されている現在のプロファイルに関連付けられる状態情報を保存することができ、再開されると、ソーシャルネットワークアプリケーションは現在のプロファイルをユーザに提示することができる）。サスペンドされているプロセスに関連付けられるメモリ内容が、保存済みのメモリ内容として記憶デバイスに保存され得る。このように、保存済みのメモリ内容をメモリに返すことができ、それによって、サスペンドされているプロセスが迅速に実行を再開することが可能になる。
【００１９】
新たに作成されたプロセス（例えば１つ又は複数のプロセスがサスペンドされた後に作成されたプロセス）は、この新たに作成されたプロセスが、サスペンドされているプロセス及び／又は非アクティブアプリケーションのうちの１つ又は複数に関連付けられるという判断に基づいて、サスペンド状態におかれてもよいことが認識される。例えば、新たに作成されたプロセスが、非アクティブアプリケーションのルート論理コンテナに関連付けられている論理コンテナに割り当てられている、という判断に基づいて、その新たに作成されたプロセスが非アクティブアプリケーションに関連付けられるとして判断されてもよい。このようにして、新たに作成されたプロセスがサスペンド状態におかれることがある。１１０において、方法は終了する。
【００２０】
アプリケーションに関連付けられる１つ又は複数のプロセスをサスペンドする一実施形態が、図２の１つの例示的な方法２００によって図示されている。２０２において、方法が開始する。２０４において、アプリケーションが非アクティブであるとの通知が受信され得る。２０６において、論理コンテナ階層を繰り返しトラバースして、アプリケーションに関連付けられている１つ又は複数のプロセスを識別することができる。一例において、論理コンテナ階層内において、アプリケーションに割り当てられたルート論理コンテナが識別されることがある。第１のプロセスがルート論理コンテナに関連付けられた（例えばその中にネストされた）第１の論理コンテナに割り当てられる、との判断に基づいて、その第１のプロセスがアプリケーションに関連付けられるとして判断されることがある。別の例において、第２のプロセスが、ルート論理コンテナに関連付けられた第１の論理コンテナに割り当てられる、との判断に基づいて、該第２のアプリケーションはアプリケーションに関連付けられているものとして判断されることがある（例えば第２のプロセスは、アプリケーションの直接の子プロセスであり得る）。別の例において、第２のプロセスは、第１の論理コンテナに関連付けられた第２の論理コンテナに割り当てられるとの判断に基づいて、アプリケーションに関連付けられているものとして判断されることがある（例えば第２のプロセスは、第１のプロセスの直接の子プロセス及び／又はアプリケーションの間接的な子プロセスであり得る）。このように、アプリケーションに関連付けられた１つ又は複数のプロセスが識別され得る。２０８において、１つ又は複数のプロセスがサスペンド状態におかれる。このように、非アクティブアプリケーションに関連付けられたプロセス及び／又は新たに作成されたプロセスがサスペンドされ得る。２１０において、方法は終了する。
【００２１】
図３は、アプリケーションに関連付けられる１つ又は複数のプロセスをサスペンドするように構成されたシステム３００の例を図示している。システム３００は、サスペンド構成要素３２２を備える。サスペンド構成要素３２２は、アプリケーションが非アクティブであるとの通知を受信するように構成され得る。例えば、テキストエディタアプリケーション３０２及びスプレッドシートアプリケーション３０４が、コンピューティング環境内でホストされ得る。ユーザは、テキストエディタアプリケーション３０２からスプレッドシートアプリケーション３０４へと切り替えることがあり、その結果、テキストエディタアプリケーション３０２がバックグラウンド状態に遷移することになり得る。このように、サスペンド構成要素３２２は、テキストエディタの非アクティブ通知３０６を受信し得る。
【００２２】
サスペンド構成要素３２２は、論理コンテナ階層３０８を繰り返しトラバースして、アプリケーションに関連付けられた１つ又は複数のプロセスを識別するように構成される。一例において、テキストエディタアプリケーション３０２は、テキストエディタルート論理コンテナ３１０に割り当てられたテキストエディタプロセス３１２に関連付けられることがある。実行している間、テキストエディタアプリケーション３０２は、テキストエディタ印刷プロセス３１４及び／又はテキストエディタ保存プロセス３１６のような１つ又は複数の子プロセスを作成していることがあり、これらの子プロセスは、テキストエディタ論理コンテナ３１０に割り当てられることがある。加えて、テキストエディタアプリケーション３０２は、スペルチェッカ論理コンテナ３１８に割り当てられたスペルチェッカプロセス３２０に関連付けられるスペルチェック機能を呼び出していることがある。スペルチェッカプロセス３２０はテキストエディタアプリケーション３０２に関連付けられるので、スペルチェッカ論理コンテナ３１８は、テキストエディタルート論理コンテナ３１０内にネストされることがある。したがって、サスペンド構成要素３２２は、論理コンテナ階層３０８をトラバースすることに基づいて、テキストエディタ印刷プロセス３１４、テキストエディタ保存プロセス３１６、及び／又はスペルチェッカプロセス３２０がテキストエディタアプリケーション３０２に関連付けられ得ると判断することができる。このように、サスペンド構成要素３２２は、テキストエディタアプリケーション３０２が非アクティブであることに基づいて、テキストエディタプロセス３１２、テキストエディタ印刷プロセス３１４、テキストエディタ保存プロセス３１６、スペルチェッカプロセス３２０及び／又はテキストエディタアプリケーション３０２に関連付けられた新たに作成されたプロセスをサスペンドすることがあり（３２４）、上記プロセス及び／又はアプリケーションはプロセッサ実行リソース及び／又は他の電力消費リソースを使用するには不適格であるので、結果として電力消費が改善され得る。
【００２３】
サスペンドされているプロセスを再開すべきか否かを、ウェイクポリシーのセットに基づいて判断する一実施形態が、図４の例示的な方法４００によって図示されている。４０２において方法が開始する。４０４において、サスペンドされているプロセスに関連付けられるウェイクポリシーのセットが保持され得る。ウェイクポリシーは、サスペンドされているプロセスが再開して実行状態になる理由を示すことができる。一例において、ウェイクポリシーは、要求側アプリケーションからサスペンドされているプロセスへのプロセス間通信呼に対応することがある（例えばスプレッドシートアプリケーションは、テキストエディタアプリケーションからのテキストの「切り取り」を要求して、「貼り付け」動作を満たすことを試み、プレゼンテーションアプリケーションは、その機能及び／又はデータがテキストエディタアプリケーションによって提供され得る「貼り付けられた」テキストオブジェクトを含むことがある等）。別の例において、ウェイクポリシーは、サスペンドされているアプリケーションに関連付けられるユーザ入力に対応してもよい（例えばユーザは、サスペンドされているテキストエディタアプリケーションと対話することを試みることがある）。別の例において、構成要素（例えばハードウェア構成要素、ソフトウェア構成要素、リモート第三者構成要素、ウェブ構成要素等）が、サスペンドされているプロセスへのアクセスを要求してもよい。別の例において、ウェイクポリシーは、サスペンドされているプロセスに関連付けられるサスペンドされているアプリケーションのバックグラウンド状態からフォアグランド状態への遷移に対応してもよい。このように、ウェイクポリシーのセットは、サスペンドされているプロセスを再開する様々なイベント／理由に関連付けられる、様々なウェイクポリシーを含むことができる。
【００２４】
カウンタがウェイクポリシーに関連付けられることがある。カウンタは、サスペンドされているプロセスについて現在係属中のウェイクポリシーに関連付けられるウェイク通知（例えば、ウェイクポリシーによって指定されるイベント／理由のインスタンス）の数を示すことがある。ウェイク通知は、プロセス間通信呼の通知のような、ウェイクポリシーによって指定されるイベント／理由の通知とすることができる。カウンタは、インクリメントされるか（例えばウェイク通知に関連付けられたイベントが係属中の場合がある）、及び／又はデクリメントされる（例えばウェイク通知に関連付けられたイベントが完了する場合ばある）。様々なウェイクポリシー及び対応するカウンタが、ウェイクポリシーのセット内に保持され得ることを認識されたい。例えばユーザ入力ウェイクポリシーに対する第１のカウンタは、ユーザがサスペンドされているテキストエディタとの対話を試みたという第１のウェイク通知を受信すると、１にインクリメントされてもよい。ユーザ入力ウェイクポリシーに対する第１のカウンタは、ユーザがサスペンドされているテキストエディタとの対話を２度試みたという第２のウェイク通知を受信すると、２にインクリメントされてもよい。プロセス間通信ウェイクポリシーに対する第２のカウンタは、スプレッドシートアプリケーションが、サスペンドされているテキストエディタとの通信を試みたという第３のウェイク通知を受信すると、１にインクリメントされてもよい。第２のカウンタは、スプレッドシートアプリケーションが、サスペンドされているテキストエディタとの通信をもう望まない（例えばユーザがスプレッドシートアプリケーションをシャットダウンする）と通知されると、０にデクリメントされてもよい。このように、ウェイクポリシーのセット内のウェイクポリシーに関連付けられるカウンタが保持され得る。
【００２５】
一例において、ウェイク通知は、プロセスの実行状態／サスペンド状態に照らしてカウンタがどのように遷移されるかに基づいて、フィルタリングされてもよい（例えば無視、削除、及び／又は発行を回避される）。一例において、プロセスが実行状態にあると判断されると、カウンタを値０から値１へと遷移させるウェイク通知がフィルタリングされ得る（例えば、すでに実行中のプロセスを実行状態におくウェイクポリシーをトリガするウェイク通知は、実行中のプロセスがすでに実行中であるため、フィルタリングされ得る）。別の例において、プロセスがサスペンド状態にあると判断されると、カウンタを値１から値０へと遷移させるウェイク通知がフィルタリングされ得る（例えば、すでにサスペンドされているプロセスをサスペンド状態におくウェイクポリシーをトリガするウェイク通知は、サスペンドされているプロセスがすでにサスペンドされているため、フィルタリングされ得る）。
【００２６】
４０６において、サスペンドされているプロセスに関連付けられたウェイクポリシーのセットを評価して、サスペンドされているプロセスを実行状態におくか、又はサスペンドされているプロセスをサスペンド状態のままにするかを決定してもよい。一例において、サスペンドされているプロセスは、ウェイクポリシーに関連付けられている少なくとも１つのカウンタが閾値を超える値を含む（例えば少なくとも１つのカウンタが０よりも大きい値を有する）との判断に基づいて、実行状態におかれてもよい。閾値を超える値を含むカウンタがない場合、サスペンドされているプロセスはサスペンド状態のままになり得る。別の例において、１つ又は複数のカウンタの値が一緒に合計されて、合計値が作成され得る。例えば、ユーザ入力ウェイクポリシーに関連付けられる第１のカウンタが２の値を有し、かつリモート第三者プロセス間通信呼ウェイクポリシーの第２のカウンタが２の値を有することに基づいて、合計値４が決定される。合計値４は、ウェイクポリシーに関連付けられた重みに基づいて調整されてもよい。例えばユーザ入力ウェイクポリシーは、サスペンドされているプロセスに関連付けられたアプリケーションがユーザに対して高応答性であるように、ユーザ入力に応答して、サスペンドされているプロセスを再開する／起こすことが望ましい場合があるので、（例えば２の値に２倍の重み修飾子を適用することに基づいて）４の重み値を有する可能性がある。例えばリモート第三者プロセス間通信ポリシーは、重大でない及び／又は望ましくない理由からサスペンドされているプロセスとの「ノイズの多い」通信を試みていることがあるリモートの第三者への応答性を下げるよう調整することが望ましい場合があるので、（例えば２の値に０．５倍の重み修飾子を適用することに基づいて）１の重み値を有する可能性がある。サスペンドされているプロセスは、合計値が閾値を超える（例えば、合計値５は閾値３を超える）との判断に基づいて、実行状態におかれることがある。
【００２７】
一例において、ウェイクポリシーのセットは、論理コンテナ階層内のサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられてもよいことが認識される。したがって、サスペンドされているプロセスが実行状態におかれる場合、サスペンドされているプロセスに関連付けられる１つ又は複数のプロセス及び／又はアプリケーションを、実行状態においてもよい。例えばテキストエディタプロセスが実行状態におかれることがある。テキストエディタプロセスが、テキストエディタルート論理コンテナに割り当てられることがある。スペルチェッカプロセスが、テキストエディタルート論理コンテナに関連付けられる（例えばその中にネストされる）論理コンテナに割り当てられるとの判断に基づいて、スペルチェッカプロセスが実行状態におかれることもある。このように、１つ又は複数の関連プロセスを再開して実行状態にすることができる。一例において、再開されたプロセスに関連付けられる保存済みのメモリ内容がメモリにリストアされ、それによって、そのようなプロセスは、電力を節約しつつ、応答性よく即座に実行を再開することができる。
【００２８】
実行プロセスとして実行状態におかれると、実行プロセスをサスペンド状態に戻すべきか否か、及び／又はいつ戻すべきかについての判断を行うことができる。一例において、ウェイクポリシーのセットの現在の状態が評価されることがある（例えばカウンタ値及び／又はカウンタ値の合計値が、閾値を上回っていない場合、実行プロセスはその後サスペンド状態に戻されることがある）。別の例において、実行プロセスを実行状態においたウェイク通知の完了から経過した時間が評価されることがある。例えば、プレゼンテーションアプリケーションは、機能及び／又はデータがサスペンドされているテキストエディタアプリケーションによって提供される「貼り付けされた」テキストオブジェクトを含むことがある。プレゼンテーションアプリケーションから、「貼り付けされた」テキストオブジェクトに関するサスペンドされているテキストエディタアプリケーションへのプロセス間通信呼が行われる。通信呼のウェイク通知が受信され、プロセス間通信呼を成立させるように、サスペンドされているテキストエディタアプリケーションが実行状態におかれる。プレゼンテーションアプリケーションがその後、「貼り付けされた」テキストオブジェクトに関するテキストエディタアプリケーションへのプロセス間通信呼を行うことがあるので、（例えばテキストエディタアプリケーションを直ぐにサスペンド状態に戻すのとは対照的に）テキストエディタアプリケーションが一定期間にわたって実行状態のままにすることを可能にすることは有利なことある。４０８において方法は終了する。
【００２９】
サスペンドされているプロセスを再開すべきか否かをウェイクポリシーのセットに基づいて判断する一実施形態が、図５の例示的な方法５００によって示されている。５０２において方法が開始する。５０４において、論理コンテナ階層内のサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられるウェイクポリシーが保持され得る。ウェイクポリシーは、サスペンドされているプロセスを再開して実行状態にする理由を示すことができる。ウェイクポリシーは、サスペンドされているプロセスについて現在係属中の、ウェイクポリシーに関連付けられたウェイク通知の数を示すカウンタを含み得る。ウェイク通知は、プロセス間通信呼の通知など、ウェイクポリシーによって指定される、サスペンドされているプロセスを再開するイベント／理由の通知とすることができる。カウンタは、ウェイクポリシーに関連付けられたウェイク通知を受信したことに基づいて、インクリメントされることがある（例えば、ユーザ入力ウェイクポリシーに関連付けられるカウンタは、ユーザが、サスペンドされているプロセスに関連付けられたサスペンドされているアプリケーションとの対話を試みたことを示すウェイク通知を受信したことに基づいて、インクリメントされることがある）。カウンタは、ウェイク通知が現在係属中でないとの通知を受信したことに基づいて、デクリメントされることがある（例えばカウンタは、サスペンドされているアプリケーションをホストするコンピューティングデバイスからユーザがログオフしたとの通知に基づいて、デクリメントされることがある）。
【００３０】
一例では、５０６において、カウンタの値が閾値を上回ると判断されると、サスペンドされているプロセスが実行状態におかれる。一例において、論理コンテナ階層をトラバースして、サスペンドされているプロセスに関連付けられる１つ又は複数の追加のサスペンドされているプロセスを、その１つ又は複数の追加のサスペンドされているプロセスが、サスペンドされているプロセスの論理コンテナに関連付けられる（例えばその中にネストされる）論理コンテナに割り当てられているという判断に基づいて、識別してもよい。このように、１つ又は複数の追加のサスペンドされているプロセスを実行状態においてもよい。別の例において、５０８において、カウンタの値が閾値を下回ると判断されると、サスペンドされているプロセスはサスペンド状態のままにされ得る。このように、サスペンドされているプロセスは、ウェイクポリシーに基づいて、実行状態におかれるか又はサスペンド状態のままにされる。５１０において方法は終了する。
【００３１】
図６は、サスペンドされているプロセスを再開するか否かをウェイクポリシーのセットに基づいて判断するよう構成されたシステム６００の例を図示している。システム６００は、ウェイク構成要素６２４を備えることができる。ウェイク構成要素６２４は、ウェイクポリシー（例えば、プロセス間通信のウェイクポリシー６２８、ユーザ入力のウェイクポリシー６３０、バックグラウンドからフォアグランドのウェイクポリシー６３２、及び／又は他のウェイクポリシーのようなウェイクポリシーのセット６２６）を保持するように構成される。ウェイクポリシーは、論理コンテナ階層６１０内のサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられる。例えばウェイクポリシーのセット６２６を、サスペンドされているテキストエディタアプリケーション６０２のサスペンドされているテキストエディタプロセス６１４に関連付けられたテキストエディタ論理コンテナ６１２に関連付けることができる。一例において、サスペンドされているテキストエディタ印刷プロセス６１６、サスペンドされているテキストエディタ保存プロセス６１８、及び／又はサスペンドされているスペルチェッカプロセス６２２は、これらのプロセスが関連し得るため（例えばサスペンドされているスペルチェッカプロセス６２２が、テキストエディタ論理コンテナ６１２内にネストされるスペルチェッカ論理コンテナ６２０に割り当てられる）、テキストエディタプロセス６１４のサスペンドに基づいてサスペンドされていることがある。
【００３２】
プロセス間通信ウェイクポリシー６２８のようなウェイクポリシーを、サスペンドされているプロセスのためのウェイク通知であって、ウェイクポリシーに関連付けられた現在係属中のウェイク通知の数を示すカウンタに関連付けることができる。ウェイク構成要素６２４は、ウェイクポリシーに関連付けられるウェイク通知を受信したことに基づいてカウンタをインクリメントし、及び／又はウェイク通知が現在係属中でないとの通知を受信したことに基づいてカウンタをデクリメントするように構成される。例えばウェイク通知６０８が受信され得る。ウェイク通知６０８は、スプレッドシートアプリケーション６０４が、貼り付けされたテキストオブジェクト６０６に関連するサスペンドされているテキストエディタアプリケーション６０２にプロセス間通信呼を送ったことを示すことがある（例えば、貼り付けされたテキストオブジェクト６０６は、サスペンドされたテキストエディタアプリケーション６０２から機能及び／又はデータを導出することができ、したがって、スプレッドシートアプリケーション６０４は、サスペンドされているテキストエディタアプリケーション６０２にそのような機能及び／又はデータを要求する）。ウェイク構成要素６２４は、ウェイク通知６０８に基づいて、プロセス間通信ウェイクポリシー６２８に関連付けられるカウンタを１にインクリメントすることができる。
【００３３】
ウェイク構成要素６２４は、カウンタの値が閾値を上回るという判断に基づいて、サスペンドされているプロセスを実行状態におくように構成され、そうでなければ、ウェイク構成要素６２４は、サスペンドされているプロセスをサスペンド状態のままにすることができる。例えばウェイク構成要素６２４は、プロセス間通信ウェイクポリシー６２８のカウンタが０よりも大きい１の値を含むことに基づいて、サスペンドされているテキストエディタプロセス６１４を実行状態におくことができる。ウェイク構成要素６２４は、論理コンテナ階層６１０をトラバースして、再開されて実行状態になるサスペンドされているテキストエディタプロセス６１４に関連付けられる、１つ又は複数の追加のサスペンドされているプロセスを識別することができる。例えば、サスペンドされているテキストエディタ印刷プロセス６１６、サスペンドされているテキストエディタ保存プロセス６１８、及び／又はサスペンドされているスペルチェッカプロセス６２２は、そのようなプロセスが、テキストエディタ論理コンテナ６１２に割り当てられる、及び／又はスペルチェッカ論理コンテナ６２０のようなテキストエディタ論理コンテナ６１２に関連付けられる（例えばその中にネストされる）論理コンテナに割り当てられるという判断に基づいて識別され得る。このように、ウェイク構成要素６２４は、サスペンドされているテキストエディタプロセス６１４、サスペンドされているテキストエディタ印刷プロセス６１６、サスペンドされているテキストエディタ保存プロセス６１８、及び／又はサスペンドされているスペルチェッカプロセス６２２を実行状態におくことができ（６３４）、それによって、テキストエディタアプリケーション６０２は、スプレッドシートアプリケーション６０４からのプロセス間通信呼に応答することができる。一例において、ウェイク構成要素６２４は、再開されるプロセスに関連付けられた保存済みのメモリ内容をメモリにおいて、テキストエディタアプリケーション６０２の応答性を改善することができる。
【００３４】
アプリケーションのアプリケーション状態を管理する一実施形態が、図７の例示的な方法７００によって図示されている。７０２において方法が開始する。７０４において、アプリケーションに関連付けられたタイマのリストが保持される（例えばアプリケーションに関連付けられたプロセスの１つ又は複数のタイマが保持される）。すなわち、アプリケーションに関連付けられるプロセスは、相対的タイマ（例えばテキストエディタ保存プロセスのためにテキストエディタアプリケーションによって２０秒に設定されるタイムアウト）、絶対的タイマ（例えばカレンダーアプリケーションによって２０１１／９／１５のＡＭ５：００に設定されるタイムアウト）、及び／又は他のタイプのタイマのような１つ又は複数のタイマに関連付けられる。タイマの一例において、テキストエディタアプリケーションは、テキストエディタ保存プロセスが一般的に、エラーが発生していない限り完了するのに２０秒より多くはかからないため、テキストエディタ保存プロセスについて２０秒間の相対的タイマを設定してもよい。タイマの別の例において、カレンダーアプリケーションは、ユーザに２０１１／９／１５のＡＭ６：００に目覚ましの通知を提供するリマインダとして、２０１１／９／１５のＡＭ５：００の絶対的タイマを設定してもよい。
【００３５】
一例において、これらのタイマの１つ又は複数を、論理コンテナ階層内の、アプリケーションに割り当てられるルート論理コンテナに関連付けること、及び／又はアプリケーションに関連付けられるプロセスに割り当てられる１つ又は複数の論理コンテナに関連付けることができる。例えば、第１のプロセスが、ルート論理コンテナに関連付けられる（例えばその中にネストされる）第１の論理コンテナに割り当てられるとの判断に基づいて、アプリケーションの第１のプロセスに関連付けられる第１のタイマを保持することができる。第２のプロセスが、ルート論理コンテナ及び／又は第１の論理コンテナに関連付けられる第２の論理コンテナに割り当てられるとの判断に基づいて、アプリケーションの第２のプロセスに関連付けられる第２のタイマを保持することができる。このように、アプリケーションのプロセスに関連付けられるタイマのリストを保持することができる。
【００３６】
７０６において、アプリケーションをサスペンド状態におくべきとの通知を受信すると、タイマのリストから導出されるタイマ再設定データを含むアプリケーション状態情報が作成される。一例において、絶対的タイマに関連付けられる絶対的タイマ再設定データがアプリケーション状態情報内に記憶されることがある。絶対的タイマ再設定データは、絶対的タイマの元の満了時刻を含むことができる（例えば、カレンダーアプリケーションは、プロセス及び／又はアプリケーションがサスペンド状態におかれていることに起因してその時刻を過ぎたか否かにかかわらず、２０１１／９／１５のＡＭ５：００に通知をしようとする）。別の例では、相対的タイマに関連付けられる相対的タイマ再設定データがアプリケーション状態情報内に記憶されることがある（例えば、テキストエディタアプリケーションは、テキストエディタ保存プロセスが実行状態の間に２０秒以内に完了しない場合にタイムアウト通知をしようとする）。相対的タイマ再設定データは、満了までの時間値（例えば、相対的タイマがサスペンドされたときから相対的タイマの元の満了時刻までの期間）を含むことができる。相対的タイマ再設定データは、例えば元の満了時刻とは異なる満了までの時間値を含むことがあるが、これは、テキストエディタアプリケーションが、実行状態の間にテキストエディタ保存プロセスが完了するのに２０秒より長くかかったか否かに関係する可能性があり（例えば２０秒よりも長くかかることは、致命的なエラーが発生したことを示すことがある）、テキストエディタ保存プロセスがサスペンドしたことに起因する相対的タイマの満了は、テキストエディタアプリケーションが関係する致命的なタイムアウトを表していない可能性があるので、テキストエディタ保存プロセスのサスペンドは相対的タイマを知らせることがある。このように、アプリケーション状態情報が作成され得る。
【００３７】
アプリケーションがサスペンド状態から実行状態におかれるべきとの通知を受信すると、アプリケーション状態情報内のタイマ再設定データを、タイマのリストに関連付けられる１つ又は複数のタイマに適用することができる。一例において、絶対的タイマ再設定データを絶対的タイマに適用して、再設定された絶対的タイマを作成してもよい。再設定された絶対的タイマは、絶対的タイマの元の満了時刻を含んでもよい。元の満了時刻が満了した場合、満了の通知をアプリケーションに提供することができる。別の例において、相対的タイマ再設定データを相対的タイマに適用して、再設定された相対的タイマを作成してもよい。再設定された相対的タイマは、満了までの時間値を現在時刻に適用することから導出される、再設定された満了タイマを含んでもよい。このように、アプリケーション及び／又はアプリケーションに関連付けられたプロセスを、タイマに関して現在のアプリケーション状態におくことができる。７０８において、方法は終了する。
【００３８】
アプリケーションのアプリケーション状態を管理する一実施形態が、図８の例示的な方法８００によって示される。８０２において、方法が開始する。アプリケーションを、アプリケーションメッセージキューに関連付けることができる。アプリケーションメッセージキューは、アプリケーションに対するシステムメッセージを記憶するように構成されてよい。このように、アプリケーションは、アプリケーションメッセージキューを通じてシステムメッセージを受信することができる（例えば、アプリケーションは実行状態にある間にシステムメッセージをキューから取り出すことができる）。システムメッセージは、システム設定における変化のような、アプリケーション状態に関係する様々な情報に対応することがある。一例において、ユーザがタブレットデバイスを回転させることがあり、これによって、ビュー方向が横長ビューモードから縦長ビューモードに変化し得る。タブレットデバイスのオペレーティングシステムは、現在のビューモードが縦長に設定されたことを示すシステムメッセージを、アプリケーションメッセージキューに入れてよい。このように、アプリケーションはシステムメッセージをキューから取り出して、アプリケーション自体をタブレットデバイスの現在の状態に適合するよう縦長モードにしてもよい。システムメッセージは、ユーザインタフェースの色、言語設定、入力デバイス情報等のような様々な他の情報を含んでよい。
【００３９】
８０４において、アプリケーションがサスペンド状態にある間、アプリケーションに関連付けられたアプリケーションメッセージキューが保持され得る。すなわち、アプリケーションメッセージキューは、一般的に、アプリケーションがサスペンド状態にあるか及び／又は実行状態にあるかにかかわらず、システムメッセージを受信することがある（例えば、テキストエディタアプリケーションがサスペンドされている間、ユーザがタブレットデバイスを複数回回転させることがあり、したがって、オペレーティングシステムは現在のビューモードに対応する複数のシステムメッセージをキューに入れることがある）。不都合なことに、アプリケーションがサスペンド状態にある間に、複数の対応するシステムメッセージが、アプリケーションメッセージキューに入れられることがあり、１つ又は複数のメッセージが不適格及び／又は陳腐になることがある。例えば、テキストエディタアプリケーションがサスペンドされている間、４つのシステムメッセージが、経時的にアプリケーションメッセージキューに入れられることがある。ユーザはタブレットデバイスのシステム言語設定をドイツ語に変更してもよく、したがって、言語＝ドイツ語というシステムメッセージが、アプリケーションシステムキューに入れられる。次に、ユーザはタブレットデバイスを横長モードに回転させてもよく、したがって、ビューモード＝横長というメッセージがアプリケーションシステムキューに入れられる。ユーザがその後、タブレットデバイスのシステム言語設定を英語に変更してもよく、したがって、言語＝英語というシステムメッセージがアプリケーションシステムキューに入れられる。最後に、ユーザはタブレットデバイスを縦長モードに回転させてもよく、したがって、ビューモード＝縦長というメッセージがアプリケーションシステムキューに入れられる。このように、アプリケーションメッセージキューは、言語及びビューモードが他の値に変更されたことにより、言語＝ドイツ語及びビューモード＝横長というシステムメッセージのような不適切な及び／又は陳腐化したシステムメッセージを含むことがある。したがって、アプリケーションメッセージキューは、不適切な及び／又は陳腐化したメッセージを削除及び／又は修正すように維持され得る。
【００４０】
一例において、アプリケーションがサスペンド状態にある間に、アプリケーションメッセージキューに向けられた第１のシステムメッセージが受信されることがある。第１のシステムメッセージがアプリケーションメッセージキュー内の第２のシステムメッセージに対応するか否かについて判断が行われ得る（例えば、第１のシステムメッセージが言語システムメッセージに対応する場合、アプリケーションメッセージキューをトラバースして、言語システムメッセージに対応する１つ又は複数のシステムメッセージを識別してもよい）。第１のシステムメッセージが第２のシステムメッセージに対応すると判断すると、第１のシステムメッセージ及び／又は第２のシステムメッセージが削除及び／又は修正され得る（例えば、より新しい及び／又はより関連性のある第１のシステムメッセージを保持し、第２のシステムメッセージを削除してもよい）。例えば関連性ランク付けを第１のシステムメッセージ及び第２のシステムメッセージに割り当てて、どちらのシステムメッセージを修正及び／又は削除すべきかを判断してもよい。８０６において、方法は終了する。
【００４１】
図９は、タイマデータ及び／又はシステムメッセージデータのような、アプリケーションのアプリケーション状態を管理するよう構成されるシステム９００の一例を示す。システム９００は、アプリケーション状態マネージャ９１０を備えることができる。アプリケーション状態マネージャ９１０は、アプリケーションに関連付けられるタイマのリスト９０４を保持するように構成されることがある。例えばタイマのリスト９０４は、１０分後にタイムアウトするように設定されたスペルチェッカの相対的タイマ９０６、２０１１／８／１２のＰＭ３：００にタイムアウトするように設定されたテキストエディタの絶対的タイマ９０８、及び／又は他のタイマを含むことがある。アプリケーション状態マネージャ９１０は、アプリケーションがサスペンド状態におかれるべきであるという通知９０２を受信することがある。例えば通知９０２は、テキストエディタアプリケーション及び／又はスペルチェッカアプリケーションがサスペンド状態におかれるべきであるということを示してもよい。
【００４２】
通知９０２を受信すると、アプリケーション状態マネージャ９１０は、タイマのリスト９０４から導出されるタイマ再設定データを含むアプリケーション状態情報９１２を作成することができる。例えば、スペルチェッカの相対的タイマ９０６のための相対的タイマ再設定データ９１４が作成されることがある。相対的タイマ再設定データ９１４は、スペルチェッカアプリケーションがサスペンドされた時間までに１０分間のうち２分間が経過し、したがって１０分間の相対的タイマの満了まで８分間残っているため、８分間という満了までの時間値を含む可能性がある。テキストエディタの絶対的タイマ９０８のための絶対的タイマ再設定データ９１６が作成されることもある。絶対的タイマ再設定データ９１６は、２０１１／８／１２  ＰＭ３：００というの元の満了時刻を含み得る。このようにして、アプリケーション状態情報９１２が作成され得る。
【００４３】
テキストエディタアプリケーション及び／又はスペルチェッカアプリケーションが実行状態におかれるべきであるという通知を受信すると、アプリケーション状態情報９１２内の相対的タイマ再設定データ９１４及び／又は絶対的タイマ再設定データ９１６が、スペルチェッカの相対的タイマ９０６及び／又はテキストエディタの絶対的タイマ９０８に適用されてよい。このように、８分間という再設定された相対的タイマが作成され、２０１１／８／１２  ＰＭ３：００という再設定された絶対的タイマが作成され得る。
【００４４】
図１０は、システムメッセージデータのような、アプリケーションのアプリケーション状態を管理するように構成されるシステム１０００の一例を示す。システム１０００は、メッセージ管理構成要素１００６を備えることができる。メッセージ管理構成要素１００６は、アプリケーションがサスペンド状態にある間、アプリケーションに関連付けられたアプリケーションメッセージキュー１００４を保持するように構成され得る。アプリケーションメッセージキュー１００４は、アプリケーションのためのシステムメッセージを記憶するように構成されてよい。一例において、テキストエディタアプリケーションがアプリケーションメッセージキュー１００４に関連付けられることがある。テキストエディタアプリケーションがサスペンド状態におかれることがある。テキストエディタアプリケーションがサスペンドされている間に、新たなシステムメッセージがアプリケーションメッセージキュー１００４内に入れられることがあることが認識され得る。アプリケーションメッセージキュー１００４の現在の状態は、ビューモード＝横長のシステムメッセージ、ユーザインタフェース＝緑のシステムメッセージ、言語＝英語のシステムメッセージ、新たな入力デバイス＝マウス、及び／又は他のシステムメッセージを含み得る。
【００４５】
アプリケーションがサスペンドされている間に、新たなシステムメッセージ１００２を受信することがある（例えば、ビューモード＝縦長という新たなシステムメッセージ、ユーザインタフェース＝赤という新たなシステムメッセージ、新たな入力デバイス＝キーボードという新たなシステムメッセージ、及び／又は他の新たなシステムメッセージ）。メッセージ管理構成要素１００６は、新たなシステムメッセージ１００２を考慮して、不適切及び／又は陳腐化したシステムメッセージがアプリケーションメッセージキュー１００４から削除及び／又は修正されるよう、アプリケーションメッセージキュー１００４を保持するように構成され得る。一例において、ビューモード＝縦長という新たなシステムメッセージは、アプリケーションメッセージキュー１００４内のビューモード＝横長というシステムメッセージに対応するものとして判断され得る。ビューモード＝縦長という新たなシステムメッセージは、ビューモード＝横長というシステムメッセージを不適切及び／又は陳腐にし得るため、ビューモード＝横長というシステムメッセージが削除され（１０１２）、ビューモード＝縦長という新たなシステムメッセージがアプリケーションメッセージキュー１００４に追加される（１００８）。
【００４６】
別の例において、ユーザインタフェース＝赤という新たなシステムメッセージは、アプリケーションメッセージキュー１００４内のユーザインタフェース＝緑というシステムメッセージに対応するものとして判断され得る。ユーザインタフェース＝赤という新たなシステムメッセージは、ユーザインタフェース＝緑というシステムメッセージを不適切及び／又は陳腐にし得るため、ビユーザインタフェース＝緑というシステムメッセージが削除され（１０１４）、ユーザインタフェース＝赤という新たなシステムメッセージがアプリケーションメッセージキュー１００４に追加される（１０１０）。別の例において、新たな入力デバイス＝キーボードという新たなシステムメッセージは、新たな入力デバイス＝マウスというシステムメッセージに対応するものとして判断され得る。新たな入力デバイス＝キーボードという新たなシステムメッセージは、新たな入力デバイス＝マウスというシステムメッセージに対する追加であるので、新たな入力デバイス＝マウスというシステムメッセージは修正されて（１０１６）、新たな入力デバイス＝マウス及びキーボードというシステムメッセージになる。このように、アプリケーションメッセージキュー１００４は、アプリケーションがサスペンドされている間にメッセージ管理構成要素によって保持されるので、アプリケーションは、再開されると、関連するシステムメッセージのみをキューから取り出せばよい。
【００４７】
更に別の実施形態は、本明細書に提示される技法の１つ又は複数を実施するように構成されるプロセッサ実行可能命令を含むコンピュータ読取可能媒体を含む。これらの方法で考案され得る例示的なコンピュータ読取可能媒体が図１１に示されている。図１１において、実装形態１１００は、コンピュータ読取可能データ１１１４が符号化されるコンピュータ読取可能媒体１１１６（例えばＣＤ−Ｒ、ＤＶＤ−Ｒ又はハードディスクドライブのプラッタ）を備える。このコンピュータ読取可能データ１１１４は、本明細書に記載の原理の１つ又は複数に従って動作するように構成されるコンピュータ命令１１１２のセットを備える。１つのそのような実施形態１１００において、プロセッサ実行可能コンピュータ命令１１１２は、例えば図１の例示的な方法１００の少なくとも一部、図２の例示的な方法２００の少なくとも一部、図４の例示的な方法４００の少なくとも一部、図５の例示的な方法５００の少なくとも一部、図７の例示的な方法７００の少なくとも一部、及び／又は図８の例示的な方法８００の少なくとも一部のような、方法１１１０を実行するように構成され得る。別のそのような実施形態において、プロセッサ実行可能命令１１１２は、例えば図３の例示的なシステム３００の少なくとも一部、図６の例示的なシステム６００の少なくとも一部、図９の例示的なシステム９００の少なくとも一部、及び／又は図１０の例示的なシステム１０００の少なくとも一部のような、システムを実装するように構成され得る。本明細書に提示される技法に従って動作するように構成されている多くのそのようなコンピュータ読取可能媒体が当業者によって考案される可能性がある。
【００４８】
本主題は構造的特徴及び／又は方法的動作に特有の文言において説明されているが、特許請求の範囲において定義される本主題は必ずしも、上述の具体的な特徴及び動作に限定されないことは理解されよう。むしろ、上述の具体的な特徴及び動作は、特許請求の範囲を実装するための例示的な形式として開示されている。
【００４９】
本明細書において使用される場合、「構成要素」、「モジュール、「システム」、「インタフェース」等の用語は、一般的に、コンピュータ関連のエンティティ、すなわち、ハードウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア又は実行中のソフトウェアのいずれかを指すように意図される。例えば構成要素は、これらには限定されないが、プロセッサ上で動作するプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム及び／又はコンピュータであってもよい。例示として、コントローラ上で動作しているアプリケーションとコントローラとの双方を構成要素とすることができる。１つ又は複数の構成要素がプロセス及び／又は実行スレッド内に存在してもよく、構成要素を、１つのコンピュータ上に局在化してもよく、及び／又は２つ若しくはそれ以上のコンピュータの間に分散させてもよい。
【００５０】
さらに、特許請求に係る主題を、開示される主題を実装するようコンピュータを制御するソフトウェア、ファームウェア、ハードウェア又はそれらの任意の組合せを生成するために標準的なプログラミング及び／又はエンジニアリング技法を使用する、方法、装置、又は製造品として実装されてもよい。「製品」という用語は、本明細書において使用されるとき、任意のコンピュータ読取可能デバイス、キャリア又は媒体からアクセス可能なコンピュータプログラムを包含するように意図される。当然、本開示の範囲及び精神から逸脱することなく、この構成に多くの修正を行うことができることが当業者には認識されよう。
【００５１】
図１２及び以下の記述は、本明細書で説明されるプロビジョンの１つ又は複数の実施形態を実装する適切なコンピューティング環境の簡潔で一般的な説明を提供する。図１２の動作環境は適切な動作環境の一例に過ぎず、動作環境の使用又は機能の範囲に関していかなる限定をも示唆するように意図されるものではない。例示的なコンピューティングデバイスは、限定ではないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド又はラップトップデバイス、モバイルデバイス（携帯電話、携帯情報端末（ＰＤＡ）、メディアプレーヤ等のような）、マルチプロセッサシステム、家庭用電化製品、ミニコンピュータ、メインフレームコンピュータ、上記のシステム又はデバイスのいずれかを含む分散コンピューティング環境等を含む。
【００５２】
必須ではないが、諸実施形態は、１つ又は複数のコンピューティングデバイスによって実行されている「コンピュータ読取可能命令」の一般的な文脈において説明されている。コンピュータ読取可能命令は、（後述される）コンピュータ読取可能媒体を介して分散されてもよい。コンピュータ読取可能命令は、特定のタスクを実行し、又は特定の抽象データ型を実装する、関数、オブジェクト、アプリケーションプログラミングインタフェース（ＡＰＩ）、データ構造等のような、プログラムモジュールとして実装されてもよい。典型的に、コンピュータ読取可能命令の機能は、様々な実施形態において所望に応じて組合せ又は分散されてもよい。
【００５３】
図１２は、本明細書において提供される１つ又は複数の実施形態を実装するように構成されるコンピューティングデバイス１２１２を備えるシステム１２１０の一例を示す。一構成において、コンピューティングデバイス１２１２は、少なくとも１つの処理装置１２１６及びメモリ１２１８を含む。コンピューティングデバイスの正確な構成及びタイプに応じて、メモリ１２１８は、揮発性（例えばＲＡＭのような）、不揮発性（例えばＲＯＭ、フラッシュメモリ等のような）又はそれら２つの何らかの組合せであってもよい。この構成は、図１２において破線１２１４によって示されている。
【００５４】
他の実施形態において、デバイス１２１２は、追加の特徴及び／又は機能を含んでもよい。例えばデバイス１２１２は、限定ではないが、磁気ストレージ、光ストレージ等を含む追加のストレージ（例えば取外し可能及び／又は取外し不可能）も含んでもよい。そのような追加のストレージは、図１２においストレージ１２２０によって示されている。一実施形態において、本明細書において提供される１つ又は複数の実施形態を実装するためのコンピュータ読取可能命令は、ストレージ１２２０内にあってもよい。ストレージ１２２０は、オペレーティングシステム、アプリケーションプログラム等を実装するための他のコンピュータ読取可能命令を記憶してもよい。コンピュータ読取可能命令は、例えば処理装置１２１６による実行のためにメモリ１２１８内にロードされてもよい。
【００５５】
本明細書において使用されるとき、「コンピュータ読取可能媒体」という用語は、コンピュータ記憶媒体を含む。コンピュータ記憶媒体は、コンピュータ読取可能命令又は他のデータのような情報の記憶のための任意の方法又は技術で実装される揮発性及び不揮発性、取外し可能及び取外し不可能の媒体を含む。メモリ１２１８及びストレージ１２２０は、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、限定ではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ若しくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）若しくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、又は所望の情報を記憶するのに使用可能であり、デバイス１２１２によってアクセス可能な任意の他の媒体を含む。任意のこのようなコンピュータ記憶媒体はデバイス１２１２の一部であってもよい。
【００５６】
デバイス１２１２は、デバイス１２１２が他のデバイスと通信することを可能にする通信接続（複数可）１２２６を含んでもよい。通信接続１２２６は、限定ではないが、モデム、ネットワークインタフェースカード（ＮＩＣ）、統合ネットワークインタフェース、無線周波数送信機／受信機、赤外線ポート、ＵＳＢ接続、又はコンピューティングデバイス１２１２を他のコンピューティングデバイスに接続するための他のインタフェースを含んでもよい。通信接続１２２６は、有線接続又は無線接続を含んでもよい。通信接続１２２６は通信媒体を送信及び／又は受信することもある。
【００５７】
「コンピュータ読取可能媒体」という用語は、通信媒体を含んでもよい。通信媒体は、典型的に、搬送波若しくは他の伝送機構のように、コンピュータ読取可能命令又は他のデータを「変調データ信号」で具現化し、任意の情報配信媒体を含む。「変調データ信号」という用語は、その特性のうちの１つ又は複数が、信号内に情報を符号化するような手法で設定又は変更された信号を含んでもよい。
【００５８】
デバイス１２１２は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス、赤外線カメラ、ビデオ入力デバイス及び／又は任意の他の入力デバイスのような入力デバイス（複数可）１２２４を含んでもよい。１つ又は複数のディスプレイ、スピーカ、プリンタ及び／又は任意の他の出力デバイスのような出力デバイス（複数可）１２２２もデバイス１２１２に含まれてもよい。入力デバイス１２２４及び出力デバイス１２２２は、有線接続、無線接続又はそれらの任意の組合せを介してデバイス１２１２に接続されてもよい。一実施形態において、別のコンピューティングデバイスからの入力デバイス又は出力デバイスを、コンピューティングデバイス１２１２の入力デバイス１２２４又は出力デバイス１２２２として使用してもよい。
【００５９】
コンピューティングデバイス１２１２の構成要素は、バスのような様々な相互接続によって接続されてもよい。そのような相互接続は、ＰＣＩ  Ｅｘｐｒｅｓｓのような周辺構成要素相互接続（ＰＣＩ）、ユニバーサルシリアルバス（ＵＳＢ）、ファームウェア（ＩＥＥＥ  １３９４）及び光学バス構造等を含んでもよい。別の実施形態において、コンピューティングデバイス１２１２の構成要素は、ネットワークによって相互接続されてもよい。例えばメモリ１２１８は、ネットワークによって相互接続された異なる物理的位置に置かれた複数の物理メモリユニットから構成されてもよい。
【００６０】
コンピュータ読取可能命令を記憶するのに利用される記憶デバイスがネットワークにわたって分散されてもよいことが当業者には認識されよう。例えば、ネットワーク１２２８を介してアクセス可能なコンピューティングデバイス１２３０が、本明細書において提供される１つ又は複数の実施形態を実装するコンピュータ読取可能命令を記憶してもよい。コンピューティングデバイス１２１２は、コンピューティングデバイス１２３０にアクセスして、コンピュータ読取可能命令の一部又はすべてを実行するためにダウンロードしてもよい。あるいは、コンピューティングデバイス１２１２は、必要に応じてコンピュータ読取可能命令のうちいくつかの部分をダウンロードしてもよく、又は一部の命令をコンピューティングデバイス１２１２において実行し、一部をコンピューティングデバイス１２３０において実行してもよい。
【００６１】
諸実施形態の様々な動作が本明細書において提供される。一実施形態において、説明された動作のうちの１つ又は複数が、１つ又は複数のコンピュータ読取可能媒体上に記憶されるコンピュータ読取可能命令の性質であってもよく、これらの命令は、コンピューティングデバイスによって実行されると、該コンピューティングデバイスに、説明された動作を実行させる。動作の一部又はすべてが説明される順序は、これらの動作が必ずしも順序に依存することを暗示するものとして解釈されるべきではない。代替的な順序が、本明細書の利益を享受する当業者によって認識されよう。さらに、本明細書において提供される各実施形態において、必ずしもすべての動作が存在するとは限らないことが理解されよう。
【００６２】
さらに、「例示」という語は本明細書において、例、事例又は実例としての役割を果たすことを意味するように使用される。「例示」として本明細書で説明される任意の態様又は設計が、必ずしも他の態様又は設計よりも有利であるものとして解釈されるべきではない。むしろ、例示という語の使用は、概念を具体的に提示するように意図されている。本明細書において使用されるとき、「又は（若しくは、あるいは）」という用語は、排他的な「又は」を意味するものではなく、包含的な「又は」を意味するように意図されている。すなわち、別途指定されない限り、又は文脈から明らかでない限り、「ＸがＡ又はＢを用いる」は、任意の自然な包含的順列を意味するように意図されている。すなわち、ＸがＡを用いるか、ＸがＢを用いるか、ＸがＡ及びＢの双方を用いる場合、「ＸがＡ又はＢを用いる」は、上記の事例のいずれかの下で満たされる。加えて、本明細書及び特許請求の範囲において使用されるとき冠詞「ある（ａ、ａｎ）」は、概して、別途指定されない限り、又は文脈から単数形が対象になることが明らかでない限り、「１つ又は複数」を意味するように解釈され得る。また、Ａ及びＢ等の少なくとも１つとは、概して、Ａ又はＢか、ＡとＢの双方を意味する。
【００６３】
本開示は、１つ又は複数の実装態様に関して図示及び説明されているが、当業者には、本明細書及び添付の図面を読み理解することに基づいて、等価な代替及び変更が着想されよう。本開示は、すべてのそのような変更及び代替を含むものであり、特許請求の範囲の記載範囲によってのみ限定される。特に上述の構成要素（例えば要素、リソース等）によって実行される様々な機能に関して、そのような構成要素を説明するのに使用される用語は、別途指示されない限り、本開示の例示的な実装態様における機能を実行する開示された構造に構造的に等価でないとしても、説明された構成要素の指定された機能を実行する任意の構成要素に対応する（すなわち機能的に等価である）ことが意図される。加えて、本開示の特定の特徴は、いくつかの実施態様のうちの１つのみに関して開示されていることがあるが、そのような特徴を、任意の所与の又は特定の用途に望まれ、有利であり得るように、他の実施態様の１つ又は複数の他の特徴と組み合わせてもよい。さらに、「含む（ｉｎｃｌｕｄｅ）」、「有する（ｈａｖｉｎｇ）」、「有する（ｈａｓ）」、「有する、用いる（ｗｉｔｈ）」という用語又はそれらの変化形が詳細な説明又は特許請求の範囲のいずれかにおいて使用されている限りにおいて、そのような用語は、「備える（ｃｏｍｐｒｉｓｉｎｇ）」という用語と同様に包含的であることが意図されている。
【図１】
0005872699.tif 000002
【図２】
0005872699.tif 000003
【図３】
0005872699.tif 000004
【図４】
0005872699.tif 000005
【図５】
0005872699.tif 000006
【図６】
0005872699.tif 000007
【図７】
0005872699.tif 000008
【図８】
0005872699.tif 000009
【図９】
0005872699.tif 000010
【図１０】
0005872699.tif 000011
【図１１】
0005872699.tif 000012
【図１２】
0005872699.tif 000013