(57)【特許請求の範囲】
【請求項１】
複数のアプリケーションを実行する計算デバイスにおける方法であって、
複数のしきい値を決定するステップであって、該複数のしきい値の各々が、前記複数のアプリケーションの内の１つのアプリケーションの特性か前記計算デバイスのリソースの特性のいずれかに関連し、前記特性が前記計算デバイスの周期的ネットワーク使用度を含む、ステップと、
前記計算デバイスが差し込みシステムまたは内蔵バッテリー・システムとして動作しているかどうかに少なくとも部分的に基づいて、前記複数のしきい値を調節するステップと、
前記計算デバイスの前記周期的ネットワーク使用度により該使用度に関連した前記しきい値が満たされたかどうかチェックするステップと、
前記計算デバイスの前記周期的ネットワーク使用度により該使用度に関連した前記しきい値が満たされていない場合、前記複数のアプリケーションが前記計算デバイスにおいて実行し続けることを許可するステップと、
前記計算デバイスの前記周期的ネットワーク使用度により該使用度に関連した前記しきい値が満たされた場合、
前記計算デバイスの前記周期的ネットワーク使用度に少なくとも部分的に基づいて、前記複数のアプリケーションから、停止する１つ以上のアプリケーションを選択し、
前記１つ以上のアプリケーションを停止する、
ステップと、
を含む、方法。
【請求項２】
請求項１記載の方法であって、前記特性は、前記複数のアプリケーションによる前記計算デバイスのプロセッサー・コアの使用度を含み、前記方法は、更に、
前記複数のアプリケーションによる前記プロセッサー・コアの前記使用度により該使用度に関連したしきい値が満たされたかどうかチェックするステップと、
前記複数のアプリケーションによる前記プロセッサー・コアの使用度により該使用度に関連した前記しきい値が満たされたとき、前記プロセッサー・コアの前記使用度に少なくとも部分的に基づいて、停止する前記複数のアプリケーションのうちの１つ以上の追加のアプリケーションを選択し、該１つ以上の追加のアプリケーションを停止するステップと、
を含む、方法。
【請求項３】
請求項１記載の方法であって、前記特性は、前記複数のアプリケーションのうち１つのアプリケーションによる前記計算デバイスのプロセッサー・コアの使用度を含み、前記方法は、更に、
前記１つのアプリケーションによる前記計算デバイスの前記プロセッサー・コアの前記使用度により該使用度に関連したしきい値が満たされたかどうかチェックするステップと、
前記１つのアプリケーションによる前記プロセッサー・コアの使用度により該使用度に関連した前記しきい値が満たされたとき、前記１つのアプリケーションを停止するステップと、
を含む、方法。
【請求項４】
請求項１記載の方法であって、前記特性は、前記計算デバイスのメモリーの使用度を含み、前記方法は、更に、
前記計算デバイスの前記メモリーの使用度により該使用度に関連したしきい値が満たされたかどうかチェックするステップと、
前記メモリーの前記使用度により該使用度に関連した前記しきい値が満たされたとき、前記メモリーの前記使用度に少なくとも部分的に基づいて、停止する前記複数のアプリケーションのうちの１つ以上の追加のアプリケーションを選択し、該１つ以上の追加のアプリケーションを停止するステップと、
を含む、方法。
【請求項５】
請求項１記載の方法であって、前記特性は、前記計算デバイスの記憶デバイスの使用度を含み、前記方法は、更に、
前記計算デバイスの前記記憶デバイスの前記使用度により該使用度に関連したしきい値が満たされたかどうかチェックするステップと、
前記記憶デバイスの前記使用度により該使用度に関連した前記しきい値が満たされたとき、前記記憶デバイスの前記使用度に少なくとも部分的に基づいて、停止する前記複数のアプリケーションのうちの１つ以上の追加のアプリケーションを選択し、該１つ以上の追加のアプリケーションを停止するステップと、
を含む、方法。
【請求項６】
請求項１記載の方法であって、前記特性は、前記複数のアプリケーションのうち前記１つのアプリケーションのエージを含み、前記方法は、更に、
前記複数のアプリケーションのうち前記１つのアプリケーションの前記エージにより該エージに関連したしきい値が満たされたかどうかチェックするステップであって、前記複数のアプリケーションのうち前記１つのアプリケーションの前記エージが、前記複数のアプリケーションのうち前記１つのアプリケーションがフォアグラウンドにどの位長く存続していたかを示す、ステップと、
前記複数のアプリケーションのうち前記１つのアプリケーションの前記エージにより該エージに関連した前記しきい値が満たされたとき、前記複数のアプリケーションのうち前記１つのアプリケーション停止するステップと、
を含む、方法。
【請求項７】
請求項１記載の方法において、前記複数のアプリケーションから、停止する１つ以上のアプリケーションを選択するステップが、
前記複数のアプリケーションから、停止されるのを除外される少なくとも１つのアプリケーションを特定するステップであって、前記複数のアプリケーションのうち前記少なくとも１つのアプリケーションが、フォアグラウンドにおいて実行しているアプリケーションを含む、ステップと、
前記複数のアプリケーションから停止する前記１つ以上のアプリケーションとして、前記複数のアプリケーションのうち前記少なくとも１つのアプリケーション以外の１つ以上のアプリケーションを選択するステップと、
を含む、方法。
【請求項８】
請求項１記載の方法であって、前記特性は、前記周期的ネットワーク使用度とは異なった前記計算デバイスのリソースの使用度を含み、前記方法は、更に、
前記周期的ネットワーク使用度とは異なった前記計算デバイスの前記リソースの前記使用度により該使用度と関連したしきい値が満たされたかどうかチェックするステップと、
前記複数のアプリケーションから、最も大きい前記リソースの使用度を有する１つ以上の追加のアプリケーションを選択し、該１つ以上の追加のアプリケーションを停止するステップと、
を含む、方法。
【請求項９】
複数の命令を格納した１つ以上のコンピューター記憶メモリーであって、前記複数の命令が、計算デバイスの１つ以上のプロセッサーにより実行されると、前記１つ以上のプロセッサーに、
前記計算デバイスで実行しているバックグラウンド・アプリケーションのリストを生成する動作であって、該生成が、前記計算デバイスの周期的ネットワーク使用度により該使用度に関連したしきい値が満たされたときに行われ、前記計算デバイスの前記周期的ネットワーク使用度に関連した前記しきい値が、前記計算デバイスが内蔵バッテリー・システムとして動作しているときの第１しきい値と、前記計算デバイスが差し込みシステムとして動作しているときの第２しきい値とを有し、前記第１しきい値および前記第２しきい値が異なるしきい値である、動作と、
前記リストにある前記バックグラウンド・アプリケーションに優先順位を付ける動作であって、周期的ネットワーク使用度がより高い前記バックグラウンド・アプリケーションがより高い優先順位を有するようにする、動作と、
前記バックグラウンド・アプリケーションのリストにおいて高い優先順位を有するアプリケーションを選択する動作と、
前記選択したアプリケーションを自動的に停止する動作と、
前記計算デバイスの前記周期的ネットワーク使用度により該使用度に関連した前記しきい値が満たされなくなるまで、前記アプリケーションの選択、および前記選択したアプリケーションの停止を繰り返す動作と、
を含む動作を実行させる、１つ以上のコンピューター記憶メモリー。
【請求項１０】
請求項９記載の１つ以上のコンピューター記憶メモリーにおいて、前記リストにおける前記アプリケーションの選択は、前記リストにおいて、最大の前記周期的ネットワーク使用度を有するアプリケーションを選択することを含む、１つ以上のコンピューター記憶メモリー。
【発明の詳細な説明】
【従来技術】
【０００１】
[0001]  計算デバイスは、複数のアプリケーションを同時に実行することができる。同時に実行するアプリケーションの数が増えるに連れて、種々の計算デバイス・リソース（プロセッサー、メモリー等のような）の使用も増大する可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
これらのアプリケーションは、その計算デバイスのユーザーが実際にアプリケーションを使用していなくても、計算デバイス・リソースを使用し続ける可能性がある。複数の同時に実行しているアプリケーションが計算デバイス・リソースを使用すると、計算デバイスの性能を低下させる可能性があり、このためユーザーの苛々や、不快なユーザー体験に至る可能性があるので、これは問題となり得る。
【課題を解決するための手段】
【０００３】
[0002]  この摘要は、詳細な説明の章において以下で更に説明する概念から選択したものを簡略化された形式で紹介するために、設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。
【０００４】
[0003]  １つ以上の態様によれば、複数のアプリケーションを実行する計算デバイスにおいて、複数のしきい値のうち１つのしきい値が満たされたか否かについてチェックを行う。複数のしきい値の各々は、複数のアプリケーションのうち１つの特性、または計算デバイスのリソースの特性と関連付けられている。しきい値が満たされなかった場合、複数のアプリケーションは、計算デバイスで実行し続けることが許可される。しかしながら、しきい値が満たされた場合、複数のアプリケーションのうち停止すべき１つ以上を、少なくとも部分的に、満たされたしきい値と関連付けられている特性に基づいて選択し、この選択したアプリケーションを停止する。
【０００５】
[0004]  １つ以上の態様によれば、計算デバイスで実行するバックグラウンド・アプリケーションのリストを生成する。このバックグラウンド・アプリケーションのリストには、少なくとも部分的に、このリストにあるバックグラウンド・アプリケーションによる計算デバイスのリソースの使用に基づいて、優先順位を付ける。バックグラウンド・アプリケーションのリストにある１つのアプリケーションを選択し、この選択したアプリケーションを停止する。
【図面の簡単な説明】
【０００６】
[0011]  図面全体にわたって、同様の機構を参照するときには同じ番号を使用することとする。
【図１】図１は、１つ以上の実施形態にしたがってアプリケーション・ライフタイム管理を実施する計算デバイス例を示す。
【図２】図２は、１つ以上の実施形態にしたがって、アプリケーション・ライフタイム管理を実施するシステム例を示す。
【図３】図３は、１つ以上の実施形態にしたがって、アプリケーション・ライフタイム管理を実施するデバイスのためのプロセス例を示すフローチャートである。
【図４】図４は、１つ以上の実施形態にしたがって、停止する１つ以上のアプリケーションを選択するプロセス例を示すフローチャートである。
【図５】図５は、１つ以上の実施形態にしたがってアプリケーション・ライフタイム管理を実施するように構成することができる計算デバイス例を示す。
【発明を実施するための形態】
【０００７】
[0011]  本明細書ではアプリケーション・ライフタイム(lifetime)管理について説明する。アプリケーションのエージ(age)、プロセッサー使用度、メモリー使用度等というような、アプリケーションおよび／または計算デバイス・リソースの種々の特性を監視する。これら監視した特性の各々には、しきい値が関連付けられており、これらのしきい値のうち少なくとも１つが満たされた場合、１つ以上のアプリケーションを選択して自動的に停止する。自動的に停止するために選択する１つ以上のアプリケーションは、少なくとも部分的に、満たされたしきい値、およびそのしきい値と関連付けられている特性に基づく。
【０００８】
[0012]  図１は、１つ以上の実施形態にしたがってアプリケーション・ライフタイム管理を実施する計算デバイス例１００を示す。計算デバイス１００は、種々の異なるタイプのデバイスとすることができる。例えば、計算デバイス１００は、デスクトップ・コンピューター、ネットブックまたはラップトップ・コンピューター、ノートパッドまたはタブレット・コンピューター、移動局、娯楽機器、ディスプレイ・デバイスと通信可能に結合されているセット・トップ・ボックス、テレビジョン、セルラまたはその他のワイヤレス・フォン、ゲーム・コンソール、自動車用コンピューター等とすることができる。つまり、計算デバイス１００は、かなりのメモリーおよびプロセッサー・リソースを有する最大リソースのデバイス（例えば、パーソナル・コンピューター、ゲーム・コンソール）から、メモリーおよび／または処理リソースが限られている、低リソース・デバイス（例えば、従前からのセット・トップ・ボックス、ハンド・ヘルド・ゲーム・コンソール）までの範囲を取ることができる。
【０００９】
[0013]  計算デバイス１００は、１つ以上の電源によって電源を受ける。これらの電源は、外部電源または差し込み式電源とすることができ、このような電源からの電源で動作する場合、計算デバイス１００は、差し込みシステム(plugged-in system)または差し込みデバイスとして動作すると呼ぶ。また、これらの電源は、バッテリーのような内部電源とすることもでき、このような電源からの電力で動作する場合、計算デバイス１００はバッテリー内蔵システム(on-battery system)またはデバイスと呼ぶ。多くのタイプのデバイスは、個々の時点においてデバイスが動作している電源に依存して、異なる時点において、差し込みシステムまたはバッテリー内蔵システムとなることができる。しかしながら、異なるタイプのデバイスが、差し込みシステムだけ（内部電源を有していない）またはバッテリー内蔵システムだけ（外部電源を使用しない）となることもあり得る。
【００１０】
[0014]  計算デバイス１００は、オペレーティング・システム１０２および１つ以上のアプリケーション１０４を含む。動作の間、オペレーティング・システム１０２およびアプリケーション１０４は、計算デバイス１００上で実行し、オペレーティング・システム１０２がアプリケーション１０４を管理する。アプリケーション１０４の管理は、１つ以上のアプリケーション１０４を自動的に停止することを含む。これについては、以下で更に詳しく論ずる。アプリケーション１０４のライフタイム(lifetime)または使用期間(life)とは、アプリケーションが実行している時間期間を指し、アプリケーションが動作し始めるときに開始し、アプリケーションが停止させられたときに終了する。
【００１１】
[0015]  オペレーティング・システム１０２は、システム情報収集モジュール１０６、およびアプリケーション・ライフタイム管理モジュール１０８を含む。システム情報収集モジュール１０６およびアプリケーション・ライフタイム管理モジュール１０８は、オペレーティング・システム１０２の一部であるとして示されているが、代わりに、モジュール１０６およびモジュール１０８の一方または双方を、オペレーティング・システム１０２とは別個に実装することもできる。
【００１２】
[0016]  システム情報収集モジュール１０６は、アプリケーション１０４および／または計算デバイス１００のリソースの特性に関する種々の情報を収集する。アプリケーション１０４の特性に関する情報には、例えば、各アプリケーション１０４のエージが含まれる。アプリケーション０１４のエージとは、アプリケーション１０４がどの位前から（例えば、分、時間、日等に関して）フォアグラウンド(foreground)に居続けているかを指す。アプリケーションがフォアグラウンドにいるのは、それが表示されているとき、またそれ以外では計算デバイスのユーザー・インターフェースを通じて提示されているときである。アプリケーションが最小化されているとき（そして、任意に、アプリケーションの表示ウィンドウが、他のアプリケーションの表示ウィンドウによって覆われているとき）は、フォアグラウンドにあるのではなく、バックグラウンド・アプリケーションと呼ばれる。また、アプリケーション１０４の特性に関する情報は、計算デバイス１００上で実行しているアプリケーション１０４の数というような、アプリケーション１０４の他のプロパティも含むことができる。
【００１３】
[0017]  計算デバイス１００のリソースには、プロセッサーおよび／またはプロセッサー・コア、メモリー、ネットワーク接続等というような、計算デバイス１００のハードウェアおよび／またはソフトウェア・リソースが含まれる。計算デバイス１００のリソースの特性に関する情報には、例えば、計算デバイス１００のリソースの使用度に関する情報、計算デバイス１００のリソースのプロパティを記述する情報等が含まれる。例えば、計算デバイス１００のリソースの特性には、計算デバイス１００のプロセッサー（またはプロセッサー・コア）のうち、全てのアプリケーション１０４全体によって使用されている量、計算デバイス１００の各プロセッサー（または各プロセッサー・コア）のうち、個々のアプリケーション各々によって使用されている量、スタンバイ・リスト上にあるメモリー・ページの平均ライフタイム、ネットワーク接続のタイプ（例えば、特定のネットワーク接続がセルラ・ワイヤレス接続、ワイヤレス・ローカル・エリア・ネットワーク（例えば、Ｗｉ−Ｆｉ）接続等のうちどれなのか）等を含むことができる。
【００１４】
[0018]  アプリケーション・ライフタイム管理モジュール１０８は、アプリケーション情報追跡モジュール１１２、トリガー・モジュール１１４、アプリケーション選択モジュール１１６、および停止モジュール１１８を含む。アプリケーション情報追跡モジュール１１２は、システム情報収集モジュール１０６からアプリケーション１０４および／または計算デバイス１００のリソースの特性に関する情報を受け取る。トリガー・モジュール１１４は、アプリケーション情報追跡モジュール１１２によって受け取られた情報を監視し、アプリケーション１０４および／または計算デバイス１００のリソースの特定の特性と関連付けられているしきい値が満たされたときを判断する。アプリケーション１０４および／または計算デバイス１００のリソースと関連付けられているしきい値が満たされたとき、アプリケーション選択モジュール１１６は、アプリケーション１０４のうち、停止する１つ以上を選択する。停止モジュール１１８は、アプリケーション選択モジュール１１６によって選択された１つ以上のアプリケーションの停止を管理する。停止モジュール１０８は、アプリケーション選択モジュール１１６によって選択された１つ以上のアプリケーションを自動的に停止し、選択された１つ以上のアプリケーションを停止モジュール１０８が停止するために、アプリケーションを停止することのユーザー入力や確認を受け取る必要はない。
【００１５】
[0019]  アプリケーション情報追跡モジュール１１２は、システム情報収集モジュール１０６からの、アプリケーション１０４および／または計算デバイス１００のリソースの種々の特性に関する情報を維持する。アプリケーション情報追跡モジュール１１２は、規則的な間隔または不規則な間隔で（例えば、５秒毎）システム情報収集モジュール１０６にこの情報を要求することができ、またはその代わりに、他のやり方で（例えば、モジュール１１２がメッセージまたはその他の情報の更新を受け取るように、モジュール１０６に登録することができる）モジュール１０６からこの情報を受け取ることができる。
【００１６】
[0020]  １つ以上の実施形態では、アプリケーション情報追跡モジュール１１２によって維持される情報には、各アプリケーション１０４のエージ、計算デバイス１００におけるプロセッサー・コア毎のプロセッサー（中央処理ユニット即ちＣＰＵ）コアの使用度、メモリー使用度、計算デバイス１００における記憶デバイス毎の記憶デバイス（例えば、ハード・ディスク）使用度、および計算デバイス１００によって使用されるネットワーク接続毎のネットワーク接続使用度が含まれる。プロセッサー・コア使用度は、例えば、全てのアプリケーション１０４によるプロセッサー・コア容量の総合使用度（例えば、最大プロセッサー・コア容量の百分率として）、および／または各アプリケーション１０４によるプロセッサー容量（例えば、最大プロセッサー・コア容量の百分率として）の個別使用度である。このようなプロセッサー・コア使用度（アプリケーション全体であっても、または個々のアプリケーションであっても関係なく）は、例えば、特定の間隔で（例えば、５秒毎に）特定の回数の間隔（例えば、１２回の間隔）にわたって使用度の平均を取ることによって判断することができる。
【００１７】
[0021]  メモリー使用度は、例えば、全てのアプリケーション１０４によるメモリーの総合使用度、および／または各アプリケーション１０４によるメモリーの個々の使用度である。このようなメモリー使用度（アプリケーション全体であっても、または個々のアプリケーションであっても関係なく）は、例えば、（例えば、直前の１分というような特定の時間期間、アプリケーションの使用期間等において）オペレーティング・システム１０２のメモリー・マネージャーによって維持されているスタンバイ・リスト上にあるメモリー・ページの平均ライフタイムを決定することによって、判断することができる。また、このようなメモリー使用度は、アプリケーションに対して作業中の１組のメモリー・ページにおける平均メモリー・ページ数（例えば、直前の１分というような特定の時間期間、アプリケーションの使用期間等における）を判定することによってというように、異なるやり方で判断することもできる。
【００１８】
[0022]  記憶デバイス使用度は、例えば、全てのアプリケーション１０４による記憶デバイスの総合使用度、および／または各アプリケーション１０４による記憶デバイスの個々の使用度である。記憶デバイス使用度（アプリケーション全体であっても、または個々のアプリケーションであっても関係なく）は、例えば、記憶デバイスに対するアクセス頻度の平均を取ることによって、判定することができる（例えば、直前の１分というような特定の時間期間、アプリケーションの使用期間等における）。このような記憶デバイス使用度は、（例えば、直前の１分というような特定の時間期間、アプリケーションの使用期間等において）記憶デバイスに転送されたデーター量および／または記憶デバイスから転送されたデーター量を判定することによってというように、異なるやり方では判定することもできる。
【００１９】
[0023]  ネットワーク接続使用度は、例えば、全てのアプリケーション１０４によるネットワーク接続の総合使用度、および／または各アプリケーション１０４によるネットワーク接続の個々の使用度である。ネットワーク接続使用度（アプリケーション全体であっても、または個々のアプリケーションであっても関係なく）は、例えば、そのネットワーク接続を通じて（例えば、直前の１分というような特定の時間期間、アプリケーションの使用期間等において）伝達された（送られたまたは受け取られた）データーの平均頻度を判定することによって、判定することができる。また、このようなネットワーク接続使用度は、（例えば、直前の１分というような特定の時間期間、アプリケーションの使用期間等において）ネットワーク接続を通じて伝達された（送られたまたは受け取られた）データーの平均量を判定することによってというように、異なるやり方で判定することもできる。
【００２０】
[0024]  トリガー・モジュール１１４は、アプリケーション情報追跡モジュール１１２によって維持されている情報を使用して、アプリケーション１０４および／または計算デバイス１００のリソースの個々の特性と関連付けられているしきい値が満たされたときを判断する。１つ以上の実施形態では、アプリケーション情報追跡モジュール１１２によって情報が維持されている各特性は、それ自体の関連付けられたしきい値を有する（しかし、複数のこのようなしきい値が同じ値を有する可能性もあることは注記してしかるべきである）。トリガー・モジュール１１４によって使用されるしきい値は、トリガー・モジュール１１４の中に予め設定しておくことができ、あるいは代わりに（計算デバイス１００または他のデバイスの）他のコンポーネントまたはモジュールから、トリガー・モジュール１１４に供給するまたはそれ以外で入手することができる。
【００２１】
[0025]  １つ以上の実施形態では、しきい値が満たされるのは、関連付けられている特性が、そのしきい値に等しい値またはそれを超える値を有する場合である。他の実施形態では、関連付けられている特性がそのしきい値を超える値を有する場合というように、異なるやり方でしきい値を満たすことができる。
【００２２】
[0026]  しきい値は、種々の異なるやり方で設定することができ、１つ以上の実施形態では、高度なシステム応答性および長いバッテリー寿命を維持するように設定される。ある種の特性がある種のしきい値が満たされたときにある種のアプリケーションを停止することによって、アプリケーション・ライフタイム管理モジュール１０８は、高度なシステム応答性および長いバッテリー寿命を維持しようとする。例えば、異なるデバイスの動作の経験的分析に基づいて、個々のしきい値を設定することができる。
【００２３】
[0027]  表１は、アプリケーション１０４および／または計算デバイス１００のリソースの個々の特性について使用することができるしきい値の例を含む。尚、表１に含まれる例は例であって、他のしきい値および／または他の特性を代わりに使用することができることは認められてしかるべきである。表１は、差し込みシステムについて、個々の特性と関連付けられたしきい値の例を示す。
【００２４】
【表１】
0005984824.tif 000002
【００２５】
[0028]  表２は、アプリケーション１０４および／または計算デバイス１００のリソースの個々の特性について使用することができる追加のしきい値例を含む。尚、表２に含まれる例は例であって、他のしきい値および／または他の特性を代わりに使用することができることは、認められてしかるべきである。表２は、バッテリー内蔵システムについて個々の特性と関連付けられているしきい値の例を示す。
【００２６】
【表２】
0005984824.tif 000003
【００２７】
[0029]  アプリケーション選択モジュール１１６は、しきい値が満たされたとトリガー・モジュール１１４が判断したことに応答して、アプリケーション１０４の中から停止する１つ以上を選択する。この選択は、少なくとも部分的に、超過された特定のしきい値と関連付けられている特性に基づき、したがって、少なくとも部分的に、超過された特定のしきい値に基づく。アプリケーション選択モジュール１１６は、少なくとも１つのしきい値が満たされたときに、アプリケーション１０４から停止する１つ以上のアプリケーションを選択する。例えば、アプリケーション選択モジュール１１６は、１つのリソースについてのしきい値（例えば、プロセッサー使用度、メモリー使用度等）が満たされた場合、アプリケーション１０４から停止する１つ以上のアプリケーションを選択する。
【００２８】
[0030]  １つ以上の実施形態では、アプリケーション選択モジュール１１６は、停止するアプリケーション１０４を選択し、この選択したアプリケーション１０４の指示を停止モジュール１１８に供給する。停止モジュール１１８は、選択されたアプリケーション１０４にそれ自体で停止することの要求を伝達することによって、オペレーティング・システム１０２の他のコンポーネントまたはモジュールと通信して、選択されたアプリケーション１０４の実行を終了させることによって等というように、選択されたアプリケーション１０４を、種々の異なるやり方のいずれかで停止する。選択されたアプリケーション１０４を停止した後、トリガー・モジュール１１４は、直前に満たされたしきい値（そして、選択されたアプリケーション１０４を停止することになった）が未だ満たされているか否かチェックする。しきい値が未だ満たされている場合、アプリケーション選択モジュール１１６は、静止する他のアプリケーション１０４を選択する。しかしながら、アプリケーション値がもはや満たされていない場合、追加のアプリケーションを停止する必要はない。
【００２９】
[0031]  あるいは、アプリケーションを１つずつ選択するのではなく、アプリケーション選択モジュール１１６は、停止しようとする複数のアプリケーションを選択することもできる。例えば、アプリケーション選択モジュール１１６は、計算デバイス１００の特定のリソース（例えば、計算デバイス１００におけるランダム・アクセス・メモリー（ＲＡＭ）の特定の量、計算デバイス１００におけるプロセッサー・コアの特定の数等）に基づいて、実行させておくべき特定数のアプリケーションを決定することができる。その特定数のアプリケーションだけが実行し続けるように、１つ以上のアプリケーションを選択する。
【００３０】
[0032]  アプリケーション選択モジュール１１６は、種々の異なるやり方で、どのアプリケーション１０４を停止するか選択することができる。１つ以上の実施形態では、アプリケーション選択モジュール１１６は、バックグラウンドで実行しているアプリケーションを含む１組のアプリケーションから、停止するアプリケーションを選択する。フォアグラウンドで実行している（したがって、恐らくは、ユーザーに見えると考えられるユーザー・インターフェースを表示している）アプリケーションは、停止するアプリケーションを選択する１組の中には含まれない。アプリケーションがフォアグラウンドで実行しているのかまたはバックグラウンドで実行しているのかということは、システム情報収集モジュール１０６によって維持されているアプリケーションの特性であり、この特性は、アプリケーション・ライフタイム管理モジュール１０８によってシステム情報収集モジュール１０６から引き出すことができる。
【００３１】
[0033]  加えて、１つ以上の実施形態では、アプリケーション情報追跡モジュール１１２によって維持されているアプリケーション１０４および計算デバイス１００のリソースの特性は、アプリケーション選択モジュール１１６によって得られる。満たされたしきい値と関連付けられている特性について、その特性についての値に基づいて、バックグラウンドで実行している１組のアプリケーションに優先順位を付ける。アプリケーション選択モジュール１１６は、バックグラウンドにおいて実行している１組のアプリケーションから、最も有害な(offending)アプリケーション１０４を選択する。最も有害なアプリケーション１０４とは、その特性について最大値または最高値を有するアプリケーションである。例えば、最も高いリソース使用度を有するアプリケーション１０４、最も大きなエージの値(age value)を有するアプリケーション１０４（例えば、最も古いアプリケーション１０４）等である。一方、最も害が少ないアプリケーション１０４とは、最も低いリソース使用度を有するアプリケーション１０４、最も小さなエージの値を有するアプリケーション等である。例えば、プロセッサー使用度しきい値が満たされた場合、アプリケーション選択モジュール１１６は、最も大きなプロセッサー使用度を有するアプリケーションを、最も有害なアプリケーションとして選択し、このアプリケーションを、停止すべきアプリケーションとして選択する。例えば、５つの実行中アプリケーション１０４のプロセッサー使用度がそれぞれ２０％、５％、４％、４％、および３％であるとすると、プロセッサー使用度が２０％のアプリケーションが、最も高いプロセッサー使用度を有するアプリケーションとなり、停止するために選択されるアプリケーションとなる。あるいは、停止するために複数のアプリケーションを選択することもできる（例えば、プロセッサー使用度が２０％のアプリケーション、およびプロセッサー使用度が５％のアプリケーション）。
【００３２】
[0034]  あるいは、バックグラウンドで実行している１組のアプリケーションから、停止するアプリケーションを選択するために、他の技法を使用することもできる。例えば、バックグラウンドで実行している１組のアプリケーションに、各アプリケーションが使用される頻度（例えば、アプリケーションが実行している間におけるそのアプリケーションがフォアグラウンドで実行している時間の百分率）に基づいて、各アプリケーションが最後にフォアグラウンドにあったのはいつかに基づいて等によって、優先順位を付けることができる。停止するアプリケーションとして選択されたアプリケーションは、使用された頻度が最も少ないアプリケーション、フォアグラウンドにあったのが最も古いアプリケーション等とすることができる。
【００３３】
[0035]  更に、１つ以上の実施形態では、１つ以上の異なるタイプのアプリケーションを、停止するアプリケーションとして、アプリケーション選択モジュール１１６によって選択されることから除外する。アプリケーション選択モジュール１１６には、停止するアプリケーションとしてアプリケーション選択モジュール１１６によって選択されることから除外される１つ以上のタイプのアプリケーションの指示を設定することができ、または代わりに他のモジュールまたはデバイスからこの指示を得ることができる。停止するアプリケーションとしてアプリケーション選択モジュール１１６によって選択されることから除外される特定のタイプのアプリケーションは、異なるやり方で、アプリケーション選択モジュール１１６の設計者あるいは計算デバイス１００の管理者またはユーザーの要望に基づいて、決定することができる。
【００３４】
[0036]  尚、アプリケーション１０４および／または計算デバイス１００のリソースの特性ならびに関連付けられたしきい値の種々の例について本明細書において論じているが、これらは例に過ぎず、代わりに他の特性を、本明細書において論ずる技法と共に使用することもできることは注記してしかるべきである。例えば、計算デバイス１００上で実行しているアプリケーション１０４の数というような特性を使用することができ、トリガー・モジュール１１４は、少なくともしきい値数のアプリケーション１０４が計算デバイス１００上で実行している場合、しきい値が満たされたと判断することができる。他の例として、セルラ・ワイヤレス・ネットワーク接続使用度に対する１つのしきい値、およびＷｉ−Ｆｉネットワーク接続使用度に対する別のしきい値というように、異なるしきい値を異なるタイプのネットワーク接続と関連付けることができる。
【００３５】
[0037]  図２は、１つ以上の実施形態にしたがってアプリケーション・ライフタイム管理を実施するシステム例２００を示す。システム２００は、例えば、図１の計算デバイス１００によって実施することができる。システム２００は、アプリケーション・ライフタイム管理モジュール２０２を含む。これは、例えば、図１のアプリケーション・ライフタイム管理モジュール１０８とすることができる。
【００３６】
[0038]  アプリケーション・ライフタイム管理モジュールは、アプリケーションおよび／またはリソース特性２０４をシステム情報収集モジュール２０６から受け取る。これらのアプリケーションおよび／またはリソース特性は、例えば、アプリケーション１０４および／または計算デバイス１００のリソースの種々の特性に関する、図１のアプリケーション情報追跡モジュール１１２によって受け取られた情報とすることができる。これらのアプリケーションおよび／またはリソース特性２０４は、図１のシステム情報収集モジュール１０６のような、他のコンポーネントまたはモジュールを通じて受け取ることができる。
【００３７】
[0039]  また、アプリケーション・ライフタイム管理モジュール２０２は、アプリケーション識別子２０８もユーザー・インターフェース管理モジュール２１０から受け取る。アプリケーション識別子２０８は、例えば、フォアグラウンドで現在実行しているアプリケーションを識別する。ユーザー・インターフェース管理モジュール２１０は、現在フォアグラウンドにおいて実行しているアプリケーションの記録を維持し、これらのアプリケーションをその記録においてアプリケーション識別子２０８として供給する。これらのアプリケーション識別子は、図１のシステム情報収集モジュール１０６のような、他のコンポーネントまたはモジュールを通じて受け取ることもできる。
【００３８】
[0040]  アプリケーション・ライフタイム管理モジュール２０２は、アプリケーション／リソース特性２０４およびアプリケーション識別子２０８のうち１つ以上を使用して、停止する１つ以上のアプリケーション２１２を選択する。これら１つ以上のアプリケーションは、先に論じたように、異なるやり方で選択することができる。例えば、これらのアプリケーション２１２は、図１のアプリケーション１０４のうち１つ以上とすることができる。アプリケーション・ライフタイム管理モジュール２０２は、停止要求またはコマンド２１４をこれら１つ以上のアプリケーション２１２に伝達する。
【００３９】
[0041]  図３は、１つ以上の実施形態にしたがってアプリケーション・ライフタイム管理を実施するデバイスのためのプロセス例３００を示すフローチャートである。プロセス３００は、図１の計算デバイスのような計算デバイスによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはその組み合わせによって実施することができる。プロセス３００は、１組の動作（act)として示されており、これら種々の動作の処理(operation)を実行するために示された順序には限定されない。プロセス３００は、アプリケーション・ライフタイム管理を実施するデバイスのためのプロセス例であり、アプリケーション・ライフタイム管理実施についての、異なる図を参照する、追加の論述も本明細書には含まれる。
【００４０】
[0042]  プロセス３００において、しきい値を超過しているか否かチェックを行う（動作３０２）。先に論じたように、このしきい値は、計算デバイス上で実行しているアプリケーションおよび／または計算デバイスのリソースの特性と関連付けられたしきい値である。
【００４１】
[0043]  しきい値を超過していない場合、計算デバイス上で実行しているアプリケーションは、計算デバイス上で実行し続けることが許される（動作３０４）。次いで、動作３０２を繰り返す（例えば、規則的な間隔または不規則な間隔で）。
【００４２】
[0044]  しかしながら、しきい値を超過している場合、停止する１つ以上のアプリケーションを選択する（動作３０６）。これら１つ以上のアプリケーションは、先に論じたように、異なるやり方で選択することができる。
【００４３】
[0045]  動作３０６において選択した１つ以上のアプリケーションを停止する（動作３０８）。次いで、動作３０２を繰り返す（例えば、規則的な間隔または不規則な間隔で）。
【００４４】
[0046]  図４は、１つ以上の実施形態にしたがって停止する１つ以上のアプリケーションを選択するプロセス例４００を示すフローチャートである。プロセス４００は、図１の計算デバイス１００のような計算デバイスによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはその組み合わせで実施することができる。プロセス４００は、１組の動作として示されており、種々の動作の処理を実行するために示された順序には限定されない。プロセス４００は、停止する１つ以上のアプリケーションを選択するプロセス例であり、停止する１つ以上のアプリケーションの選択についての、異なる図を参照する、追加の論述も本明細書には含まれる。
【００４５】
[0047]  プロセス４００は、通例、計算デバイス上で実行しているアプリケーションおよび／または計算デバイスのリソースの特性と関連付けられたしきい値が満たされたことに応答して開始される。プロセス４００において、バックグラウンド・アプリケーションのリストを生成する（動作４０２）。バックグラウンド・アプリケーションとは、計算デバイス上においてバックグラウンドで実行しているアプリケーションである。
【００４６】
[0048]  任意に、停止することから除外される１つ以上のアプリケーションを、生成したリストから除去する（動作４０４）。先に論じたように、異なるタイプのアプリケーションを、停止することから除外することができる。
【００４７】
[0049]  生成したリスト上に残っているアプリケーションに優先順位を付ける（動作４０６）。特定のリソースの使用度（例えば、満たされたしきい値と関連付けられたリソース）、エージ、使用頻度等にしたがってというように異なるやり方で、これらのアプリケーションに優先順位を付けることができる。
【００４８】
[0050]  生成したリスト上で、アプリケーションを選択する（動作４０８）。動作４０８において選択されたアプリケーションは、優先順位が最も高いアプリケーションである（例えば、リソース使用度が最も高い、エージが最も古い、使用頻度が最も低い等）。
【００４９】
[0051]  選択したアプリケーションを停止する（動作４１０）。先に論じたように、選択したアプリケーションは、異なるやり方で停止することができる。
[0052]  次いで、しきい値が未だ満たされているか否かチェックを行う（動作４１２）。しきい値が未だ満たされている場合、プロセス４００は動作４０８に戻って、別のアプリケーションを選択する。あるいは、プロセス４００は動作４０２に戻って、バックグラウンド・アプリケーションのリストを再度生成することもできる。
【００５０】
[0053]  しきい値がもはや満たされていない場合、プロセス４００を終了する（動作４１４）。加えて、停止することができる全てのアプリケーション（例えば、全てのバックグラウンド・アプリケーション、停止されることから除外されない全てのアプリケーション等）が停止され終えている場合、しきい値がなおも満たされていても、プロセス４００を終了する（動作４１４）。
【００５１】
[0054]  プロセス４００については、リストを生成し、このリストから、停止されるのを除外されるアプリケーションを除去することを参照して論じた。代わりに、バックグラウンド・アプリケーションのリストを生成して、優先順位を付け、生成したリスト上のアプリケーションを選択し、この選択したアプリケーションが、停止することから除外されない場合にのみ、このアプリケーションを停止することもできる。
【００５２】
[0055]  本明細書において論じた技法は、種々の使用シナリオをサポートする。例えば、特定のバックグラウンド・アプリケーションが大量のプロセッサー（またはメモリー）の容量を使用している場合、この特定のバックグラウンド・アプリケーションを、停止するアプリケーションとして選択することができる。つまり、フォアグラウンドになく、デバイス１００のユーザーによって現在使用されていないバックグラウンド・アプリケーションを自動的に停止し、他のアプリケーションが使用するために、このバックグラウンド・アプリケーションによって使用されていたリソースを解放する。単純に一番最後に使用されたアプリケーションを停止するのではなく、他のアプリケーションが使用するためにリソースを解放する高い確率を有するアプリケーションが、停止されるアプリケーションとなる。
【００５３】
[0056]  また、本明細書において論じたアプリケーション・ライフタイム管理技法は、ユーザーから、複数のアプリケーションを彼または彼女の計算デバイス上で管理する負担の一部を軽減する。ユーザーは、彼または彼女がもはやこれらのアプリケーションを使用しなくなったときに、これらのアプリケーションを停止することを考えることなく、望む通りにアプリケーションを実行することができる。逆に、本明細書において論じたアプリケーション・ライフタイム管理技法は、ユーザーのためにアプリケーションを自動的に停止し、現在ユーザーが使用しているアプリケーションではなく、バックグラウンド・アプリケーションを停止するように配慮する。
【００５４】
[0057]  図５は、１つ以上の実施形態にしたがってアプリケーション・ライフタイム管理を実施するように構成することができる計算デバイス例５００を示す。計算デバイス５００は、例えば、図１の計算デバイス１００とすることができる。
【００５５】
[0058]  計算デバイス５００は、１つ以上のプロセッサーまたは処理ユニット５０２（各々、１つ以上のプロセッサー・コアを含むことができる）、１つ以上のメモリーおよび／または記憶コンポーネント５０６を含むことができる１つ以上のコンピューター読み取り可能媒体５０４、１つ以上の入力／出力（Ｉ／Ｏ）デバイス５０８、ならびに種々のコンポーネントおよびデバイスが互いに通信し合うことを可能にするバス５１０を含む。コンピューター読み取り可能媒体５０４および／または１つ以上のＩ／Ｏデバイス５０８は、計算デバイス５００の一部として含ませることができ、あるいは計算デバイス５００に結合するのでもよい。バス５１０は、種々の異なるバスアーキテクチャーを使用する、メモリー・バスまたはメモリー・コントローラ、周辺バス、加速グラフィクス・ポート、プロセッサーまたはローカル・バス等を含む、様々なタイプのバス構造のうち１つ以上を表す。バス５１０は、有線バスおよび／またはワイヤレス・バスを含むことができる。
【００５６】
[0059]  メモリー／記憶コンポーネント５０６は、１つ以上のコンピューター記憶媒体を表す。コンポーネント５０６は、揮発性媒体（ランダム・アクセス・メモリー（ＲＡＭ）のような）、および／または不揮発性媒体（リード・オンリ・メモリー（ＲＯＭ）、フラッシュ・メモリー、光ディスク、磁気ディスク等のような）を含むことができる。コンポーネント５０６は、固定媒体（例えば、ＲＡＭ、ＲＯＭ、固定ハード・ディスク等）、およびリムーバブル媒体（例えば、フラッシュ・メモリー・ドライブ、リムーバブル・ハード・ドライブ、光ディスク等）を含むことができる。
【００５７】
[0060]  本明細書において論じた技法は、ソフトウェアで実施することができ、１つ以上の処理ユニット５０２によって命令を実行する。尚、処理ユニット５０２内、処理ユニット５０２の種々のキャッシュ・メモリー内、デバイス５００の他のキャッシュ・メモリー（図示せず）内、他のコンピューター読み取り可能媒体上等というように、計算デバイス５００の異なるコンポーネントに異なる命令を格納することができることは、認められてしかるべきである。加えて、計算デバイス５００において命令が格納される場所は、ときの経過と共に変化する可能性があることも認められてしかるべきである。
【００５８】
[0061]  1つ以上の入力／出力デバイス５０８は、ユーザーがコマンドおよび情報を計算デバイス５００に入力することを可能にし、更に情報をユーザーおよび／または他のコンポーネントまたはデバイスに提示することを可能にする。入力デバイスの例には、キーボード、カーソル制御デバイス（例えば、マウス）、マイクロフォン、スキャナー等が含まれる。出力デバイスの例には、ディスプレイ・デバイス（例えば、モニターまたはプロジェクター）、スピーカー、プリンター、ネットワーク・カード等が含まれる。
【００５９】
[0062]  本明細書では、ソフトウェアまたはプログラム・モジュールという一般的なコンテキストで、種々の技法について説明した。一般に、ソフトウェアは、ルーチン、プログラム、オブジェクト、コンポーネント、データー構造等を含み、特定のタスクを実行するか、または特定の抽象データー・タイプを実装する。これらのモジュールおよび技法の実施態様は、何らかの形態のコンピューター読み取り可能媒体上に格納すること、またはこれを介して送信することもできる。コンピューター読み取り可能媒体は、計算デバイスによってアクセスすることができる入手可能な１つまたは複数の任意の媒体でも可能である。一例として、そして限定ではなく、コンピューター読み取り可能媒体は、「コンピューター記憶媒体」および「通信媒体」を含むことができる。
【００６０】
[0063]  「コンピューター読み取り可能媒体」は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、またはその他のデーターというような、情報の格納のためのいずれかの方法または技術で実現されたものである。コンピューター記憶媒体は、限定ではなく、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリーまたはその他のメモリー技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）またはその他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために使用することができしかもコンピューターがアクセスすることができる他の任意の媒体を含む。
【００６１】
[0064]  「通信媒体」は、通例、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、またはその他のデーターを、搬送波またはその他の伝達メカニズムというような変調データー信号の中に具体化する。また、通信媒体は、あらゆる情報配信媒体も含む。「変調データー信号」という用語が意味するのは、信号が特性を有し、情報をその信号の中にエンコードするようなやり方で、その特性の１つ以上が設定または変更されているということである。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続というような有線媒体、ならびに音響、ＲＦ、赤外線、およびその他のワイヤレス媒体というような、ワイヤレス媒体を含む。以上のうちのあらゆるものの組み合わせも、コンピューター読み取り可能媒体の範囲に含まれるものとする。
【００６２】
[0065]  一般に、本明細書において記載した機能または技法は、そのいずれも、ソフトウェア、ファームウェア、ハードウェア（例えば、固定論理回路）、手動処理、またはこれらの実施態様の組み合わせを使用して実現することができる。「モジュール」および「コンポーネント」という用語は、本明細書において使用する場合、ソフトウェア、ファームウェア、ハードウェア、またはその組み合わせを総合的に表す。ソフトウェアの実施態様の場合、モジュールまたはコンポーネントは、プロセッサー（例えば、１つまたは複数のＣＰＵ）上において実行されると、指定されたタスクを実行するプログラム・コードを表す。プログラム・コードは、１つ以上のコンピューター読み取り可能メモリー・デバイスに格納することができ、これに関するこれ以上の説明は、図５を参照して見いだすことができる。本明細書において記載したアプリケーション・ライフタイム管理技法の特徴は、プラットフォーム独立ということであり、これが意味するのは、本技法は、種々のプロセッサーを有する種々の商用計算プラットフォーム上において実現できるということである。
【００６３】
[0066]  以上、本主題について、構造的特徴および／または方法論的動作に特定的な文言で説明したが、特許請求の範囲において定義する主題は、必ずしも以上で説明した特定的な特徴や動作には限定されないことは言うまでもない。逆に、以上で説明した特徴および動作は、特許請求の範囲を実施する形態例として開示したまでである。
【図１】
0005984824.tif 000004
【図２】
0005984824.tif 000005
【図３】
0005984824.tif 000006
【図４】
0005984824.tif 000007
【図５】
0005984824.tif 000008