(58)【調査した分野】(Int.Cl.,DB名)
前記アプリケーションが前記サスペンド状態から実行状態におかれるべきであるとの通知を受信すると、前記アプリケーション状態内の前記タイマ再設定データを、前記タイマのリストに関連付けられる1つ又は複数のタイマに適用するステップを含む、請求項1に記載の方法。
前記アプリケーションが前記サスペンド状態にある間、前記アプリケーションに関連付けられるアプリケーションメッセージキューであって、前記アプリケーションに対するシステムメッセージを記憶するように構成されるアプリケーションメッセージキューを保持し、
前記アプリケーションが前記サスペンド状態にある間、前記アプリケーションメッセージキューに向けられた第1のシステムメッセージが、前記アプリケーションメッセージキュー内の第2のシステムメッセージに対応するか否かを判断し、
前記第1のシステムメッセージが前記第2のシステムメッセージに対応すると判断すると、前記第1のシステムメッセージと前記第2のシステムメッセージとのうちの少なくとも一方を修正する
ように構成されるメッセージ管理構成要素を備える、請求項7に記載のシステム。
【発明を実施するための形態】
【0014】
以下では、特許請求に係る主題が図面を参照して説明されるが、図面において、同様の参照符号は概して全体を通じて同様の要素を参照するのに使用される。以下の記載では、説明のために、特許請求に係る主題の完全な理解を提供するよう多数の具体的な詳細を説明する。しかしながら、特許請求に係る主題は、これらの具体的な詳細なしに実施されることができることが明らかである。他の事例において、特許請求に係る主題の説明を容易にするために、構造及びデバイスがブロック図の形式で図示されている。
【0015】
アプリケーションに関連付けられる1つ又は複数のプロセスをサスペンドし、1つ又は複数のウェイクポリシーに基づいて、サスペンドされたプロセスを再開すべきか否かを判断し、アプリケーションのアプリケーション状態を管理する1つ又は複数のシステム及び/又は技法が本明細書において提供される。具体的には、アプリケーションに関連付けられる1つ又は複数のプロセスがサスペンドされることがある(例えばアプリケーションに関連付けられるプロセスを論理コンテナ階層に基づいて識別し、グループとしてサスペンドすることがある)。サスペンドされたプロセスは、サスペンドされたプロセスを再開して実行状態にする理由を示すウェイクポリシーのセットを保持していることに基づいて再開され得る(例えば、要求側アプリケーションからサスペンドされているプロセスへの閾値数のプロセス間通信呼が受信される場合、そのプロセス間通信呼を処理するためにサスペンドされているプロセスが実行状態におかれる)。アプリケーションがサスペンドされている間、アプリケーション状態情報が、サスペンドされているアプリケーションに関連付けられるタイマから導出され、タイマは、サスペンドされているアプリケーションが再開されて実行状態になると、アプリケーション状態情報を使用して再設定され得る。加えて、アプリケーションがサスペンドされている間、アプリケーションメッセージキューが管理され、それによって、アプリケーションキューから不適切な及び/又は陳腐化したメッセージが修正及び/又は削除される。このように、実行状態に入ると、アプリケーションは、関連するシステムメッセージを処理することができ、その結果アプリケーションが現在のアプリケーション状態におかれることができる。
【0016】
アプリケーションに関連付けられる1つ又は複数のプロセスをサスペンドする一実施形態が、
図1の例示的な方法100によって図示されている。102において、方法が開始する。104において、アプリケーションが非アクティブであるとの通知が受信され得る(例えばアプリケーションはバックグラウンド状態に遷移していることがあり、アプリケーションがユーザに可視でないこと(例えばモニタ上のフォアグランドに提供されている異なるアプリケーションの後ろにあること)があり、ユーザがある期間の間アプリケーションと対話していないことがある等)。106において、アプリケーションに関連付けられる1つ又は複数のプロセスが識別され得る。一例において、論理コンテナ階層(例えば
図3の論理コンテナ階層308)を参照して、いずれのプロセスがアプリケーションに関連付けられているかを判断することができる。例えばアプリケーションが、論理コンテナ階層内のルート論理コンテナに割り当てられ、アプリケーションに関連付けられているプロセスが、ルート論理コンテナに関連付けられた(例えばその中にネストされた)論理コンテナに割り当てられる可能性がある。
【0017】
1つ又は複数のプロセスを識別する一例において、第1のプロセスが、ルート論理コンテナに関連付けられた(例えばその中にネストされた)第1の論理コンテナに割り当てられるとの判断に基づいて、アプリケーションに関連付けられているものとして判断されることがある(例えば第1のプロセスは、アプリケーションの直接の子プロセスであり得る)。別の例において、第2のプロセスが、ルート論理コンテナに関連付けられた第1の論理コンテナに割り当てられるとの判断に基づいて、その第2のプロセスは、アプリケーションに関連付けられているものとして判断されることがある(例えば第2のプロセスは、アプリケーションの直接の子プロセスであり得る)。別の例において、第2のプロセスが、第1の論理コンテナに関連付けられている第2の論理コンテナに割り当てられているという判断に基づいて、第2のプロセスは、アプリケーションに関連付けられているものとして判断されることがある(例えば第2のプロセスは、第1のプロセスの直接の子プロセス及び/又はアプリケーションの間接的な子プロセスであり得る)。このように、アプリケーションに関連付けられる1つ又は複数のプロセスが判断され得る。
【0018】
108において、1つ又は複数のプロセスがサスペンド状態におかれる。例えば、サスペンドされているプロセスは、プロセッサが実行するのに不適切であるとしてマークされてもよく、その結果、サスペンドされているプロセスを含むスレッドは、スレッドスケジューラによって実行用の候補とみなされないことがある。一例において、アプリケーション、及び/又は1つ又は複数のプロセスに関連付けられている他のアプリケーションに、サスペンドを通知してもよく、これにより、そのようなアプリケーションに、状態情報を保存する機会を与えてもよい(例えばソーシャルネットワークアプリケーションは、ユーザによって閲覧されている現在のプロファイルに関連付けられる状態情報を保存することができ、再開されると、ソーシャルネットワークアプリケーションは現在のプロファイルをユーザに提示することができる)。サスペンドされているプロセスに関連付けられるメモリ内容が、保存済みのメモリ内容として記憶デバイスに保存され得る。このように、保存済みのメモリ内容をメモリに返すことができ、それによって、サスペンドされているプロセスが迅速に実行を再開することが可能になる。
【0019】
新たに作成されたプロセス(例えば1つ又は複数のプロセスがサスペンドされた後に作成されたプロセス)は、この新たに作成されたプロセスが、サスペンドされているプロセス及び/又は非アクティブアプリケーションのうちの1つ又は複数に関連付けられるという判断に基づいて、サスペンド状態におかれてもよいことが認識される。例えば、新たに作成されたプロセスが、非アクティブアプリケーションのルート論理コンテナに関連付けられている論理コンテナに割り当てられている、という判断に基づいて、その新たに作成されたプロセスが非アクティブアプリケーションに関連付けられるとして判断されてもよい。このようにして、新たに作成されたプロセスがサスペンド状態におかれることがある。110において、方法は終了する。
【0020】
アプリケーションに関連付けられる1つ又は複数のプロセスをサスペンドする一実施形態が、
図2の1つの例示的な方法200によって図示されている。202において、方法が開始する。204において、アプリケーションが非アクティブであるとの通知が受信され得る。206において、論理コンテナ階層を繰り返しトラバースして、アプリケーションに関連付けられている1つ又は複数のプロセスを識別することができる。一例において、論理コンテナ階層内において、アプリケーションに割り当てられたルート論理コンテナが識別されることがある。第1のプロセスがルート論理コンテナに関連付けられた(例えばその中にネストされた)第1の論理コンテナに割り当てられる、との判断に基づいて、その第1のプロセスがアプリケーションに関連付けられるとして判断されることがある。別の例において、第2のプロセスが、ルート論理コンテナに関連付けられた第1の論理コンテナに割り当てられる、との判断に基づいて、該第2のアプリケーションはアプリケーションに関連付けられているものとして判断されることがある(例えば第2のプロセスは、アプリケーションの直接の子プロセスであり得る)。別の例において、第2のプロセスは、第1の論理コンテナに関連付けられた第2の論理コンテナに割り当てられるとの判断に基づいて、アプリケーションに関連付けられているものとして判断されることがある(例えば第2のプロセスは、第1のプロセスの直接の子プロセス及び/又はアプリケーションの間接的な子プロセスであり得る)。このように、アプリケーションに関連付けられた1つ又は複数のプロセスが識別され得る。208において、1つ又は複数のプロセスがサスペンド状態におかれる。このように、非アクティブアプリケーションに関連付けられたプロセス及び/又は新たに作成されたプロセスがサスペンドされ得る。210において、方法は終了する。
【0021】
図3は、アプリケーションに関連付けられる1つ又は複数のプロセスをサスペンドするように構成されたシステム300の例を図示している。システム300は、サスペンド構成要素322を備える。サスペンド構成要素322は、アプリケーションが非アクティブであるとの通知を受信するように構成され得る。例えば、テキストエディタアプリケーション302及びスプレッドシートアプリケーション304が、コンピューティング環境内でホストされ得る。ユーザは、テキストエディタアプリケーション302からスプレッドシートアプリケーション304へと切り替えることがあり、その結果、テキストエディタアプリケーション302がバックグラウンド状態に遷移することになり得る。このように、サスペンド構成要素322は、テキストエディタの非アクティブ通知306を受信し得る。
【0022】
サスペンド構成要素322は、論理コンテナ階層308を繰り返しトラバースして、アプリケーションに関連付けられた1つ又は複数のプロセスを識別するように構成される。一例において、テキストエディタアプリケーション302は、テキストエディタルート論理コンテナ310に割り当てられたテキストエディタプロセス312に関連付けられることがある。実行している間、テキストエディタアプリケーション302は、テキストエディタ印刷プロセス314及び/又はテキストエディタ保存プロセス316のような1つ又は複数の子プロセスを作成していることがあり、これらの子プロセスは、テキストエディタ論理コンテナ310に割り当てられることがある。加えて、テキストエディタアプリケーション302は、スペルチェッカ論理コンテナ318に割り当てられたスペルチェッカプロセス320に関連付けられるスペルチェック機能を呼び出していることがある。スペルチェッカプロセス320はテキストエディタアプリケーション302に関連付けられるので、スペルチェッカ論理コンテナ318は、テキストエディタルート論理コンテナ310内にネストされることがある。したがって、サスペンド構成要素322は、論理コンテナ階層308をトラバースすることに基づいて、テキストエディタ印刷プロセス314、テキストエディタ保存プロセス316、及び/又はスペルチェッカプロセス320がテキストエディタアプリケーション302に関連付けられ得ると判断することができる。このように、サスペンド構成要素322は、テキストエディタアプリケーション302が非アクティブであることに基づいて、テキストエディタプロセス312、テキストエディタ印刷プロセス314、テキストエディタ保存プロセス316、スペルチェッカプロセス320及び/又はテキストエディタアプリケーション302に関連付けられた新たに作成されたプロセスをサスペンドすることがあり(324)、上記プロセス及び/又はアプリケーションはプロセッサ実行リソース及び/又は他の電力消費リソースを使用するには不適格であるので、結果として電力消費が改善され得る。
【0023】
サスペンドされているプロセスを再開すべきか否かを、ウェイクポリシーのセットに基づいて判断する一実施形態が、
図4の例示的な方法400によって図示されている。402において方法が開始する。404において、サスペンドされているプロセスに関連付けられるウェイクポリシーのセットが保持され得る。ウェイクポリシーは、サスペンドされているプロセスが再開して実行状態になる理由を示すことができる。一例において、ウェイクポリシーは、要求側アプリケーションからサスペンドされているプロセスへのプロセス間通信呼に対応することがある(例えばスプレッドシートアプリケーションは、テキストエディタアプリケーションからのテキストの「切り取り」を要求して、「貼り付け」動作を満たすことを試み、プレゼンテーションアプリケーションは、その機能及び/又はデータがテキストエディタアプリケーションによって提供され得る「貼り付けられた」テキストオブジェクトを含むことがある等)。別の例において、ウェイクポリシーは、サスペンドされているアプリケーションに関連付けられるユーザ入力に対応してもよい(例えばユーザは、サスペンドされているテキストエディタアプリケーションと対話することを試みることがある)。別の例において、構成要素(例えばハードウェア構成要素、ソフトウェア構成要素、リモート第三者構成要素、ウェブ構成要素等)が、サスペンドされているプロセスへのアクセスを要求してもよい。別の例において、ウェイクポリシーは、サスペンドされているプロセスに関連付けられるサスペンドされているアプリケーションのバックグラウンド状態からフォアグランド状態への遷移に対応してもよい。このように、ウェイクポリシーのセットは、サスペンドされているプロセスを再開する様々なイベント/理由に関連付けられる、様々なウェイクポリシーを含むことができる。
【0024】
カウンタがウェイクポリシーに関連付けられることがある。カウンタは、サスペンドされているプロセスについて現在係属中のウェイクポリシーに関連付けられるウェイク通知(例えば、ウェイクポリシーによって指定されるイベント/理由のインスタンス)の数を示すことがある。ウェイク通知は、プロセス間通信呼の通知のような、ウェイクポリシーによって指定されるイベント/理由の通知とすることができる。カウンタは、インクリメントされるか(例えばウェイク通知に関連付けられたイベントが係属中の場合がある)、及び/又はデクリメントされる(例えばウェイク通知に関連付けられたイベントが完了する場合ばある)。様々なウェイクポリシー及び対応するカウンタが、ウェイクポリシーのセット内に保持され得ることを認識されたい。例えばユーザ入力ウェイクポリシーに対する第1のカウンタは、ユーザがサスペンドされているテキストエディタとの対話を試みたという第1のウェイク通知を受信すると、1にインクリメントされてもよい。ユーザ入力ウェイクポリシーに対する第1のカウンタは、ユーザがサスペンドされているテキストエディタとの対話を2度試みたという第2のウェイク通知を受信すると、2にインクリメントされてもよい。プロセス間通信ウェイクポリシーに対する第2のカウンタは、スプレッドシートアプリケーションが、サスペンドされているテキストエディタとの通信を試みたという第3のウェイク通知を受信すると、1にインクリメントされてもよい。第2のカウンタは、スプレッドシートアプリケーションが、サスペンドされているテキストエディタとの通信をもう望まない(例えばユーザがスプレッドシートアプリケーションをシャットダウンする)と通知されると、0にデクリメントされてもよい。このように、ウェイクポリシーのセット内のウェイクポリシーに関連付けられるカウンタが保持され得る。
【0025】
一例において、ウェイク通知は、プロセスの実行状態/サスペンド状態に照らしてカウンタがどのように遷移されるかに基づいて、フィルタリングされてもよい(例えば無視、削除、及び/又は発行を回避される)。一例において、プロセスが実行状態にあると判断されると、カウンタを値0から値1へと遷移させるウェイク通知がフィルタリングされ得る(例えば、すでに実行中のプロセスを実行状態におくウェイクポリシーをトリガするウェイク通知は、実行中のプロセスがすでに実行中であるため、フィルタリングされ得る)。別の例において、プロセスがサスペンド状態にあると判断されると、カウンタを値1から値0へと遷移させるウェイク通知がフィルタリングされ得る(例えば、すでにサスペンドされているプロセスをサスペンド状態におくウェイクポリシーをトリガするウェイク通知は、サスペンドされているプロセスがすでにサスペンドされているため、フィルタリングされ得る)。
【0026】
406において、サスペンドされているプロセスに関連付けられたウェイクポリシーのセットを評価して、サスペンドされているプロセスを実行状態におくか、又はサスペンドされているプロセスをサスペンド状態のままにするかを決定してもよい。一例において、サスペンドされているプロセスは、ウェイクポリシーに関連付けられている少なくとも1つのカウンタが閾値を超える値を含む(例えば少なくとも1つのカウンタが0よりも大きい値を有する)との判断に基づいて、実行状態におかれてもよい。閾値を超える値を含むカウンタがない場合、サスペンドされているプロセスはサスペンド状態のままになり得る。別の例において、1つ又は複数のカウンタの値が一緒に合計されて、合計値が作成され得る。例えば、ユーザ入力ウェイクポリシーに関連付けられる第1のカウンタが2の値を有し、かつリモート第三者プロセス間通信呼ウェイクポリシーの第2のカウンタが2の値を有することに基づいて、合計値4が決定される。合計値4は、ウェイクポリシーに関連付けられた重みに基づいて調整されてもよい。例えばユーザ入力ウェイクポリシーは、サスペンドされているプロセスに関連付けられたアプリケーションがユーザに対して高応答性であるように、ユーザ入力に応答して、サスペンドされているプロセスを再開する/起こすことが望ましい場合があるので、(例えば2の値に2倍の重み修飾子を適用することに基づいて)4の重み値を有する可能性がある。例えばリモート第三者プロセス間通信ポリシーは、重大でない及び/又は望ましくない理由からサスペンドされているプロセスとの「ノイズの多い」通信を試みていることがあるリモートの第三者への応答性を下げるよう調整することが望ましい場合があるので、(例えば2の値に0.5倍の重み修飾子を適用することに基づいて)1の重み値を有する可能性がある。サスペンドされているプロセスは、合計値が閾値を超える(例えば、合計値5は閾値3を超える)との判断に基づいて、実行状態におかれることがある。
【0027】
一例において、ウェイクポリシーのセットは、論理コンテナ階層内のサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられてもよいことが認識される。したがって、サスペンドされているプロセスが実行状態におかれる場合、サスペンドされているプロセスに関連付けられる1つ又は複数のプロセス及び/又はアプリケーションを、実行状態においてもよい。例えばテキストエディタプロセスが実行状態におかれることがある。テキストエディタプロセスが、テキストエディタルート論理コンテナに割り当てられることがある。スペルチェッカプロセスが、テキストエディタルート論理コンテナに関連付けられる(例えばその中にネストされる)論理コンテナに割り当てられるとの判断に基づいて、スペルチェッカプロセスが実行状態におかれることもある。このように、1つ又は複数の関連プロセスを再開して実行状態にすることができる。一例において、再開されたプロセスに関連付けられる保存済みのメモリ内容がメモリにリストアされ、それによって、そのようなプロセスは、電力を節約しつつ、応答性よく即座に実行を再開することができる。
【0028】
実行プロセスとして実行状態におかれると、実行プロセスをサスペンド状態に戻すべきか否か、及び/又はいつ戻すべきかについての判断を行うことができる。一例において、ウェイクポリシーのセットの現在の状態が評価されることがある(例えばカウンタ値及び/又はカウンタ値の合計値が、閾値を上回っていない場合、実行プロセスはその後サスペンド状態に戻されることがある)。別の例において、実行プロセスを実行状態においたウェイク通知の完了から経過した時間が評価されることがある。例えば、プレゼンテーションアプリケーションは、機能及び/又はデータがサスペンドされているテキストエディタアプリケーションによって提供される「貼り付けされた」テキストオブジェクトを含むことがある。プレゼンテーションアプリケーションから、「貼り付けされた」テキストオブジェクトに関するサスペンドされているテキストエディタアプリケーションへのプロセス間通信呼が行われる。通信呼のウェイク通知が受信され、プロセス間通信呼を成立させるように、サスペンドされているテキストエディタアプリケーションが実行状態におかれる。プレゼンテーションアプリケーションがその後、「貼り付けされた」テキストオブジェクトに関するテキストエディタアプリケーションへのプロセス間通信呼を行うことがあるので、(例えばテキストエディタアプリケーションを直ぐにサスペンド状態に戻すのとは対照的に)テキストエディタアプリケーションが一定期間にわたって実行状態のままにすることを可能にすることは有利なことある。408において方法は終了する。
【0029】
サスペンドされているプロセスを再開すべきか否かをウェイクポリシーのセットに基づいて判断する一実施形態が、
図5の例示的な方法500によって示されている。502において方法が開始する。504において、論理コンテナ階層内のサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられるウェイクポリシーが保持され得る。ウェイクポリシーは、サスペンドされているプロセスを再開して実行状態にする理由を示すことができる。ウェイクポリシーは、サスペンドされているプロセスについて現在係属中の、ウェイクポリシーに関連付けられたウェイク通知の数を示すカウンタを含み得る。ウェイク通知は、プロセス間通信呼の通知など、ウェイクポリシーによって指定される、サスペンドされているプロセスを再開するイベント/理由の通知とすることができる。カウンタは、ウェイクポリシーに関連付けられたウェイク通知を受信したことに基づいて、インクリメントされることがある(例えば、ユーザ入力ウェイクポリシーに関連付けられるカウンタは、ユーザが、サスペンドされているプロセスに関連付けられたサスペンドされているアプリケーションとの対話を試みたことを示すウェイク通知を受信したことに基づいて、インクリメントされることがある)。カウンタは、ウェイク通知が現在係属中でないとの通知を受信したことに基づいて、デクリメントされることがある(例えばカウンタは、サスペンドされているアプリケーションをホストするコンピューティングデバイスからユーザがログオフしたとの通知に基づいて、デクリメントされることがある)。
【0030】
一例では、506において、カウンタの値が閾値を上回ると判断されると、サスペンドされているプロセスが実行状態におかれる。一例において、論理コンテナ階層をトラバースして、サスペンドされているプロセスに関連付けられる1つ又は複数の追加のサスペンドされているプロセスを、その1つ又は複数の追加のサスペンドされているプロセスが、サスペンドされているプロセスの論理コンテナに関連付けられる(例えばその中にネストされる)論理コンテナに割り当てられているという判断に基づいて、識別してもよい。このように、1つ又は複数の追加のサスペンドされているプロセスを実行状態においてもよい。別の例において、508において、カウンタの値が閾値を下回ると判断されると、サスペンドされているプロセスはサスペンド状態のままにされ得る。このように、サスペンドされているプロセスは、ウェイクポリシーに基づいて、実行状態におかれるか又はサスペンド状態のままにされる。510において方法は終了する。
【0031】
図6は、サスペンドされているプロセスを再開するか否かをウェイクポリシーのセットに基づいて判断するよう構成されたシステム600の例を図示している。システム600は、ウェイク構成要素624を備えることができる。ウェイク構成要素624は、ウェイクポリシー(例えば、プロセス間通信のウェイクポリシー628、ユーザ入力のウェイクポリシー630、バックグラウンドからフォアグランドのウェイクポリシー632、及び/又は他のウェイクポリシーのようなウェイクポリシーのセット626)を保持するように構成される。ウェイクポリシーは、論理コンテナ階層610内のサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられる。例えばウェイクポリシーのセット626を、サスペンドされているテキストエディタアプリケーション602のサスペンドされているテキストエディタプロセス614に関連付けられたテキストエディタ論理コンテナ612に関連付けることができる。一例において、サスペンドされているテキストエディタ印刷プロセス616、サスペンドされているテキストエディタ保存プロセス618、及び/又はサスペンドされているスペルチェッカプロセス622は、これらのプロセスが関連し得るため(例えばサスペンドされているスペルチェッカプロセス622が、テキストエディタ論理コンテナ612内にネストされるスペルチェッカ論理コンテナ620に割り当てられる)、テキストエディタプロセス614のサスペンドに基づいてサスペンドされていることがある。
【0032】
プロセス間通信ウェイクポリシー628のようなウェイクポリシーを、サスペンドされているプロセスのためのウェイク通知であって、ウェイクポリシーに関連付けられた現在係属中のウェイク通知の数を示すカウンタに関連付けることができる。ウェイク構成要素624は、ウェイクポリシーに関連付けられるウェイク通知を受信したことに基づいてカウンタをインクリメントし、及び/又はウェイク通知が現在係属中でないとの通知を受信したことに基づいてカウンタをデクリメントするように構成される。例えばウェイク通知608が受信され得る。ウェイク通知608は、スプレッドシートアプリケーション604が、貼り付けされたテキストオブジェクト606に関連するサスペンドされているテキストエディタアプリケーション602にプロセス間通信呼を送ったことを示すことがある(例えば、貼り付けされたテキストオブジェクト606は、サスペンドされたテキストエディタアプリケーション602から機能及び/又はデータを導出することができ、したがって、スプレッドシートアプリケーション604は、サスペンドされているテキストエディタアプリケーション602にそのような機能及び/又はデータを要求する)。ウェイク構成要素624は、ウェイク通知608に基づいて、プロセス間通信ウェイクポリシー628に関連付けられるカウンタを1にインクリメントすることができる。
【0033】
ウェイク構成要素624は、カウンタの値が閾値を上回るという判断に基づいて、サスペンドされているプロセスを実行状態におくように構成され、そうでなければ、ウェイク構成要素624は、サスペンドされているプロセスをサスペンド状態のままにすることができる。例えばウェイク構成要素624は、プロセス間通信ウェイクポリシー628のカウンタが0よりも大きい1の値を含むことに基づいて、サスペンドされているテキストエディタプロセス614を実行状態におくことができる。ウェイク構成要素624は、論理コンテナ階層610をトラバースして、再開されて実行状態になるサスペンドされているテキストエディタプロセス614に関連付けられる、1つ又は複数の追加のサスペンドされているプロセスを識別することができる。例えば、サスペンドされているテキストエディタ印刷プロセス616、サスペンドされているテキストエディタ保存プロセス618、及び/又はサスペンドされているスペルチェッカプロセス622は、そのようなプロセスが、テキストエディタ論理コンテナ612に割り当てられる、及び/又はスペルチェッカ論理コンテナ620のようなテキストエディタ論理コンテナ612に関連付けられる(例えばその中にネストされる)論理コンテナに割り当てられるという判断に基づいて識別され得る。このように、ウェイク構成要素624は、サスペンドされているテキストエディタプロセス614、サスペンドされているテキストエディタ印刷プロセス616、サスペンドされているテキストエディタ保存プロセス618、及び/又はサスペンドされているスペルチェッカプロセス622を実行状態におくことができ(634)、それによって、テキストエディタアプリケーション602は、スプレッドシートアプリケーション604からのプロセス間通信呼に応答することができる。一例において、ウェイク構成要素624は、再開されるプロセスに関連付けられた保存済みのメモリ内容をメモリにおいて、テキストエディタアプリケーション602の応答性を改善することができる。
【0034】
アプリケーションのアプリケーション状態を管理する一実施形態が、
図7の例示的な方法700によって図示されている。702において方法が開始する。704において、アプリケーションに関連付けられたタイマのリストが保持される(例えばアプリケーションに関連付けられたプロセスの1つ又は複数のタイマが保持される)。すなわち、アプリケーションに関連付けられるプロセスは、相対的タイマ(例えばテキストエディタ保存プロセスのためにテキストエディタアプリケーションによって20秒に設定されるタイムアウト)、絶対的タイマ(例えばカレンダーアプリケーションによって2011/9/15のAM5:00に設定されるタイムアウト)、及び/又は他のタイプのタイマのような1つ又は複数のタイマに関連付けられる。タイマの一例において、テキストエディタアプリケーションは、テキストエディタ保存プロセスが一般的に、エラーが発生していない限り完了するのに20秒より多くはかからないため、テキストエディタ保存プロセスについて20秒間の相対的タイマを設定してもよい。タイマの別の例において、カレンダーアプリケーションは、ユーザに2011/9/15のAM6:00に目覚ましの通知を提供するリマインダとして、2011/9/15のAM5:00の絶対的タイマを設定してもよい。
【0035】
一例において、これらのタイマの1つ又は複数を、論理コンテナ階層内の、アプリケーションに割り当てられるルート論理コンテナに関連付けること、及び/又はアプリケーションに関連付けられるプロセスに割り当てられる1つ又は複数の論理コンテナに関連付けることができる。例えば、第1のプロセスが、ルート論理コンテナに関連付けられる(例えばその中にネストされる)第1の論理コンテナに割り当てられるとの判断に基づいて、アプリケーションの第1のプロセスに関連付けられる第1のタイマを保持することができる。第2のプロセスが、ルート論理コンテナ及び/又は第1の論理コンテナに関連付けられる第2の論理コンテナに割り当てられるとの判断に基づいて、アプリケーションの第2のプロセスに関連付けられる第2のタイマを保持することができる。このように、アプリケーションのプロセスに関連付けられるタイマのリストを保持することができる。
【0036】
706において、アプリケーションをサスペンド状態におくべきとの通知を受信すると、タイマのリストから導出されるタイマ再設定データを含むアプリケーション状態情報が作成される。一例において、絶対的タイマに関連付けられる絶対的タイマ再設定データがアプリケーション状態情報内に記憶されることがある。絶対的タイマ再設定データは、絶対的タイマの元の満了時刻を含むことができる(例えば、カレンダーアプリケーションは、プロセス及び/又はアプリケーションがサスペンド状態におかれていることに起因してその時刻を過ぎたか否かにかかわらず、2011/9/15のAM5:00に通知をしようとする)。別の例では、相対的タイマに関連付けられる相対的タイマ再設定データがアプリケーション状態情報内に記憶されることがある(例えば、テキストエディタアプリケーションは、テキストエディタ保存プロセスが実行状態の間に20秒以内に完了しない場合にタイムアウト通知をしようとする)。相対的タイマ再設定データは、満了までの時間値(例えば、相対的タイマがサスペンドされたときから相対的タイマの元の満了時刻までの期間)を含むことができる。相対的タイマ再設定データは、例えば元の満了時刻とは異なる満了までの時間値を含むことがあるが、これは、テキストエディタアプリケーションが、実行状態の間にテキストエディタ保存プロセスが完了するのに20秒より長くかかったか否かに関係する可能性があり(例えば20秒よりも長くかかることは、致命的なエラーが発生したことを示すことがある)、テキストエディタ保存プロセスがサスペンドしたことに起因する相対的タイマの満了は、テキストエディタアプリケーションが関係する致命的なタイムアウトを表していない可能性があるので、テキストエディタ保存プロセスのサスペンドは相対的タイマを知らせることがある。このように、アプリケーション状態情報が作成され得る。
【0037】
アプリケーションがサスペンド状態から実行状態におかれるべきとの通知を受信すると、アプリケーション状態情報内のタイマ再設定データを、タイマのリストに関連付けられる1つ又は複数のタイマに適用することができる。一例において、絶対的タイマ再設定データを絶対的タイマに適用して、再設定された絶対的タイマを作成してもよい。再設定された絶対的タイマは、絶対的タイマの元の満了時刻を含んでもよい。元の満了時刻が満了した場合、満了の通知をアプリケーションに提供することができる。別の例において、相対的タイマ再設定データを相対的タイマに適用して、再設定された相対的タイマを作成してもよい。再設定された相対的タイマは、満了までの時間値を現在時刻に適用することから導出される、再設定された満了タイマを含んでもよい。このように、アプリケーション及び/又はアプリケーションに関連付けられたプロセスを、タイマに関して現在のアプリケーション状態におくことができる。708において、方法は終了する。
【0038】
アプリケーションのアプリケーション状態を管理する一実施形態が、
図8の例示的な方法800によって示される。802において、方法が開始する。アプリケーションを、アプリケーションメッセージキューに関連付けることができる。アプリケーションメッセージキューは、アプリケーションに対するシステムメッセージを記憶するように構成されてよい。このように、アプリケーションは、アプリケーションメッセージキューを通じてシステムメッセージを受信することができる(例えば、アプリケーションは実行状態にある間にシステムメッセージをキューから取り出すことができる)。システムメッセージは、システム設定における変化のような、アプリケーション状態に関係する様々な情報に対応することがある。一例において、ユーザがタブレットデバイスを回転させることがあり、これによって、ビュー方向が横長ビューモードから縦長ビューモードに変化し得る。タブレットデバイスのオペレーティングシステムは、現在のビューモードが縦長に設定されたことを示すシステムメッセージを、アプリケーションメッセージキューに入れてよい。このように、アプリケーションはシステムメッセージをキューから取り出して、アプリケーション自体をタブレットデバイスの現在の状態に適合するよう縦長モードにしてもよい。システムメッセージは、ユーザインタフェースの色、言語設定、入力デバイス情報等のような様々な他の情報を含んでよい。
【0039】
804において、アプリケーションがサスペンド状態にある間、アプリケーションに関連付けられたアプリケーションメッセージキューが保持され得る。すなわち、アプリケーションメッセージキューは、一般的に、アプリケーションがサスペンド状態にあるか及び/又は実行状態にあるかにかかわらず、システムメッセージを受信することがある(例えば、テキストエディタアプリケーションがサスペンドされている間、ユーザがタブレットデバイスを複数回回転させることがあり、したがって、オペレーティングシステムは現在のビューモードに対応する複数のシステムメッセージをキューに入れることがある)。不都合なことに、アプリケーションがサスペンド状態にある間に、複数の対応するシステムメッセージが、アプリケーションメッセージキューに入れられることがあり、1つ又は複数のメッセージが不適格及び/又は陳腐になることがある。例えば、テキストエディタアプリケーションがサスペンドされている間、4つのシステムメッセージが、経時的にアプリケーションメッセージキューに入れられることがある。ユーザはタブレットデバイスのシステム言語設定をドイツ語に変更してもよく、したがって、言語=ドイツ語というシステムメッセージが、アプリケーションシステムキューに入れられる。次に、ユーザはタブレットデバイスを横長モードに回転させてもよく、したがって、ビューモード=横長というメッセージがアプリケーションシステムキューに入れられる。ユーザがその後、タブレットデバイスのシステム言語設定を英語に変更してもよく、したがって、言語=英語というシステムメッセージがアプリケーションシステムキューに入れられる。最後に、ユーザはタブレットデバイスを縦長モードに回転させてもよく、したがって、ビューモード=縦長というメッセージがアプリケーションシステムキューに入れられる。このように、アプリケーションメッセージキューは、言語及びビューモードが他の値に変更されたことにより、言語=ドイツ語及びビューモード=横長というシステムメッセージのような不適切な及び/又は陳腐化したシステムメッセージを含むことがある。したがって、アプリケーションメッセージキューは、不適切な及び/又は陳腐化したメッセージを削除及び/又は修正すように維持され得る。
【0040】
一例において、アプリケーションがサスペンド状態にある間に、アプリケーションメッセージキューに向けられた第1のシステムメッセージが受信されることがある。第1のシステムメッセージがアプリケーションメッセージキュー内の第2のシステムメッセージに対応するか否かについて判断が行われ得る(例えば、第1のシステムメッセージが言語システムメッセージに対応する場合、アプリケーションメッセージキューをトラバースして、言語システムメッセージに対応する1つ又は複数のシステムメッセージを識別してもよい)。第1のシステムメッセージが第2のシステムメッセージに対応すると判断すると、第1のシステムメッセージ及び/又は第2のシステムメッセージが削除及び/又は修正され得る(例えば、より新しい及び/又はより関連性のある第1のシステムメッセージを保持し、第2のシステムメッセージを削除してもよい)。例えば関連性ランク付けを第1のシステムメッセージ及び第2のシステムメッセージに割り当てて、どちらのシステムメッセージを修正及び/又は削除すべきかを判断してもよい。806において、方法は終了する。
【0041】
図9は、タイマデータ及び/又はシステムメッセージデータのような、アプリケーションのアプリケーション状態を管理するよう構成されるシステム900の一例を示す。システム900は、アプリケーション状態マネージャ910を備えることができる。アプリケーション状態マネージャ910は、アプリケーションに関連付けられるタイマのリスト904を保持するように構成されることがある。例えばタイマのリスト904は、10分後にタイムアウトするように設定されたスペルチェッカの相対的タイマ906、2011/8/12のPM3:00にタイムアウトするように設定されたテキストエディタの絶対的タイマ908、及び/又は他のタイマを含むことがある。アプリケーション状態マネージャ910は、アプリケーションがサスペンド状態におかれるべきであるという通知902を受信することがある。例えば通知902は、テキストエディタアプリケーション及び/又はスペルチェッカアプリケーションがサスペンド状態におかれるべきであるということを示してもよい。
【0042】
通知902を受信すると、アプリケーション状態マネージャ910は、タイマのリスト904から導出されるタイマ再設定データを含むアプリケーション状態情報912を作成することができる。例えば、スペルチェッカの相対的タイマ906のための相対的タイマ再設定データ914が作成されることがある。相対的タイマ再設定データ914は、スペルチェッカアプリケーションがサスペンドされた時間までに10分間のうち2分間が経過し、したがって10分間の相対的タイマの満了まで8分間残っているため、8分間という満了までの時間値を含む可能性がある。テキストエディタの絶対的タイマ908のための絶対的タイマ再設定データ916が作成されることもある。絶対的タイマ再設定データ916は、2011/8/12 PM3:00というの元の満了時刻を含み得る。このようにして、アプリケーション状態情報912が作成され得る。
【0043】
テキストエディタアプリケーション及び/又はスペルチェッカアプリケーションが実行状態におかれるべきであるという通知を受信すると、アプリケーション状態情報912内の相対的タイマ再設定データ914及び/又は絶対的タイマ再設定データ916が、スペルチェッカの相対的タイマ906及び/又はテキストエディタの絶対的タイマ908に適用されてよい。このように、8分間という再設定された相対的タイマが作成され、2011/8/12 PM3:00という再設定された絶対的タイマが作成され得る。
【0044】
図10は、システムメッセージデータのような、アプリケーションのアプリケーション状態を管理するように構成されるシステム1000の一例を示す。システム1000は、メッセージ管理構成要素1006を備えることができる。メッセージ管理構成要素1006は、アプリケーションがサスペンド状態にある間、アプリケーションに関連付けられたアプリケーションメッセージキュー1004を保持するように構成され得る。アプリケーションメッセージキュー1004は、アプリケーションのためのシステムメッセージを記憶するように構成されてよい。一例において、テキストエディタアプリケーションがアプリケーションメッセージキュー1004に関連付けられることがある。テキストエディタアプリケーションがサスペンド状態におかれることがある。テキストエディタアプリケーションがサスペンドされている間に、新たなシステムメッセージがアプリケーションメッセージキュー1004内に入れられることがあることが認識され得る。アプリケーションメッセージキュー1004の現在の状態は、ビューモード=横長のシステムメッセージ、ユーザインタフェース=緑のシステムメッセージ、言語=英語のシステムメッセージ、新たな入力デバイス=マウス、及び/又は他のシステムメッセージを含み得る。
【0045】
アプリケーションがサスペンドされている間に、新たなシステムメッセージ1002を受信することがある(例えば、ビューモード=縦長という新たなシステムメッセージ、ユーザインタフェース=赤という新たなシステムメッセージ、新たな入力デバイス=キーボードという新たなシステムメッセージ、及び/又は他の新たなシステムメッセージ)。メッセージ管理構成要素1006は、新たなシステムメッセージ1002を考慮して、不適切及び/又は陳腐化したシステムメッセージがアプリケーションメッセージキュー1004から削除及び/又は修正されるよう、アプリケーションメッセージキュー1004を保持するように構成され得る。一例において、ビューモード=縦長という新たなシステムメッセージは、アプリケーションメッセージキュー1004内のビューモード=横長というシステムメッセージに対応するものとして判断され得る。ビューモード=縦長という新たなシステムメッセージは、ビューモード=横長というシステムメッセージを不適切及び/又は陳腐にし得るため、ビューモード=横長というシステムメッセージが削除され(1012)、ビューモード=縦長という新たなシステムメッセージがアプリケーションメッセージキュー1004に追加される(1008)。
【0046】
別の例において、ユーザインタフェース=赤という新たなシステムメッセージは、アプリケーションメッセージキュー1004内のユーザインタフェース=緑というシステムメッセージに対応するものとして判断され得る。ユーザインタフェース=赤という新たなシステムメッセージは、ユーザインタフェース=緑というシステムメッセージを不適切及び/又は陳腐にし得るため、ビユーザインタフェース=緑というシステムメッセージが削除され(1014)、ユーザインタフェース=赤という新たなシステムメッセージがアプリケーションメッセージキュー1004に追加される(1010)。別の例において、新たな入力デバイス=キーボードという新たなシステムメッセージは、新たな入力デバイス=マウスというシステムメッセージに対応するものとして判断され得る。新たな入力デバイス=キーボードという新たなシステムメッセージは、新たな入力デバイス=マウスというシステムメッセージに対する追加であるので、新たな入力デバイス=マウスというシステムメッセージは修正されて(1016)、新たな入力デバイス=マウス及びキーボードというシステムメッセージになる。このように、アプリケーションメッセージキュー1004は、アプリケーションがサスペンドされている間にメッセージ管理構成要素によって保持されるので、アプリケーションは、再開されると、関連するシステムメッセージのみをキューから取り出せばよい。
【0047】
更に別の実施形態は、本明細書に提示される技法の1つ又は複数を実施するように構成されるプロセッサ実行可能命令を含むコンピュータ読取可能媒体を含む。これらの方法で考案され得る例示的なコンピュータ読取可能媒体が
図11に示されている。
図11において、実装形態1100は、コンピュータ読取可能データ1114が符号化されるコンピュータ読取可能媒体1116(例えばCD−R、DVD−R又はハードディスクドライブのプラッタ)を備える。このコンピュータ読取可能データ1114は、本明細書に記載の原理の1つ又は複数に従って動作するように構成されるコンピュータ命令1112のセットを備える。1つのそのような実施形態1100において、プロセッサ実行可能コンピュータ命令1112は、例えば
図1の例示的な方法100の少なくとも一部、
図2の例示的な方法200の少なくとも一部、
図4の例示的な方法400の少なくとも一部、
図5の例示的な方法500の少なくとも一部、
図7の例示的な方法700の少なくとも一部、及び/又は
図8の例示的な方法800の少なくとも一部のような、方法1110を実行するように構成され得る。別のそのような実施形態において、プロセッサ実行可能命令1112は、例えば
図3の例示的なシステム300の少なくとも一部、
図6の例示的なシステム600の少なくとも一部、
図9の例示的なシステム900の少なくとも一部、及び/又は
図10の例示的なシステム1000の少なくとも一部のような、システムを実装するように構成され得る。本明細書に提示される技法に従って動作するように構成されている多くのそのようなコンピュータ読取可能媒体が当業者によって考案される可能性がある。
【0048】
本主題は構造的特徴及び/又は方法的動作に特有の文言において説明されているが、特許請求の範囲において定義される本主題は必ずしも、上述の具体的な特徴及び動作に限定されないことは理解されよう。むしろ、上述の具体的な特徴及び動作は、特許請求の範囲を実装するための例示的な形式として開示されている。
【0049】
本明細書において使用される場合、「構成要素」、「モジュール、「システム」、「インタフェース」等の用語は、一般的に、コンピュータ関連のエンティティ、すなわち、ハードウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア又は実行中のソフトウェアのいずれかを指すように意図される。例えば構成要素は、これらには限定されないが、プロセッサ上で動作するプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム及び/又はコンピュータであってもよい。例示として、コントローラ上で動作しているアプリケーションとコントローラとの双方を構成要素とすることができる。1つ又は複数の構成要素がプロセス及び/又は実行スレッド内に存在してもよく、構成要素を、1つのコンピュータ上に局在化してもよく、及び/又は2つ若しくはそれ以上のコンピュータの間に分散させてもよい。
【0050】
さらに、特許請求に係る主題を、開示される主題を実装するようコンピュータを制御するソフトウェア、ファームウェア、ハードウェア又はそれらの任意の組合せを生成するために標準的なプログラミング及び/又はエンジニアリング技法を使用する、方法、装置、又は製造品として実装されてもよい。「製品」という用語は、本明細書において使用されるとき、任意のコンピュータ読取可能デバイス、キャリア又は媒体からアクセス可能なコンピュータプログラムを包含するように意図される。当然、本開示の範囲及び精神から逸脱することなく、この構成に多くの修正を行うことができることが当業者には認識されよう。
【0051】
図12及び以下の記述は、本明細書で説明されるプロビジョンの1つ又は複数の実施形態を実装する適切なコンピューティング環境の簡潔で一般的な説明を提供する。
図12の動作環境は適切な動作環境の一例に過ぎず、動作環境の使用又は機能の範囲に関していかなる限定をも示唆するように意図されるものではない。例示的なコンピューティングデバイスは、限定ではないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド又はラップトップデバイス、モバイルデバイス(携帯電話、携帯情報端末(PDA)、メディアプレーヤ等のような)、マルチプロセッサシステム、家庭用電化製品、ミニコンピュータ、メインフレームコンピュータ、上記のシステム又はデバイスのいずれかを含む分散コンピューティング環境等を含む。
【0052】
必須ではないが、諸実施形態は、1つ又は複数のコンピューティングデバイスによって実行されている「コンピュータ読取可能命令」の一般的な文脈において説明されている。コンピュータ読取可能命令は、(後述される)コンピュータ読取可能媒体を介して分散されてもよい。コンピュータ読取可能命令は、特定のタスクを実行し、又は特定の抽象データ型を実装する、関数、オブジェクト、アプリケーションプログラミングインタフェース(API)、データ構造等のような、プログラムモジュールとして実装されてもよい。典型的に、コンピュータ読取可能命令の機能は、様々な実施形態において所望に応じて組合せ又は分散されてもよい。
【0053】
図12は、本明細書において提供される1つ又は複数の実施形態を実装するように構成されるコンピューティングデバイス1212を備えるシステム1210の一例を示す。一構成において、コンピューティングデバイス1212は、少なくとも1つの処理装置1216及びメモリ1218を含む。コンピューティングデバイスの正確な構成及びタイプに応じて、メモリ1218は、揮発性(例えばRAMのような)、不揮発性(例えばROM、フラッシュメモリ等のような)又はそれら2つの何らかの組合せであってもよい。この構成は、
図12において破線1214によって示されている。
【0054】
他の実施形態において、デバイス1212は、追加の特徴及び/又は機能を含んでもよい。例えばデバイス1212は、限定ではないが、磁気ストレージ、光ストレージ等を含む追加のストレージ(例えば取外し可能及び/又は取外し不可能)も含んでもよい。そのような追加のストレージは、
図12においストレージ1220によって示されている。一実施形態において、本明細書において提供される1つ又は複数の実施形態を実装するためのコンピュータ読取可能命令は、ストレージ1220内にあってもよい。ストレージ1220は、オペレーティングシステム、アプリケーションプログラム等を実装するための他のコンピュータ読取可能命令を記憶してもよい。コンピュータ読取可能命令は、例えば処理装置1216による実行のためにメモリ1218内にロードされてもよい。
【0055】
本明細書において使用されるとき、「コンピュータ読取可能媒体」という用語は、コンピュータ記憶媒体を含む。コンピュータ記憶媒体は、コンピュータ読取可能命令又は他のデータのような情報の記憶のための任意の方法又は技術で実装される揮発性及び不揮発性、取外し可能及び取外し不可能の媒体を含む。メモリ1218及びストレージ1220は、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、限定ではないが、RAM、ROM、EEPROM、フラッシュメモリ若しくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)若しくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、又は所望の情報を記憶するのに使用可能であり、デバイス1212によってアクセス可能な任意の他の媒体を含む。任意のこのようなコンピュータ記憶媒体はデバイス1212の一部であってもよい。
【0056】
デバイス1212は、デバイス1212が他のデバイスと通信することを可能にする通信接続(複数可)1226を含んでもよい。通信接続1226は、限定ではないが、モデム、ネットワークインタフェースカード(NIC)、統合ネットワークインタフェース、無線周波数送信機/受信機、赤外線ポート、USB接続、又はコンピューティングデバイス1212を他のコンピューティングデバイスに接続するための他のインタフェースを含んでもよい。通信接続1226は、有線接続又は無線接続を含んでもよい。通信接続1226は通信媒体を送信及び/又は受信することもある。
【0057】
「コンピュータ読取可能媒体」という用語は、通信媒体を含んでもよい。通信媒体は、典型的に、搬送波若しくは他の伝送機構のように、コンピュータ読取可能命令又は他のデータを「変調データ信号」で具現化し、任意の情報配信媒体を含む。「変調データ信号」という用語は、その特性のうちの1つ又は複数が、信号内に情報を符号化するような手法で設定又は変更された信号を含んでもよい。
【0058】
デバイス1212は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス、赤外線カメラ、ビデオ入力デバイス及び/又は任意の他の入力デバイスのような入力デバイス(複数可)1224を含んでもよい。1つ又は複数のディスプレイ、スピーカ、プリンタ及び/又は任意の他の出力デバイスのような出力デバイス(複数可)1222もデバイス1212に含まれてもよい。入力デバイス1224及び出力デバイス1222は、有線接続、無線接続又はそれらの任意の組合せを介してデバイス1212に接続されてもよい。一実施形態において、別のコンピューティングデバイスからの入力デバイス又は出力デバイスを、コンピューティングデバイス1212の入力デバイス1224又は出力デバイス1222として使用してもよい。
【0059】
コンピューティングデバイス1212の構成要素は、バスのような様々な相互接続によって接続されてもよい。そのような相互接続は、PCI Expressのような周辺構成要素相互接続(PCI)、ユニバーサルシリアルバス(USB)、ファームウェア(IEEE 1394)及び光学バス構造等を含んでもよい。別の実施形態において、コンピューティングデバイス1212の構成要素は、ネットワークによって相互接続されてもよい。例えばメモリ1218は、ネットワークによって相互接続された異なる物理的位置に置かれた複数の物理メモリユニットから構成されてもよい。
【0060】
コンピュータ読取可能命令を記憶するのに利用される記憶デバイスがネットワークにわたって分散されてもよいことが当業者には認識されよう。例えば、ネットワーク1228を介してアクセス可能なコンピューティングデバイス1230が、本明細書において提供される1つ又は複数の実施形態を実装するコンピュータ読取可能命令を記憶してもよい。コンピューティングデバイス1212は、コンピューティングデバイス1230にアクセスして、コンピュータ読取可能命令の一部又はすべてを実行するためにダウンロードしてもよい。あるいは、コンピューティングデバイス1212は、必要に応じてコンピュータ読取可能命令のうちいくつかの部分をダウンロードしてもよく、又は一部の命令をコンピューティングデバイス1212において実行し、一部をコンピューティングデバイス1230において実行してもよい。
【0061】
諸実施形態の様々な動作が本明細書において提供される。一実施形態において、説明された動作のうちの1つ又は複数が、1つ又は複数のコンピュータ読取可能媒体上に記憶されるコンピュータ読取可能命令の性質であってもよく、これらの命令は、コンピューティングデバイスによって実行されると、該コンピューティングデバイスに、説明された動作を実行させる。動作の一部又はすべてが説明される順序は、これらの動作が必ずしも順序に依存することを暗示するものとして解釈されるべきではない。代替的な順序が、本明細書の利益を享受する当業者によって認識されよう。さらに、本明細書において提供される各実施形態において、必ずしもすべての動作が存在するとは限らないことが理解されよう。
【0062】
さらに、「例示」という語は本明細書において、例、事例又は実例としての役割を果たすことを意味するように使用される。「例示」として本明細書で説明される任意の態様又は設計が、必ずしも他の態様又は設計よりも有利であるものとして解釈されるべきではない。むしろ、例示という語の使用は、概念を具体的に提示するように意図されている。本明細書において使用されるとき、「又は(若しくは、あるいは)」という用語は、排他的な「又は」を意味するものではなく、包含的な「又は」を意味するように意図されている。すなわち、別途指定されない限り、又は文脈から明らかでない限り、「XがA又はBを用いる」は、任意の自然な包含的順列を意味するように意図されている。すなわち、XがAを用いるか、XがBを用いるか、XがA及びBの双方を用いる場合、「XがA又はBを用いる」は、上記の事例のいずれかの下で満たされる。加えて、本明細書及び特許請求の範囲において使用されるとき冠詞「ある(a、an)」は、概して、別途指定されない限り、又は文脈から単数形が対象になることが明らかでない限り、「1つ又は複数」を意味するように解釈され得る。また、A及びB等の少なくとも1つとは、概して、A又はBか、AとBの双方を意味する。
【0063】
本開示は、1つ又は複数の実装態様に関して図示及び説明されているが、当業者には、本明細書及び添付の図面を読み理解することに基づいて、等価な代替及び変更が着想されよう。本開示は、すべてのそのような変更及び代替を含むものであり、特許請求の範囲の記載範囲によってのみ限定される。特に上述の構成要素(例えば要素、リソース等)によって実行される様々な機能に関して、そのような構成要素を説明するのに使用される用語は、別途指示されない限り、本開示の例示的な実装態様における機能を実行する開示された構造に構造的に等価でないとしても、説明された構成要素の指定された機能を実行する任意の構成要素に対応する(すなわち機能的に等価である)ことが意図される。加えて、本開示の特定の特徴は、いくつかの実施態様のうちの1つのみに関して開示されていることがあるが、そのような特徴を、任意の所与の又は特定の用途に望まれ、有利であり得るように、他の実施態様の1つ又は複数の他の特徴と組み合わせてもよい。さらに、「含む(include)」、「有する(having)」、「有する(has)」、「有する、用いる(with)」という用語又はそれらの変化形が詳細な説明又は特許請求の範囲のいずれかにおいて使用されている限りにおいて、そのような用語は、「備える(comprising)」という用語と同様に包含的であることが意図されている。