(57)【要約】計算デバイス上で実行するアプリケーションが、計算デバイスのリソースから割り当てられる部分を、アプリケーションに関連する多数のプロセス間でどのように分割するとよいか動的に制御することを可能にする技法について記載する。例えば、計算デバイス上で実行しているアプリケーションが、計算デバイスのオペレーティング・システムと相互作用して、計算デバイスのリソースから割り当てられた部分を、アプリケーションに関連するフォアグラウンド・プロセスおよびアプリケーションに関連する１つ以上のバックグラウンド・プロセスの間でどのように分割するとよいか動的に制御することができる。【選択図】図１３
2017514209.tif 000002
【特許請求の範囲】
【請求項１】
計算デバイス上に実装されるシステムであって、
少なくとも１つのプロセッサーと、
前記少なくとも１つのプロセッサーによってアクセス可能なメモリーであって、前記少なくとも１つのプロセッサーによる実行のためにコンポーネントを格納する、メモリーと、
を含み、
前記コンポーネントが、
アプリケーションに関連するリソース使用バジェットを維持するように動作可能なリソース・マネージャーを含み、前記リソース使用バジェットが、前記計算デバイスのリソースがどれくらい前記アプリケーションによってその実行中に使用できるか示し、
前記リソース・マネージャーが、前記リソース使用バジェットを示す少なくとも１つのメッセージを、前記アプリケーションに関連するフォアグラウンド・プロセスに送り、前記リソース使用バジェットの内前記フォアグラウンド・プロセスに割り当てられる第１部分、および前記リソース使用バジェットの内前記アプリケーションに関連する少なくとも１つのバックグラウンド・タスクに割り当てられる第２部分を指定する少なくとも１つのメッセージを、前記フォアグラウンド・プロセスから受けるように動作可能である、システム。
【請求項２】
請求項１記載のシステムにおいて、前記リソース・マネージャーが、更に、前記リソース使用バジェットの第１部分に等しい前記リソースの部分を前記フォアグラウンド・プロセスに割り当て、前記リソース使用バジェットの第２部分に等しい前記リソースの部分を前記少なくとも１つのバックグラウンド・タスクに割り当てるように動作可能である、システム。
【請求項３】
請求項１記載のシステムにおいて、前記リソースが、
揮発性または不揮発性メモリー・リソースと、
中央処理ユニット（ＣＰＵ）リソースと、
入力／出力（Ｉ／Ｏ）リソースと、
ネットワーク・リソースと、
電力リソースと、または、
センサー・リソースと、
を含む、システム。
【請求項４】
請求項１記載のシステムにおいて、前記フォアグラウンド・プロセスに送られる前記少なくとも１つのメッセージ、および前記フォアグラウンド・プロセスから受け取られる前記少なくとも１つのメッセージが、共有アプリケーション・プログラミング・インターフェースを介して伝達される、システム。
【請求項５】
請求項１記載のシステムにおいて、前記リソース使用バジェットが、前記フォアグラウンドにおいて実行しているアプリケーションのためのリソース使用バジェットを含み、前記リソース使用バジェットを示す前記少なくとも１つのメッセージが、前記アプリケーションがフォアグラウンドにおいて実行していることの通知を含む、システム。
【請求項６】
請求項１記載のシステムにおいて、前記リソース使用バジェットが、保留または終了させられるアプリケーションのためのリソース使用バジェットを含み、前記リソース使用バジェットを示す前記少なくとも１つのメッセージが、前記アプリケーションが保留または終了させられることの通知を含む、システム。
【請求項７】
請求項６記載のシステムにおいて、前記リソース・マネージャーが、更に、所定の時間期間の後に、前記フォアグラウンド・プロセスによって使用される前記リソースの量と、前記少なくとも１つのバックグラウンド・プロセスによって使用される前記リソースの量との合計が、前記リソース使用バジェットを超過するか否か判定し、前記合計が前記リソース使用バジェットを超過すると判定したことに応答して、前記フォアグラウンド・プロセスおよび前記少なくとも１つのバックグラウンド・プロセスの内１つ以上を終了させるように動作可能である、システム。
【請求項８】
計算デバイスによって実装される方法であって、
リソース・マネージャーから、アプリケーションに関連するフォアグラウンド・プロセスに、前記アプリケーションがフォアグラウンドで実行していることの通知を送るステップと、
前記リソース・マネージャーによって、前記フォアグラウンド・プロセスから、少なくとも１つのメッセージを受けるステップであって、前記少なくとも１つのメッセージが、第１リソース使用バジェットの内前記フォアグラウンド・プロセスに割り当てられる第１部分と、前記第１リソース使用バジェットの内前記アプリケーションに関連する少なくとも１つのバックグラウンド・タスクに割り当てられる第２部分とを指定し、前記第１リソース使用バジェットが、フォアグラウンドにおいて実行しているアプリケーションに関連するリソース使用バジェットを含む、ステップと、
前記リソース・マネージャーによって、前記第１リソース使用バジェットの前記第１部分に等しいリソースの部分を前記フォアグラウンド・プロセスに割り当て、前記第１リソース使用バジェットの前記第２部分に等しい前記リソースの部分を前記少なくとも１つのバックグラウンド・タスクに割り当てるステップと、
を含む、方法。
【請求項９】
請求項８記載の方法において、前記リソースが、
揮発性または不揮発性メモリー・リソースと、
中央処理ユニット（ＣＰＵ）リソースと、
入力／出力（Ｉ／Ｏ）リソースと、
ネットワーク・リソースと、
電力リソースと、または、
センサー・リソースと、
を含む、方法。
【請求項１０】
請求項８記載の方法であって、更に、
前記リソース・マネージャーから前記フォアグラウンド・プロセスに、前記アプリケーションが保留または終了させられることの通知を送るステップと、
前記リソース・マネージャーによって、前記フォアグラウンド・プロセスから、少なくとも１つのメッセージを受けるステップであって、前記少なくとも１つのメッセージが、第２リソース使用バジェットの内前記フォアグラウンド・プロセスに割り当てられる第１部分と、前記第２リソース使用バジェットの内前記アプリケーションに関連する少なくとも１つのバックグラウンド・タスクに割り当てられる第２部分とを指定し、前記第２リソース使用バジェットが、保留または終了させられるアプリケーションに関連するリソース使用バジェットを含む、ステップと、
前記リソース・マネージャーによって、前記第２リソース使用バジェットの前記第１部分に等しいリソースの部分を前記フォアグラウンド・プロセスに割り当て、前記第２リソース使用バジェットの前記第２部分に等しい前記リソースの部分を前記少なくとも１つのバックグラウンド・タスクに割り当てるステップと、
を含む、方法。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  今日の移動体デバイス、特に今日の低価格移動体デバイスは、マルチタスク処理のシナリオが難しい課題となっている。大規模に競合するためには、低価格および／または低電力部品を使用して移動体デバイスを製造しなければならないことが多い。これは、移動体デバイスを実現するために使用されるメモリーについて特に該当し、このメモリーにはランダム・アクセス・メモリー（ＲＡＭ）、マルチメディア・カード（ＭＭＣ）、およびセキュア・ディジタル（ＳＤ）カードが含まれる。これによる実質的な影響は、メモリー管理のためにページングに頼る従来の移動体デバイスは、多数のプロセスを同時に実行しようとすると、即座に固まってしまう(fall over)ことである。このため、ユーザー体験が非常に乏しくなり、マルチタスク処理のシナリオでは不利になる。この問題は、移動体デバイス用に開発されるアプリケーションおよびオペレーティング・システムが増々大型化していくのに対して、市場は製造コスト削減を求めるので、特に重要になりつつある。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
[0002]  以前では、移動体デバイス上において多数のプロセスの同時実行をサポートするために不十分なメモリーを使用する問題は、以下の方法の内１つ以上で扱われていた。メモリー管理のためのページングの使用、移動体デバイス上にもっと多くのメモリーを設ける、ならびにアプリケーションおよびオペレーティング・システムのサイズに制限を設ける。先に注記したように、ページングは非常に乏しいユーザー体験および不利なマルチタスク処理シナリオを招く可能性がある。メモリーを多く設ける程、移動体デバイスのコスト、複雑さ、および電力消費を押し上げることになる。アプリケーションおよびオペレーティング・システムのサイズ制限を設けると、所望の機能を開発しユーザーに届けることが過度に難しくなる。少なくともこれらの理由のため、既存のメモリー管理解決策は、移動体デバイスには不十分である。今日の移動体デバイスが、ユーザー体験に悪影響を及ぼさずに、広範囲にわたる種々のマルチタスク処理シナリオを可能にするように多数のプロセスを同時に実行することを可能にするためには、メモリー管理技法の改良が必要となる。
【課題を解決するための手段】
【０００３】
[0003]  本明細書では、計算デバイス上で実行するアプリケーションが、この計算デバイスのリソースから割り当てられた部分を、このアプリケーションに関連する多数のプロセス間でどのように分割すればよいか動的に制御することを可能にするシステム、方法、装置、およびコンピューター・プログラム製品について説明する。例えば、計算デバイス上で実行するアプリケーションが、計算デバイスのオペレーティング・システムと対話処理して、このアプリケーションに関連するフォアグラウンド・プロセスおよびこのアプリケーションに関連する１つ以上のバックグラウンド・プロセスの間で、計算デバイスのリソースの内割り当てられた部分をどのように分割すればよいか動的に制御することができる。アプリケーションにこの能力を設けることによって、本明細書において説明する実施形態は、アプリケーションが変化しつつあるリソース割り当てに適応し、計算デバイス上で実行しているかもしれない他のプロセスとより良く共存することを可能にし、これによって多種多様なマルチタスク処理シナリオを可能にするという利点がある。
【０００４】
[0004]  具体的には、本明細書では、計算デバイス上に実装されるシステムについて説明する。このシステムは、少なくとも１つのプロセッサーと、この少なくとも１つのプロセッサーによってアクセスすることができ、少なくとも１つのプロセッサーによる実行のためにコンポーネントを格納するメモリーとを含む。コンポーネントにはリソース・マネージャーが含まれる。リソース・マネージャーは、アプリケーションに関連するリソース使用バジェット(resource usage budget)を維持し、リソース使用バジェットを示す少なくとも１つのメッセージをアプリケーションに関連するフォアグラウンド・プロセスに送り、リソース使用バジェットの内フォアグラウンド・プロセスに割り当てられる第１部分、およびリソース使用バジェットの内アプリケーションに関連する少なくとも１つのバックグラウンド・タスクに割り当てられる第２部分を指定する少なくとも１つのメッセージをフォアグラウンド・プロセスから受けるように動作可能である。リソース使用バジェットは、計算デバイスのリソースの内どれくらいをアプリケーションによって、その実行中に使用することができるか示す。リソースは、例えば、揮発性または不揮発性メモリー・リソース、中央処理ユニット（ＣＰＵ）リソース、入力／出力（Ｉ／Ｏ）リソース、ネットワーク・リソース、電力リソース、またはセンサー・リソースを含むことができる。
【０００５】
[0005]  以上のシステムの実施形態では、リソース・マネージャーは、更に、リソース使用バジェットの第１部分に等しいリソースの部分をフォアグラウンド・プロセスに割り当て、更にリソース使用バジェットの第２部分に等しいリソースの部分を少なくとも１つのバックグラウンド・タスクに割り当てるように動作可能である。
【０００６】
[0006]  他の実施形態では、フォアグラウンド・プロセスに送られる少なくとも１つのメッセージ、および前記プロセスから受け取られる少なくとも１つのメッセージは、共有アプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して伝達される。
【０００７】
[0007]  更に他の実施形態では、リソース使用バジェットは、フォアグラウンドにおいて実行しているアプリケーションのためのリソース使用バジェットを含み、リソース使用バジェットを示す少なくとも１つのメッセージは、アプリケーションがフォアグラウンドにおいて実行していることの通知を含む。
【０００８】
[0008]  更に他の実施形態では、リソース使用バジェットは、保留または終了させられるアプリケーションのためのリソース使用バジェットを含み、リソース使用バジェットを示す少なくとも１つのメッセージは、アプリケーションが保留または終了させられることの通知を含む。
【０００９】
[0009]  更に他の実施形態では、リソース・マネージャーは、更に、所定の時間期間の後、フォアグラウンド・プロセスによって使用されるリソースの量と、少なくとも１つのバックグラウンド・プロセスによって使用されるリソースの量との合計が、リソース使用バジェットを超過するか否か判定し、合計がリソース使用バジェットを超過すると判定したことに応答して、フォアグラウンド・プロセスおよび少なくとも１つのバックグラウンド・プロセスの内１つ以上を終了させるように動作可能である。
【００１０】
[0010]  また、本明細書では、計算デバイスによって実装される方法についても説明する。この方法にしたがって、リソース・マネージャーが、アプリケーションに関連するフォアグラウンド・プロセスに、このアプリケーションがフォアグラウンドにおいて実行していることの通知を送る。リソース・マネージャーは、フォアグラウンド・プロセスから、フォアグラウンド・プロセスに割り当てられる第１リソース使用バジェットの第１部分、およびアプリケーションに関連する少なくとも１つのバックグラウンド・タスクに割り当てられる第１リソース使用バジェットの第２部分を指定する少なくとも１つのメッセージを受ける。第１リソース使用バジェットは、フォアグラウンドにおいて実行しているアプリケーションに関連するリソース使用ジェットを含む。リソース・マネージャーは、第１リソース使用バジェットの第１部分に等しいリソースの部分をフォアグラウンド・プロセスに割り当て、更に第１リソース使用バジェットの第２部分に等しいリソースの部分を少なくとも１つのバックグラウンド・タスクに割り当てる。リソースは、例えば、揮発性または不揮発性メモリー・リソース、ＣＰＵリソース、Ｉ／Ｏリソース、ネットワーク・リソース、電力リソース、およびセンサー・リソースを含むことができる。
【００１１】
[0011]  以上の方法の一実施形態では、送るステップおよび受けるステップは、共有ＡＰＩを介して実行される。
[0012]  他の実施形態では、この方法は更に多数の追加ステップを含む。これらの追加ステップにしたがって、リソース・マネージャーは、フォアグラウンド・プロセスに、アプリケーションが中断または終了させられることの通知を送る。リソース・マネージャーは、フォアグラウンド・プロセスから、フォアグラウンド・プロセスに割り当てられる第２リソース使用バジェットの第１部分、およびアプリケーションに関連する少なくとも１つのバックグラウンド・タスクに割り当てられる第２リソース使用バジェットの第２部分を指定する少なくとも１つのメッセージを受ける。第２リソース使用バジェットは、保留または終了させられるアプリケーションに関連するリソース使用バジェットを含み、第１リソース・バジェットよりも小さくてもよい。リソース・マネージャーは、第２リソース使用バジェットの第１部分に等しいリソースの部分をフォアグラウンド・プロセスに割り当て、第２リソース使用バジェットの第２部分に等しいリソースの部分を少なくとも１つのバックグラウンド・タスクに割り当てる。
【００１２】
[0013]  更にこの実施形態にしたがって、この方法は、更に、所定の時間期間の後、フォアグラウンド・プロセスによって使用されるリソースの量、および少なくとも１つのバックグラウンド・プロセスによって使用されるリソースの量の合計が第２リソース使用バジェットを超過するか否か判定するステップと、合計が第２リソース使用バジェットを超過すると判定したことに応答して、フォアグラウンド・プロセスおよび少なくとも１つのバックグラウンド・プロセスの内の１つ以上を終了させるステップとを含んでもよい。
【００１３】
[0014]  また、本明細書においては、コンピューター・プログラム製品についても説明する。このコンピューター・プログラム製品は、コンピューター・プログラム・ロジックが記録されたコンピューター読み取り可能メモリーを含み、計算デバイスの少なくとも１つのプロセッサーによってこのコンピューター・プログラム・ロジックが実行されると、少なくとも１つのプロセッサーに動作を実行させる。これらの動作は、リソース・マネージャーからアプリケーションに関連するフォアグラウンド・プロセスに、リソース使用バジェットを示す少なくとも１つのメッセージを送る動作と、リソース・マネージャーによってフォアグラウンド・プロセスから、リソース使用バジェットの内フォアグラウンド・プロセスに割り当てられる第１部分、およびリソース使用バジェットの内アプリケーションに関連する少なくとも１つのバックグラウンド・タスクに割り当てられる第２部分を指定する少なくとも１つのメッセージを受ける動作とを含む。リソースは、揮発性または不揮発性メモリー・リソース、ＣＰＵリソース、Ｉ／Ｏリソース、ネットワーク・リソース、電力リソース、およびセンサー・リソースを含むことができる。
【００１４】
[0015]  以上のコンピューター・プログラム製品の一実施形態では、前述の動作は、更に、リソース・マネージャーによって、リソース使用バジェットの第１部分に等しいリソースの部分をフォアグラウンド・プロセスに割り当てる動作と、リソース使用バジェットの第２部分に等しいリソースの部分を少なくとも１つのバックグラウンド・タスクに割り当てる動作とを含む。
【００１５】
[0016]  他の実施形態では、リソース使用バジェットを示す少なくとも１つのメッセージ、ならびにフォアグラウンド・プロセスに割り当てられるリソース使用バジェットの第１部分、およびアプリケーションに関連する少なくとも１つのバックグラウンド・タスクに割り当てられるリソース使用バジェットの第２部分を指定する少なくとも１つのメッセージが、共有ＡＰＩを介して送られる。
【００１６】
[0017]  更に他の実施形態では、リソース使用バジェットは、フォアグラウンドにおいて実行しているアプリケーションのためのリソース使用バジェットを含み、リソース使用バジェットを示す少なくとも１つのメッセージは、アプリケーションがフォアグラウンドにおいて実行していることの通知を含む。
【００１７】
[0018]  更に他の実施形態では、リソース使用バジェットは、中断または終了させられるアプリケーションのためのリソース使用バジェットを含み、リソース使用バジェットを示す少なくとも１つのメッセージは、アプリケーションが中断または終了させられることの通知を含む。
【００１８】
[0019]  更に他の実施形態では、前述の動作は、更に、所定の時間期間の後、フォアグラウンド・プロセスによって使用されるリソースの量、および少なくとも１つのバックグラウンド・プロセスによって使用されるリソースの量の合計が第２リソース使用バジェットを超過するか否か、リソース・マネージャーによって判定する動作と、合計が第２リソース使用バジェットを超過すると判定したことに応答して、フォアグラウンド・プロセスおよび少なくとも１つのバックグラウンド・プロセスの内の１つ以上を、リソース・マネージャーによって終了させる動作とを含む。
【００１９】
[0020]  この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。更に、特許請求する主題は、詳細な説明および／または本文書の他の章において記載される具体的な実施形態に限定されるのではないことを注記しておく。このような実施形態は、本明細書では、例示の目的にのみ紹介されるに過ぎない。本明細書に含まれる教示に基づいて、当業者には追加の実施形態も明白であろう。
【図面の簡単な説明】
【００２０】
[0021]  添付図面は、本明細書に組み込まれその一部をなすが、本発明の実施形態を例示し、更に、説明と共に、本発明の原理を説明し、関連技術（１つまたは複数）の当業者が本発明を行い使用することを可能にする役割も果たす。
【図１】図１は、実施形態にしたがって、デバイス特定またはユーザー特定のリソース使用プロファイルに基づいてリソース管理を実行する計算デバイスのブロック図である。
【図２】図２は、実施形態にしたがって、デバイス特定またはユーザー特定のリソース使用プロファイルにしたがって計算デバイスのリソースを管理するために計算デバイスによって実装される方法のフローチャートを示す。
【図３】図３は、一実施形態にしたがってアプリケーションについて予測リソース使用量を計算する方法のフローチャートを示す。
【図４】図４は、他の実施形態にしたがってアプリケーションについて予測リソース使用量を計算する方法のフローチャートを示す。
【図５】図５は、実施形態にしたがってアプリケーションについて平均リソース使用量を求める方法のフローチャートを示す。
【図６】図６は、図２に示したフローチャートの方法にしたがって実行することができる追加ステップのフローチャートを示す。
【図７】図７は、図２に示したフローチャートの方法にしたがって実行することができる追加ステップのフローチャートを示す。
【図８】図８は、図２に示したフローチャートの方法にしたがって実行することができる追加ステップのフローチャートを示す。
【図９】図９は、実施形態にしたがって、ユーザー特定リソース使用プロファイルにしたがって、計算デバイスのリソースを管理するために計算デバイスによって実装される方法のフローチャートを示す。
【図１０】図１０は、実施形態にしたがって、デバイス特定またはユーザー特定のリソース使用プロファイルにしたがってアプリケーションの起動(launching)を管理する方法のフローチャートを示す。
【図１１】図１１は、計算デバイスのリソースに関して監視されたユーザーのリソース使用パターンおよびそこから得られる情報を使用して、予測的にリソースをプロセスに割り当てる方法のフローチャートを示す。
【図１２】図１２は、計算デバイスのリソースのフォアグラウンド・プロセスおよびアプリケーションに関連する１つ以上のバックグラウンド・タスクへの割り当てを管理するときに、計算デバイス上で実行するアプリケーションがこれを補助することを可能にする一方法のフローチャートを示す。
【図１３】図１３は、計算デバイスのリソースのフォアグラウンド・プロセスおよびアプリケーションに関連する１つ以上のバックグラウンド・タスクへの割り当てを管理するときに、計算デバイス上で実行するアプリケーションがこれを補助することを可能にする他の方法のフローチャートを示す。
【図１４】図１４は、種々の実施形態を実現するために使用することができる移動デバイス例のブロック図である。
【図１５】図１５は、種々の実施形態を実現するために使用することができるプロセッサー・ベースのコンピューター・システム例のブロック図である。
【００２１】
[0037]  本発明の特徴および利点は、以下に明記する詳細な説明を図面と共に検討することによって一層明白になるであろう。図面では、同様の参照符号が全体を通じて対応するエレメントを識別する。図面において、同様の参照番号は、同一、機能的に同様、および／または構造的に同様のエレメントを全体的に示す。エレメントが最初に現れる図面は、対応する参照番号における一番左側の桁（１つまたは複数）によって示される。
【発明を実施するための形態】
【００２２】
１．序言
[0038]  以下の詳細な説明では、本発明の実施形態例を例示する添付図面を参照する。しかしながら、本発明の範囲はこれらの実施形態に限定されるのではなく、代わりに添付する特許請求の範囲によって定められるものとする。したがって、図示する実施形態の変更バージョンというような、添付図面において示されるものを超える実施形態であっても、本発明によって包含されるのはもっともである。
【００２３】
[0039]  本明細書における「一実施形態」、「実施形態」、「実施形態例」等に言及するときは、その説明される実施形態が固有の特徴、構造、または特性を含むことができるが、あらゆる実施形態がその固有の特徴、構造、または特性を必ずしも含まなくてもよいことを示す。更に、このような句は必ずしも同じ実施形態を指すとは限らない。更に、固有の特徴、構造、または特性が実施形態と関連付けて説明されるとき、明示的に説明されているか否かには関係なく、このような特徴、構造、または特性を他の実施形態と併せて実現することは、関連技術（１つまたは複数）における当業者の知識の範囲内であることを申し添えておく。
【００２４】
[0040]  本明細書では、計算デバイス上で実行するアプリケーションが、この計算デバイスのリソースから割り当てられた部分を、このアプリケーションに関連する多数のプロセス間でどのように分割すればよいか動的に制御することを可能にするシステム、方法、装置、およびコンピューター・プログラム製品について説明する。例えば、計算デバイス上で実行するアプリケーションが、計算デバイスのオペレーティング・システムと相互作用して、このアプリケーションに関連するフォアグラウンド・プロセスおよびこのアプリケーションに関連する１つ以上のバックグラウンド・プロセスの間で、計算デバイスのリソースから割り当てられた部分をどのように分割すればよいか動的に制御することができる。アプリケーションにこの能力を設けることによって、本明細書において説明する実施形態は、アプリケーションが、変化しつつあるリソース割り当てに適応し、計算デバイス上で実行しているかもしれない他のプロセスとより良く共存することを可能にし、これによって多種多様なマルチタスク処理シナリオを可能にするという利点がある。本明細書において説明する技法は、揮発性および不揮発性メモリー、ＣＰＵ、Ｉ／Ｏ、ネットワーク、電力、およびセンサーを含むがこれらに限定されない、計算デバイスの種々の異なるタイプのリソースの使用を管理するために使用することができるという利点がある。
【００２５】
[0041]  第２章では、実施形態にしたがって、デバイス特定またはユーザー特定のリソース使用プロファイルに基づいてリソース管理を実行する計算デバイス例、および関連する方法について説明する。第３章では、第２章の計算デバイス例がどのようにしてマルチプロセス・アプリケーションのために動的リソース管理を実施可能にすることができるかについて説明する。第４章では、本明細書において説明するリソース管理の特徴を実現することができる移動体デバイス例について説明する。第５章では、本明細書において説明するリソース管理の機能(feature)を実現することができるデスクトップ・コンピューター例について説明する。第６章では、ある結論的意見を示す。
【００２６】
ＩＩ．デバイス特定またはユーザー特定のリソース使用プロファイルに基づいてリソース管理を実行するシステムおよび方法例
[0042]  図１は、実施形態にしたがってデバイス特定またはユーザー特定のリソース使用プロファイルに基づいてリソース管理を実行する計算デバイス１００のブロック図である。計算デバイス１００は、一般に、ユーザーに代わってアプリケーションを実行することができるプロセッサー・ベースの電子デバイスを表すことを意図している。一実施形態では、計算デバイス１００は、移動体電話機（例えば、スマート・フォン）、ラップトップ・コンピューター、タブレット・コンピューター、またはネットブックのような移動体計算デバイスを含む。計算デバイス１００は、ウェアラブル・コンピューター（例えば、頭部装着コンピューター）、携帯用メディア・プレーヤー、パーソナル・ディジタル・アシスタント、パーソナル・ナビゲーション・アシスタント、ハンドヘルド・ゲーム・コンソール、またはユーザーの代わりにアプリケーションを実行することができる任意の他の移動体デバイスというような、他のタイプの移動体計算デバイスも含むことができると考えられる。計算デバイス１００の機能を組み込むことができる移動体デバイスの一例については、以下で図１４を参照して論ずる。他の実施形態では、計算デバイス１００は、ユーザーの代わりにアプリケーションを実行することができるデスクトップ・コンピューターまたは他の移動体以外の計算プラットフォームを含む。計算デバイス１００の機能を組み込むことができるデスクトップ・コンピューター例については、以下で図１５を参照して論ずる。
【００２７】
[0043]  図１に示すように、計算デバイス１００は、アプリケーション１０２、オペレーティング・システム１０４、およびデーター・ストア１０６を含む。一実施形態では、アプリケーション１０２およびオペレーティング・システム１０４の各々は、計算デバイス１００のメモリーに格納され、メモリーに通信可能に接続されたプロセッサー（例えば、マイクロプロセッサーまたはソフトウェア命令を実行可能な他の回路）によってそこから実行されるソフトウェア・コンポーネントを含む。このようなメモリーおよびプロセッサーは、簡素にするという目的のために限って、図１には示されていない。更にこのような実施形態によれば、アプリケーション１０２およびオペレーティング・システム１０４は各々、計算デバイス１００の不揮発性メモリーに永続的に格納され、計算デバイス１００の給電動作(powered operation)の間プに、ロセッサーによる実行のために計算デバイス１００の揮発性メモリーに一時的に転送されるとよい。
【００２８】
[0044]  アプリケーション１０２は、計算デバイス１００のユーザーに代わって機能を実行するためおよび／または機能(feature)を提供するために計算デバイス１００上にインストールし実行することができる多種多様のコンピューター・プログラムの内任意の１つを表すことを意図している。アプリケーション１０２は、例えば、電話アプリケーション、電子メール・アプリケーション、メッセージング・アプリケーション、ウェブ・ブラウジング・アプリケーション、カレンダー・アプリケーション、ユーティリティ・アプリケーション、ゲーム・アプリケーション、ソーシャル・ネットワーキング・アプリケーション、音楽アプリケーション、生産性アプリケーション、生活様式アプリケーション、参照アプリケーション、旅行アプリケーション、スポーツ・アプリケーション、ナビゲーション・アプリケーション、健康管理およびフィットネス・アプリケーション、ニュース・アプリケーション、写真アプリケーション、財政アプリケーション、業務用アプリケーション、教育用アプリケーション、天気アプリケーション、電子書籍アプリケーション、医療アプリケーション等を表すことができるが、決してこれらに限定されるのではない。
【００２９】
[0045]  オペレーティング・システム１０４は、１組のコンピューター・プログラムを含み、これらが集合的にリソースを管理し、計算デバイス１００上で実行するアプリケーションに共通サービスを提供する。図１に示すように、オペレーティング・システム１０４はドライバー１１０、カーネル１２０、およびシステム・サービス１３０を含む。ドライバー１１０は、オペレーティング・システム１０４が、ＣＰＵ、システム・メモリー、およびＩ／Ｏデバイスのような、計算デバイス１００の種々のハードウェア・リソースと相互作用することを可能にするコンポーネントを含む。カーネル１２０は、ドライバー１１０を利用して、計算デバイス１００のこのようなハードウェア・リソースおよびその他のリソースを管理し、更に他のプログラムが実行しこれらのリソースを使用することを可能にする。カーネル１２０は、プロセスをＣＰＵに割り当てる、システム・メモリーを特定のプロセスに割り当てる、およびＩ／Ｏ要求をしかるべきデバイスに割り当てるというような動作を実行することができる。システム・サービス１３０は、カーネル１２０によって割り当てることができる種々のリソースのために、アプリケーションからの要求に応えてサービスを提供するように動作するコンポーネントである。
【００３０】
[0046]  図１に示すように、カーネル１２０はメモリー・マネージャー１２２を含む。メモリー・マネージャー１２２は、計算デバイス１００のシステム・メモリーをどのように利用するか制御し、他のプロセスがシステム・メモリーを要求したときに、他のプロセスがシステム・メモリーにアクセスすることを可能にする動作を実行する。動作の中でもとりわけ、メモリー・マネージャー１２２は、仮想アドレシング方式を維持し、プロセスが物理的に使用可能なシステム・メモリーよりも多くを使用できるようにページングを実行することができる。システム・メモリーを管理するために、メモリー・マネージャー１２２は、ドライバー１１０の１つであるメモリー・ドライバー１１２と相互作用する。
【００３１】
[0047]  更に図１に示すように、システム・サービス１３０はリソース・マネージャー１３２を含む。本明細書において更に詳しく論ずるが、リソース・マネージャー１３２は、アプリケーションに割り当てられるリソースの量を決定するように動作するコンポーネントであり、このような決定は、アプリケーションに対するリソース使用プロファイルに基づくことができ、更に使用可能である場合、その量のリソースを割り当てるように動作するコンポーネントである。以下に続く説明では、アプリケーションに割り当てられるリソースはシステム・メモリーであると仮定する。しかしながら、本明細書において説明するリソース管理技法は、計算デバイス１００の任意の他のリソースにも容易に拡張可能であることは理解されよう。任意の他のリソースには、ＣＰＵ、システム・メモリー以外の揮発性メモリー、不揮発性メモリー、ネットワーク・リソース、Ｉ／Ｏリソース、電力リソース（例えば、バッテリ電力または何らかの他の電源からの電力）、およびセンサー・リソース（例えば、カメラまたはマイクロフォン）が含まれるが、これらに限定されるのではない。
【００３２】
[0048]  データー・ストア１０６は、計算デバイス１００の揮発性または不揮発性メモリーに格納されるデーターの集合体を含む。本明細書において説明するように、データー・ストア１０６は、計算デバイス１００上にインストールし実行することができるアプリケーションに対するリソース使用プロファイルを格納するために、リソース・マネージャー１３２によって使用される。ある種の実施態様例によれば、データー・ストア１０６はレジスターまたはデーターベースを含んでもよい。
【００３３】
[0049]  アプリケーション１０２が起動されようとするとき（例えば、ユーザーによるアプリケーション１０２のアクティブ化または何らかの他のイベントに応答して）、アプリケーション１０２が適正に実行するために必要となるリソースをアプリケーション１０２に割り当てることを要求するために、アプリケーション１０２の代わりに、１つ以上のシステム・サービス・コールがシステム・サービス１３０に対して行われる。このコール（１つまたは複数）に応答して、リソース・マネージャー１３２は必要なリソースが使用可能であるか否か判定し、このようなリソースが使用可能である場合、これらをアプリケーション１０２に割り当てさせるように動作する。
【００３４】
[0050]  システム・メモリーの場合、リソース・マネージャー１３２は、データー・ストア１０６に格納することができる、アプリケーション１０２に対するリソース使用プロファイルにアクセスすることを試すことによって、アプリケーション１０２に割り当てるシステム・メモリーの量を決定する。実施形態では、アプリケーション１０２に対するこのようなリソース使用プロファイルは、アプリケーション１０２が実行中に使用すると予想されるシステム・メモリーの量を指定する予測リソース使用量を含む。代わりに、リソース使用プロファイル・アプリケーション１０２は、このような予測リソース使用量を導き出すことができるデーターを含んでもよい。更に他の実施形態では、データー・ストア１０６内にアプリケーション１０２に対するリソース使用プロファイルが存在しない場合、デフォルトの予測リソース使用量をアプリケーション１０２に割り当てることもできる。このようなデフォルトの予測リソース使用量は、全てのアプリケーションに対して同じであってもよく、またはアプリケーション・タイプ毎に異なってもよい。
【００３５】
[0051]  一旦リソース・マネージャー１３２がアプリケーション１０２に対して予測リソース使用量を決定したなら、リソース・マネージャー１３２は次にメモリー・マネージャー１２２と通信して、予測リソース使用量が現在使用可能であるか否か判定を行う。予測リソース使用量が現在使用可能である場合、リソース・マネージャー１３２は予測リソース使用量をアプリケーション１０２に割り当て、アプリケーション１０２が実行することを許可することができる。しかしながら、予測リソース使用量が現在使用可能でない場合、リソース・マネージャー１３２はアプリケーション１０２が実行することを禁止することができる。更に、予測リソース使用量が現在使用可能でない場合、リソース・マネージャー１３２は、アプリケーション１０２のためにシステム・メモリーを解放するために、計算デバイス上で現在実行している１つ以上の他のプロセスを終了させることもできる。このような他のプロセスとは、プロセス優先順方式にしたがってアプリケーション１０２よりも低い優先順位が割り当てられたプロセスとすればよい。一旦十分なシステム・メモリーがこのようにして再度確保されたなら、リソース・マネージャー１３２はアプリケーション１０２が実行することを許可することができる。
【００３６】
[0052]  アプリケーション１０２が実行し始めた後、リソース・マネージャー１３２は、アプリケーション１０２が実際に使用しているシステム・メモリーがどれくらいなのか監視する。このように、リソース・マネージャー１３２は、予測リソース使用量にしたがって最初に割り当てられたよりも多いシステム・メモリーをアプリケーション１０２が利用していると判定することもある。この場合、リソース・マネージャー１３２は、アプリケーション１０２が適正に実行するために十分なシステム・メモリーが使用可能であることを確保するために、計算デバイス１００上で同時に実行している１つ以上のプロセスを終了させることを試すことができる。また、リソース・マネージャー１３２は、アプリケーション１０２がシステム・メモリー使用の既定上限を超えていると判定した場合、またはそれ以外でアプリケーション１０２によるシステム・メモリー使用量が容認できないと判定した場合、アプリケーション１０２の実行を終了させることもできる。
【００３７】
[0053]  また、リソース・マネージャー１３２は、アプリケーション１０２によって使用されているシステム・メモリーがどれくらいか監視することによって得た情報を利用して、データー・ストア１０６に格納されている、アプリケーション１０２に対する予測リソース使用量を更新する。予測リソース使用量を更新するための種々のアルゴリズムについては、以下で詳細に説明する。このように、リソース・マネージャー１３２は、アプリケーション１０２がどのように振る舞うか、そして計算デバイス１００のユーザーによってどのように利用されているかに応答するような方法で、アプリケーション１０２に対するリソースの割り当てを、ときの経過につれて自動的に微調整することができる。これによって、計算デバイス１００は、特にマルチタスク処理のシナリオの間、ユーザー体験の改善および性能の向上を図ることができるという利点がある。
【００３８】
[0054]  リソース・マネージャー１３２がデバイス特定またはユーザー特定のリソース使用プロファイルにしたがって計算デバイス１００のリソースを管理するように動作する経過(manner)について、これより図２のフローチャート２００を参照しながら説明する。フローチャート２００のステップは、図１の計算デバイス１００のコンポーネントを引き続き参照しながら説明するが、本方法は他のコンポーネントによって全体的に実行できることは理解されよう。
【００３９】
[0055]  図２に示すように、フローチャート２００の方法はステップ２０２において開始し、リソース・マネージャー１３２は、計算デバイス１００によって実行されている間にアプリケーションの第１インスタンスによって使用されるリソースの第１量を判定する。例えば、前述のように、リソース・マネージャー１３２は、アプリケーション１０２の第１インスタンスが計算デバイス１００によって実行されている間にアプリケーション１０２の第１インスタンスによって使用されているシステム・メモリーの第１量を判定することができる。
【００４０】
[0056]  実施形態では、リソース・マネージャー１３２は、アプリケーションに関連するフォアグラウンド・プロセスおよびアプリケーションに関連する１つ以上のバックグラウンド・タスクによって使用されるリソースの量を判定することによって、第１量を判定する。フォアグラウンド・プロセスとは、アプリケーションの第１インスタンスのためにユーザー・インターフェースを現在提供しており、計算デバイス１００に関連するディスプレイの少なくとも一部を占有しているプロセスである場合もある。しかしながら、多くの最新アプリケーションの実行は、１つ以上のバックグラウンド・プロセス（ここではバックグラウンド・タスクとも呼ぶ）の実行も伴う。このようなバックグラウンド・タスクは、フォアグラウンド・タスクと同時に実行されることもあり、場合によってはフォアグラウンド・プロセスによって始動させられることもある。このようなバックグラウンド・タスクの例には、バックグラウンドオーディオの生成、ボイス・オーバー・インターネット・プロトコル（ＶｏＩＰ）コールの実行、電子メールの同期、コンテンツ共有等が含まれるが、決してこれらに限定されるのではない。フォアグラウンド・プロセスと同様、これらのバックグラウンド・タスクもシステム・リソースを消費する。しかしながら、従来のアプリケーション・リソース使用の観念は、通例、このようなバックグラウンド・タスクによって消費されるリソースを含まない(encompass)。実施形態は、実行中のアプリケーションに関連するフォアグラウンド・プロセスおよび同じアプリケーションに関連する１つ以上のバックグラウンド・タスクの双方によるリソース使用を追跡し、双方のタイプのリソース使用を組み合わせてこのアプリケーションの総合リソース使用量を求めることによって、これに取り組むという利点がある。
【００４１】
[0057]  ステップ２０４において、リソース・マネージャー１３２は、少なくとも第１量に基づいて、アプリケーションの第１予測リソース使用量を計算する。例えば、リソース・マネージャー１３２は、少なくとも第１量に基づいて、アプリケーション１０２について第１予測システム・メモリー使用量を計算することができる。このステップをどのように実行することができるかについては、以下で種々のアルゴリズム例を示す。
【００４２】
[0058]  ステップ２０６において、リソース・マネージャー１３２は第１予測リソース使用量をデーター・ストア１０６に格納する。例えば、リソース・マネージャー１３２は、アプリケーション１０２に対する第１予測システム・メモリー使用量をデーター・ストア１０６に格納することができる。
【００４３】
[0059]  ステップ２０６の実行後ある時点において、アプリケーションの第２インスタンスが計算デバイス１００上において実行されようとしていることが、リソース・マネージャー１３２に通知される。ステップ２０８において、リソース・マネージャー１３２は、少なくともデーター・ストア１０６に格納されている第１予測リソース使用量に基づいて、アプリケーションの第２インスタンスに割り当てるリソースの第２量を決定する。例えば、リソース・マネージャー１３２は、少なくともデーター・ストア１０６に格納されているアプリケーション１０２に対する第１予測システム・メモリー使用量に基づいて、アプリケーション１０２の第２インスタンスに割り当てるシステム・メモリーの第２量を決定することができる。システム・メモリーの第２量の決定は、例えば、システム・メモリーの第２量を第１予測システム・メモリー使用量に設定することを含んでもよい。
【００４４】
[0060]  ステップ２０４においてアプリケーションについて第１予測リソース使用量を計算するためには、種々の方法を使用することができる。例えば、一実施形態では、一定回数の実行にわたってアプリケーションによって使用された最大リソース量に基づいて、第１予測リソース使用量を計算する。この手法は、図３のフローチャート３００によって表されている。
【００４５】
[0061]  具体的には、図３は、実施形態にしたがってアプリケーションについて予測リソース使用量を計算する方法のフローチャート３００を示す。図３に示すように、フローチャート３００の方法はステップ３０２において開始し、リソース・マネージャー１３２は、ステップ２０２の間に判定された第１量を、アプリケーションの以前に実行された１つ以上のインスタンスに関連する１つ以上の以前に判定された量と比較することによって、アプリケーションについて最大リソース使用量を求める。ステップ３０４において、リソース・マネージャー１３２は、この最大リソース使用量に基づいて、第１予測リソース使用量を決定する。
【００４６】
[0062]  この手法の例をこれより示す。この例によれば、リソース・マネージャー１３２は、アプリケーション１０２の５回の別個の実行中にこれによるシステム・メモリー使用を追跡し、このような実行におけるアプリケーション１０２の最大システム・メモリー使用を、予測リソース使用量として選択する。例えば、アプリケーションの最後の４回の実行中に、アプリケーション１０２は、それぞれ、システム・メモリーの内１００ＭＢ、１２０ＭＢ、１６０ＭＢ、および１４０ＭＢを使用したと仮定する。次いで、ステップ２０２の間に、リソース・マネージャー１３２は、アプリケーション１０２の現在実行中のインスタンスがシステム・メモリーの内１５０ＭＢを使用していると判定する。この場合、リソース・マネージャー１３２は、第１予測リソース使用量を１６０ＭＢ（または、恐らく、１６０ＭＢ＋何らかのバッファ量）を設定することができる。何故なら、これはアプリケーション１０２の最後の５回の実行にわたるその最大システム・メモリー使用であるからである。
【００４７】
[0063]  他の実施形態では、一定の実行回数にわたってアプリケーションによって使用された平均リソース量に基づいて、第１予測リソース使用量を計算する。この手法は、図４のフローチャート４００によって表されている。
【００４８】
[0064]  具体的には、図４は、実施形態にしたがってアプリケーションについて予測リソース使用量を計算する方法のフローチャート４００を示す。図４に示すように、フローチャート４００の方法はステップ４０２において開始し、リソース・マネージャー１３２は、ステップ２０２の間に判定された第１量、およびアプリケーションの１つ以上の以前に実行されたインスタンスに関連する１つ以上の以前に判定された量に基づいて、アプリケーションについて平均リソース使用量を求める。ステップ４０４において、リソース・マネージャー１３２は、平均リソース使用量に基づいて、第１予測リソース使用量を計算する。
【００４９】
[0065]  これよりこの手法の例を示す。この例によれば、リソース・マネージャー１３２は、アプリケーション１０２の５回の個々の実行中におけるそのシステム・メモリー使用を追跡し、これらの値の平均を計算し、次いでこの平均値を予測リソース使用量として使用する。例えば、アプリケーション１０２の最後の４回の実行中に、アプリケーション１０２は、それぞれ、システム・メモリーの内１００ＭＢ、１２０ＭＢ、１６０ＭＢ、および１４０ＭＢを使用したと仮定する。次いで、ステップ２０２の間に、リソース・マネージャー１３２は、アプリケーション１０２の現在実行中のインスタンスがシステム・メモリーの内１５０ＭＢを使用していると判定する。この場合、リソース・マネージャー１３２は、アプリケーション１０２の平均リソース使用量が（（１００ＭＢ＋１２０ＭＢ＋１６０ＭＢ＋１４０ＭＢ＋１５０ＭＢ）／５）であると判定する。これは１３４ＭＢに等しい。この結果、リソース・マネージャー１３２は、第１予測リソース使用量を１３４ＭＢ（または、恐らく１３４ＭＢ＋何らかのバッファ量）に設定することができる。
【００５０】
[0066]  ステップ４０２において説明した平均リソース使用量を求めることができる他の方法について、これより説明する。この手法によれば、リソース使用量の移動平均を、最新のリソース使用量と組み合わせて、新たな長期移動平均を求める。この組み合わせは、古い長期移動平均または最新リソース使用量のいずれかに、より大きな重みが適用されるように重み付けされてもよい。代わりに、双方の量に等しく重み付けしてもよい。この手法は、以下の式を使用して表すことができる。
【００５１】
【数１】
2017514209.tif 000003
【００５２】
ここで、ＲＡＶG＿ＮＥＷは、リソース使用量の新たな移動平均を表し、ＲＡＶG＿ＯＬＤはリソース使用量の古い移動平均を表し、ＲＮＥＷは最後に観察されたリソース使用量を表し、αは重み付けを決定する変数となる。
【００５３】
[0067]  例えば、リソース使用量の古い移動平均ＲＡＶG＿ＯＬＤが１３０ＭＢに等しく、最後に観察されたリソース使用量ＲＡＶG＿ＮＥＷが１６０ＭＢであり、重み係数αが０．２５であると仮定する。この場合、リソース使用量の新たな移動平均ＲＡＶG＿ＮＥＷは、（（０．２５×１３０ＭＢ）＋（０．７５×１６０ＭＢ））に等しくなり、これは１５２．５ＭＢである。この結果、リソース・マネージャー１３２は、第１予測リソース使用量を１５２．５ＭＢ（または、恐らく１５２．５ＭＢ＋いくらかのバッファ量）に設定することができる。
【００５４】
[0068]  移動平均を使用してアプリケーションに対する平均リソース使用量を求める以上の方法を、図５のフローチャート５００に示す。図５に示すように、フローチャート５００の方法はステップ５０２において開始し、リソース・マネージャー１３２は、ステップ２０２の間に得られた第１量（即ち、最後に観察されたリソース使用量）を第１重み係数と乗算する。ステップ５０４の間、リソース・マネージャー１３２は、少なくとも１つ以上の以前に判定された量（即ち、以前に観察されたリソース使用量）に基づいて得られた移動平均リソース使用量に、第２重み係数を乗算して、第２積を求める。ステップ５０６において、リソース・マネージャー１３２は、第１積および第２積を合計して、新たな平均リソース使用量を求める。
【００５５】
[0069]  図２を参照して先に注記したように、フローチャート２００のステップ２０８において、リソース・マネージャー１３２は、少なくとも第１予測リソース使用量に基づいて、計算デバイス１００によって実行されるアプリケーションの第２インスタンスに割り当てられるリソース（例えば、システム・メモリー）の第２量を決定する。第２量は、予測アルゴリムに基づく推定値であるので、アプリケーションの第２インスタンスが、割り当てられた第２量よりも多く消費するかもしれないことは常に可能性がある。このシナリオに取り組むために、リソース・マネージャー１３２は、アプリケーションの第２インスタンスが、それに割り当てられたリソースの取り分(share)よりも多くを消費していると判定するように構成することができ、応答して、リソースを解放するために計算デバイス１００上で同時に実行している他のプロセスを終了させることができる。例えば、リソース・マネージャー１３２は、プロセス優先順方式にしたがって、そのアプリケーションよりも低い優先順位が指定されたある種のプロセスを終了させることもできる。
【００５６】
[0070]  このプロセスを図６のフローチャート６００に示す。具体的には、図６に示すように、フローチャート６００の方法はステップ６０２において開始し、リソース・マネージャー１３２は、計算デバイス１００によって実行されている間にアプリケーションの第２インスタンスによって使用されるリソースの量が、第２量を超過すると判定する。この判定に応答して、ステップ６０４において、リソース・マネージャー１３２は、計算デバイス上で同時に実行している１つ以上のプロセスを終了させる。加えてまたは代わりに、リソース・マネージャー１３２は、計算デバイス１００上で同時に実行している１つ以上のプロセスと通信し、これらのプロセスにそれらのリソース消費を削減するように命令することもできる。
【００５７】
[0071]  また、更に可能なのは、リソース・マネージャー１３２が、メモリー・マネージャー１２２または何らかの他の手段との通信によって、アプリケーションの第２インスタンスに割り当てられるリソースの第２量が現在使用可能でないことを判定するのでもよいことである。この場合、リソース・マネージャー１３２はアプリケーションの第２インスタンスの実行を禁止することができる。
【００５８】
[0072]  このプロセスを図７のフローチャート７００に示す。具体的には、図７に示すように、フローチャート７００の方法はステップ７０２において開始し、リソース・マネージャー１３２は、リソースの第２量が現在使用可能でないと判定する。この判定に応答して、ステップ７０４において、リソース・マネージャー１３２はアプリケーションの第２インスタンスの実行を禁止する。
【００５９】
[0073]  リソース・マネージャー１３２が、アプリケーションの第２インスタンスに割り当てられるリソースの第２量は現在使用可能でないと判定した場合、リソース・マネージャー１３２は、リソースを解放するために、計算デバイス１００上で実行している１つ以上のプロセスを終了させることもできる。例えば、リソース・マネージャー１３２は、プロセス優先順方式にしたがって、そのアプリケーションよりも低い優先順位が指定されたある種のプロセスを終了させることができる。このような他のプロセスによるリソース消費が削減された後、リソース・マネージャー１３２は次にアプリケーションの第２インスタンスに実行することを許すことができる。
【００６０】
[0074]  このプロセスを図８のフローチャート８００に示す。具体的には、図８に示すように、フローチャート８００の方法はステップ８０２において開始し、リソース・マネージャー１３２は、リソースの第２量が現在使用可能でないと判定する。この判定に応答して、ステップ８０４において、リソース・マネージャー１３２は、計算デバイス１００上で現在実行している１つ以上のプロセスを終了させる。加えてまたは代わりに、リソース・マネージャー１３２は、計算デバイス１００上で現在実行している１つ以上のプロセスと通信し、これらのプロセスにそのリソース消費を削減するように命令することもできる。
【００６１】
[0075]  スマートフォンのような多くの計算デバイスにとって、典型的な使用モデルは、計算デバイス毎に１人のユーザーである。この場合、計算デバイスに対するリソース使用プロファイルを格納することは、特定のユーザーに対するリソース使用プロファイルを格納することと本質的に同じである。しかしながら、計算デバイスは、多数のユーザーをサポートするために使用されることもある。例えば、同じ家庭の多数の異なる構成員が、各々、同じタブレット・コンピューター、デスクトップ・コンピューター、またはゲーミング・コンソールを使用してアプリケーションを実行することもあり得る。これらのユーザーの各々は、異なるアプリケーションを使用するかもしれないし、または同じアプリケーションを異なる方法で使用するかもしれず、その結果、リソース消費レベルが変動する。このシナリオに取り組むために、ある種の実施形態では、リソースの予測割り当てを、現在計算デバイスを使用している特定のユーザーに合わせて決める(tailor)ように、アプリケーションおよびユーザー双方によるリソース使用プロファイルを計算デバイス上に格納する。これらのリソース使用プロファイルは、ユーザー特定リソース使用プロファイルとして考えることができる（以前に説明したデバイス特定リソース使用プロファイルではなく）。
【００６２】
[0076]  図９は、実施形態にしたがって、ユーザー特定リソース使用プロファイルにしたがって計算デバイスのリソースを管理するために計算デバイスによって実装される方法のフローチャート９００を示す。これより、図１を参照して先に説明した計算デバイス１００のコンポーネントを引き続き参照しながら、フローチャート９００の方法について説明する。しかしながら、本方法はこの実施形態に限定されるのではない。
【００６３】
[0077]  図９に示すように、フローチャート９００の方法はステップ９０２において開始し、リソース・マネージャー１３２は、第１ユーザーの代わりに計算デバイス１００によって実行されている間にアプリケーションの第１インスタンスによって使用されるリソースの第１量を判定する。例えば、リソース・マネージャー１３２は、第１ユーザーの代わりに計算デバイス１００によってアプリケーション１０２の第１インスタンスが実行されている間に、アプリケーション１０２の第１インスタンスによって使用されているシステム・メモリーの第１量を判定することができる。第１ユーザーの代わりにアプリケーション１０２の第１インスタンスが実行されているという事実は、多種多様な方法のいずれでも判定することができる。ユーザーが計算デバイス１００にログインすることができる実施形態では、現在のログイン情報を使用して、この判定を行うこともできる。しかしながら、この例は限定であることを意図しておらず、計算デバイスのユーザーの個人情報(identity)を判定するための適した方法であればいずれでも使用することができる。
【００６４】
[0078]  ステップ９０４において、リソース・マネージャー１３２は、少なくとも第１量に基づいて、アプリケーションにおよび第１ユーザー対する第１予測リソース使用量を計算する。例えば、リソース・マネージャー１３２は、少なくとも第１量に基づいて、アプリケーション１０２および第１ユーザーに対する第１予測システム・メモリー使用量を計算することができる。このステップをどのように実行すればよいか実証するために、種々のアルゴリズム例を既に示した。
【００６５】
[0079]  ステップ９０６において、リソース・マネージャー１３２は第１予測リソース使用量をデーター・ストア１０６に格納する。例えば、リソース・マネージャー１３２は、アプリケーション１０２および第１ユーザーに対する第１予測システム・メモリー使用量をデーター・ストア１０６に格納することができる。
【００６６】
[0080]  ステップ９０６の実行後のある時点において、リソース・マネージャー１３２に、アプリケーションの第２インスタンスが、第１ユーザーの代わりに、計算デバイス１００上で実行されることが通知される。ステップ９０８において、リソース・マネージャー１３２は、データー・ストア１０６に格納されている第１予測リソース使用量に少なくとも基づいて、アプリケーションの第２インスタンスに割り当てられるリソースの第２量を決定する。例えば、リソース・マネージャー１３２は、データー・ストア１０６に格納されているアプリケーション１０２および第１ユーザーに対する第１予測システム・メモリー使用量に少なくとも基づいて、アプリケーション１０２の第２インスタンスに割り当てられるシステム・メモリーの第２量を決定することができる。システム・メモリーの第２量の決定は、例えば、システム・メモリーの第２量を第１予測システム・メモリー使用量に設定することを含んでもよい。
【００６７】
[0081]  ステップ９１０において、リソース・マネージャー１３２は、第２ユーザーの代わりに、計算デバイス１００によって実行されている間にアプリケーションの第３インスタンスによって使用されるリソースの第３量を判定する。ここで、第２ユーザーは第１ユーザーとは異なる。例えば、リソース・マネージャー１３２は、第２ユーザーの代わりに計算デバイス１００によってアプリケーション１０２の第３インスタンスが実行されている間に、アプリケーション１０２の第３インスタンスによって使用されているシステム・メモリーの第３量を判定することができる。第２ユーザーの代わりにアプリケーション１０２の第３インスタンスが実行されているという事実は、多種多様の方法の内任意のものによって判定することができる。ユーザーが計算デバイス１００にログインすることができる実施形態では、現在のログイン情報を使用してこの判定を行うことができる。しかしながら、この例は限定することを意図するのではなく、計算デバイスのユーザーの個人情報を判定するための適した方法であればいずれでも使用することができる。
【００６８】
[0082]  ステップ９１２において、リソース・マネージャー１３２は、少なくとも第３量に基づいて、アプリケーションおよび第２ユーザーに対する第２予測リソース使用量を計算する。例えば、リソース・マネージャー１３２は、少なくとも第３量に基づいて、アプリケーション１０２および第２ユーザーに対する第１予測システム・メモリー使用量を計算することができる。このステップをどのように実行すればよいか実証するために、種々のアルゴリズム例を既に示した。
【００６９】
[0083]  ステップ９１４において、リソース・マネージャー１３２は第２予測リソース使用量をデーター・ストア１０６に格納する。例えば、リソース・マネージャー１３２は、アプリケーション１０２および第２ユーザーに対する第２予測システム・メモリー使用量をデーター・ストア１０６に格納することができる。
【００７０】
[0084]  ステップ９１４の実行後のある時点において、リソース・マネージャー１３２には、アプリケーションの第４インスタンスが、第２ユーザーの代わりに、計算デバイス１００上で実行されることを通知される。ステップ９１６において、リソース・マネージャー１３２は、少なくともデーター・ストア１０６に格納されている第２予測リソース使用量に基づいて、アプリケーションの第４インスタンスに割り当てられるリソースの第４量を決定する。例えば、リソース・マネージャー１３２は、データー・ストア１０６に格納されているアプリケーション１０２および第２ユーザーに対する第２予測システム・メモリー使用量に少なくとも基づいて、アプリケーション１０２の第４インスタンスに割り当てられるシステム・メモリーの第４量を決定することができる。システム・メモリーの第４量の決定は、例えば、システム・メモリーの第４量を第２予測システム・メモリー使用量に設定することを含んでもよい。
【００７１】
[0085]  図１０は、実施形態にしたがって、デバイス特定またはユーザー特定リソース使用プロファイルにしたがってアプリケーションの起動を管理する方法のフローチャート１０００を示す。これより、図１を参照して先に説明した計算デバイス１００のコンポーネントを引き続き参照しながら、フローチャート１０００の方法について説明する。しかしながら、本方法はこの実施形態に限定されるのではない。
【００７２】
[0086]  図１０に示すように、フローチャート１０００の方法はステップ１００２において開始し、アプリケーションを起動する要求を受ける。例えば、アプリケーション１０２を起動する要求は、例えば、システム・サービス１３０によっておよび／またはリソース・マネージャー１３２によって受けてもよい。
【００７３】
[0087]  ステップ１００４において、リソース・マネージャー１３２はこのアプリケーションに対する予測リソース使用量を求める。例えば、リソース・マネージャー１３２は、アプリケーション１０２に対する予測リソース使用量を求めることができる。予測リソース使用量は、計算デバイス１００によるアプリケーションの１回以上の以前の実行中に監視した計算デバイス１００のリソース使用に基づく。予測リソース使用量、またはこのような予測リソース使用量を計算するために必要とされる情報は、データー・ストア２０６に格納することができる、アプリケーションに対するリソース使用プロファイルから得ることができる。リソースは、揮発性または不揮発性メモリー・リソース、ＣＰＵリソース、Ｉ／Ｏリソース、ネットワーク・リソース、電力リソース、およびセンサー・リソースの内１つ以上を含むことができる。予測リソース使用量は、アプリケーションに関連するフォアグラウンド・プロセスおよびアプリケーションに関連する１つ以上のバックグラウンド・タスクの双方による計算デバイス１００のリソースの使用を監視することに基づくことができる。
【００７４】
[0088]  判断ステップ１００６において、リソース・マネージャー１３２は、予測リソース使用量を、現在使用可能なリソースの量と比較することによって、十分な量のリソースが使用可能か否か判断する。例えば、リソースがシステム・メモリーである実施形態では、リソース・マネージャー１３２は、現在使用可能なシステム・メモリーの量をメモリー・マネージャー１２２から得て、次いでアプリケーションに対する予測システム・メモリー使用量を、現在使用可能なシステム・メモリーと比較して、十分な量のシステム・メモリーが使用可能か否か判断することができる。
【００７５】
[0089]  リソース・マネージャー１３２が、十分な量のリソースが使用可能であると少なくとも判断した場合、リソース・マネージャー１３２は、ステップ１００８に示すように、アプリケーションを起動させる。例えば、リソース・マネージャー１３２が、十分なシステム・メモリーが使用可能であると少なくとも判断した場合、リソース・マネージャー１３２はアプリケーション１０２を起動させる。尚、リソース・マネージャー１３２がアプリケーションを起動させるためには、満たさなければならない他の条件もあり得ることを注記しておく。
【００７６】
[0090]  リソース・マネージャー１３２が十分な量のリソースが使用可能でないと判断した場合、リソース・マネージャー１３２は、ステップ１０１０に示すように、アプリケーションを起動させない。例えば、リソース・マネージャー１３２が十分なシステム・メモリーが使用可能でないと判断した場合、リソース・マネージャー１３２はアプリケーション１０２を起動させない。加えて、リソース・マネージャー１３２は、１つ以上の現在実行中のプロセスを終了させる、またはそれ以外でそのリソース使用を削減させることによって、リソースを解放しようとすることもできる。
【００７７】
[0091]  実施形態では、リソース・マネージャー１３２は、時間、位置、特定のリソース使用挙動に関連するイベントというような、アプリケーションおよび／またはユーザーによるリソース使用に関係する他の情報を追跡することもできる。このような情報は、ユーザーが起動することを試す前であっても、計算デバイスのリソースをアプリケーションに予測的に割り当てるために使用することができるという利点がある。更に、アプリケーションおよび／またはアプリケーション・データーを、ユーザーがそれらにアクセスすると予想される前の時点において、メモリーにロードすることもできる。
【００７８】
[0092]  例えば、ユーザーが特定のアプリケーションを特定の時点、特定の場所において、または特定のイベントに関連して起動しそうであると判断できる場合、リソース・マネージャー１３２は、ユーザーがアプリケーションを起動することが予想される前に、そして恐らくは直前に、十分なリソースがアプリケーションに割り当てるために使用可能であることを保証するように動作することができる。更に、このような予測分析は、実際に、ユーザーがアプリケーションおよびその機能(feature)への即座のアクセスを得ることができるように、アプリケーションまたはアプリケーション・コンテンツをシステム・メモリーにロードするために使用することができる。
【００７９】
[0093]  これを例示し易くするために、図１１は、計算デバイスのリソースに関して監視されたユーザーのリソース使用パターン、およびそこから導き出された情報を使用して、リソースをプロセスに予測的に割り当てる方法のフローチャート１１００を示す。これより、先に図１を参照して説明した計算デバイス１００のコンポーネントを引き続き参照しながら、フローチャート１１００の方法について説明する。しかしながら、本方法はこの実施形態に限定されるのではない。
【００８０】
[0094]  図１１に示すように、フローチャート１１００の方法はステップ１１０２において開始し、リソース・マネージャー１３２は、アプリケーションおよび／またはユーザーによる計算デバイス１００の少なくとも１つのリソースの使用パターンを監視する。既に論じたように、使用パターンの監視には、アプリケーションおよび／またはユーザーによるリソース使用を監視すること、ならびに時間、位置、特定のリソース使用挙動に関連するイベントというような、このようなリソース使用に関連する他の情報を監視することを伴うこともある。
【００８１】
[0095]  ステップ１１０４において、リソース・マネージャー１３２は、使用パターンに関連する情報を格納する。リソース・マネージャー１３２は、例えば、データー・ストア１０６にこのような情報を格納することができる。
【００８２】
[0096]  ステップ１１０６において、リソース・マネージャー１３２は、計算デバイス１００による実行の前に、格納されている情報を使用して、少なくとも１つのリソースの少なくとも一部を少なくとも１つのプロセスに予測的に割り当てる。一実施形態例では、ステップ１１０６の間に、リソース・マネージャー１３２は、計算デバイス１００のユーザーまたは任意の他のエンティティがアプリケーションを起動する前に、リソースの少なくとも一部をこのアプリケーションに予測的に割り当てる。少なくとも１つのリソースがシステム・メモリーを含む他の実施形態例では、リソース・マネージャー１３２は、計算デバイス１００のユーザーまたは任意の他のエンティティがアプリケーションを起動する前に、アプリケーションまたはこのアプリケーションに関連するデーターの少なくとも一部を、予測的に割り当てられたシステム・メモリーにロードすることができる。これらの例は、例示のために示されたに過ぎず、限定することを意図するのではない。尚、追加のリソース管理タスクを実行するために、リソース使用パターン情報を利用する更に他の技法が使用されてもよいことを当業者は認めるであろう。ある種の実施形態によれば、多種多様なユーザーおよび計算デバイスからデーターを収集することによって判定された総合的な使用パターンに基づいて、リソースを予測的に割り当てることができ、アプリケーションおよび／またはアプリケーション・データーを特定のユーザーのためにメモリーにロードすることができる。次いで、このような割り当ておよびロードは、特定のユーザーの挙動に基づいて微調整することができる。
【００８３】
ＩＩＩ．マルチプロセス・アプリケーション用動的リソース管理システムおよび方法の例
[0097]  実施形態では、図１の計算デバイス１００は、そこで実行するアプリケーション（例えば、アプリケーション１０２）が、計算デバイス１００のリソースの内割り当てられた部分をそのアプリケーションに関連する多数のプロセス間でどのように分割するか動的に制御することを可能にする。例えば、計算デバイス１００上において実行するアプリケーション１０２がリソース・マネージャー１３２と相互作用して、計算デバイス１００のリソースの内割り当てられた部分を、このアプリケーションに関連するフォアグラウンド・プロセスおよびこのアプリケーションに関連する１つ以上のバックグラウンド・プロセスの間でどのように分割するとよいか動的に制御することができる。アプリケーションにこの能力を設けることによって、本明細書において説明した実施形態は、アプリケーションが、変化するリソース割り当てに適応し、計算デバイス上で実行しているかもしれない他のプロセスとより良く共存することが可能になり、これによって多種多様のマルチタスク処理のシナリオをより良く実施可能にするという利点がある。
【００８４】
[0098]  アプリケーション１０２およびリソース・マネージャー１３２がこのような動的リソース管理を実行するために相互作用することができる１つの方法(manner)について、図１２のフローチャート１２００を参照してこれより説明する。図１２に示すように、フローチャート１２００の方法はステップ１２０２において開始し、リソース・マネージャー１２０２は、アプリケーション１０２に関連するフォアグラウンド・プロセスに、このアプリケーションがフォアグラウンドで実行していることの通知を送る。
【００８５】
[0099]  ステップ１２０４において、リソース・マネージャー１３２は、フォアグラウンド・プロセスから、少なくとも１つのメッセージを受ける。このメッセージは、第１リソース使用バジェットの内フォアグラウンド・プロセスに割り当てられる第１部分、および第１リソース使用バジェットの内アプリケーションに関連する少なくとも１つのバックグラウンド・タスクに割り当てられる第２部分を指定する。
【００８６】
[00100]  ステップ１２０６において、リソース・マネージャー１３２は、第１リソース使用バジェットの第１部分に等しいリソースの部分を、フォアグラウンド・プロセスに割り当て、第１リソース使用バジェットの第２部分に等しいリソースの部分を少なくとも１つのバックグラウンド・タスクに割り当てる。このリソースは、例えばそして限定ではなく、揮発性または不揮発性メモリー、ＣＰＵ、Ｉ／Ｏリソース、ネットワーク・リソース、電力リソース、センサー・リソースを含むことができる。
【００８７】
[00101]  ステップ１２０８において、リソース・マネージャー１３２はフォアグラウンド・プロセスに、アプリケーションを中断または終了させることの通知を送る。
[00102]  ステップ１２１０において、リソース・マネージャー１３２はフォアグラウンド・プロセスから、少なくとも１つのメッセージを受ける。このメッセージは、第２リソース使用バジェットの内フォアグラウンド・プロセスに割り当てられる第１部分、および第２リソース使用バジェットの内アプリケーションに関連する少なくとも１つのバックグラウンド・タスクに割り当てられる第２部分を指定する。第２リソース使用バジェットは、第１リソース使用バジェットよりも小さくてもよい。
【００８８】
[00103]  ステップ１２１２において、リソース・マネージャー１３２は、第２リソース使用バジェットの第１部分に等しいリソースの部分をフォアグラウンド・プロセスに割り当て、第２リソース使用バジェットの第２部分に等しいリソースの部分を少なくとも１つのバックグラウンド・タスクに割り当てる。所定の時間期間の後、リソース・マネージャー１３２は、次に、フォアグラウンド・プロセスによって使用されているリソースの量、および少なくとも１つのバックグラウンド・プロセスによって使用されているリソースの量の合計が、第２リソース使用バジェットを超過するか否か判定することができる。合計が第２リソース使用バジェットを超過すると判定したことに応答して、リソース・マネージャー１３２は、フォアグラウンド・プロセスおよび少なくとも１つのバックグラウンド・プロセスの内１つ以上を終了させることができる。加えてまたは代わりに、リソース・マネージャー１３２は、アプリケーション１０２に関連する１つ以上のバックグラウンド・プロセスの起動が、総リソース使用が第２リソース使用バジェットを超過する原因となることを予測的に判定することができる。この予測に基づいて、リソース・マネージャー１３２は１つ以上のバックグラウンド・タスクを、後の時点まで、起動するのを禁止することができる。
【００８９】
[00104]  一実施形態では、以上の方法においてリソース・マネージャー１３２とフォアグラウンド・プロセスとの間で交換される通信は、共有ＡＰＩを介して交換される。このようなＡＰＩをアプリケーションの開発者に露出することができるので、このような開発者はこれらの機能(feature)を利用することができるアプリケーションを開発することができる。
【００９０】
[00105]  図１３は、アプリケーションに関連するフォアグラウンド・プロセスおよび１つ以上のバックグラウンド・タスクへの計算デバイスのリソース割り当てを管理するときに、計算デバイス上で実行するアプリケーションがこれを補助することを可能にする他の方法のフローチャート１３００を示す。
【００９１】
[00106]  図１３に示すように、フローチャート１３００はステップ１３０２において開始し、リソース・マネージャー１３２は、アプリケーションに関連するフォアグラウンド・プロセスに、リソース使用バジェットを示す少なくとも１つのメッセージを送る。
【００９２】
[00107]  ステップ１３０４において、リソース・マネージャー１３２は、フォアグラウンド・プロセスから少なくとも１つのメッセージを受ける。このメッセージは、リソース使用バジェットの内フォアグラウンド・プロセスに割り当てられる第１部分、およびリソース使用バジェットの内アプリケーションに関連する少なくとも１つのバックグラウンド・タスクに割り当てられる第２部分を指定する。
【００９３】
[00108]  ステップ１３０６において、リソース・マネージャー１３２は、リソース使用バジェットの第１部分に等しいリソースの部分をフォアグラウンド・プロセスに割り当て、リソース使用バジェットの第２部分に等しいリソースの部分を少なくとも１つのバックグラウンド・タスクに割り当てる。
【００９４】
[00109]  実施形態では、フォアグラウンド・プロセスに送られる少なくとも１つのメッセージ、およびリソース・マネージャーに送られる少なくとも１つのメッセージは、共有ＡＰＩを介して送られる。
【００９５】
[00110]  他の実施形態では、リソース使用バジェットは、フォアグラウンドにおいて実行しているアプリケーションに対するリソース使用バジェットを含み、リソース使用バジェットを示す少なくとも１つのメッセージは、アプリケーションがフォアグラウンドで実行していることの通知を含む。
【００９６】
[00111]  更に他の実施形態では、リソース使用バジェットは、保留または終了されられるアプリケーションに対するリソース使用バジェットを含み、リソース使用バジェットを示す少なくとも１つのメッセージは、アプリケーションが保留または終了させられることの通知を含む。
【００９７】
[00112]  更に他の実施形態では、リソース・マネージャー１３２は、所定の時間期間後、フォアグラウンド・プロセスによって使用されているリソースの量、および少なくとも１つのバックグラウンド・プロセスによって使用されているリソースの量の合計が、リソース使用バジェットを超過するか否か判定し、合計がリソース使用バジェットを超過すると判定したことに応答して、フォアグラウンド・プロセスおよび少なくとも１つのバックグラウンド・プロセスの内１つ以上を終了させる。
【００９８】
ＩＶ．移動体デバイスの実施態様例
[00113]  図１４は、本明細書において説明した実施形態を実現することができる移動体デバイス例１４０２のブロック図である。図１４に示すように、移動体デバイス１４０２は種々の随意選択的な(optional)ハードウェアおよびソフトウェア・コンポーネントを含む。移動体デバイス１４０２におけるいずれのコンポーネントも、他のいずれのコンポーネントと通信することができるが、図示を容易にするために、全ての接続は示されていない。移動体デバイス１４０２は、種々の計算デバイス（例えば、セル・フォン、スマートフォン、ハンドヘルド・コンピューター、パーソナル・ディジタル・アシスタント（ＰＤＡ）等）の内任意のものとすることができ、セルラまたは衛星ネットワークのような１つ以上の移動体通信ネットワーク１４０４、あるいはローカル・エリア・ネットワークまたはワイド・エリア・ネットワークとのワイヤレス双方向通信を可能にすることができる。
【００９９】
[00114]  図示する移動体デバイス１４０２は、信号コーディング、データー処理、入力／出力処理、電力制御、および／またはその他の機能というようなタスクを実行するために、コントローラーまたはプロセッサー１４１０（例えば、信号プロセッサー、マイクロプロセッサー、ＡＳＩＣ、またはその他の制御よび処理ロジック回路）を含むことができる。オペレーティング・システム１４１２は、移動体デバイス１４０２のコンポーネントの割り当ておよび使用を制御し、１つ以上のアプリケーション・プログラム１４１４（「アプリケーション」または「アプリ」とも呼ぶ）に対するサポートを提供することができる。アプリケーション・プログラム１４１４は、共通の移動体計算アプリケーション（例えば、電子メール・アプリケーション、カレンダー、連絡先管理、ウェブ・ブラウザー、メッセージング・アプリケーション）、および任意の他の計算アプリケーション（例えば、文書処理アプリケーション、地図作成アプリケーション、メディア・プレーヤー・アプリケーション）を含むことができる。
【０１００】
[00115]  図示する移動体デバイス１４０２は、メモリー１４２０を含むことができる。メモリー１４２０は、非リムーバブル・メモリー１４２２および／またはリムーバブル・メモリー１４２４を含むことができる。非リムーバブル・メモリー１４２２は、ＲＡＭ、ＲＯＭ、フラッシュ・メモリー、ハード・ディスク、あるいは他の周知のメモリー・デバイスまたは技術を含むことができる。リムーバブル・メモリー１４２４は、フラッシュ・メモリーまたはＧＳＭ（登録商標）通信システムにおいては周知である加入者識別モジュール（ＳＩＭ）カード、あるいは「スマート・カード」のような他の周知のメモリー・デバイスまたは技術を含むことができる。メモリー１４２０は、データー、および／またはオペレーティング・システム１４１２やアプリケーション１４１４を実行するためのコードを格納するために使用することができる。データーの例には、ウェブ・ページ、テキスト、画像、音響ファイル、ビデオ・データー、あるいは１つ以上のネットワーク・サーバーまたは他のデバイスから１つ以上の有線ネットワークまたはワイヤレス・ネットワークを通じて送出および／または受信される他のデーターを含むことができる。メモリー１４２０は、国際移動体加入者識別（ＩＭＳＩ）のような加入者識別子、および国際移動体機器識別子（ＩＭＥＩ）のような機器識別子を格納するために使用することができる。このような識別子は、ユーザーおよび機器を識別するために、ネットワーク・サーバーに送信することができる。
【０１０１】
[00116]  移動体デバイス１４０２は、タッチ・スクリーン１４３２、マイクロフォン１４３４、カメラ１４３６、物理キーボード１４３８および／またはトラックボール１４４０のような１つ以上の入力デバイス１４３０、ならびにスピーカー１４５２およびディスプレイ１４５４のような１つ以上の出力デバイス１４５０をサポートすることができる。タッチ・スクリーン１４３２のようなタッチ・スクリーンは、異なる方法で入力を検出することができる。例えば、容量型タッチ・スクリーンは、物体（例えば、指先）が、表面にわたって流れている電流を歪ませたまたは中断させたときのタッチ入力を検出する。他の例として、タッチ・スクリーンは、光センサーからのビームが中断されたときにタッチ入力を検出するために、光センサーを使用することができる。画面の表面との物理的接触は、一部のタッチ・スクリーンによって入力が検出されるためには必要ではない場合もある。
【０１０２】
[00117]  他の可能な出力デバイス（図示せず）には、圧電または他の触覚出力デバイスを含むことができる。あるデバイスは、１つよりも多い入力／出力機能を提供することができる。例えば、タッチ・スクリーン１４３２およびディスプレイ１４５４を１つの入力／出力デバイスに組み合わせることができる。入力デバイス１４３０は、自然ユーザー・インターフェース（ＮＵＩ）を含むことができる。
【０１０３】
[00118]  ワイヤレス・モデム（１つまたは複数）１４６０をアンテナ（１つまたは複数）（図示せず）に接続することができ、当技術分野ではよく理解されているように、プロセッサー１４１０と外部デバイスとの間における双方向通信をサポートすることができる。モデム（１つまたは複数）１４６０が包括的に示され、移動体通信ネットワーク１４０４と通信するためのセルラ・モデム１４６６、および／または他の無線系モデム（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）１４６４および／またはＷｉ−Ｆｉ１４６２）を含むことができる。ワイヤレス・モデム（１つまたは複数）１４６０の内少なくとも１つは、通例、１つのセルラ・ネットワーク内におけるデーターおよび音声通信のためのＧＳＭネットワークのような１つ以上のセルラ・ネットワークとの通信、セルラ・ネットワーク間の通信、あるいは移動体デバイスと公衆電話交換網（ＰＳＴＮ）との間の通信に合わせて構成される。
【０１０４】
[00119]  移動体デバイス１４０２は、更に、少なくとも１つの入力／出力ポート１４８０、電源１４８２、汎地球測位システム（ＧＰＳ）受信機のような衛星ナビゲーション・システム受信機１４８４、加速度計１４８６、および／または物理コネクター１４４９０を含むことができる。物理コネクター１４９０は、ＵＳＢポート、ＩＥＥＥ１３９４（ＦｉｒｅＷｉｒｅ）ポート、および／またはＲＳ−２３２ポートとすることができる。移動体デバイス１４０２の図示したコンポーネントは、必須ではなく、また全てが含まれなくてもよい。これは、当業者には認められるであろうが、任意のコンポーネントを削除することができ、他のコンポーネントを追加することができるからである。
【０１０５】
[00120]  実施形態では、移動体デバイス１４０２のある種のコンポーネントは、デバイス特定またはユーザー特定リソース使用プロファイルに基づいてリソース管理を行い、マルチプロセス・アプリケーションのための動的リソース管理を可能にすることに関して本明細書において説明した機能を実行するように構成される。例えば、一実施形態では、オペレーティング・システム１４１２は、オペレーティング・システム１０４がデバイス特定またはユーザー特定リソース使用プロファイルに基づいてリソース管理を行うことを可能にする、オペレーティング・システム１０４の機能(feature)を含む。他の例として、オペレーティング・システム１４１２およびアプリケーション１４１４の少なくとも１つが、マルチプロセス・アプリケーションのために動的リソース管理をこれらのコンポーネントが実行することを可能にする、オペレーティング・システム１０４およびアプリケーション１０２の機能を含むこともできる。しかしながら、これは一例に過ぎず、異なるコンポーネントによって異なる機能が実行されてもよい。
【０１０６】
[00121]  デバイス特定またはユーザー特定のリソース使用プロファイルに基づいてリソース管理を行いマルチプロセス・アプリケーションのために動的リソース管理を可能にすることに関して本明細書において説明した機能を実行するコンピューター・プログラム・ロジックは、メモリー１４２０に格納されて、プロセッサー１４１０によって実行することができる。このようなコンピューター・プログラム・ロジックを実行することによって、図１を参照して先に説明した計算デバイス１００のコンポーネントの内任意のものの機能(feature)の内任意のものを、プロセッサー１４１０に実現させることができる。また、このようなコンピューター・プログラム・ロジックを実行することによって、図２〜図１３において示したフローチャートの内任意のものまたは全てのステップの内任意のものまたは全てを、プロセッサー１４１０に実行させることもできる。
【０１０７】
Ｖ．コンピューター・システムの実施態様例
[00122]  図１５は、本明細書において説明した種々の実施形態を実現するために使用することができるプロセッサー・ベースのコンピューター・システム例１５００を示す。例えば、システム１５００は、図１を参照して先に説明した計算デバイス１００のコンポーネントの内任意のものを実現するために使用することができる。また、システム１５００は、図２〜図１３に示したフローチャートの内任意のものまたは全てのステップの内任意のものまたは全てのステップを実装するために使用することもできる。ここで行うシステム１５００の説明は、例示の目的に限って行うのであって、限定することを意図するのではない。関連技術（１つまたは複数）の当業者には分かるであろうが、実施形態は更に他のタイプのコンピューター・システムにおいても実現することができる。
【０１０８】
[00123]  図１５に示すように、システム１５００は、処理ユニット１５０２、システム・メモリー１５０４、およびシステム・メモリー１５０４から処理ユニット１５０２までを含む種々のシステム・コンポーネントを結合するバス１５０６を含む。処理ユニット１５０２は、１つ以上のマイクロプロセッサーまたはマイクロプロセッサー・コアを含むこともできる。バス１５０６は、様々なタイプのバス構造の内任意のものの１つ以上を表し、メモリー・バスまたはメモリー・コントローラー、周辺バス、加速グラフィクス・ポート、種々のバス・アーキテクチャの内任意のものを使用するプロセッサーまたはローカル・バスを含む。システム・メモリー１５０４は、リード・オンリー・メモリー（ＲＯＭ）１５０８およびランダム・アクセス・メモリー（ＲＡＭ）１５１０を含む。基本入力／出力システム１５１２（ＢＩＯＳ）がＲＯＭ１５０８に格納されている。
【０１０９】
[00124]  また、システム１５００は、以下のデバイスの内１つ以上も有する。ハード・ディスクから読み取り更にハード・ディスクに書き込むためのハード・ディスク・ドライブ１５１４、リムーバブル磁気ディスク１５１８から読み取り更にリムーバブル磁気ディスク１５１８に書き込むための磁気ディスク・ドライブ１５１６、ＣＤ  ＲＯＭ、ＤＶＤ  ＲＯＭ、ＢＬＵ＿ＲＡＹ（商標）ディスク、または他の光媒体というようなリムーバブル光ディスク１５２２から読み取り更にリムーバブル光ディスク１５２２に書き込むための光ディスク・ドライブ１５２０。ハード・ディスク・ドライブ１５１４、磁気ディスク・ドライブ１５１６、および光ディスク・ドライブ１５２０は、それぞれ、ハード・ディスク・ドライブ・インターフェース１５２４、磁気ディスク・ドライブ・インターフェース１５２６、および光ドライブ・インターフェース１５２８によって、バス１５０６に接続されている。これらのドライブおよびそれらに付随するコンピューター読み取り可能媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、およびコンピューターのための他のデーターの不揮発性格納に備える。ハード・ディスク、リムーバブル磁気ディスク、およびリムーバブル光ディスクについて説明したが、フラッシュ・メモリー・カード、ディジタル・ビデオ・ディスク、ランダム・アクセス・メモリー（ＲＡＭ）、リード・オンリー・メモリー（ＲＯＭ）等のような、他のタイプのコンピューター読み取り可能メモリー・デバイスおよび記憶構造も、データーを格納するために使用することができる。
【０１１０】
[00125]  ハード・ディスク、磁気ディスク、光ディスク、ＲＯＭ、またはＲＡＭ上には多数のプログラム・モジュールを格納することができる。これらのプログラム・モジュールは、オペレーティング・システム１５３０、１つ以上のアプリケーション・プログラム１５３２、他のプログラム・モジュール１５３４、およびプログラム・データー１５３６を含む。種々の実施形態によれば、プログラム・モジュールは、図１を参照して先に説明した計算デバイス１００の機能(function)および特徴(feature)の内任意のものまたは全てを実行するために、処理ユニット１５０２によって実行可能なコンピューター・プログラム・ロジックを含むことができる。また、プログラム・モジュールは、処理ユニット１５０２によって実行されると、図２〜図１３のフローチャートを参照して示したまたは説明したステップあるいは動作の内任意のものを実行するコンピューター・プログラム・ロジックも含むことができる。
【０１１１】
[00126]  ユーザーは、キーボード１５３８およびポインティング・デバイス１５４０のような入力デバイスを介して、コマンドおよび情報をシステム１５００に入力することができる。他の入力デバイス（図示せず）には、マイクロフォン、ジョイスティック、ゲーム・コントローラー、スキャナー等を含むことができる。一実施形態では、ディスプレイ１５４４と併せてタッチ・スクリーンが設けられ、ユーザーがタッチを行う(application of a touch) （例えば、指またはスタイラスによる）ことによってユーザー入力をタッチ・スクリーン上の１つ以上のポイントに供給することを可能にする。これらおよびその他の入力デバイスは、多くの場合、バス１５０６に結合されたシリアル・ポート・インターフェース１５４２を介して処理ユニット１５０２に接続されるが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス（ＵＳＢ）のような他のインターフェースによって接続されてもよい。このようなインターフェースは、有線インターフェースまたはワイヤレス・インターフェースでもよい。
【０１１２】
[00127]  また、ビデオ・アダプター１５４６のようなインターフェースを介して、ディスプレイ１５４４もバス１５０６に接続されている。ディスプレイ１５４４に加えて、システム１５００は、スピーカーおよびプリンターのような他の周辺出力デバイス（図示せず）も含むことができる。
【０１１３】
[00128]  システム１５００は、ネットワーク・インターフェースまたはアダプター１５５０、モデム１５５２、あるいはネットワークを通じて通信を確立するための他の適した手段を介して、ネットワーク１５４８（例えば、ローカル・エリア・ネットワークまたはインターネットのようなワイド・エリア・ネットワーク）に接続されている。モデム１５５２は、内蔵型でも外付け型でもよく、シリアル・ポート・インターフェース１５４２を介してバス１５０６に接続される。
【０１１４】
[00129]  本明細書において使用する場合、「コンピューター・プログラム媒体」、「コンピューター読み取り可能媒体」、および「コンピューター読み取り可能記憶媒体」という用語は、一般に、ハード・ディスク・ドライブ１５１４に付随するハード・ディスク、リムーバブル磁気ディスク１５１８、リムーバブル光ディスク１５２２、更にはフラッシュ・メモリー・カード、ディジタル・ビデオ・ディスク、ランダム・アクセス・メモリー（ＲＡＭ）、リード・オンリー・メモリー（ＲＯＭ）等のような他のメモリー・デバイスまたは記憶構造というような、メモリー・デバイスまたは記憶構造を指すために使用される。このようなコンピューター読み取り可能記憶媒体は、通信媒体とは区別され、重複しない（通信媒体を含まない）。通信媒体は、通例、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターを、搬送波のような変調データー信号内に具体化する。「変調データー信号」という用語は、信号内に情報をエンコードするようなやり方でその特性の内１つ以上が設定または変更された信号を意味する。一例として、そして限定ではなく、通信媒体は、音響、ＲＦ、赤外線、およびその他のワイヤレス媒体というようなワイヤレス媒体を含む。また、実施形態はこのような通信媒体も対象とする。
【０１１５】
[00130]  先に注記したように、コンピューター・プログラムおよびモジュール（アプリケーション・プログラム１５３２および他のプログラム・モジュール１５３４を含む）は、ハード・ディスク、磁気ディスク、光ディスク、ＲＯＭ、またはＲＡＭ上に格納することができる。このようなコンピューター・プログラムは、ネットワーク・インターフェース１５５０、シリアル・ポート・インターフェース１５４２、または任意の他のインターフェース・タイプを介して受信することもできる。このようなコンピューター・プログラムは、アプリケーションによって実行またはロードされると、コンピューター１５００が、本明細書において論じた本発明の実施形態の機能を実現することを可能にする。したがって、このようなコンピューター・プログラムはシステム１５００のコントローラーを表す。
【０１１６】
[00131]  また、実施形態は、任意のコンピューター使用可能媒体上に格納されたソフトウェアを含むコンピューター・プログラム製品も対象とする。このようなソフトウェアは、１つ以上のデーター処理デバイスにおいて実行されると、データー処理デバイス（１つまたは複数）に、本明細書において説明した通りに動作させる。本発明の実施形態は、現在知られているまたは今後知られることになる、任意のコンピューター使用可能媒体またはコンピューター読み取り可能媒体を採用する。コンピューター読み取り可能媒体の例には、ＲＡＭ、ハード・ドライブ、フロッピー・ディスク、ＣＤ  ＲＯＭ、ＤＶＤ  ＲＯＭ、ジップ・ディスク(zip disk)、テープ、磁気記憶デバイス、光記憶デバイス、ＭＥＭ、ナノテクノロジーに基づく記憶デバイス等のような、メモリー・デバイスおよび記憶構造が含まれるが、これらに限定されるのではない。
【０１１７】
[00132]  代替実施態様では、システム１５００がハードウェア・ロジック／電子回路またはファームウェアとして実現されてもよい。更に他の実施形態によれば、これらのコンポーネントの１つ以上がシステム−オン−チップ（ＳｏＣ）において実現されてもよい。ＳｏＣは、プロセッサー（例えば、マイクロコントローラー、マイクロプロセッサー、ディジタル信号プロセッサー（ＤＳＰ等）、メモリー、１つ以上の通信インターフェース、および／またはその機能を実行するための更に他の回路および／または埋め込みファームウェアの内１つ以上を含む集積回路チップも含むことができる。
【０１１８】
ＶＩ．結論
[00133]  以上、種々の実施形態について説明したが、これらは一例として紹介されたに過ぎず、限定ではないことは理解されてしかるべきである。関連技術（１つまたは複数）の当業者には、形態および詳細における種々の変更を、本発明の主旨および範囲から逸脱することなく、その範囲内で行うことができることは明白であろう。したがって、本発明の広さおよび範囲は、以上で説明した実施形態例のいずれによっても限定されず、以下の特許請求の範囲およびその均等物にしたがってのみ定められてしかるべきである。
【図１】
2017514209.tif 000004
【図２】
2017514209.tif 000005
【図３】
2017514209.tif 000006
【図４】
2017514209.tif 000007
【図５】
2017514209.tif 000008
【図６】
2017514209.tif 000009
【図７】
2017514209.tif 000010
【図８】
2017514209.tif 000011
【図９】
2017514209.tif 000012
【図１０】
2017514209.tif 000013
【図１１】
2017514209.tif 000014
【図１２】
2017514209.tif 000015
【図１３】
2017514209.tif 000016
【図１４】
2017514209.tif 000017
【図１５】
2017514209.tif 000018
【国際調査報告】
2017514209.tif 000019
2017514209.tif 000020