【文献】
千種 菊里,1億人が持つケータイUNIX iPhone 4に搭載されたiOS 4の進化点,月刊アスキードットテクノロジーズ,日本,株式会社アスキー・メディアワークス,2010年 8月24日,第15巻, 第10号,第86-91頁
【文献】
畑 圭輔,iOS 4プログラミングブック,株式会社インプレスジャパン,2011年 2月 1日,第1版,第40-86頁
【文献】
Tech Fun株式会社,スマートにプログラミング Android実践編,株式会社リックテレコム,2012年 2月20日,第1版,第42-50頁
【文献】
スミス デイヴ,本格アプリを作ろう!Androidプログラミングレシピ,株式会社インプレスジャパン,2011年12月21日,第1版,第29-38頁
(58)【調査した分野】(Int.Cl.,DB名)
コンピューティング装置上で実行されているオペレーティング・システム・コンポーネントから、前記コンピューティング装置上で実行されている複数のアプリケーションのうちの1つのアプリケーションを、前記複数のアプリケーションがポリシーを満たさないことを理由とする中断の適用対象から除外するよう求める要求を受け取るステップと、
前記要求に応じて、前記1つのアプリケーションを前記コンピューティング装置上での中断の適用対象から除外するステップと
を含み、
前記適用対象から除外するステップは、前記1つのアプリケーションをある時間にわたって適用対象から除外するステップと、前記時間が経過した後で前記1つのアプリケーションが中断されることを許容するステップとを含み、
前記時間は前記要求の適用除外クラスに依存し、異なる適用除外クラスは異なる時間を有するものである、
方法。
【発明を実施するための形態】
【0011】
本明細書では、アプリケーションの再開および/またはアプリケーションの中断適用対象からの除外について論じる。複数のアプリケーションを同時に始動させ、コンピューティング装置のメモリにロードすることができるが、どんな時でもアクティブなのはそれらのうちの特定の数(1つまたは2つ)のアプリケーションだけである。アクティブでないアプリケーションは中断され、中断されるとは、アプリケーションがプロセッサを使用することができないこという。アプリケーションがいつ中断されるべきか決定するポリシーが適用される。しかし、オペレーティング・システム・コンポーネントは特定のアプリケーションを(例えば、当該アプリケーションによって動作が行われているという理由で)中断の適用対象から除外させることができる。加えて、オペレーティング・システム・コンポーネントは、中断されていたアプリケーションを(例えば、中断されたアプリケーションと通信するよう求める別のアプリケーションの要求を理由として)再開させることもできる。
【0012】
アプリケーションを終了するのではなく中断することにより、不必要なアプリケーションをバックグラウンドで実行することに関する様々な問題が解決される。プログラムを再始動するよりもプログラムを中断しない方が往々にしてより速く、より効率がよいが、プログラムが中断されている間、プログラムは、実行され、エネルギーを消費し、またはユーザが使用中のアプリケーションに干渉するのを妨げられる。しかし、アプリケーションを中断してよいのはいつか、およびアプリケーションが中断されるのではなく終了されるべきなのはいつかの判定に際しての技術的課題が残る。これらの判定は、少なくとも一部は、特定のアプリケーションおよび/またはアプリケーションのクラスについてシステムによって維持されるポリシーを順守し、変更することによって行うことができる。
【0013】
図1は、1つもしくは複数の実施形態による、アプリケーションの再開および/またはアプリケーションの中断適用対象からの除外を実施するコンピューティング装置の例100を示すブロック図である。コンピューティング装置100は多種多様な装置とすることができる。例えば、コンピューティング装置100は、ラップトップまたはノートブックコンピュータ、タブレットまたはノートパッドコンピュータ、デスクトップコンピュータ、サーバコンピュータ、移動局、娯楽器具、表示装置に通信可能に結合されたセット・トップ・ボックス、テレビまたは他の表示装置、セルラまたは他の無線電話機、ゲームコンソール、自動車用コンピュータなどとすることができる。よって、コンピューティング装置100の範囲は、十分なメモリおよびプロセッサリソースを備えるフルリソース装置(パーソナルコンピュータ、ゲームコンソールなど)から、限られたメモリおよび/または処理リソースだけを備える低リソース装置(従来のセット・トップ・ボックス、手持ち式ゲームコンソールなど)までに及びうる。
【0014】
コンピューティング装置100は、オペレーティングシステム102と、1つもしくは複数のアプリケーション104とを含む。動作中、オペレーティングシステム102およびアプリケーション104はコンピューティング装置100上で実行され、オペレーティングシステム102がアプリケーション104を管理する。アプリケーション104の管理は、以下でより詳細に論じるように、1つもしくは複数のアプリケーション104を自動的に終了することを含みうる。
【0015】
オペレーティングシステム102は、アプリケーション管理モジュール114、システム応答性分析モジュール116、アプリケーション存続期間管理モジュール118、アプリケーション終了モジュール120、ポリシー評価モジュール122、およびアプリケーション中断モジュール124を含む。モジュール114〜124はオペレーティングシステム102の一部であるものとして図示されているが、代替として、モジュール114〜124のうちの1つもしくは複数をオペレーティングシステム102から分離して実装することもできる。加えて、モジュール114〜124のうちの1つもしくは複数によって提供される機能を分離して複数のモジュールにすることができること、および/またはモジュール114〜124のうちの2つもしくはそれ以上によって提供される機能のうちの少なくともいくつかを組み合わせて単一のモジュールにすることができることにも留意すべきである。さらに、モジュール114〜124が図示されているが、オペレーティングシステム102は、様々な追加の機能性を提供する様々な追加のモジュールを含むことができることにも留意すべきである。
【0016】
本明細書では、オペレーティングシステム102の様々なモジュールを、相互に様々な指示または情報を通知し合い、または通信し合うものとして論じる。そのような通知または通信は様々な形を取りうることに留意すべきである。例えば、あるモジュールは別のモジュールのアプリケーション・プログラミング・インターフェース(API)を呼び出すことができ、あるモジュールは、別のモジュールが受け取るよう登録したイベントを報告することができ、あるモジュールは、別のモジュールがそこからデータまたは情報を取得することのできる位置にデータまたは他の情報を記憶することができ、以下同様である。
【0017】
アプリケーション管理モジュール114は、アクティブなアプリケーションおよび非アクティブなアプリケーションを含めて、その時々にコンピューティング装置100上でどのアプリケーション104が実行されているかモニタし、または別のやり方で認識している。アクティブなアプリケーションとは、現在、コンピューティング装置100の1つもしくは複数のプロセッサによって実行を予定されているアプリケーションであり、よって、実行のためのプロセッサ時間が割り振られているアプリケーションをいう。非アクティブなアプリケーションとは、現在、コンピューティング装置100の1つもしくは複数のプロセッサによって実行を予定されていないアプリケーションであり、よって、実行のためのプロセッサ時間が割り振られていないアプリケーションをいう。アプリケーション104は、以下でより詳細に論じるように、コンピューティング装置100のメモリにロードされるが非アクティブであるアプリケーションとすることができる。
【0018】
またアプリケーション管理モジュール114は、その時々にどのアプリケーション104が使用されているかもモニタし、または別のやり方で認識している。一般に、アプリケーション104が特定の時に使用されているというのは、そのアプリケーションのためのユーザインターフェースがその特定の時にコンピューティング装置100によって表示されており、または別のやり方で提示されている場合、および/またはコンピューティング装置100のユーザがその特定の時にそのアプリケーションにユーザ入力を提供している場合である。モジュール114は、どのアプリケーション104がその時々に使用されているかを多種多様なやり方で判定することができる。例えば、モジュール114は、当該アプリケーションがユーザインターフェースを表示するためのウィンドウが、コンピューティング装置100の一部であり、またはコンピューティング装置100に結合された表示装置上に現在表示されている場合に、アプリケーション104は現在使用されていると判定することができ、当該アプリケーションがユーザインターフェースを表示するためのウィンドウが、コンピューティング装置100の一部であり、またはコンピューティング装置100に結合された表示装置上に表示されている最上位または最高レベルのウィンドウである場合に、アプリケーション104は現在使用されていると判定することができ、当該アプリケーションがユーザインターフェースを表示するためのウィンドウが、最小化されていない場合に、アプリケーション104は現在使用されていると判定することができ、以下同様である。また、特定の時に使用されている別のアプリケーションが当該アプリケーションと通信している場合にも、アプリケーションは特定の時に使用されているということができる。例えば、モジュール114は、当該アプリケーション104が、コンピューティング装置100の一部であり、またはコンピューティング装置100に結合された表示装置上に表示されている最上位または最高レベルのウィンドウであるユーザインターフェースを表示する別のアプリケーション104と通信している場合に、アプリケーション104は現在使用されていると判定することができる。
【0019】
1つもしくは複数の実施形態において、オペレーティングシステム102は、どんな時でも特定の数のウィンドウ(例えば1つまたは2つ)が表示されることを許容する。アプリケーション104は、そうしたウィンドウ内に各アプリケーションのユーザインターフェースを表示し、よって、特定の数のアプリケーション104だけがその時々に各アプリケーションのユーザインターフェースを表示することができる。どんな特定の時にも、コンピューティング装置100の一部であり、またはコンピューティング装置100に結合された表示装置上にユーザインターフェースを表示しているアプリケーション104は、その特定の時にコンピューティング装置100のユーザによって現在、使用されているアプリケーション104であると判定される。また、コンピューティング装置100の一部であり、またはコンピューティング装置100に結合された表示装置上にユーザインターフェースを表示していないアプリケーション104は、その特定の時にコンピューティング装置100のユーザによって現在、使用されていないアプリケーション104であると判定される。
【0020】
アプリケーション存続期間管理モジュール118は、オペレーティングシステム102によって適用されるポリシーを制御してどのアプリケーション104を実行することができるか判定する。このポリシーは、その時々にアプリケーション104がアクティブであるかそれとも非アクティブであるかをどのように判定すべきか、どのアプリケーション104を終了すべきかをどのように決定すべきか、その時々に何個のウィンドウを表示することができるかなどを指示することができる。モジュール118は多種多様なやり方でポリシーを獲得することができ、例えば、ポリシーを用いて事前に構成される、(例えば、様々な好みや構成設定によって)コンピューティング装置100のユーザからポリシーを受け取る、コンピューティング装置100の別のモジュールから、または別のコンピューティング装置からポリシーを受け取る、ネットワークから(例えば、ネットワークを介して別の装置またはサービスから)ポリシーを受け取る、などである。
【0021】
ポリシー評価モジュール122は、オペレーティングシステム102によって適用されたポリシーがアプリケーション104によって満たされているかどうか判定する。ポリシー評価モジュール122は、アプリケーション管理モジュール114と通信して、その時々にどのアプリケーション104が使用されているか判定する。この判定およびポリシーに基づき、モジュール122は、ポリシーがアプリケーション104によって満たされているかどうか判定する。例えば、ポリシーが、使用されていないアプリケーションは非アクティブであると指示している場合であって、コンピューティング装置100のユーザによって使用されていない1つもしくは複数のアプリケーションが特定の時にアクティブである場合には、モジュール122は、ポリシーはその特定の時にアプリケーション104によって満たされていないと判定する。
【0022】
アプリケーション104がポリシーを満たさないと判定したことに応じて、ポリシー評価モジュール122は、アプリケーション104がポリシーを満たすように中断すべき1つもしくは複数のアプリケーション104を決定する。アプリケーションを中断するとは、アプリケーションを非アクティブにすることをいう。ポリシー評価モジュール122は、どのアプリケーション104が使用されているかの判定およびポリシーに基づいて、どの1つもしくは複数のアプリケーション104を中断すべきか決定する。例えば、ポリシーが、使用されていないアプリケーションは非アクティブであると指示している場合であって、使用されていない1つもしくは複数のアプリケーションが特定の時にアクティブである場合には、モジュール122は、使用されていないがアクティブであるアプリケーション104は中断すべき1つもしくは複数のアプリケーション104であると判定する。
【0023】
アプリケーション中断モジュール124はポリシー評価モジュール122から、中断すべき1つもしくは複数のアプリケーション104の指示を受け取る。1つもしくは複数のアプリケーション104を中断する指示に応じて、ポリシー中断モジュール124は、指示された1つもしくは複数のアプリケーション104を中断する。アプリケーションは、そのアプリケーションにそれが中断されるべきであることを通知することによって中断される。アプリケーションは、任意選択で、アプリケーションが中断される前に保存されるべきであるとみなすデータおよび/または状態情報を保存するための時間(1秒間、4秒間など)を与えられる。アプリケーションはデータおよび/または状態情報を不揮発性の、または他の永続的な記憶装置に記憶し、データおよび/または状態情報が(たとえアプリケーションが終了されたとしても)後で取得されることを可能にする。アプリケーションを中断するとは、アプリケーションをアクティブ状態から非アクティブ状態に変更することをいう。非アクティブなアプリケーション(中断されたアプリケーションともいう)は、前述のようにコンピューティング装置100のプロセッサによって実行されない。アプリケーションは異なるやり方で、例えば、アプリケーションを中断するためのオペレーティングシステム102のAPIを呼び出すことによって中断することもできる。
【0024】
アプリケーションは、一度中断されて、後でアクティブになることができることに留意すべきである。例えば、ユーザから、ユーザがアプリケーションを使用したいことを指示するユーザ入力が受け取られることもありうる。アプリケーションが非アクティブである場合、アプリケーションは、アプリケーションを使用するよう求めるユーザ要求に応じてアクティブとされ、アプリケーションはコンピューティング装置100の1つもしくは複数のプロセッサによって実行される。中断されたアプリケーションをアクティブなアプリケーションにすることを、アプリケーションを再開するともいう。再度アクティブになると、アプリケーションは実行を再開し、保存された状態をアプリケーションの必要に応じて復元する。
【0025】
システム応答性分析モジュール116は、メモリ使用に関する様々なメトリックのうちの1つもしくは複数を使用して、1つもしくは複数のアプリケーション104を終了すべきかどうか判定する。例えば、システム応答性分析モジュール116は、1つもしくは複数のアプリケーション104を終了すべきであることを、アプリケーション104に割り振られたメモリの量を指すメモリ・ロード・メトリック、その時々に利用可能な物理メモリの量を指す利用可能な物理メモリメトリック、ページが記憶されている記憶装置上の利用可能な記憶空間の量を指す利用可能なページファイル空間メトリック、オペレーティングシステム102のメモリマネージャによって維持されるスタンバイリスト上のページの平均存続期間を指すスタンバイリスト上の平均存続期間メトリックなどに基づいて判定することができる。システム応答性分析モジュール116は、1つもしくは複数のアプリケーション104を終了すべきであると判定したことに応じて、アプリケーション終了モジュール120に、1つもしくは複数のアプリケーション104を終了するよう通知する。
【0026】
アプリケーション終了モジュール120は、1つもしくは複数のアプリケーション104を終了するよう求めるシステム応答性分析モジュール116からの通知に応じて、終了すべき1つもしくは複数のアプリケーション104を決定する。アプリケーションは異なるやり方で、例えば、アプリケーションを終了するためのオペレーティングシステム102のAPIを呼び出すことによって終了することもできる。1つもしくは複数の実施形態において、モジュール120は、中断されていた1つもしくは複数のアプリケーション104を終了することを選択し、選択した1つもしくは複数のアプリケーション104を終了する。アプリケーション終了モジュール120は、どの特定のアプリケーション104を終了すべきかを様々なやり方で、例えば、アプリケーション104の各々がどのくらい前に使用されたか、アプリケーション104の各々がどれほどの頻度で使用されるか、アプリケーション104によって使用されるメモリの量などに基づいて決定することができる。
【0027】
あるいは、アプリケーションを終了するのではなく、アプリケーション終了モジュール120はアプリケーションを1次メモリからハードディスクやフラッシュ記憶デバイスといった2次メモリに移動することもできる。モジュール120は、どの特定のアプリケーション104を移動すべきかを、前述のどの特定のアプリケーション104を終了すべきかの決定と同様に様々なやり方で決定することができる。アプリケーション104は、例えば、アプリケーションを移動するためのオペレーティングシステム102のAPIを呼び出すことによって、アプリケーションによって使用されるメモリのページを2次記憶装置にコピーすることによってなど、様々なやり方で移動することができる。
【0028】
アプリケーション存続期間管理モジュール118は、アプリケーション104を中断の適用対象から除外するよう求めるオペレーティングシステム102の別のモジュールまたはコンポーネントからの要求を受け取ることもできる。そのような要求は、例えば、アプリケーション104によって行われているまだ終わっていない動作(例えば、オーディオコンテンツを再生している、文書を印刷しているなど)を認識しているオペレーティングシステム102のモジュールまたはコンポーネントによって出される。特定のアプリケーションを中断の適用対象から除外するよう求める要求に応じて、アプリケーション存続期間管理モジュール118はポリシー評価モジュール122に、どの1つもしくは複数のアプリケーション104を中断すべきか決定する時に、その特定のアプリケーションが中断されるべきでないことを通知する。アプリケーションを中断の適用対象から除外するとは、アプリケーションが中断されるのを妨げることをいう。すなわち、そのアプリケーションが、そうでなければ(アプリケーションを中断の適用対象から除外するよう求める要求がなければ)中断されたはずである場合に、アプリケーションを中断の適用対象から除外するよう求める要求は、アプリケーションが中断されるのを妨げる。
【0029】
アプリケーション存続期間管理モジュール118は、中断されたアプリケーション104の実行を再開するよう求めるオペレーティングシステム102の別のモジュールまたはコンポーネントからの要求を受け取ることもできる。そのような要求は、例えば、中断されたアプリケーションと通信することを求めるアプリケーション104を認識しているオペレーティングシステム102のモジュールまたはコンポーネントによって出される。中断されたアプリケーションの実行を再開するよう求める要求に応じて、アプリケーション存続期間管理モジュール118はアプリケーションを再開する。アプリケーションは異なるやり方で、例えば、アプリケーションを再開するためのオペレーティングシステム102のAPIを呼び出すことによって再開することもできる。アプリケーション存続期間管理モジュール118は、(例えば、アプリケーションを再始動するためのオペレーティングシステム102のAPIを呼び出すことによって)終了したアプリケーションを再始動させ、次いでアプリケーションを再開することによって、終了したアプリケーションを再開することもできる。
【0030】
図2に、1つもしくは複数の実施形態による、アプリケーションの再開および/またはアプリケーションの中断適用対象からの除外を実施するシステムの例200を示す。システム200は、例えば、
図1のコンピューティング装置100によって実施することができる。システム200はアプリケーション存続期間管理モジュール202を含み、これは
図1のアプリケーション存続期間管理モジュール118とすることができる。またシステム200は、通信層204、1つもしくは複数のオペレーティングシステム(OS)コンポーネント206、1つもしくは複数のオペレーティングシステム(OS)コンポーネント208、および1つもしくは複数のアプリケーション210も含む。アプリケーション210は、例えば、
図1のアプリケーション104とすることができる。OSコンポーネント206、208は、オペレーティングシステム(
図1のオペレーティングシステム102など)の様々なコンポーネントまたはモジュールである。通信層204は、オペレーティング・システム・コンポーネント206、208がアプリケーション存続期間管理モジュール202に要求を伝えることを可能にする。これらの要求は、中断されたアプリケーションの実行を再開するよう求める要求およびアプリケーションを中断の適用対象から除外するよう求める要求を含む。通信層204は存続期間インターフェースAPI212または非同期通信機構214として図示されているが、他の通信機構を代替として使用することもできる。通信層204は通常、オペレーティング・システム・コンポーネント206、208には見えるが、アプリケーション210には見えないことに留意すべきである。よって、オペレーティング・システム・コンポーネント206、208は、アプリケーション210の要求または動作に基づいて通信層204を介してモジュール202に要求を出すことができるが、アプリケーション210自体は、通信層204を介してモジュール202と直接通信することができない。
【0031】
あるOSコンポーネント206は存続期間インターフェースAPI212を使用してモジュール202と通信し、別のOSコンポーネント208は非同期通信機構214を使用してモジュール202と通信する。OSコンポーネントがモジュール202とどのように通信するかは様々なやり方で決定することができ、OSコンポーネントの開発者の側の設計上の選択とすることができる。1つもしくは複数の実施形態において、オペレーティング・システム・コンポーネントがモジュール202と通信するやり方は、オペレーティング・システム・コンポーネントがユーザモードで実行されているか、それともカーネルモードで実行されているかに基づいて決定される。例えば、オペレーティング・システム・コンポーネントがカーネルモードで実行されている場合には、オペレーティング・システム・コンポーネントは非同期通信機構214を使用してモジュール202と通信し、オペレーティング・システム・コンポーネントがユーザモードで実行されている場合には、オペレーティング・システム・コンポーネントは存続期間インターフェースAPI212を使用してモジュール202と通信する。
【0032】
存続期間インターフェースAPI212は、オペレーティング・システム・コンポーネント206が呼び出すことのできる1つもしくは複数のメソッドを示す。API212の1メソッドは、オペレーティング・システム・コンポーネント206によって呼び出され、アプリケーション210の識別子をパラメータとして提供することができる。アプリケーション210が相互に区別されることを可能にするアプリケーション210の多種多様な識別子を使用することができる。例えば、アプリケーション210の識別子は、そのアプリケーションを含むパッケージの識別子とすることができる(アプリケーションの名前、パッケージの発行者の名前、アプリケーションを動作するように設計するためのアーキテクチャの指示、パッケージのバージョン番号、および/またはパッケージの様々な他の特性の組み合わせなど)。またオペレーティング・システム・コンポーネント206は、適用除外クラスまたは再開クラスをパラメータとして提供することもできる。適用除外クラスまたは再開クラスは、オペレーティング・システム・コンポーネント206が要求を出す理由を指示し、後述するように多種多様なやり方で使用することができる。適用除外クラスまたは再開クラスは、API212のメソッドを呼び出す時のパラメータとして識別することができ、あるいは、呼び出されるメソッドにおいて固有のものとすることもできる(例えば、適用除外クラスおよび/または再開クラスによって異なるメソッドを示すことができる)。要求の種類(中断されたアプリケーションの実行を再開するよう求める要求やアプリケーションを中断の適用対象から除外するよう求める要求など)は、API212のメソッドを呼び出す時のパラメータとして識別することができ、あるいは、要求は、呼び出されるメソッドにおいて固有のものとすることもできる(例えば、要求の種類によって異なるメソッドを示すことができる)。
【0033】
非同期通信機構214は、様々なオペレーティング・システム・コンポーネント208から通知を受け取ることのできるモジュールまたはコンポーネントを含む。他のコンポーネントまたはモジュール(アプリケーション存続期間管理モジュール202など)はこれらの通知を利用することができる。よって、オペレーティング・システム・コンポーネント208が機構214に通知を提供する度に、機構214はその通知をモジュール202に提供する。この通知は、(前述のように様々な形を取ることのできる)アプリケーション210の識別子、要求の適用除外クラスまたは再開クラスの指示、および/または要求の種類の指示(例えば、要求は、中断されたアプリケーションの実行を再開するよう求める要求か、それともアプリケーションを中断の適用対象から除外するよう求める要求かなど)といった様々な情報を含むことができる。
【0034】
アプリケーションを中断の適用対象から除外するよう求める要求に応じて、アプリケーション存続期間管理モジュール202は、要求を出しているオペレーティング・システム・コンポーネント206、208が適切な理由でそうしているものであると信頼する。よって、モジュール202は、評価モジュールに、どの1つもしくは複数のアプリケーション104を中断すべきか決定する時に、識別されたアプリケーションは中断されるべきではないことを通知することによって、アプリケーションが中断されるのを妨げる。
【0035】
オペレーティング・システム・コンポーネント206、208は、様々な理由でアプリケーションが中断の適用対象から除外されるよう要求することができ、様々なオペレーティング・システム・コンポーネント206、208が様々な理由でアプリケーションが中断されるよう要求しうる。通常、オペレーティング・システム・コンポーネント206、208は、アプリケーション210は続行を許容されるべきであるが、アプリケーション210が中断された場合には続行しなくなるはずの動作を行っているとオペレーティング・システム・コンポーネント206、208が判定したことに応じて、アプリケーション210が中断の適用対象から除外されるよう要求する。例えば、アプリケーション210は、文書を印刷するためのデータをページごとに提供することを伴う印刷動作を行っているものとすることができるはずである。オペレーティング・システム・コンポーネント206、208(印刷スプーラなど)は、文書の印刷が完了する前にアプリケーション210が中断されることになった場合には、文書の印刷は完了しなくなるはずであるため、アプリケーション210が中断の適用対象から除外されるよう要求する。別の例として、アプリケーション210は、オーディオコンテンツ(歌や歌のプレイリストなど)を再生しているオーディオ再生アプリケーションとすることもできるはずである。オペレーティング・システム・コンポーネント206、208(オーディオAPIなど)は、アプリケーション210が中断されることになった場合には、オーディオコンテンツの再生が停止するはずであるために、アプリケーション210が中断の適用対象から除外されるよう要求する。
【0036】
さらに別の例として、アプリケーション210は、デバイスドライバであるオペレーティング・システム・コンポーネント206、208を介して装置(例えば、カメラ、ネットワーク・インターフェース・カード、無線装置など)と通信しているものとすることもできるはずである。オペレーティング・システム・コンポーネント206、208は、通信(例えば、アプリケーション210と装置との間の入力/出力(入出力))が少なくとも閾値のレートで行われている場合には、アプリケーションが装置をアクティブに使用していると判定し、アプリケーションが装置をアクティブに使用している場合には、アプリケーション210が中断の適用対象から除外されるよう要求する。さらに別の例では、アプリケーション210は、共用動作の一部として(例えば明確に定義されたインターフェースを介して)別のアプリケーションと情報(例えば写真、音楽、ビデオなど)を共用しているものとすることができる。共用動作が行われている場合、(例えば、共用動作を円滑化し、または別のやり方で認識している)オペレーティング・システム・コンポーネント206、208は、共用動作が完了されうるように、アプリケーション210が中断の適用対象から除外されるよう要求する。また、様々な他の動作も、オペレーティング・システム・コンポーネントに、アプリケーションが中断の適用対象から除外されるよう要求させることができるはずであり、例えば、アプリケーションが(例えば、ローカル・エリア・ネットワーク上、インターネット上などで)別の装置に、かつ/または別の装置からデータを転送している、アプリケーションがあるデバイスユーティリティ動作(ハードドライブをバックアップする、マルウェアの有無を検査するなど)を行っているなどの動作である。
【0037】
また、アプリケーションが中断の適用対象から除外されるよう求める要求は、適用除外クラスを指示することもできる。多種多様な適用除外クラスを使用することができ、各適用除外クラスは、アプリケーションが中断の適用対象から除外されるよう要求されている理由を特定する。例えば、適用除外クラスは、印刷、オーディオ、装置入出力などとすることができるはずである。
【0038】
あるいは、適用除外クラスを指定するのではなく、アプリケーション存続期間管理モジュール202は、アプリケーションが中断の適用対象から除外されるよう要求されている理由を推論することもできる。例えば、各オペレーティング・システム・コンポーネント206、208には、アプリケーションが中断の適用対象から除外されるよう要求する特定の理由がありうる。よって、モジュール202は、要求を受け取った相手先のオペレーティング・システム・コンポーネント206、208に基づいて、アプリケーションが中断の適用対象から除外されるよう要求される理由を特定することができる。
【0039】
アプリケーション存続期間管理モジュール202は、アプリケーションを中断の適用対象から無期限に除外することもでき、あるいは、あるイベントが発生するまで、またはある時間が経過するまで除外することもできる。例えば、そのようなイベントは、アプリケーションが中断の適用対象から除外されるよう要求したオペレーティング・システム・コンポーネントが、(例えば、文書が印刷を完了したため、ユーザが少なくとも閾値時間(例えば2分間)にわたってオーディオの再生を休止したため、などの理由で)アプリケーションが中断の適用対象から除外されなくなった時にモジュール202に通知することとすることができる。別の例として、モジュール202は、特定の時間(例えば、5分間、1時間など)にわたってアプリケーションを中断の適用対象から除外することができる。この特定の時間は様々なやり方で決定することができ、例えば、アプリケーションが中断の適用対象から除外されるよう要求されている理由に基づいて(例えば、オペレーティング・システム・コンポーネントによって提供される要求の適用除外クラスによって異なる特定の時間を有しうるなど)、モジュール202のデフォルト構成に基づいて、モジュール202からの要求のパラメータとして受け取られる特定の時間の指示に基づいてなどである。この特定の時間は、任意選択で、オペレーティング・システム・コンポーネントが、例えば、アプリケーションを中断の適用対象から除外するよう求める1つもしくは複数の追加の要求を出すことによって延長することもできるはずである。そのようなイベントまたは経過した時間に応じて、アプリケーションは中断の適用対象から除外されなくなる。したがって、モジュール202はポリシー評価モジュール(
図1のポリシー評価モジュール122など)を呼び出してアプリケーションを中断し、または前述のようにオペレーティングシステムによって適用されたポリシーがアプリケーション210によって満たされているかどうか判定する。
【0040】
アプリケーションが中断の適用対象から除外されるよう要求される理由(例えば、オペレーティング・システム・コンポーネントによって提供された要求の適用除外クラス)は、他のやり方で使用することもできる。例えば、アプリケーション存続期間管理モジュール202は、どのモジュール206、208が、アプリケーションが中断の適用対象から除外されるよう要求したか、それらのオペレーティング・システム・コンポーネントが、アプリケーションが中断の適用対象から除外されるよう要求した理由、および/またはどのアプリケーションが中断の適用対象から除外されたかの記録を維持する機能を含む(またはその機能を含む別のモジュールを呼び出す)ことができる。この記録は、アプリケーションを中断の適用対象から除外するよう求める要求の悪用の可能性を特定するため、アプリケーションを中断の適用対象から除外するよう求める要求が受け取られる頻度を特定するためなどといった様々なやり方で使用することができる。
【0041】
中断されたアプリケーションの実行を再開するよう求める要求に応じて、アプリケーション存続期間管理モジュール202は、要求しているオペレーティング・システム・コンポーネント206、208が適切な理由でそうしているものであると信頼する。よって、モジュール202は、例えば、中断されたアプリケーションを再開するためのオペレーティングシステム102のAPIを呼び出すことによって、中断されたアプリケーションを再開する。
【0042】
オペレーティング・システム・コンポーネント206、208は、様々な理由でアプリケーションが再開されるよう要求することができ、様々なオペレーティング・システム・コンポーネント206、208が様々な理由でアプリケーションが再開されるよう要求しうる。通常、オペレーティング・システム・コンポーネント206、208は、中断されたアプリケーションと通信するよう求める別のアプリケーション、コンポーネント、またはモジュールの求めに応じて、アプリケーションが再開されるよう要求する。例えば、アプリケーション210は、様々な従来のプロセス間通信技術のいずれかを使用して別のアプリケーション210と通信するよう求める場合がある。オペレーティング・システム・コンポーネント206、208は、(中断されたアプリケーションが実行を予定されていないために)中断されている場合に別のアプリケーション210が通信することができないという理由で別のアプリケーション210が再開されるよう要求する。別の例として、アプリケーション210は、別のアプリケーション210によって受け取られたユーザ要求(別のアプリケーション210からコピーされたデータをペーストするよう求める要求など)に応じて別のアプリケーション210からデータを獲得するよう求める場合もある。オペレーティング・システム・コンポーネント206、208は、別のアプリケーション210が中断されている場合に別のアプリケーション210からデータを獲得することができないという理由で別のアプリケーションが再開されるよう要求する。
【0043】
別の例として、オペレーティング・システム・コンポーネント206、208自体が、(例えば、中断されたアプリケーション内の何かを列挙するため、あるいは、中断されたアプリケーションから情報またはデータを獲得するために)中断されたアプリケーションと通信するよう求める場合もある。オペレーティング・システム・コンポーネントは、中断されている場合に別のアプリケーション210が通信することができないという理由でアプリケーション210が再開されるよう要求する。これらは、中断されたアプリケーション210が再開されるようオペレーティング・システム・コンポーネント206、208が要求しうる理由の例であり、オペレーティング・システム・コンポーネント206、208は、様々な他の理由のいずれかでアプリケーション210が再開されるよう要求しうることに留意すべきである。
【0044】
また、中断されたアプリケーションの実行を再開するよう求める要求は要求の再開クラスも指示することができる。多種多様な再開クラスを使用することができ、各再開クラスは、アプリケーションが再開されるよう要求されている理由を特定する。例えば、再開クラスは、プロセス間通信、ユーザ要求、オペレーティング・システム・コンポーネント要求などとすることができるはずである。
【0045】
あるいは、再開クラスを指定するのではなく、アプリケーション存続期間管理モジュール202は、アプリケーションが再開されるよう要求されている理由を推論することもできる。例えば、各オペレーティング・システム・コンポーネント206、208には、アプリケーションが再開されるよう要求する特定の理由がありうる。よって、モジュール202は、要求を受け取った相手先のオペレーティング・システム・コンポーネント206、208に基づいて、アプリケーションが再開されるよう要求される理由を特定することができる。
【0046】
アプリケーションが再開された後で、アプリケーション存続期間管理モジュール202は、アプリケーションを中断の適用対象から除外する。この適用除外は、中断されたアプリケーションの実行を再開するよう求める要求に応じて行われることを除いて、上記の考察と同様である。アプリケーションは、上記の考察と同様に、中断の適用対象から無期限に除外することもでき、あるいは、あるイベントが発生するまで、またはある時間が経過するまで除外することもできる。例えば、アプリケーション存続期間管理モジュール202は、特定の時間(2秒間、10秒間など)にわたってアプリケーションを中断の適用対象から除外することができ、特定の時間は、アプリケーションが再開されるよう要求されている理由に基づくものとすることができる。別の例として、アプリケーション存続期間管理モジュール202は、オペレーティング・システム・コンポーネントから、アプリケーションが再開されるよう要求する理由が存在しなくなったという通知が受け取られるまで、アプリケーションを中断の適用対象から除外することもできる。そうした通知に応じて、モジュール202はポリシー評価モジュール(
図1のポリシー評価モジュール122など)を呼び出してアプリケーションを中断し、または前述のようにオペレーティングシステムによって適用されたポリシーがアプリケーション210によって満たされているかどうか判定する。
【0047】
1つもしくは複数の実施形態において、中断されたアプリケーションの実行を再開するよう要求しているオペレーティング・システム・コンポーネント206、208は、要求の提出をトリガする動作(オペレーティング・システム・コンポーネントに中断されたアプリケーションの実行を再開するよう求める要求を出させる動作)をいくつのアプリケーション(またはオペレーティング・システム・コンポーネント)が要求しているかのカウンタまたは他の記録を維持する。様々なカウンタまたは他の記録を様々な理由で維持することができる。例えば、3つの異なるアプリケーションがプロセス間通信技術を使用して中断されたアプリケーションと通信するよう要求する場合には、オペレーティング・システム・コンポーネント206、208は、3つのアプリケーションが、要求の提出をトリガするはずの動作を要求していることを指示するカウンタまたは他の記録を維持する。追加のアプリケーションがプロセス間通信技術を使用して中断されたアプリケーションと通信するよう要求する場合には、4つのアプリケーションが要求の提出をトリガするはずの動作を要求していることを指示するようにカウンタが増分され、または他の記録が更新される。あるいは、アプリケーションのうちの1つが(中断されたアプリケーションが再開された後で)そのプロセス間通信を完了した場合には、2つのアプリケーションが要求の提出をトリガするはずの動作を要求していることを指示するようにカウンタが減分され、または他の記録が更新される。
【0048】
カウンタまたは他の記録が、要求の提出をトリガするはずの動作を要求しているアプリケーションが0である、から1つのアプリケーションが要求の提出をトリガするはずの動作を要求している、に変化する時には、オペレーティング・システム・コンポーネントは、中断されたアプリケーションの実行を再開するよう要求する。複数のアプリケーションが要求の提出をトリガするはずの動作を要求していることを指示するカウンタまたは他の記録の追加の変更は、要求がすでに出されているため、オペレーティング・システム・コンポーネントに中断されたアプリケーションの実行を再開するよう要求しない。カウンタまたは他の記録が、1つのアプリケーションが要求の提出をトリガするはずの動作を要求している、から要求の提出をトリガするはずの動作を要求しているアプリケーションが0である、に変化する時には、オペレーティング・システム・コンポーネントは、アプリケーション存続期間管理モジュール202に、オペレーティングシステムによって適用されたポリシーがアプリケーションによって満たされているかどうかポリシー評価モジュールに判定させるよう通知する。再開されたアプリケーションが(例えば、別のOSコンポーネント206、208からの要求を理由として)中断の適用対象から除外されなくなった場合には、再開されたアプリケーションをポリシーに従って中断することができる。さらに複数のアプリケーションが要求の提出をトリガするはずの動作を要求していることを指示するカウンタまたは他の記録の追加の変更は、オペレーティング・システム・コンポーネントがモジュール202に、オペレーティングシステムによって起用されたポリシーがアプリケーションによって満たされているかどうかポリシー評価モジュールに判定させるよう通知させる原因にならない。というのは、少なくとも1つのアプリケーションが、中断されたアプリケーションの実行を再開するよう求める要求の提出をトリガするはずの動作を依然として要求しているからである。
【0049】
図3は、1つもしくは複数の実施形態による、アプリケーションの再開および/またはアプリケーションの中断適用対象からの除外を実施する装置のためのプロセスの例300を示す流れ図である。プロセス300は、
図1の装置100といった装置によって実行され、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせとして実装することができる。プロセス300は1組の動作として示されており、様々な動作を実行する際に図示の順序だけに限定されない。プロセス300は、アプリケーションの再開および/またはアプリケーションの中断適用対象からの除外を実施するためのプロセスの例であり、本明細書には異なる図を参照した、アプリケーションの再開および/またはアプリケーションの中断適用対象からの除外の実施のさらに別の考察が含まれている。
【0050】
プロセス300では、アプリケーションを中断の適用対象から除外するよう求める要求が受け取られる(動作302)。要求はオペレーティング・システム・コンポーネントから受け取られ、よって前述のように信頼される。
【0051】
動作302で受け取られた要求に応じて、アプリケーションは中断の適用対象から除外される(動作304)。要求を適用対象から除外することによって、たとえそのアプリケーションが、通常は、前述のようにコンピューティング装置上で実行されている1つもしくは複数のアプリケーションがポリシーを満たさないという理由で中断されえた場合でさえも、そのアプリケーションは中断されない。アプリケーションは、中断の適用対象から無期限に除外することもでき、あるいは前述のようにあるイベントが発生するまで、またはある時間が経過するまで除外することもできる。
【0052】
図4は、1つもしくは複数の実施形態による、アプリケーションの再開および/またはアプリケーションの中断適用対象からの除外を実施する装置のための別のプロセスの例400を示す流れ図である。プロセス400は、
図1の装置100といった装置によって実行され、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせとして実装することができる。プロセス400は1組の動作として示されており、様々な動作を実行する際に図示の順序だけに限定されない。プロセス400は、アプリケーションの再開および/またはアプリケーションの中断適用対象からの除外を実施するためのプロセスの例であり、本明細書には異なる図を参照した、アプリケーションの再開および/またはアプリケーションの中断適用対象からの除外の実施のさらに別の考察が含まれている。
【0053】
プロセス400では、中断されていたアプリケーションの実行を再開するよう求める要求が受け取られる(動作402)。要求はオペレーティング・システム・コンポーネントから受け取られ、よって前述のように信頼される。アプリケーションは、例えば、前述のようにコンピューティング装置がアプリケーションのためのユーザインターフェースを表示しなくなったという理由で中断されていたはずである。
【0054】
要求に応じて、アプリケーションの実行が再開される(動作404)。アプリケーションはやはり、コンピューティング装置上で中断の適用対象から無期限に除外され、あるいは前述のようにあるイベントが発生するまで、またはある時間が経過するまで除外される。
【0055】
よって、本明細書で論じるアプリケーションの再開および/またはアプリケーションの中断適用対象からの除外の技術は様々な使用シナリオをサポートする。使用されていないアプリケーションを中断するためのポリシーを適用することができ、その結果としてユーザインターフェースを表示してないアプリケーションが中断される。しかし、そのようなアプリケーションが、オペレーティング・システム・コンポーネントが続行を許可すべきであると判定する動作を行っている(印刷している、オーディオコンテンツを再生しているなどの)場合には、アプリケーションを中断の適用対象から除外することができる。さらに、中断されたアプリケーションとの通信が求められる場合には、オペレーティング・システム・コンポーネントは、中断されたアプリケーションの実行を再開させることができる。中断されたアプリケーションとの通信が完了した後で、オペレーティング・システム・コンポーネントは、(ポリシーが、通常は、アプリケーションが中断されるべきではないとは指示しないものと仮定して)アプリケーションを再度中断させることができる。
【0056】
図5に、1つもしくは複数の実施形態による、アプリケーションの再開および/またはアプリケーションの中断適用対象からの除外を実施するように構成されうるコンピューティング装置の例500を示す。コンピューティング装置500は、例えば、
図1のコンピューティング装置100とすることができる。
【0057】
コンピューティング装置500は、1つもしくは複数のプロセッサまたは処理装置502と、1つもしくは複数のメモリおよび/または記憶コンポーネント506を含むことのできる1つもしくは複数のコンピュータ可読媒体504と、1つもしくは複数の入力/出力(入出力)装置508と、様々なコンポーネントおよび装置が相互に通信し合うことを可能にするバス510とを含む。コンピュータ可読媒体504および/または1つもしくは複数の入出力装置508は、コンピューティング装置500の一部として含めることができ、あるいはコンピューティング装置500に結合されていてもよい。プロセッサ502、コンピュータ可読媒体504、装置508のうちの1つもしくは複数、および/またはバス510は、任意選択で、単一の構成要素またはチップ(システムオンチップなど)として実装することもできる。バス510は、多種多様なバスアーキテクチャを使用した、メモリバスまたはメモリコントロール、周辺バス、アクセラレーテッド・グラフィックス・ポート、プロセッサまたはローカルバスなどを含むいくつかの種類のバス構造のうちの1つもしくは複数を表す。バス510は有線バスおよび/または無線バスを含みうる。
【0058】
メモリ/記憶コンポーネント506は、1つもしくは複数のコンピュータ記憶媒体を表す。コンポーネント506は、揮発性媒体(ランダム・アクセス・メモリ(RAM)など)および/または不揮発性媒体(読取り専用メモリ(ROM)、フラッシュメモリ、光ディスク、磁気ディスクなど)を含むことができる。コンポーネント506は、固定媒体(例えば、RAM、ROM、固定ハードドライブなど)、ならびに取り外し可能媒体(例えば、フラッシュ・メモリ・ドライブ、取り外し可能ハードドライブ、光ディスクなど)を含むことができる。
【0059】
本明細書で論じる技術はソフトウェアで実装することができ、命令は1つもしくは複数の処理装置502によって実行される。様々な命令をコンピューティング装置500の様々な構成要素に、例えば、処理装置502、処理装置502の様々なキャッシュメモリ、装置500の別のキャッシュメモリ(不図示)、他のコンピュータ可読媒体上などに記憶することができることを理解すべきである。加えて、命令が記憶されるコンピューティング装置500内の場所は時間の経過と共に変化しうることも理解すべきである。
【0060】
1つもしくは複数の入出力装置508は、ユーザがコンピューティング装置500にコマンドおよび情報を入力することを可能にし、また、情報がユーザおよび/または他の構成要素もしくは装置に提示されることも可能にする。入力装置の例には、キーボード、カーソル制御装置(マウスなど)、マイクロホン、スキャナなどが含まれる。出力装置の例には、表示装置(モニタやプロジェクタなど)、スピーカ、プリンタ、ネットワークカードなどが含まれる。
【0061】
本明細書では様々な技術をソフトウェアまたはプログラムモジュールの一般的文脈で説明する場合がある。一般にソフトウェアは、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、アプリケーション、オブジェクト、コンポーネント、データ構造などを含む。これらのモジュールおよび技術の一実装形態は、ある形態のコンピュータ可読媒体上に記憶され、またはある形態のコンピュータ可読媒体を横切って伝送されうる。コンピュータ可読媒体は、コンピューティング装置によってアクセス可能な1つもしくは複数の任意の利用可能な媒体とすることができる。例えば、それだけに限らないが、コンピュータ可読媒体には、「コンピュータ記憶媒体」および「通信媒体」が含まれうる。
【0062】
「コンピュータ記憶媒体」は、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータといった情報の記憶のための任意の方法または技術で実施された揮発性および不揮発性、取り外し可能および取り外し不能の媒体を含む。コンピュータ記憶媒体には、それだけに限らないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、ディジタル多用途ディスク(DVD)もしくは他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または所望の情報を記憶するのに使用することができ、コンピュータによってアクセスすることができる任意の他の媒体が含まれる。コンピュータ記憶媒体は、単なる信号伝送、搬送波、または信号自体に対して、情報の記憶のための媒体を指す。よって、コンピュータ記憶媒体は非信号搬送媒体を指し、通信媒体ではない。
【0063】
「通信媒体」は通常、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波や他のトランスポート機構といった変調データ信号において表現する。また通信媒体は任意の情報伝送媒体も含む。「変調データ信号」という用語は、その特性のうちの1つもしくは複数が、信号において情報を符号化するようなやり方で設定され、または変更されている信号を意味する。例として、それだけに限らないが、通信媒体には、有線ネットワークや直接配線接続といった有線媒体、および音響、RF、赤外線、他の無線媒体といった無線媒体が含まれる。上記のうちのいずれかの組み合わせもコンピュータ可読媒体の範囲内に含まれる。
【0064】
一般に、本明細書で説明する機能または技術のいずれも、ソフトウェア、ファームウェア、ハードウェア(固定論理回路など)、手動処理、またはこれらの実装形態の組み合わせを使用して実装することができる。「モジュール」および「コンポーネント」という用語は、本明細書で使用する場合、一般に、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせを表す。ソフトウェア実装形態の場合には、モジュールまたはコンポーネントは、プロセッサ(1つもしくは複数のCPUなど)上で実行された時に指定されたタスクを実行するプログラムコードを表す。プログラムコードは1つまたは複数のコンピュータ可読メモリデバイスに記憶することができ、コンピュータ可読メモリデバイスの詳細な説明は
図5を参照すれば理解されうる。ハードウェア実装形態の場合には、モジュールまたはコンポーネントは、指定されたタスクを実行する機能ブロックまたは他のハードウェアを表す。例えば、ハードウェア実装形態では、モジュールまたはコンポーネントは、特定用途向け集積回路(ASIC:application−specific integrated circuit)、フィールド・プログラマブル・ゲート・アレイ(FPGA:field−programmable gate array)、複合プログラマブル論理回路(CPLD:complex programmable logic device)などとすることができる。本明細書で説明したアプリケーションの再開および/またはアプリケーションの中断適用対象からの除外の技術の特徴はプラットフォームに依存せず、これは、これらの技術を、様々なプロセッサを有する様々な市販のコンピューティングプラットフォーム上で実装することができることを意味する。
【0065】
発明の対象を構造的特徴および/または方法動作に特有の言葉で説明したが、添付の特許請求の範囲で定義される発明の対象は、必ずしも前述の特有の特徴または動作だけに限定されるものではないことを理解すべきである。そうではなく、前述の特有の特徴および動作は、特許請求の範囲を実施する形態の例として開示したものである。