(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスのリソースを管理するためにコンピューティングデバイスによって実施される方法であって、
前記コンピューティングデバイスによって実行されている間、アプリケーションの第１のインスタンスによって使用されるリソースの第１の量を決定するステップであって、前記アプリケーションの前記第１のインスタンスに関連付けられるフォアグラウンドプロセス及び前記アプリケーションの前記第１のインスタンスに関連付けられる１つ又は複数のバックグラウンドタスクによって使用されるリソースの量を決定するステップを含む、ステップと、
前記第１の量に少なくとも基づいて、前記アプリケーションについての第１の予測されるリソース使用量を計算するステップと、
前記第１の予測されるリソース使用量をデータストアに格納するステップと、
前記データストアに格納された前記第１の予測されるリソース使用量に少なくとも基づいて、前記コンピューティングデバイスによって実行される前記アプリケーションの第２のインスタンスに割り当てられるリソースの推定される第２の量を決定するステップと、
前記リソースの前記第２の量が現在利用可能でないと判定することに応答して、前記アプリケーションの前記第２のインスタンスの実行を防止するステップと
を含む、方法。
【請求項２】
前記リソースは、
揮発性又は不揮発性のメモリーリソース、
中央処理装置（ＣＰＵ）リソース、
入出力（Ｉ／Ｏ）リソース、
ネットワークリソース、
電源リソース、及び
センサーリソース
のうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項３】
前記第１の量に少なくとも基づいて、前記アプリケーションについての前記第１の予測されるリソース使用量を計算するステップは、
前記第１の量を、前記アプリケーションの１つ又は複数の以前に実行されたインスタンスに関連付けられる１つ又は複数の以前に決定された量と比較することによって、前記アプリケーションについての最大リソース使用量を得るステップと、
前記最大リソース使用量に基づいて、前記第１の予測されるリソース使用量を計算するステップと
を含む、請求項１に記載の方法。
【請求項４】
前記第１の量に少なくとも基づいて、前記アプリケーションについての前記第１の予測されるリソース使用量を計算するステップは、
前記第１の量及び前記アプリケーションの以前に実行されたインスタンスに関連付けられる１つ又は複数の以前に決定された量に基づいて、前記アプリケーションについての平均リソース使用量を得るステップと、
前記平均リソース使用量に基づいて、前記第１の予測されるリソース使用量を計算するステップと
を含む、請求項１に記載の方法。
【請求項５】
前記第１の量及び前記アプリケーションの以前に実行されたインスタンスに関連付けられる１つ又は複数の以前に決定された量に基づいて、前記アプリケーションについての前記平均リソース使用量を得るステップは、
前記第１の量を第１の重み付け係数で乗算して、第１の積を得るステップと、
少なくとも前記１つ又は複数の以前に決定された量に基づいて得られる移動平均量を第２の重み付け係数で乗算して、第２の積を得るステップと、
前記第１の積及び前記第２の積を合計するステップと
を含む、請求項４に記載の方法。
【請求項６】
前記第１の重み付け係数が前記第２の重み付け係数よりも大きい、請求項５に記載の方法。
【請求項７】
前記決定するステップ、前記計算するステップ及び前記格納するステップが、
第１のユーザーのために前記コンピューティングデバイスによって実行されている間に前記アプリケーションの前記第１のインスタンスによって使用される前記リソースの前記第１の量を決定するステップと、
前記第１の量に少なくとも基づいて、前記アプリケーション及び前記第１のユーザーについての前記第１の予測されるリソース使用量を計算するステップと、
前記第１の予測されるリソース使用量を前記データストアに格納するステップと、
前記データストアに格納された前記第１の予測されるリソース使用量に少なくとも基づいて、前記第１のユーザーのために前記コンピューティングデバイスによって実行される前記アプリケーションの前記第２のインスタンスに割り当てられる前記リソースの前記第２の量を決定するステップと
を含み、前記方法は、
第２のユーザーのために前記コンピューティングデバイスによって実行されている間に前記アプリケーションの第３のインスタンスによって使用される前記リソースの第３の量を決定するステップと、
前記第３の量に少なくとも基づいて、前記アプリケーション及び前記第２のユーザーについての第２の予測されるリソース使用量を計算するステップと、
前記第２の予測されるリソース使用量を前記データストアに格納するステップと、
前記データストアに格納された前記第２の予測されるリソース使用量に少なくとも基づいて、前記第２のユーザーのために前記コンピューティングデバイスによって実行される前記アプリケーションの第４のインスタンスに割り当てられる前記リソースの推定される第４の量を決定するステップと
をさらに含む、請求項１に記載の方法。
【請求項８】
コンピューティングデバイス上に実装されるシステムであって、
少なくとも１つのプロセッサーと、
前記少なくとも１つのプロセッサーによってアクセス可能なメモリーであって、前記少なくとも１つのプロセッサーによる実行のためのコンポーネントを格納する、メモリーと
を備え、前記コンポーネントは、
アプリケーションの第１のインスタンスによって使用される前記コンピューティングデバイスの少なくとも１つのリソースの第１の量を決定し、前記第１の量を決定することは、前記アプリケーションの前記第１のインスタンスに関連付けられるフォアグラウンドプロセス及び前記アプリケーションの前記第１のインスタンスに関連付けられる１つ又は複数のバックグラウンドタスクによって使用されるリソースの量を決定することを含み、
前記第１の量に少なくとも基づいて、前記アプリケーションについての第１の予測されるリソース使用量を計算し、
前記第１の予測されるリソース使用量をデータストアに格納し、
前記データストアに格納された前記第１の予測されるリソース使用量に少なくとも基づいて、前記コンピューティングデバイスによって実行される前記アプリケーションの第２のインスタンスに割り当てられるリソースの推定される第２の量を決定し、
前記リソースの前記第２の量が現在利用可能でないと判定することに応答して、前記アプリケーションの前記第２のインスタンスの実行を防止する
ように構成される、リソースマネージャー
を含む、システム。
【請求項９】
前記アプリケーションの前記第１のインスタンスに関連付けられる前記フォアグラウンドプロセスは、前記アプリケーションの前記第１のインスタンスのためのユーザーインターフェイスを提供する、請求項１に記載の方法。
【請求項１０】
前記アプリケーションの前記第１のインスタンスに関連付けられる前記１つ又は複数のバックグラウンドタスクのうちの少なくとも１つは、前記フォアグラウンドプロセスと同時に実行される、請求項１に記載の方法。
【請求項１１】
前記アプリケーションの前記第１のインスタンスに関連付けられる前記１つ又は複数のバックグラウンドタスクのうちの少なくとも１つは、前記フォアグラウンドプロセスによって開始される、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイス固有又はユーザー固有のリソース使用プロファイルに基づくリソース管理に関する。
【背景技術】
【０００２】
[0001]今日のモバイルデバイス、特に今日の低価格のモバイルデバイスは、厳しいマルチタスクシナリオに見舞われている。規模において競争力があるようにするために、モバイルデバイスは、低価格及び／又は低電力の部品を用いて製造しなければならないことが多い。これは、特に、ランダムアクセスメモリー（ＲＡＭ）及びマルチメディアカード（ＭＭＣ）の両方を含む、モバイルデバイスを実装するために使用されるメモリーに対して当てはまる。このことの正味の影響は、メモリー管理についてページングに頼っている従来のモバイルデバイスが、同時に複数のプロセスを実行しようとするとき、すぐにフォールオーバーすることである。このことは、非常に乏しいユーザーエクスペリエンスや障害のあるマルチタスクシナリオにつながる。市場が製造コストの低減を求める一方で、モバイルデバイス用に開発されたアプリケーションやオペレーティングシステムがますます大きくなっているので、この問題は特に重要になってきている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
[0002]従来、モバイルデバイス上での複数のプロセスの同時実行をサポートする十分なメモリーがないという問題は、以下の方法のうちの１つ又は複数の方法で扱われた：メモリー管理のためにページングを使用する；モバイルデバイス上でより多くのメモリーを設ける；アプリケーションやオペレーティングシステムのサイズに制限を設ける。上述したように、ページングは、非常に乏しいユーザーエクスペリエンスや障害のあるマルチタスクシナリオにつながることがある。より多くのメモリーを設けると、モバイルデバイスのコスト、複雑さ及び消費電力が跳ね上がる。アプリケーションとオペレーティングシステムのサイズに制限を設けると、ユーザーにとって所望の機能を開発して提供することが極めて困難になる。少なくともこれらの理由から、モバイルデバイスのための既存のメモリー管理ソリューションは不十分である。今日のモバイルデバイスが、ユーザーエクスペリエンスに悪影響を与えず様々なマルチタスクシナリオを可能にする方法で、複数のプロセスを同時に実行することを可能にするために、より良いメモリー管理技術が必要とされている。
【課題を解決するための手段】
【０００４】
[0003]モバイルコンピューティングデバイスなどのコンピューティングデバイス上で実行されるアプリケーションによる、揮発性及び不揮発性メモリー、中央処理装置（ＣＰＵ）、入出力（Ｉ／Ｏ）、ネットワーク、電力及びセンサーなどの様々なリソースの使用状況の追跡を可能にする、システム、方法、装置及びコンピュータープログラム製品が本願において説明される。本願で説明される技術は、アプリケーションに関連付けられるフォアグラウンドプロセス（例えば、アプリケーションのためのユーザーインターフェイスを現在提供しており、コンピューティングデバイスに関連付けられる表示の少なくとも一部を占有しているプロセス）によって使用されるリソース、並びに、コンピューティングデバイス上で別のプロセスとして実行されているアプリケーションに関連付けられる１つ又は複数のバックグラウンドタスクによって使用されるリソースの両方を追跡することによって、アプリケーションについてのリソースの使用を都合よく追跡する。アプリケーションによるリソース使用に関する履歴データは、アプリケーションのリソース使用量を予測するために利用され、それはその後格納される。アプリケーションのその後の起動は、予測されるリソース使用量が利用可能であるかどうかを条件とすることができる。予測されるリソース使用量が利用可能な場合、それをアプリケーションに割り当てることができ、アプリケーションを起動することができる。アプリケーションが予測されるリソース使用量を超える場合、それと同時に実行されている他のプロセスが、リソースを解放するために終了されてもよい。アプリケーションが実行する方法にかかわらず、アプリケーションについて新たなリソース使用データが取得され、その後、予測されるリソース使用量を調整するために使用される。このように、アプリケーションのためのリソースの割り当ては、ユーザーの使用パターンに基づいて時間とともにユーザーに対して自動的に微調整することができ、コンピューティングデバイスは、特にマルチタスクシナリオ中、よりよいユーザーエクスペリエンス及び改善されたパフォーマンスを提供することが可能となる。複数のユーザーをサポートするコンピューティングデバイスのために、予測されるリソース使用量は、各ユーザー／アプリケーションの組み合わせについて格納することができる。
【０００５】
[0004]本願に記載のシステム、方法、装置及びコンピュータープログラム製品はまた、特定のリソース使用行動に関連付けられる時刻、位置及びイベントなどの、アプリケーション及び／又はユーザーによるリソース使用に関連する他の情報を追跡することが可能である。そのような情報は、ユーザーがアプリケーションを起動しようとする前であっても、コンピューティングデバイスのリソースをアプリケーションに予測的に割り当てるために使用することができ、有利である。さらに、アプリケーション及び／又はアプリケーションデータは、ユーザーがそれらにアクセスすることが予期される前に、ある時点でメモリーへロードされてもよい。
【０００６】
[0005]具体的には、コンピューティングデバイスのリソースを管理するためにコンピューティングデバイスによって実施される方法が、本願に記載される。例えば、リソースは、揮発性又は不揮発性メモリーリソース、ＣＰＵリソース、Ｉ／Ｏリソース、ネットワークリソース、電源リソース及びセンサーリソースのうちの少なくとも１つを含むことができる。この方法によれば、コンピューティングデバイスによって実行されている間、アプリケーションの第１のインスタンスによって使用されるリソースの第１の量が決定される。第１の量を決定するステップは、第１のアプリケーションに関連付けられるフォアグラウンドプロセス及びアプリケーションの第１のインスタンスに関連付けられる１つ又は複数のバックグラウンドタスクによって使用されるリソースの量を決定するステップを含んでもよい。アプリケーションのための第１の予測されるリソース使用量は、少なくとも第１の量に基づいて計算される。第１の予測されるリソース使用量はデータストアに格納される。次いで、コンピューティングデバイスによって実行されるアプリケーションの第２のインスタンスに割り当てられるリソースの第２の量が、少なくとも、データストアに格納された第１の予測されるリソース使用量に基づいて決定される。
【０００７】
[0006]前述の方法の一実施形態では、少なくとも第１の量に基づいてアプリケーションについての第１の予測されるリソース使用量を計算するステップは、第１の量を、１つ又は複数の以前に実行されたアプリケーションのインスタンスに関連付けられる１つ又は複数の以前に決定された量と比較することにより、アプリケーションについての最大のリソース使用量を得るステップと、最大リソース使用量に基づいて、第１の予測されるリソース使用量を計算するステップとを含む。
【０００８】
[0007]別の実施形態では、少なくとも第１の量に基づいてアプリケーションについての第１の予測されるリソース使用量を計算するステップは、第１の量及びアプリケーションの以前に実行されたインスタンスに関連付けられる１つ又は複数の以前に決定された量に基づいてアプリケーションについての平均リソース使用量を得るステップと、平均リソース使用量に基づいて第１の予測されるリソース使用量を計算するステップとを含む。さらにこの実施形態によれば、アプリケーションの平均リソース使用量を得るステップは、第１の量を第１の重み付け係数によって乗算して第１の積を得るステップと、少なくとも１つ又は複数の以前に決定された量に基づいて得られた移動平均量を第２の重み付け係数によって乗算して、第２の積を得るステップと、第１の積及び第２の積を合計するステップとを含む。実施形態によって、第１の重み付け係数は、第２の重み付け係数より大きくてもよいし、小さくてもよいし、又は等しくてもよい。
【０００９】
[0008]前述の方法はまた、リソースの第２の量が現在利用可能ではないと判定するステップと、それに応答して、アプリケーションの第２のインスタンスの実行を防止し及び／又はコンピューティングデバイス上で現在実行されている１つ又は複数のプロセスを終了するなどの特定のアクションを実行するステップとを含む。
【００１０】
[0009]前述の方法は、さらに、コンピューティングデバイスによって実行されている間、アプリケーションの第２のインスタンスによって使用されるリソースの量が第２の量を超えると判定するステップと、それに応答して、コンピューティングデバイス上で現在実行されている１つ又は複数のプロセスを終了するステップとを含んでもよい。
【００１１】
[0010]前述の方法の別の実施形態では、決定するステップ、計算するステップ及び格納するステップは、第１のユーザーのためにコンピューティングデバイスによって実行されている間、アプリケーションの第１のインスタンスによって使用されるリソースの第１の量を決定するステップと、少なくとも第１の量に基づいてアプリケーション及び第１のユーザーについての第１の予測されるリソース使用量を計算するステップと、第１の予測されるリソース使用量をデータストア内に格納するステップと、データストア内に格納された第１の予測されるリソース使用量に少なくとも基づいて、第１のユーザーのためにコンピューティングデバイスによって実行されるべきアプリケーションの第２のインスタンスに割り当てられるべきリソースの第２の量を決定するステップとを含む。この実施形態によれば、方法はさらに、第２のユーザーのためにコンピューティングデバイスによって実行される間、アプリケーションの第３のインスタンスにより使用されるリソースの第３の量を決定するステップと、第３の量に少なくとも基づいてアプリケーション及び第２のユーザーについての第２の予測されるリソース使用量を計算するステップと、第２の予測されるリソース使用量をデータストア内に格納するステップと、データストア内に格納された第２の予測されるリソース使用量に少なくとも基づいて、第２のユーザーのためにコンピューティングデバイスによって実行されるべきアプリケーションの第４のインスタンスに割り当てられるべきリソースの第４の量を決定するステップとを含む。
【００１２】
[0011]コンピュータープログラム製品もまた本願に記載される。コンピュータープログラム製品は、コンピューティングデバイスの少なくとも１つのプロセッサーによって実行されると少なくとも１つのプロセッサに動作を実行させる、コンピュータープログラムロジックが記録されたコンピューター読み取り可能なメモリーを含む。動作は、アプリケーションを起動する要求を受け取るステップと、アプリケーションについての予測されるリソース使用量を得るステップであって、当該予測されるリソース使用量は、コンピューティングデバイスによるアプリケーションの１つ又は複数の以前の実行中のコンピューティングデバイスのリソースについての監視された使用に基づく、ステップと、予測されるリソース使用量を現在利用可能なリソースの量と比較することによって、リソースの十分な量が利用可能であるか否かを判定するステップと、少なくともリソースの十分な量が利用可能であると判定することに応答して、アプリケーションが起動することを可能にするステップとを含む。リソースは、揮発性又は不揮発性のメモリーリソース、ＣＰＵリソース、Ｉ／Ｏリソース、ネットワークリソース、電源リソース及びセンサーリソースのうちの１つを含んでもよい。アプリケーションについてのリソースの監視された使用は、アプリケーションに関連付けられるフォアグラウンドプロセス及びアプリケーションに関連付けられる１つ又は複数のバックグラウンドタスクによる、リソースの監視された使用を伴ってもよい。
【００１３】
[0012]前述のコンピュータープログラム製品の一実施形態では、動作はさらに、少なくとも十分な量のリソースが利用可能でないと判定することに応答して、アプリケーションを起動させないステップを含む。
【００１４】
[0013]別の実施形態では、動作はさらに、少なくとも十分な量のリソースが利用可能でないと判定することに応答して、１つ又は複数のプロセスを終了させるステップを含む。
[0014]さらに別の実施形態では、動作はさらに、起動された後にアプリケーションによって使用されるリソースの量が予測されるリソース使用量を超えると判定することに応答して、コンピューティングデバイス上で同時に実行されている１つ又は複数のプロセスを終了するステップを含む。
【００１５】
[0015]さらに別の実施形態では、受け取るステップは、第１のユーザーのためにアプリケーションを起動するための要求を受け取るステップを含み、得るステップは、アプリケーション及び第１のユーザーについて予測されるリソース使用量を得るステップを含む。
【００１６】
[0016]コンピューティングデバイス上に実装されたシステムもまた本願に記載される。システムは、少なくとも１つのプロセッサーと、少なくとも１つのプロセッサーによりアクセス可能なメモリーとを含む。メモリーは、少なくとも１つのプロセッサーによる実行のためのコンポーネントを格納する。コンポーネントは、アプリケーション及びユーザーのうちの１つ又は複数によるコンピューティングデバイスの少なくとも１つのリソースの使用のパターンを監視し、使用のパターンに関連付けられる情報を格納し、及び格納された情報を使用して、少なくとも１つのプロセッサーによる少なくとも１つのプロセスの実行前に、当該少なくとも１つのプロセスに対してリソースのうちの少なくとも一部を予測的に割り当てるように動作可能なリソースマネージャーを含む。少なくとも１つのリソースは、揮発性又は不揮発性のメモリーリソース、ＣＰＵリソース、Ｉ／Ｏリソース、ネットワークリソース、電源リソース及びセンサーリソースを含むことができる。
【００１７】
[0017]前述のシステムの一実施形態では、リソースマネージャーは、コンピューティングデバイスのユーザー又は任意の他のエンティティがアプリケーションを起動する前に、リソースの少なくとも一部をアプリケーションに対して予測的に割り当てるように動作可能である。少なくとも１つのリソースがメモリーを含む前述のシステムの別の実施形態では、リソースマネージャーは、さらに、コンピューティングデバイスのユーザー又は任意の他のエンティティがアプリケーションを起動する前に、アプリケーション又はアプリケーションに関連付けられるデータの少なくとも一部を予測的に割り当てられたメモリーへロードするように動作可能である。
【００１８】
[0018]この概要は、詳細な説明において以下でさらに説明される概念の選択を簡略化された形で導入するために提供される。この概要は、特許請求される主題の主要な特徴や不可欠な特徴を特定することを意図するものではなく、特許請求される主題の範囲を限定するために使用されることも意図していない。さらに、特許請求される主題は、詳細な説明及び／又は本文書の他のセクションで説明される特定の実施形態に限定されるものではないことに留意すべきである。そのような実施形態は、例示の目的のみのために本願に提示されている。さらなる実施形態は、本願に含まれる教示に基づいて、当業者にとって明らかとなろう。
【００１９】
[0019]本願に含まれ、本願の一部を形成する添付の図面は、本発明の実施形態を示すものであり、さらに、詳細な説明とともに、本発明の原理を説明し、当業者が本発明を作成及び使用することを可能にするのに役立つものである。
【図面の簡単な説明】
【００２０】
【図１】[0020]実施形態による、デバイス固有又はユーザー固有のリソース使用プロファイルに基づいてリソース管理を実行するコンピューティングデバイスのブロック図である。
【図２】[0021]実施形態による、デバイス固有又はユーザー固有のリソース使用プロファイルに従ってコンピューティングデバイスのリソースを管理するためにコンピューティングデバイスによって実施される方法のフローチャートを示す。
【図３】[0022]一実施形態による、アプリケーションについての予測されるリソース使用量を計算する方法のフローチャートを示す。
【図４】[0023]別の実施形態による、アプリケーションについての予測されるリソース使用量を計算する方法のフローチャートを示す。
【図５】[0024]実施形態による、アプリケーションについての平均リソース使用量を得る方法のフローチャートを示す。
【図６】[0025]図２に示すフローチャートの方法に従って行うことができるさらなるステップのフローチャートを示す。
【図７】[0026]図２に示すフローチャートの方法に従って行うことができるさらなるステップのフローチャートを示す。
【図８】[0027]図２に示すフローチャートの方法に従って行うことができるさらなるステップのフローチャートを示す。
【図９】[0028]実施形態による、ユーザー固有のリソース使用プロファイルに従ってコンピューティングデバイスのリソースを管理するための、コンピューティングデバイスによって実施される方法のフローチャートを示す。
【図１０】[0029]実施形態による、デバイス固有又はユーザー固有のリソース使用プロファイルに従ってアプリケーションの起動を管理するための方法のフローチャートを示す。
【図１１】[0030]プロセスに対してリソースを予測的に割り当てるために、コンピューティングデバイスのリソースに関するユーザーの監視されるリソース使用パターン及びそれから導き出される情報を使用するための方法のフローチャートを示す。
【図１２】[0031]コンピューティングデバイス上で実行されるアプリケーションが、アプリケーションに関連付けられるフォアグラウンドプロセス及び１つ又は複数のバックグラウンドタスクに対してコンピューティングデバイスのリソースの割り当てを管理するのを助けることを可能にするための、１つの方法のフローチャートを示す。
【図１３】[0032]コンピューティングデバイス上で実行されるアプリケーションが、アプリケーションに関連付けられるフォアグラウンドプロセス及び１つ又は複数のバックグラウンドタスクに対してコンピューティングデバイスのリソースの割り当てを管理するのを助けることを可能にするための、別の方法のフローチャートを示す。
【図１４】[0033]様々な実施形態を実装するために使用することができる例示的なモバイルデバイスのブロック図である。
【図１５】[0034]様々な実施形態を実施するために使用することができる例示的なプロセッサーベースのコンピューターシステムのブロック図である。
【００２１】
[0035]本発明の特徴及び利点は、同様の参照文字が全体を通して対応する要素を特定する図面と併せて考慮される場合、以下に記載する詳細な説明からより明らかになるであろう。図面において、同様の参照番号は、一般に、同一の、機能的に類似の、及び／又は構造的に類似の要素を示す。要素が最初に現れる図面は、対応する参照番号の左端の数字によって示される。
【発明を実施するための形態】
【００２２】
Ｉ．はじめに
[0036]以下の詳細な説明は、本発明の例示的な実施形態を示す添付の図面を参照する。しかしながら、本発明の範囲はこれらの実施例に限定されるものではなく、代わりに添付の特許請求の範囲によって規定される。したがって、示される実施形態の修正版などの、添付の図面に示されたもの以外の実施形態が、本発明に包含されてもよい。
【００２３】
[0037]明細書中での「一実施形態」、「実施形態」、「例示的な実施形態」などへの参照は、説明される実施形態が特定の特徴、構造又は特性を含み得るが、すべての実施形態が必ずしも当該特定の特徴、構造又は特性を含まなくてもよいことを示す。また、そのような語句は、必ずしも同じ実施形態を指しているわけではない。さらに、特定の特徴、構造又は特性が実施形態に関連して説明される場合、明示的に説明されていようとなかろうと、他の実施形態に関連してそのような特徴、構造又は特性を実施することが当業者の知識の範囲内にあると考えられる。
【００２４】
[0038]モバイルコンピューティングデバイスなどのコンピューティングデバイス上で実行されるアプリケーションによる、揮発性及び不揮発性のメモリー、ＣＰＵ、Ｉ／Ｏ、ネットワーク、電源及びセンサーなどの様々なリソースの使用の追跡を可能にする、システム、方法、装置及びコンピュータープログラム製品が本願で説明される。本願で説明される技術は、アプリケーションに関連付けられるフォアグラウンドプロセス（例えば、アプリケーションに対するユーザーインターフェイスを提供し、コンピューティングデバイスに関連付けられる表示を排他的に占有することができるプロセス）によって使用されるリソース、並びに、コンピューティングデバイス上で別のプロセスとして実行されている、アプリケーションに関連付けられる１つ又は複数のバックグラウンドタスクによって使用されるリソースの両方を追跡することによって、アプリケーションについてのリソース使用を有利に追跡する。アプリケーションによるリソース使用に関する履歴データは、アプリケーションのリソース使用量を予測するために利用され、その後格納される。アプリケーションのその後の起動は、予測されるリソース使用量が利用可能であるかどうかを条件とすることができる。予測されるリソース使用量が利用可能な場合、それをアプリケーションに割り当てることができ、アプリケーションを起動することができる。その後、アプリケーションが予測されるリソース使用量を超える場合、それと同時に実行されている他のプロセスが、リソースを解放するために終了されてもよい。アプリケーションが実行する方法にかかわらず、アプリケーションについて新たなリソース使用データが取得され、その後、予測されるリソース使用量を調整するために使用される。このように、アプリケーションのためのリソースの割り当ては、ユーザーの使用パターンに基づいて時間とともにユーザーに対して自動的に微調整することができ、コンピューティングデバイスは、特にマルチタスクシナリオ中、よりよいユーザーエクスペリエンス及び改善されたパフォーマンスを提供することが可能となる。複数のユーザーをサポートするコンピューティングデバイスのために、予測されるリソース使用量は、各ユーザー／アプリケーションの組み合わせについて格納することができる。
【００２５】
[0039]本願に記載のシステム、方法、装置及びコンピュータープログラム製品はまた、特定のリソース使用行動に関連付けられる時刻、位置及びイベントなどの、アプリケーション及び／又はユーザーによるリソース使用に関連する他の情報を追跡することが可能である。そのような情報は、ユーザーがアプリケーションを起動しようとする前であっても、コンピューティングデバイスのリソースをアプリケーションに予測的に割り当てるために有利に使用することができる。さらに、アプリケーション及び／又はアプリケーションデータは、ユーザーがそれらにアクセスすることが予期される前に、ある時点でメモリーへロードされてもよい。
【００２６】
[0040]セクションＩＩは、実施形態による、デバイス固有又はユーザー固有のリソース使用プロファイルに基づいてリソース管理を実行する例示的なコンピューティングデバイス、及び関連付けられる方法について説明する。セクションＩＩＩは、セクションＩＩの例示的なコンピューティングデバイスがマルチプロセスアプリケーションのための動的なリソース管理を可能にすることができる方法を説明する。セクションＩＶは、本願に記載のリソース管理機能を実施することができる例示的なモバイルデバイスについて説明する。セクションＶは、本願に記載のリソース管理機能を実施することができる例示的なデスクトップコンピューターについて説明する。セクションＶＩは、いくつかの結びの言葉を提供する。
【００２７】
ＩＩ．デバイス固有又はユーザー固有のリソース使用プロファイルに基づいてリソース管理を実行するための例示的なシステム及び方法
[0041]図１は、実施形態による、デバイス固有又はユーザー固有のリソース使用プロファイルに基づいてリソース管理を実行するコンピューティングデバイス１００のブロック図である。コンピューティングデバイス１００は、一般に、ユーザーのためにアプリケーションを実行することが可能なプロセッサーベースの電子デバイスを表すように意図される。一実施形態では、コンピューティングデバイス１００は、携帯電話（例えば、スマートフォン）、ラップトップコンピューター、タブレットコンピューター又はネットブックなどのモバイルコンピューティングデバイスを含む。コンピューティングデバイス１００は、考えられる限り、ウェアラブルコンピューター（例えば、ヘッドマウントコンピューター）、携帯メディアプレーヤー、パーソナルデジタルアシスタント、パーソナルナビゲーションアシスタント、ハンドヘルドゲームコンソール、又はユーザーのためにアプリケーションを実行することができる任意の他のモバイルデバイスなどの他の種類のモバイルコンピューティングデバイスを含んでもよい。コンピューティングデバイス１００の機能を組み込むことができるモバイルデバイスの一例を、図１４を参照して以下に説明する。別の実施形態では、コンピューティングデバイス１００は、ユーザーのためにアプリケーションを実行することができる、デスクトップコンピューター又は他の非モバイルコンピューティングプラットフォームを含む。コンピューティングデバイス１００の機能を組み込むことができる例示的なデスクトップコンピューターは、図１５を参照して以下に説明される。
【００２８】
[0042]図１に示すように、コンピューティングデバイス１００は、アプリケーション１０２、オペレーティングシステム１０４及びデータストア１０６を含む。１つの実施形態では、アプリケーション１０２及びオペレーティングシステム１０４の各々は、コンピューティングデバイス１００のメモリーに記憶され、当該メモリーに通信可能に接続されたプロセッサー（例えば、ソフトウェア命令を実行するように動作可能なマイクロプロセッサー又は他の回路）によって当該メモリーから実行される、ソフトウェアコンポーネントを含む。このようなメモリー及びプロセッサーは、コンピューティングデバイス１００の一部を含むが、簡略化のためだけに、図１には示されていない。さらに、そのような実施形態によれば、アプリケーション１０２及びオペレーティングシステム１０４は、各々が、コンピューティングデバイス１００の不揮発性メモリーに永続的に格納されてもよく、コンピューティングデバイス１００の電力供給された動作中にプロセッサーによって実行するために、コンピューティングデバイス１００の揮発性メモリーに一時的に転送されてもよい。
【００２９】
[0043]アプリケーション１０２は、コンピューティングデバイスのユーザーのために機能を実行し及び／又は機能を提供するためにコンピューティングデバイス１００上にインストールして実行することができる、多種多様なコンピュータープログラムのうちのいずれかを表すことを意図している。アプリケーション１０２は、例えば、そしてどんなものであれ限定なく、電話アプリケーション、電子メールアプリケーション、メッセージングアプリケーション、ウェブブラウジングアプリケーション、カレンダーアプリケーション、ユーティリティアプリケーション、ゲームアプリケーション、ソーシャルネットワーキングアプリケーション、音楽アプリケーション、生産性アプリケーション、ライフスタイルアプリケーション、リファレンスアプリケーション、旅行アプリケーション、スポーツアプリケーション、ナビゲーションアプリケーション、ヘルスケア・フィットネスアプリケーション、ニュースアプリケーション、写真アプリケーション、金融アプリケーション、ビジネスアプリケーション、教育アプリケーション、天気予報アプリケーション、電子書籍リーダーアプリケーション、医療アプリケーションなどを表してもよい。
【００３０】
[0044]オペレーティングシステム１０４は、コンピューティングデバイス１００上で実行するアプリケーションのために、リソースを集合的に管理し、共通のサービスを提供する、コンピュータープログラムのセットを含む。図１に示すように、オペレーティングシステム１０４は、ドライバー１１０、カーネル１２０及びシステムサービス１３０を含む。ドライバー１１０は、ＣＰＵ、システムメモリー及びＩ／Ｏデバイスなどのコンピューティングデバイス１００の様々なハードウェアリソースとオペレーティングシステム１０４が相互作用することを可能にするコンポーネントを含む。カーネル１２０は、ドライバー１１０を利用して、コンピューティングデバイス１００のそのようなハードウェアリソース及び他のリソースを管理し、他のプログラムがこれらのリソースを実行及び使用することを可能にする。カーネル１２０は、プロセスをＣＰＵに割り当てること、システムメモリーを特定のプロセスに割り当てること、及びＩ／Ｏ要求を適切なデバイスに割り当てることなどの動作を行うことができる。システムサービス１３０は、カーネル１２０によって割り当てることができる様々なリソースについてのアプリケーションからの要求にサービスを提供するように動作するコンポーネントである。
【００３１】
[0045]図１に示すように、カーネル１２０は、メモリーマネージャー１２２を含む。メモリーマネージャー１２２は、コンピューティングデバイス１００のシステムメモリーが利用される方法を制御し、他のプロセスがシステムメモリーを必要とするときに他のプロセスがシステムメモリーにアクセスすることを可能にする動作を実行する。他の動作として、メモリーマネージャー１２２は、仮想アドレス方式を保持してもよく、物理的に利用可能であるよりも多くのシステムメモリーをプロセスが使用できるように、ページングを実行してもよい。システムメモリーを管理するために、メモリーマネージャー１２２は、ドライバー１１０の１つであるメモリードライバー１１２と相互作用する。
【００３２】
[0046]さらに図１に示すように、システムサービス１３０は、リソースマネージャー１３２を含む。本願でより詳細に説明するように、リソースマネージャー１３２は、アプリケーションに割り当てるべきリソースの量を決定するように動作するコンポーネントであり、そのような決定はアプリケーションについてのリソース使用プロファイルに基づいてもよく、また、利用可能である場合にリソースの量を割り当てるように動作するコンポーネントである。以下の説明においては、アプリケーションに割り当てられるリソースはシステムメモリーであると仮定するが、しかしながら、本願に記載のリソース管理技術は、ＣＰＵ、システムメモリー以外の揮発性メモリー、不揮発性メモリー、ネットワークリソース、Ｉ／Ｏリソース、電源リソース（例えば、バッテリー電源又はいくつかの他の電源からの電力）及びセンサーリソース（例えば、カメラやマイク）を含むがこれらに限定されない、コンピューティングデバイス１００の任意の他のリソースにまで容易に拡張することができることを理解すべきである。
【００３３】
[0047]データストア１０６は、コンピューティングデバイス１００の揮発性又は不揮発性メモリーに格納されたデータの集合を含む。本願で説明するように、データストア１０６は、コンピューティングデバイス１００上にインストールして実行することができるアプリケーションについてのリソース使用プロファイルを記憶するために、リソースマネージャー１３２によって使用される。ある実施形態によれば、データストア１０６は、レジスター又はデータベースを含んでもよい。
【００３４】
[0048]（例えば、アプリケーションについてのユーザーの起動又はいくつかの他のイベントに応答して）アプリケーション１０２が起動されるとき、１つ又は複数のシステムサービス呼が、アプリケーション１０２のためにシステムサービス１３０に対して発呼されて、アプリケーション１０２を適切に実行するのに必要なリソースをアプリケーション１０２に割り当てることを要求する。当該呼に応答して、リソースマネージャー１３２は、必要なリソースが利用可能であるかどうかを判断し、そのようなリソースが利用可能である場合には、それをアプリケーション１０２に割り当てるように動作する。
【００３５】
[0049]システムメモリーの場合、リソースマネージャー１３２は、データストア１０６に記憶することができるアプリケーション１０２についてのリソース使用プロファイルにアクセスするのを試みることにより、アプリケーション１０２に割り当てるシステムメモリーの量を決定する。実施形態では、アプリケーション１０２についてのそのようなリソース使用プロファイルは、実行中にアプリケーション１０２が使用すると予期されるシステムメモリーの量を指定する。予測されたリソース使用量を含む。代替的に、アプリケーション１０２についてのリソース使用プロファイルは、そのような予測されるリソース使用量を導くことができるデータを含むことができる。さらなる実施形態では、データストア１０６内にアプリケーション１０２についてのリソース使用プロファイルが存在しない場合、デフォルトの予測されるリソース使用量がアプリケーション１０２に割り当てられてもよい。そのようなデフォルトの予測されるリソース使用量は、すべてのアプリケーションに対して同じであってもよく、又はアプリケーションの種類によって異なってもよい。
【００３６】
[0050]リソースマネージャー１３２がアプリケーション１０２についての予測されるリソース使用量を決定すると、リソースマネージャー１３２は、次いで、予測されるリソース使用量が現在利用可能であるかどうかを判断するためにメモリーマネージャー１２２と通信する。予測されるリソース使用量が現在利用可能である場合、リソースマネージャー１３２は、予測されるリソース使用量をアプリケーション１０２に割り当て、アプリケーション１０２は実行することを許可される。しかし、予測されるリソース使用量が現在利用可能でない場合、リソースマネージャー１３２は、アプリケーション１０２が実行されることを防止することができる。さらに、予測されるリソース使用量が現在利用可能でない場合、リソースマネージャー１３２はまた、アプリケーション１０２に対してシステムメモリーを解放するために、コンピューティングデバイス上で現在実行されている１つ又は複数の他のプロセスを終了してもよい。そのような他のプロセスは、プロセス優先方式に従ってアプリケーション１０２よりも低い優先度が割り当てられたプロセスであってもよい。このようにして十分なシステムメモリーが取り戻されると、リソースマネージャー１３２は、アプリケーション１０２が実行されることを許可してもよい。
【００３７】
[0051]アプリケーション１０２が実行を開始した後、リソースマネージャー１３２は、アプリケーション１０２が実際にどのくらいのシステムメモリーを使用しているかを監視する。このようにして、リソースマネージャー１３２は、予測されるリソース使用量に従って最初にアプリケーション１０２に割り当てられたものよりも多くのシステムメモリーをアプリケーション１０２が利用していると判定することができる。この場合、リソースマネージャー１３２は、アプリケーション１０２が適切に実行されるために十分なシステムメモリーが利用可能であることを確実にするために、コンピューティングデバイス１００上で同時に実行されている１つ又は複数のプロセスを終了することを試みてもよい。
【００３８】
[0052]リソースマネージャー１３２はまた、どのくらいのシステムメモリーがアプリケーション１０２によって使用されているかを監視することによって得た情報を利用して、アプリケーション１０２についてデータストア１０６内に記憶される予測されるリソース使用量を更新する。予測されるリソース使用量を更新するための様々なアルゴリズムが以下で詳細に説明される。このように、リソースマネージャー１３２は、アプリケーション１０２がどのように行動しており、コンピューティングデバイス１００のユーザーによってどのように利用されているかに応じた方法で、時間とともに、アプリケーション１０２に対するリソースの割り当てを自動的に微調整することができる。このことは、コンピューティングデバイス１００が、特にマルチタスクシナリオ中に、より良いユーザーエクスペリエンスと改善されたパフォーマンスを提供することを可能にするものであり、有益である。
【００３９】
[0053]デバイス固有又はユーザー固有のリソース使用プロファイルに従ってリソースマネージャー１３２がコンピューティングデバイス１００のリソースを管理するように動作する方法を、図２のフローチャート２００を参照して説明する。フローチャート２００のステップは図１のコンピューティングデバイス１００のコンポーネントを引き続き参照して説明されるが、この方法がまったく別のコンポーネントによって実行されてもよいことが理解されるべきである。
【００４０】
[0054]図２に示すように、フローチャート２００の方法は、ステップ２０２において開始し、リソースマネージャー１３２は、コンピューティングデバイス１００によって実行されている間にアプリケーションのインスタンスによって使用されるリソースの第１の量を決定する。例えば、上述のように、リソースマネージャー１３２は、アプリケーション１０２の第１のインスタンスがコンピューティングデバイス１００によって実行されている間、アプリケーション１０２の第１のインスタンスによって使用されているシステムメモリーの第１の量を決定してもよい。
【００４１】
[0055]実施形態では、リソースマネージャー１３２は、アプリケーションの第１のインスタンスに関連付けられたフォアグラウンドプロセス及びアプリケーションの第１のインスタンスに関連付けられた１つ又は複数のバックグラウンドタスクによって使用されるリソースの量を決定することによって、第１の量を決定する。フォアグラウンドプロセスは、現在、アプリケーションの第１のインスタンスのためのユーザーインターフェイスを提供し、コンピューティングデバイス１００に関連付けられる表示の少なくとも一部を占有しているプロセスであってもよい。しかし、多くの現代のアプリケーションの実行はまた、１つ又は複数のバックグラウンドプロセス（本願ではバックグラウンドタスクとも呼ぶ）の実行を伴う。このようなバックグラウンドタスクは、フォアグラウンドプロセスと同時に実行されることがあり、ある場合にはフォアグラウンドプロセスによって開始され得る。そのようなバックグラウンドタスクの例は、バックグラウンド音声の生成、ボイスオーバーインターネットプロトコル（ＶｏＩＰ）呼の実行、電子メールの同期、コンテンツ共有などを含むが、決してこれらに限定されるものではない。フォアグラウンドプロセスと同様に、これらのバックグラウンドタスクはシステムリソースを消費する。しかし、アプリケーションのリソース使用についての従来の概念は、通常、そのようなバックグラウンドタスクによって消費されるリソースを包含していない。実施形態は、実行中のアプリケーションに関連付けられるフォアグラウンドプロセス及び同じアプリケーションに関連付けられる１つ又は複数のバックグラウンドタスクの両方によるリソース使用を追跡し、両方の種類のリソース使用を組み合わせてアプリケーションについて総リソース使用量を取得することによって、このことに対処するものであり有利である。
【００４２】
[0056]ステップ２０４において、リソースマネージャー１３２は、第１の量に少なくとも基づいて、アプリケーションについての第１の予測されるリソース使用量を計算する。例えば、リソースマネージャー１３２は、第１の量に少なくとも基づいて、アプリケーション１０２についての第１の予測されるシステムメモリー使用量を計算してもよい。このステップを実行することができる方法を示すために、様々な例のアルゴリズムが以下で提供される。
【００４３】
[0057]ステップ２０６において、リソースマネージャー１３２は、データストア１０６内に第１の予測されるリソース使用量を記憶する。例えば、リソースマネージャー１３２は、データストア１０６内に、アプリケーション１０２についての第１の予測されるシステムメモリー使用量を記憶することができる。
【００４４】
[0058]ステップ２０６の実行後のある時点において、リソースマネージャー１３２は、アプリケーションの第２のインスタンスがコンピューティングデバイス１００上で実行されるべきであることを通知される。ステップ２０８において、リソースマネージャー１３２は、データストア１０６に格納された第１の予測されるリソース使用量に少なくとも基づいて、アプリケーションの第２のインスタンスに割り当てられるべきリソースの第２の量を決定する。例えば、リソースマネージャー１３２は、データストア１０６内のアプリケーション１０２について記憶された第１の予測されるシステムメモリー使用量に少なくとも基づいて、アプリケーション１０２の第２のインスタンスに割り当てられるべきシステムメモリーの第２の量を決定してもよい。システムメモリーの第２の量を決定することは、例えば、システムメモリーの第２の量を第１の予測されるシステムメモリー使用量に設定することを含んでもよい。
【００４５】
[0059]ステップ２０４においてアプリケーションについての第１の予測されるリソース使用量を計算するために、様々な方法を使用することができる。例えば、一実施形態では、第１の予測されるリソース使用量は、ある数の実行にわたってアプリケーションによって使用された最大のリソース量に基づいて計算される。この手法は、図３のフローチャート３００によって表される。
【００４６】
[0060]具体的には、図３は、実施形態による、アプリケーションについての予測されるリソース使用量を計算する方法のフローチャート３００を示す。図３に示すように、フローチャート３００の方法は、ステップ３０２で開始し、リソースマネージャー１３２は、ステップ２０２中に決定された第１の量を、アプリケーションの１つ又は複数の以前に実行されたインスタンスに関連付けられる１つ又は複数の以前に決定された量と比較することによって、アプリケーションについての最大のリソース使用量を取得する。ステップ３０４において、リソースマネージャー１３２は、最大のリソース使用量に基づいて、第１の予測されるリソース使用量を計算する。
【００４７】
[0061]この手法の例がここで提供される。この例によれば、リソースマネージャー１３２は、５回の異なる実行におけるアプリケーション１０２によるシステムメモリー使用量を追跡し、そのような実行にわたるアプリケーション１０２による最大のシステムメモリー使用量を、予測されるリソース使用量として選択する。例えば、アプリケーション１０２の最後の４回の実行中に、アプリケーション１０２が、それぞれ１００ＭＢ、１２０ＭＢ、１６０ＭＢ及び１４０ＭＢのシステムメモリーを使用したと仮定する。次いで、ステップ２０２の間に、リソースマネージャー１３２は、アプリケーション１０２の現在実行中のインスタンスがシステムメモリーのうち１５０ＭＢを使用していることを決定する。この場合、リソースマネージャー１３２は、第１の予測されるリソース使用量を１６０ＭＢ（又は、場合によっては１６０ＭＢに加えてあるバッファ量）に設定してもよい。というのは、それが、最後の５回の実行にわたるアプリケーション１０２による最大のシステムメモリーの使用であるからである。
【００４８】
[0062]別の実施形態では、第１の予測されるリソース使用量は、ある数の実行にわたるアプリケーションによって使用される平均リソース量に基づいて計算される。この手法は図４のフローチャート４００によって表される。
【００４９】
[0063]具体的には、図４は、実施形態による、アプリケーションについての予測されるリソース使用量を計算する方法のフローチャート４００を示す。図４に示すように、フローチャート４００の方法は、ステップ４０２で開始し、リソースマネージャー１３２は、ステップ２０２中に決定された第１の量及びアプリケーションの１つ又は複数の以前に実行されたインスタンスに関連付けられる１つ又は複数の以前に決定された量に基づいて、アプリケーションについて平均リソース使用量を取得する。ステップ４０４において、リソースマネージャー１３２は、平均リソース使用量に基づいて、第１の予測されるリソース使用量を計算する。
【００５０】
[0064]この手法の例がここで提供される。この例によれば、リソースマネージャー１３２は、５回の別個の実行におけるアプリケーション１０２によるシステムメモリーの使用を追跡し、それらの値の平均値を計算し、その平均値を予測されるリソース使用量として使用する。例えば、アプリケーション１０２の最後の４回の実行中に、アプリケーション１０２が、それぞれシステムメモリーのうちの１００ＭＢ、１２０ＭＢ、１６０ＭＢ及び１４０ＭＢを使用したと仮定する。次いで、ステップ２０２中に、リソースマネージャー１３２は、アプリケーション１０２の現在実行中のインスタンスがシステムメモリーのうち１５０ＭＢを使用していることを決定する。この場合、リソースマネージャー１３２は、アプリケーション１０２についての平均リソース使用量が（（１００ＭＢ＋１２０ＭＢ＋１６０ＭＢ＋１４０ＭＢ＋１５０ＭＢ）／５）であり、１３４ＭＢに等しいと決定する。その結果、リソースマネージャー１３２は、第１の予測されるリソース使用量を、１３４ＭＢ（又は、場合によっては、１３４ＭＢに加えてあるバッファ量）に設定してもよい。
【００５１】
[0065]ステップ４０２で説明した平均リソース使用量を得ることができる別の方法をここで説明する。この手法によれば、リソース使用量の移動平均が、最新のリソース使用量と組み合わされて、新たな長期の移動平均が得られる。この組み合わせは、より大きな重みが古い長期間にわたる移動平均又は最新のリソース使用量のいずれかに適用されるように重み付けすることができる。あるいは、両方の量が等しく重み付けされてもよい。この手法は、以下の式を用いて表すことができる。
【００５２】
ＲＡＶＧ＿ＮＥＷ＝αＲＡＶＧ＿ＯＬＤ＋（１−α）ＲＮＥＷ
ＲＡＶＧ＿ＮＥＷはリソース使用量の新たな移動平均を表し、ＲＡＶＧ＿ＯＬＤはリソース使用量の古い移動平均を表し、ＲＮＥＷは最も最近観察されたリソース使用量を表し、αは重み付けを決定する変数である。
【００５３】
[0066]例えば、リソース使用量の古い移動平均ＲＡＶＧ＿ＯＬＤが１３０ＭＢに等しく、最も最近観察されたリソース使用量ＲＮＥＷが１６０ＭＢに等しく、重み付け係数αが０．２５であると仮定する。この場合、リソース使用量の新たな移動平均ＲＡＶＧ＿ＮＥＷは、（（０．２５×１３０ＭＢ）＋（０．７５×１６０ＭＢ））であり、１５２．５ＭＢに等しくなる。その結果、リソースマネージャー１３２は、第１の予測されるリソース使用量を、１５２．５ＭＢ（又は、場合によっては、１５２．５ＭＢとあるバッファ量の合計）に設定することができる。
【００５４】
[0067]移動平均を使用してアプリケーションについての平均リソース使用量を得る上述の方法は、図５のフローチャート５００に示される。図５に示すように、フローチャート５００の方法は、ステップ５０２で開始し、リソースマネージャー１３２は、ステップ２０２中に得られた第１の量（すなわち、最も最近に観察されたリソース使用量）を第１の重み付け係数で乗算する。ステップ５０４中、リソースマネージャー１３２は、１つ又は複数の以前に決定された量（すなわち、以前に観察されたリソース使用量）に少なくとも基づいて得られた移動平均リソース使用量を第２の重み付け係数で乗算して、第２の積を得る。ステップ５０６において、リソースマネージャー１３２は、第１の積と第２の積を合計して、新たな平均リソース使用量を得る。
【００５５】
[0068]図２を参照して上述したように、フローチャート２００のステップ２０８において、リソースマネージャー１３２は、第１の予測されるリソース使用量に少なくとも基づいて、コンピューティングデバイス１００によって実行されるアプリケーションの第２のインスタンスに割り当てられるべきリソース（例えば、システムメモリー）の第２の量を決定する。当該第２の量は予測アルゴリズムに基づく推定値であるので、アプリケーションの第２のインスタンスが割り当てられた第２の量より多くを消費する可能性が常にある。このシナリオに対処するために、リソースマネージャー１３２は、アプリケーションの第２のインスタンスがその割り当てられたリソース割り当てよりも多くを消費していることを判断するように構成されてもよく、これに応答して、リソースを解放するために、コンピューティングデバイス１００上で同時に実行されている他のプロセスを終了することができる。例えば、リソースマネージャー１３２は、プロセス優先方式に従って当該アプリケーションより低い優先度を割り当てられた特定のプロセスを終了させることができる。
【００５６】
[0069]この処理は、図６のフローチャート６００に示されている。具体的には、図６に示すように、フローチャート６００の方法は、ステップ６０２で開始し、リソースマネージャー１３２は、コンピューティングデバイス１００によって実行されている間にアプリケーションの第２のインスタンスによって使用されるリソースの量が第２の量を超えていると判定する。この判定に応答して、ステップ６０４において、リソースマネージャー１３２は、コンピューティングデバイス上で同時に実行されている１つ又は複数のプロセスを終了する。追加的又は代替的に、リソースマネージャー１３２は、コンピューティングデバイス１００上で同時に実行されている１つ又は複数のプロセスと通信し、それらのプロセスに、リソースの消費を低減するように指示してもよい。
【００５７】
[0070]リソースマネージャー１３２が、メモリーマネージャー１２２との通信を介して又はいくつかの他の手段を介して、アプリケーションの第２のインスタンスに割り当てるべきリソースの第２の量が現在利用できないと決定することもあり得る。この場合、リソースマネージャー１３２は、アプリケーションの第２のインスタンスの実行を防止することができる。
【００５８】
[0071]この処理は、図７のフローチャート７００に示されている。具体的には、図７に示すように、フローチャート７００の方法は、ステップ７０２で開始し、リソースマネージャー１３２は、リソースの第２の量が現在利用可能でないと判定する。この判定に応答して、ステップ７０４において、リソースマネージャー１３２は、アプリケーションの第２のインスタンスの実行を防止する。
【００５９】
[0072]リソースマネージャー１３２が、アプリケーションの第２のインスタンスに割り当てるべきリソースの第２の量が現在利用可能でないと判断する場合、リソースマネージャー１３２はまた、リソースを解放するために、コンピューティングデバイス１００上で実行されている１つ又は複数のプロセスを終了してもよい。例えば、リソースマネージャー１３２は、プロセスの優先方式に従って当該アプリケーションより低い優先度を割り当てられた特定のプロセスを終了させることができる。このような他のプロセスによるリソース消費が低減された後、リソースマネージャー１３２は、アプリケーションの第２のインスタンスを実行することを可能にする。
【００６０】
[0073]この処理は、図８のフローチャート８００に示されている。具体的には、図８に示すように、フローチャート８００の方法は、ステップ８０２で開始し、リソースマネージャー１３２は、リソースの第２の量が現在利用可能でないと判定する。この判定に応答して、ステップ８０４において、リソースマネージャー１３２は、コンピューティングデバイス１００上で現在実行されている１つ又は複数のプロセスを終了する。追加的に又は代替的に、リソースマネージャー１３２は、コンピューティングデバイス１００上で現在実行されている１つ又は複数のプロセスと通信し、それらのプロセスにリソースの消費を減らすよう指示してもよい。
【００６１】
[0074]スマートフォンなどの多くのコンピューティングデバイスにとって、典型的な使用モデルは、コンピューティングデバイスごとに１ユーザーである。この場合、コンピューティングデバイスについてのリソース使用プロファイルを記憶することは、本質的に、特定のユーザーのリソース使用プロファイルを記憶することと同じである。しかし、コンピューティングデバイスはまた、複数のユーザーをサポートするために使用することができる。例えば、同じ世帯のある数の異なるメンバーが、それぞれ、同じタブレットコンピューター、デスクトップコンピューター又はゲームコンソールを使用して、アプリケーションを実行することがある。これらのユーザーの各々は、異なるアプリケーションを使用することがあり、また、同じアプリケーションを異なる方法で使用することがあり、これはリソース消費のレベルが変化することにつながる。このシナリオに対処するために、特定の実施形態は、アプリケーションとユーザーの両方によるコンピューティングデバイスに対するリソース使用プロファイルを記憶し、その結果、リソースの予測割り当ては、コンピューティングデバイスを現在使用している特定のユーザーに合わせて調整することができる。これらのリソース使用プロファイルは、（前述のデバイス固有のリソース使用プロファイルとは対照的に）ユーザー固有のリソース使用プロファイルと考えることができる。
【００６２】
[0075]図９は、実施形態による、ユーザー固有のリソース使用プロファイルに従ってリソースを管理するためにコンピューティングデバイスによって実施される方法のフローチャート９００を示す。フローチャート９００の方法は、ここで、図１を参照して上述したコンピューティングデバイス１００のコンポーネントを引き続き参照して説明される。しかしながら、この方法はその実施形態に限定されるものではない。
【００６３】
[0076]図９に示すように、フローチャート９００の方法は、ステップ９０２で開始し、リソースマネージャー１３２は、第１のユーザーのためにコンピューティングデバイス１００によって実行される間、アプリケーションの第１のインスタンスによって使用されるリソースの第１の量を決定する。例えば、リソースマネージャー１３２は、アプリケーション１０２の第１のインスタンスが第１のユーザーのためにコンピューティングデバイス１００によって実行されている間、アプリケーション１０２の第１のインスタンスによって使用されているシステムメモリーの第１の量を決定することができる。アプリケーション１０２の第１のインスタンスが第１のユーザーのために実行されているという事実は、様々な方法のいずれかで決定することができる。ユーザーがコンピューティングデバイス１００にログインすることができる実施形態では、現在のログイン情報が当該決定をするために使用されてもよい。しかし、この例は、限定することを意図するものではなく、コンピューティングデバイスのユーザーの同一性を決定するための任意の適切な方法を使用することができる。
【００６４】
[0077]ステップ９０４において、リソースマネージャー１３２は、第１の量に少なくとも基づいて、アプリケーション及び第１のユーザーについての第１の予測されるリソース使用量を計算する。例えば、リソースマネージャー１３２は、第１の量に少なくとも基づいて、アプリケーション１０２及び第１のユーザーについての第１の予測されるシステムメモリー使用量を計算してもよい。このステップを実行することができる方法を示すために、様々な例示的なアルゴリズムが既に提供された。
【００６５】
[0078]ステップ９０６において、リソースマネージャー１３２は、データストア１０６内に第１の予測されるリソース使用量を記憶する。例えば、リソースマネージャー１３２は、データストア１０６内に、アプリケーション１０２及び第１のユーザーについての第１の予測されるシステムメモリー使用量を記憶することができる。
【００６６】
[0079]ステップ９０６の実行後のある時点において、リソースマネージャー１３２は、アプリケーションの第２のインスタンスが第１のユーザーのためにコンピューティングデバイス１００上で実行されることを通知される。ステップ９０８において、リソースマネージャー１３２は、データストア１０６内に記憶された第１の予測されるリソース使用量に少なくとも基づいて、アプリケーションの第２のインスタンスに割り当てられるべきリソースの第２の量を決定することができる。例えば、リソースマネージャー１３２は、データストア１０６内にアプリケーション１０２及び第１のユーザーについて記憶された第１の予測されるシステムメモリー使用量に少なくとも基づいて、アプリケーション１０２の第２のインスタンスに割り当てられるべきシステムメモリーの第２の量を決定してもよい。システムメモリーの第２の量を決定することは、例えば、システムメモリーの第２の量を第１の予測されるシステムメモリー使用量に設定することを含んでもよい。
【００６７】
[0080]ステップ９１０において、リソースマネージャー１３２は、第１のユーザーとは異なる第２のユーザーのためにコンピューティングデバイス１００によって実行されている間、アプリケーションの第３のインスタンスによって使用されるリソースの第３の量を決定する。例えば、リソースマネージャー１３２は、アプリケーション１０２の第３のインスタンスが第２のユーザーのためにコンピューティングデバイス１００によって実行されている間、アプリケーション１０２の第３のインスタンスによって使用されているシステムメモリーの第３の量を決定することができる。アプリケーション１０２の第３のインスタンスが第２のユーザーのために実行されているという事実は、様々な方法のいずれかで決定することができる。ユーザーがコンピューティングデバイス１００にログインすることができる実施形態では、現在のログイン情報が当該決定をするために使用されてもよい。しかし、この例は、限定することを意図するものではなく、コンピューティングデバイスのユーザーの同一性を決定するための任意の適切な方法を使用してもよい。
【００６８】
[0081]ステップ９１２において、リソースマネージャー１３２は、第３の量に少なくとも基づいて、アプリケーション及び第２のユーザーについての第２の予測されるリソース使用量を計算する。例えば、リソースマネージャー１３２は、第３の量に少なくとも基づいて、アプリケーション１０２及び第２のユーザーについての第２の予測されるシステムメモリー使用量を計算してもよい。このステップを実行することができる方法を示すために、様々な例示的なアルゴリズムが既に提供された。
【００６９】
[0082]ステップ９１４において、リソースマネージャー１３２は、データストア１０６内に第２の予測されるリソース使用量を記憶する。例えば、リソースマネージャー１３２は、データストア１０６内に、アプリケーション１０２及び第２のユーザーについての第２の予測されるシステムメモリー使用量を格納することができる。
【００７０】
[0083]ステップ９１４の実行後のある時点において、リソースマネージャー１３２は、アプリケーションの第４のインスタンスが第２のユーザーのためにコンピューティングデバイス１００上で実行されることを通知される。ステップ９１６において、リソースマネージャー１３２は、データストア１０６に格納された第２の予測されるリソース使用量に少なくとも基づいて、アプリケーションの第４のインスタンスに割り当てられるべきリソースの第４の量を決定する。例えば、リソースマネージャー１３２は、データストア１０６内のアプリケーション１０２及び第２のユーザーについて記憶された第２の予測されるシステムメモリー使用量に少なくとも基づいて、アプリケーション１０２の第４のインスタンスに割り当てられるべきシステムメモリーの第４の量を決定することができる。システムメモリーの第４の量を決定することは、例えば、システムメモリーの第４の量を第２の予測されるシステムメモリー使用量に設定することを含んでもよい。
【００７１】
[0084]図１０は、実施形態による、デバイス固有又はユーザー固有のリソース使用プロファイルに従ってアプリケーションの起動を管理するための方法のフローチャート１０００を示している。フローチャート１０００の方法は、ここで、図１を参照して上述したコンピューティングデバイス１００のコンポーネントを引き続き参照して説明される。しかし、この方法はその実施形態に限定されるものではない。
【００７２】
[0085]図１０に示すように、フローチャート１０００の方法は、ステップ１００２で開始し、アプリケーションを起動する要求が受け取られる。例えば、アプリケーション１０２を起動する要求は、例えば、システムサービス１３０によって及び／又はリソースマネージャー１３２によって受け取られてもよい。
【００７３】
[0086]ステップ１００４において、リソースマネージャー１３２は、アプリケーションについての予測されるリソース使用量を取得する。例えば、リソースマネージャー１３２は、アプリケーション１０２についての予測されるリソース使用量を取得してもよい。予測されるリソース使用量は、コンピューティングデバイス１００によるアプリケーションの１つ又は複数の以前の実行中のコンピューティングデバイス１００のリソースの監視された使用に基づく。予測されるリソース使用量、又はそのような予測されるリソース使用量を計算するために必要な情報は、アプリケーションについてのリソース使用プロファイルから得ることができ、データストア１０６内に記憶されてもよい。リソースは、揮発性又は不揮発性のメモリーリソース、ＣＰＵリソース、Ｉ／Ｏリソース、ネットワークリソース、電源リソース及びセンサーリソースのうちの１つ又は複数を含んでもよい。予測されるリソース使用量は、アプリケーションに関連付けられるフォアグラウンドプロセス及びアプリケーションに関連付けられる１つ又は複数のバックグラウンドタスクの両方によるコンピューティングデバイス１００のリソースの使用を監視することに基づいてもよい。
【００７４】
[0087]判定ステップ１００６において、リソースマネージャー１３２は、予測されるリソース使用量を現在利用可能なリソースの量と比較することによって、十分な量のリソースが利用可能であるか否かを判定する。例えば、リソースがシステムメモリーである実施形態において、リソースマネージャー１３２は、メモリーマネージャー１２２から現在利用可能なシステムメモリーの量を得ることができ、次いで、アプリケーションについての予測されるシステムメモリー使用量を現在利用可能なシステムメモリーと比較して、十分な量のシステムメモリーが利用可能であるかどうかを判定することができる。
【００７５】
[0088]十分な量のリソースが利用可能であるとリソースマネージャー１３２が少なくとも判定した場合、次いで、リソースマネージャー１３２は、ステップ１００８に示すように、アプリケーションが起動することを許可する。例えば、十分なシステムメモリーが利用可能であるとリソースマネージャー１３２が少なくとも判定した場合、次いで、リソースマネージャー１３２は、アプリケーション１０２が起動することを許可する。アプリケーションが起動することをリソースマネージャー１３２が許可するために満たされなければならない他の条件があり得ることに留意されたい。
【００７６】
[0089]十分な量のリソースが利用可能でないとリソースマネージャー１３２が判定する場合、ステップ１０１０に示すように、リソースマネージャー１３２は、アプリケーションが起動することを許可しない。例えば、十分なシステムメモリーが利用可能でないとリソースマネージャー１３２が判定する場合、リソースマネージャー１３２は、アプリケーション１０２が起動することを許可しない。加えて、リソースマネージャー１３２は、１つ又は複数の現在実行されているプロセスを終了させるか、そうでなければ、それらのリソース使用量を低減させることによって、リソースを解放しようとしてもよい。
【００７７】
[0090]実施形態では、リソースマネージャー１３２はまた、特定のリソース使用行動に関連付けられる時刻、場所及びイベントなどの、アプリケーション及び／又はユーザーによるリソース使用に関連する他の情報を追跡することが可能である。そのような情報は、ユーザーがアプリケーションを起動することを試みる前でさえ、コンピューティングデバイスのリソースをアプリケーションに予測的に割り当てるために都合よく使用することができる。さらに、アプリケーション及び／又はアプリケーションデータが、ユーザーがそれらにアクセスすると予期される前の時点でメモリーにロードされてもよい。
【００７８】
[0091]例えば、ユーザーが特定の時間において、特定の場所において又は特定のイベントに関連して、特定のアプリケーションを起動する可能性があると判断できる場合、リソースマネージャー１３２は、ユーザーがアプリケーションを起動すると予期される前、場合によってはその直前に、十分なリソースがアプリケーションに割り当てるために利用可能であることを確実にするように動作することができる。さらに、このような予測的な分析は、実際に、ユーザーがアプリケーション及びその機能への即時のアクセスを得ることができるように、アプリケーション又はアプリケーションのコンテンツをシステムメモリーにロードするために使用することができる。
【００７９】
[0092]このことを説明する助けとなるべく、図１１は、コンピューティングデバイスのリソースに関するユーザーについての監視されるリソース使用パターン及びそれから導かれる情報を使用して、プロセスに対してリソースを予測的に割り当てるための方法のフローチャート１１００を示す。フローチャート１１００の方法は、ここでは、図１を参照して上述したコンピューティングデバイス１００のコンポーネントを引き続き参照して説明される。しかし、この方法はその実施形態に限定されるものではない。
【００８０】
[0093]図１１に示すように、フローチャート１１００の方法は、ステップ１１０２で開始し、リソースマネージャー１３２は、アプリケーション及び／又はユーザーによるコンピューティングデバイス１００の少なくとも１つのリソースの使用パターンを監視する。前述のように、使用パターンを監視することは、アプリケーション及び／又はユーザーによるリソース使用を監視すること、及び、特定のリソース使用行動に関連付けられる時間、場所及びイベントなどのそのようなリソース使用に関連付けられる他の情報を監視することを伴ってもよい。
【００８１】
[0094]ステップ１１０４において、リソースマネージャー１３２は、使用のパターンに関連付けられる情報を格納する。リソースマネージャー１３２は、例えばデータストア１０６内にそのような情報を格納することができる。
【００８２】
[0095]ステップ１１０６において、リソースマネージャー１３２は、コンピューティングデバイス１００による実行の前に、少なくとも１つのリソースの少なくとも一部を少なくとも１つのプロセスに予測的に割り当てるために、格納された情報を使用する。一実施形態では、ステップ１１０６の間、リソースマネージャー１３２は、コンピューティングデバイス１００のユーザー又は任意の他のエンティティがアプリケーションを起動する前に、リソースの少なくとも一部をアプリケーションに予測的に割り当てる。少なくとも１つのリソースがシステムメモリーを含む別の例示的な実施形態では、リソースマネージャー１３２は、コンピューティングデバイス１００のユーザー又は任意の他のエンティティがアプリケーションを起動する前に、アプリケーション又は当該アプリケーションに関連付けられるデータの少なくとも一部を以前に割り当てられたシステムメモリーにロードしてもよい。これらの例は、例示のみのために提供されるものであり、限定することを意図するものではない。関連技術の当業者であれば、追加のリソース管理タスクを実行するため、リソース使用パターン情報を利用するために、さらに他の技術が使用され得ることを理解するであろう。
【００８３】
ＩＩＩ．マルチプロセスアプリケーションの動的リソース管理のための例示的なシステム及び方法
[0096]実施形態において、図１のコンピューティングデバイス１００は、コンピューティングデバイス１００のリソースの割り当てられた部分がアプリケーションに関連付けられる複数のプロセス間でどのように分割されるべきかを、コンピューティングデバイス１００上で実行されるアプリケーション（例えば、アプリケーション１０２）が動的に制御することを可能にする。例えば、コンピューティングデバイス１００上で実行されるアプリケーション１０２は、リソースマネージャー１３２とインタラクトして、コンピューティングデバイス１００のリソースの割り当てられた部分が、アプリケーションに関連付けられるフォアグラウンドプロセス及びアプリケーションに関連付けられる１つ又は複数のバックグラウンドプロセスの間でどのように分割されるべきかを動的に制御してもよい。この機能を有するアプリケーションを提供することにより、本願に記載の実施形態は、アプリケーションが、変化するリソース割り当てに適応し、コンピューティングデバイス上で実行されていてもよい他のプロセスとより良好に共存し、それによって様々なマルチタスクシナリオをより良好に可能にすることを都合よく可能にする。
【００８４】
[0097]アプリケーション１０２及びリソースマネージャー１３２がこのような動的リソース管理を行うために相互作用することができる１つの方法が、ここで図１２のフローチャート１２００を参照して説明される。図１２に示すように、フローチャート１２００の方法は、ステップ１２０２で開始し、リソースマネージャー１２０２は、アプリケーション１０２に関連付けられるフォアグラウンドプロセスに対して、当該アプリケーションがフォアグラウンドで実行されているという通知を送る。
【００８５】
[0098]ステップ１２０４において、リソースマネージャー１３２は、フォアグラウンドプロセスから、フォアグラウンドプロセスに割り当てられるべき第１のリソース使用予算（バジェット）の第１の部分及びアプリケーションに関連付けられる少なくとも１つのバックグラウンドタスクに割り当てられるべき第１のリソース使用予算の第２の部分を指定する少なくとも１つのメッセージを受け取る。
【００８６】
[0099]ステップ１２０６において、リソースマネージャー１３２は、第１のリソース使用予算の第１の部分に等しいリソースの一部をフォアグラウンドプロセスに割り当て、第１のリソース使用予算の第２の部分に等しいリソースの一部を少なくとも１つのバックグラウンドタスクに割り当てる。リソースは、例えば、限定なしに、揮発性又は不揮発性メモリー、ＣＰＵ、Ｉ／Ｏリソース、ネットワークリソース、電源リソース、センサーリソースを含むことができる。
【００８７】
[0100]ステップ１２０８において、リソースマネージャー１３２は、フォアグラウンドプロセスに、アプリケーションが中断又は終了されるという通知を送る。
[0101]ステップ１２１０において、リソースマネージャー１３２は、フォアグラウンドプロセスから、フォアグラウンドプロセスに割り当てられるべき第２のリソース使用予算の第１の部分及びアプリケーションに関連付けられる少なくとも１つのバックグラウンドタスクに割り当てられるべき第２のリソース使用予算の第２の部分を指定する少なくとも１つのメッセージを受け取る。第２のリソース使用予算は第１のリソース使用予算より小さくてもよい。
【００８８】
[0102]ステップ１２１２において、リソースマネージャー１３２は、第２のリソース使用予算の第１の部分に等しいリソースの一部をフォアグラウンドプロセスに割り当て、第２のリソース使用予算の第２の部分に等しいリソースの一部を少なくとも１つのバックグラウンドタスクに割り当てる。所定期間後、リソースマネージャー１３２は、フォアグラウンドプロセスによって使用されているリソースの量及び少なくとも１つのバックグラウンドプロセスによって使用されているリソースの量の合計が第２のリソース使用予算を超えているかどうかを判定してもよい。合計が第２のリソース使用予算を超えていると判定することに応答して、リソースマネージャー１３２は、フォアグラウンドプロセス及び少なくとも１つのバックグラウンドプロセスのうちの１つ又は複数を終了させてもよい。
【００８９】
[0103]一実施形態では、前述の方法でリソースマネージャー１３２とフォアグラウンドプロセスとの間でやり取りされる通信は、共有ＡＰＩを介して交換される。そのようなＡＰＩはアプリケーションの開発者に公開されてもよく、このため、そのような開発者は、これらの機能を利用することができるアプリケーションを開発することができる。
【００９０】
[0104]図１３は、フォアグラウンドプロセス及びアプリケーションに関連付けられる１つ又は複数のバックグラウンドタスクに対するコンピューティングデバイスのリソースの割り当てを管理する際にコンピューティングデバイス上で実行されるアプリケーションが支援することを可能にする、別の方法のフローチャート１３００を示している。
【００９１】
[0105]図１３に示すように、フローチャート１３００は、ステップ１３０２で開始し、リソースマネージャー１３２は、リソース使用予算を示す少なくとも１つのメッセージを、アプリケーションに関連付けられるフォアグラウンドプロセスに送る。
【００９２】
[0106]ステップ１３０４において、リソースマネージャー１３２は、フォアグラウンドプロセスから、フォアグラウンドプロセスに割り当てられるべきリソース使用予算の第１の部分及びアプリケーションに関連付けられる少なくとも１つのバックグラウンドタスクに割り当てられるべきリソース使用予算の第２の部分を指定する少なくとも１つのメッセージを受け取る。
【００９３】
[0107]ステップ１３０６において、リソースマネージャー１３２は、リソース使用予算の第１の部分に等しいリソースの一部をフォアグラウンドプロセスに割り当て、リソース使用予算の第２の部分に等しいリソースの一部を少なくとも１つのバックグラウンドタスクに割り当てる。
【００９４】
[0108]実施形態では、フォアグラウンドプロセスに送られる少なくとも１つのメッセージ及びリソースマネージャーに送られる少なくとも１つのメッセージは、共有ＡＰＩを介して送られる。
【００９５】
[0109]別の実施形態では、リソース使用予算は、フォアグラウンドで実行されているアプリケーションについてのリソース使用予算を含み、リソース使用予算を示す少なくとも１つのメッセージは、アプリケーションがフォアグラウンドで実行されているという通知を含む。
【００９６】
[0110]さらに別の実施形態では、リソース使用予算は、中断又は終了されるアプリケーションについてのリソース使用予算を含み、リソース使用予算を示す少なくとも１つのメッセージは、アプリケーションが中断又は終了されるという通知を含む。
【００９７】
[0111]さらなる実施形態では、リソースマネージャー１３２は、所定の期間後、フォアグラウンドプロセスによって使用されているリソースの量及び少なくとも１つのバックグラウンドプロセスによって使用されているリソースの量の合計がリソース使用予算を超えているかどうかを判定し、合計がリソース使用予算を超えていると判定することに応答して、フォアグラウンドプロセス及び少なくとも１つのバックグラウンドプロセスのうちの１つ又は複数を終了させる。
【００９８】
ＩＶ．例示的なモバイルデバイス実装
[0112]図１４は、本願で説明される実施形態を実装することができる例示的なモバイルデバイス１４０２のブロック図である。図１４に示すように、モバイルデバイス１４０２は、様々なオプションのハードウェアコンポーネント及びソフトウェアコンポーネントを含む。モバイルデバイス１４０２の任意のコンポーネントは任意の他のコンポーネントと通信することができるが、説明を簡単にするために、すべての接続が示されているわけではない。モバイルデバイス１４０２は、様々なコンピューティングデバイス（例えば、携帯電話、スマートフォン、ハンドヘルドコンピューター、パーソナルデジタルアシスタント（ＰＤＡ）など）のうちの任意のものとすることができ、セルラー又は衛星ネットワークなどの１つもしくは複数のモバイル通信ネットワーク１４０４やローカルエリアもしくはワイドエリアネットワークとの無線双方向通信を可能にすることができる。
【００９９】
[0113]図示されるモバイルデバイス１４０２は、信号符号化、データ処理、入出力処理、電力制御及び／又は他の機能などのタスクを実行するための、コントローラー又はプロセッサー１４１０（例えば、信号プロセッサー、マイクロプロセッサー、ＡＳＩＣ又は他の制御及び処理論理回路）を含むことができる。オペレーティングシステム１４１２は、モバイルデバイス１４０２のコンポーネントの割り当て及び使用を制御することができ、１つ又は複数のアプリケーションプログラム１４１４（「アプリケーション」又は「アプリ」とも呼ばれる）のサポートを提供することができる。アプリケーションプログラム１４１４は、一般的なモバイルコンピューティングアプリケーション（例えば、電子メールアプリケーション、カレンダー、コンタクトマネージャー、ウェブブラウザー、メッセージングアプリケーション）及び任意の他のコンピューティングアプリケーション（例えば、ワードプロセッシングアプリケーション、マッピングアプリケーション、メディアプレーヤーアプリケーション）を含むことができる。
【０１００】
[0114]図示したモバイルデバイス１４０２はメモリー１４２０を含むことができる、メモリー１４２０は、取り外し不能なメモリー１４２２及び／又は取り外し可能なメモリー１４２４を含むことができる。取り外し不能なメモリー１４２２は、ＲＡＭ、ＲＯＭ、フラッシュメモリー、ハードディスク、又は他の周知のメモリーデバイスもしくは技術を含むことができる。取り外し可能なメモリー１４２４は、フラッシュメモリーもしくはＧＳＭ通信システムでよく知られている加入者識別モジュール（ＳＩＭ）カード、又は「スマートカード」などの他の周知のメモリーデバイスもしくは技術を含むことができる。メモリー１４２０は、オペレーティングシステム１４１２及びアプリケーション１４１４を実行するためのデータ及び／又はコードを格納するために使用することができる。例示的なデータは、ウェブページ、テキスト、画像、音声ファイル、動画データ、又は、１つ又は複数の有線又は無線ネットワークを介して１つ又は複数のネットワークサーバー又は他のデバイスとの間で送受信される他のデータを含むことができる。メモリー１４２０は、国際モバイル加入者識別（ＩＭＳＩ）などの加入者識別子、及び国際モバイル機器識別子（ＩＭＥＩ）などの機器識別子を記憶するために使用することができる。このような識別子は、ユーザー及び機器を識別するために、ネットワークサーバーに送信することができる。
【０１０１】
[0115]モバイルデバイス１４０２は、タッチスクリーン１４３２、マイクロフォン１４３４、カメラ１４３６、物理キーボード１４３８及び／又はトラックボール１４４０などの１つ又は複数の入力デバイス１４３０、並びにスピーカー１４５２及びディスプレイ１４５４などの１つ又は複数の出力デバイス１４５０をサポートすることができる。タッチスクリーン１４３２などのタッチスクリーンは、様々な方法で入力を検出することができる。例えば、容量性タッチスクリーンは、物体（例えば、指先）が表面にわたって流れる電流を歪めたり中断したりするときに、タッチ入力を検出する。別の例として、タッチスクリーンは、光学センサーを使用して、光学センサーからのビームが遮断されたときにタッチ入力を検出することができる。スクリーンの表面との物理的接触は、入力がいくつかのタッチスクリーンによって検出されるためには必要とされない。
【０１０２】
[0116]他の可能な出力デバイス（図示せず）は、圧電又は他の触覚出力デバイスを含むことができる。いくつかのデバイスは、複数の入出力機能を果たすことができる。例えば、タッチスクリーン１４３２及びディスプレイ１４５４は、単一の入出力デバイスへと組み合わせることができる。入力デバイス１４３０は、自然ユーザーインターフェイス（ＮＵＩ）を含むことができる。
【０１０３】
[0117]無線モデム１４６０は、アンテナ（図示せず）に結合することができ、当技術分野で理解されるように、プロセッサー１４１０と外部デバイスとの間の双方向通信をサポートすることができる。モデム１４６０は、一般的に示されており、モバイル通信ネットワーク１４０４と通信するためのセルラーモデム１４６６及び／又は他の無線ベースのモデム（例えば、ブルートゥース（登録商標）１４６４及び／又はＷｉ−Ｆｉ１４６２）を含むことができる。無線モデム１４６０の少なくとも１つは、典型的には、単一のセルラーネットワーク内、セルラーネットワーク間、又はモバイルデバイスと公衆交換電話網（ＰＳＴＮ）との間のデータ及び音声通信のためのＧＳＭ（登録商標）ネットワークなどの、１つ又は複数のセルラーネットワークとの通信のために構成される。
【０１０４】
[0118]モバイルデバイス１４０２は、さらに、少なくとも１つの入出力ポート１４８０、電源１４８２、全地球測位システム（ＧＰＳ）受信機などの衛星ナビゲーションシステム受信機１４８４、加速度計１４８６、並びに／又は、ＵＳＢポート、ＩＥＥＥ  １３９４（ＦｉｒｅＷｉｒｅ）ポート及び／もしくはＲＳ−２３２ポートなどの物理コネクター１４９０を含むことができる。当業者に認識されるように、任意のコンポーネントを削除することができ、他のコンポーネントを追加することができるので、モバイルデバイス１４０２の図示されたコンポーネントは、必須ものではなく、包括的なものではない。
【０１０５】
[0119]実施形態では、モバイルデバイス１４０２の特定のコンポーネントは、デバイス固有又はユーザー固有のリソース使用プロファイルに基づいてリソース管理を行い、マルチプロセスアプリケーションのための動的リソース管理を可能にすることに関連する、本願に記載の機能を実行するように構成される。例えば、一実施形態では、オペレーティングシステム１４１２は、デバイス固有又はユーザー固有のリソース使用プロファイルに基づいてオペレーティングシステム１４１２がリソース管理を実行することを可能にする、オペレーティングシステム１０４の機能を含む。さらなる例として、オペレーティングシステム１４１２及びアプリケーション１４１４の少なくとも１つは、それらのコンポーネントがマルチプロセスアプリケーションのための動的リソース管理を実行することを可能にする、オペレーティングシステム１０４及びアプリケーション１０２の機能を含むことができる。しかし、これは一例にすぎず、様々な機能が様々なコンポーネントによって実行されてもよい。
【０１０６】
[0120]デバイス固有又はユーザー固有のリソース使用プロファイルに基づいてリソース管理を行い、マルチプロセスアプリケーションのための動的リソース管理を可能にすることに関連する、本願に記載の機能を実行するためのコンピュータープログラムロジックが、メモリー１４２０に格納されて、プロセッサー１４１０によって実行されてもよい。このようなコンピュータープログラムロジックを実行することにより、プロセッサー１４１０は、図１を参照して上述したコンピューティングデバイス１００のコンポーネントのうちの任意のものの機能のいずれかを実施することができる。また、このようなコンピュータープログラムロジックを実行することにより、プロセッサー１４１０は、図２−１３に示されたフローチャートのうちのいずれか又はすべてのステップのうちのいずれか又はすべてを実行することができる。
【０１０７】
Ｖ．例示的なコンピューターシステムの実施形態
[0121]図１５は、本願に記載の様々な実施形態を実施するために使用され得る例示的なプロセッサーベースのコンピューターシステム１５００を示す。例えば、システム１５００は、図１を参照して上述したコンピューティングデバイス１００のコンポーネントを実装するために使用されてもよい。システム１５００はまた、図２−１３に示されたフローチャートのうちのいずれか又はすべてのステップのいずれか又はすべてを実施するために使用されてもよい。本願で提供されるシステム１５００の説明は、例示の目的のために提供されるものであり、限定することを意図するものではない。実施形態は、当業者に知られているような、さらなる種類のコンピューターシステムで実現することができる。
【０１０８】
[0122]図１５に示すように、システム１５００は、処理ユニット１５０２、システムメモリー１５０４、及びシステムメモリー１５０４を含む様々なシステムコンポーネントを処理ユニット１５０２に結合するバスを含む。処理ユニット１５０２は、１つ又は複数のマイクロプロセッサー又はマイクロプロセッサーコアを含むことができる。バス１５０６は、メモリーバス又はメモリーコントローラー、周辺バス、加速グラフィックスポート及び様々なバスアーキテクチャーのうちの任意のものを使用するプロセッサー又はローカルバスを含む、いくつかの種類のバス構造のうちの１つ又は複数を表す。システムメモリー１５０４は、読み出し専用メモリー（ＲＯＭ）１５０８及びランダムアクセスメモリー（ＲＡＭ）１５１０を含む。基本入出力システム１５１２（ＢＩＯＳ）はＲＯＭ１５０８に格納される。
【０１０９】
[0123]システム１５００はまた、以下のドライブのうちの１つ又は複数を有する：ハードディスクからの読み出し及びそれへの書き込みのためのハードディスクドライブ１５１４、取り外し可能な磁気ディスク１５１８からの読み出し又はそれへの書き込みのための磁気ディスクドライブ１５１６、及びＣＤ  ＲＯＭ、ＤＶＤ  ＲＯＭ、ＢＬＵ−ＲＡＹ（商標）ディスク又は他の光学媒体などの取り外し可能な光ディスク１５２２からの読み出し又はそれへの書き込みのための光ディスクドライブ１５２０。ハードディスクドライブ１５１４、磁気ディスクドライブ１５１６及び光ディスクドライブ１５２０は、それぞれ、ハードディスクドライブインターフェイス１５２４、磁気ディスクドライブインターフェイス１５２６及び光ドライブインターフェイス１５２８によってバス１５０６に接続される。ドライブ及びその関連するコンピューター読み取り可能な媒体は、コンピューター読み取り可能な命令、データ構造、プログラムモジュール及びコンピューターのための他のデータについての不揮発性の記憶を提供する。ハードディスク、取り外し可能な磁気ディスク及び取り外し可能な光ディスクが説明されているが、フラッシュメモリーカード、デジタルビデオディスク、ランダムアクセスメモリー（ＲＡＭ）、読み取り専用メモリー（ＲＯＭ）などの、他の種類のコンピューター読み取り可能なメモリーデバイス及びストレージ構造を、データを格納するために使用することができる。
【０１１０】
[0124]多くのプログラムモジューが、ハードディスク、磁気ディスク、光ディスク、ＲＯＭ又はＲＡＭに格納されてもよい。これらのプログラムモジュールは、オペレーティングシステム１５３０、１つ又は複数のアプリケーションプログラム１５３２、他のプログラムモジュール１５３４及びプログラムデータ１５３６を含む。様々な実施形態によれば、プログラムモジュールは、図１を参照して上述したコンピューティングデバイス１００の機能及び特徴のうちのいずれか又はすべてを実行するために処理ユニット１５０２によって実行可能なコンピュータープログラムロジックを含んでもよい。プログラムモジュールはまた、処理ユニット１５０２によって実行されると、図２−１３のフローチャートを参照して示した又は説明したステップ又は動作のうちの任意のものを実行する、コンピュータープログラムロジックを含むことができる。
【０１１１】
[0125]ユーザーは、キーボード１５３８やポインティングデバイス１５４０などの入力デバイスを介して、コマンド及び情報をシステム１５００に入力することができる。他の入力デバイス（図示せず）は、マイクロフォン、ジョイスティック、ゲームコントローラー、スキャナーなどを含むことができる。一実施形態では、タッチスクリーンが、タッチスクリーン上の１つ又は複数のポイントに対する（例えば、指又はスタイラスによる）タッチのアプリケーションを介してユーザーがユーザー入力を提供することを可能にするために、ディスプレイ１５４４に関連して設けられる。これら及び他の入力デバイスは、多くの場合、バス１５０６に結合されたシリアルポートインターフェイス１５４２を介して処理ユニット１５０２に接続されるが、パラレルポート、ゲームポート又はユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェイスによって接続されてもよい。このようなインターフェイスは有線又は無線のインターフェイスであってもよい。
【０１１２】
[0126]ディスプレイ１５４４はまた、ビデオアダプター１５４６などのインターフェイスを介してバス１５０６に接続される。ディスプレイ１５４４に加えて、システム１５００は、スピーカー及びプリンターなどの他の周辺出力デバイス（図示せず）を含んでもよい。
【０１１３】
[0127]システム１５００は、ネットワークインターフェイスもしくはアダプター１５５０、モデム１５５２、又はネットワークを介して通信を確立するための他の適切な手段を介して、ネットワーク１５４８（例えば、ローカルエリアネットワーク又はインターネットなどのワイドエリアネットワーク）に接続される。モデム１５５２は、内蔵でも外付けでもよく、シリアルポートインターフェイス１５４２を介してバス１５０６に接続される。
【０１１４】
[0128]本願で使用されるとき、「コンピュータープログラム媒体」、「コンピューター読み取り可能な媒体」及び「コンピューター読み取り可能な記憶媒体」という語は、ハードディスクドライブ１５１４に関連付けられるハードディスク、取り外し可能な磁気ディスク１５１８、取り外し可能な光ディスク１５２２のほか、フラッシュメモリーカード、デジタルビデオディスク、ランダムアクセスメモリー（ＲＡＭ）、読み出し専用メモリー（ＲＯＭ）などの他のメモリーデバイスやストレージ構造などの、メモリーデバイスやストレージ構造を広く指すために使用される。このようなコンピューター読み取り可能な記憶媒体は、通信媒体とは区別され、通信媒体とは重複しない（通信媒体を含まない）。通信媒体は、通常、搬送波などの変調データ信号に、コンピューター読み取り可能な命令、データ構造、プログラムモジュール又は他のデータを具体化する。「変調データ信号」という語は、信号内に情報を符号化するような方法で設定又は変更された１つ又は複数の特性を有する信号を意味する。限定ではなく例として、通信媒体は、音響、ＲＦ、赤外線及び他の無線媒体などの無線媒体を含む。実施形態は通信媒体にも向けられる。
【０１１５】
[0129]上述のように、コンピュータープログラム及びモジュール（アプリケーションプログラム１５３２及び他のプログラムモジュール１５３４を含む）は、ハードディスク、磁気ディスク、光ディスク、ＲＯＭ又はＲＡＭに格納されてもよい。このようなコンピュータープログラムはまた、ネットワークインターフェイス１５５０、シリアルポートインターフェイス１５４２又は任意の他のインターフェイスタイプを介して受信することができる。このようなコンピュータープログラムは、アプリケーションによって実行又はロードされたときに、本願で説明した本発明の実施形態の機能をコンピューター１５００が実施することを可能にする。したがって、このようなコンピュータープログラムは、システム１５００のコントローラーを表す。
【０１１６】
[0130]実施形態はまた、任意のコンピューター使用可能な媒体に格納されたソフトウェアを含むコンピュータープログラム製品に向けられる。このようなソフトウェアは、１つ又は複数のデータ処理デバイスによって実行されると、データ処理デバイスを本願で説明された動作させる。本発明の実施形態は、現在又は将来において知られている、任意のコンピューター使用可能又はコンピューター読み取り可能な媒体を使用する。コンピューター読み取り可能な媒体の例は、限定されないが、ＲＡＭ、ハードドライブ、フロッピーディスク、ＣＤ  ＲＯＭ、ＤＶＤ  ＲＯＭ、ＺＩＰディスク、テープ、磁気ストレージデバイス、光ストレージデバイス、ＭＥＭＳ、ナノテクノロジーベースのストレージデバイスなどのメモリーデバイス及びストレージ構造を含む。
【０１１７】
[0131]代替的な実施形態では、システム１５００は、ハードウェア論理／電気回路又はファームウェアとして実装することができる。さらなる実施形態によれば、これらのコンポーネントのうちの１つ又は複数は、システムオンチップ（ＳｏＣ）で実装されてもよい。ＳｏＣは、プロセッサー（例えば、マイクロコントローラー、マイクロプロセッサー、デジタル信号プロセッサー（ＤＳＰ）など）、メモリー、１つ又は複数の通信インターフェイス、及び／もしくはさらなる回路、又はその機能を実行する組み込みファームウェアのうちの１つ又は複数を含む集積回路チップを含んでもよい。
【０１１８】
ＶＩ．結論
[0132]様々な実施形態が上で説明されたが、これらがほんの一例として提示されたものであって、限定ではないことが理解されるべきである。形態及び詳細の様々な変更が、本発明の趣旨及び範囲から逸脱することなくなされ得ることが、当業者には明らかであろう。したがって、本発明の広さ及び範囲は、上述した実施形態のいずれによっても限定されるべきではなく、以下の特許請求の範囲及びその均等物によってのみ規定されるべきである。
【図１】
0006509895.tif 000002
【図２】
0006509895.tif 000003
【図３】
0006509895.tif 000004
【図４】
0006509895.tif 000005
【図５】
0006509895.tif 000006
【図６】
0006509895.tif 000007
【図７】
0006509895.tif 000008
【図８】
0006509895.tif 000009
【図９】
0006509895.tif 000010
【図１０】
0006509895.tif 000011
【図１１】
0006509895.tif 000012
【図１２】
0006509895.tif 000013
【図１３】
0006509895.tif 000014
【図１４】
0006509895.tif 000015
【図１５】
0006509895.tif 000016