JP5723968B2 - 便宜的マルチタスキング - Google Patents

便宜的マルチタスキング Download PDF

Info

Publication number
JP5723968B2
JP5723968B2 JP2013503719A JP2013503719A JP5723968B2 JP 5723968 B2 JP5723968 B2 JP 5723968B2 JP 2013503719 A JP2013503719 A JP 2013503719A JP 2013503719 A JP2013503719 A JP 2013503719A JP 5723968 B2 JP5723968 B2 JP 5723968B2
Authority
JP
Japan
Prior art keywords
user application
state
user
foreground
electronic device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013503719A
Other languages
English (en)
Other versions
JP2013524362A (ja
JP2013524362A5 (ja
Inventor
エリック アルバート,
エリック アルバート,
ルシア バラード,
ルシア バラード,
グレゴリー, アール. チャップマン,
グレゴリー, アール. チャップマン,
ニール, ガレス クレイン,
ニール, ガレス クレイン,
トーマス, ブロガン ダフィー,
トーマス, ブロガン ダフィー,
スコット フォーストール,
スコット フォーストール,
ゴードン, ジェイ. フリードマン,
ゴードン, ジェイ. フリードマン,
デイビッド, ウィリアム グッドウィン,
デイビッド, ウィリアム グッドウィン,
ジョン イアロッチ,
ジョン イアロッチ,
ダレン リツィンジャー,
ダレン リツィンジャー,
クリストファー マルチェリーニ,
クリストファー マルチェリーニ,
ヘンリー, グラハム メイスン,
ヘンリー, グラハム メイスン,
カーヤ マスプトラ,
カーヤ マスプトラ,
デイビッド ミシェブスキー,
デイビッド ミシェブスキー,
グレゴリー ノビック,
グレゴリー ノビック,
カーチス ロザート,
カーチス ロザート,
リチャード シュライヤー,
リチャード シュライヤー,
ジョゼフ ソコル,
ジョゼフ ソコル,
ダミエン ソレッソ,
ダミエン ソレッソ,
チャールズ スリスワナヌコロン,
チャールズ スリスワナヌコロン,
マイケル ヴァンミリガン,
マイケル ヴァンミリガン,
マシュー, ジー. ワストン,
マシュー, ジー. ワストン,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of JP2013524362A publication Critical patent/JP2013524362A/ja
Publication of JP2013524362A5 publication Critical patent/JP2013524362A5/ja
Application granted granted Critical
Publication of JP5723968B2 publication Critical patent/JP5723968B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/506Constraint

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Telephone Function (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)
  • Stored Programmes (AREA)
  • Mobile Radio Communication Systems (AREA)

Description

この出願に開示され、特許請求の範囲に記載される発明は、Apple(登録商標)のiPhone(登録商標)4のプロトタイプが2010年3月25日にApple(登録商標)の技術者から明らかに盗まれた時点でApple(登録商標)の承認を得ず、かつ、時期尚早に一般に公開された。この出願の基礎となる米国の優先権出願は、その明らかな窃盗前に未出願であった。
[関連出願の相互参照]
この出願は、2010年4月7日に出願された「Opportunistic Multitasking」と題する米国仮出願番号61/321,616に基づく国際出願であり、仮出願の全体が参照として、ここに組み込まれる。
本発明は、一般に、コンピュータサイエンスの分野に関し、より詳しくは、ユーザエクスペリエンスやパーソナル電子機器の電源管理を向上する技術に関する。
電源に制約があるハンドヘルド機器(例えば、携帯電話、パーソナルエンターテインメント機器、電子パッドコンピュータ)は、デスクトップ、ワークステーション、ノートブックなどのコンピュータのように大きく固定されたシステムに比べ、リソース制限がある。このようなシステムにおいて利用可能な演算能力は、ユーザエクスペリエンスの著しい低下とデバイスの限られた電力リソースの消費なしに、多数の並列プロセス/スレッドの実行を単純にサポートすることができない。この認識を考慮して、これら種類のデバイスのシステム設計者は、ユーザアプリケーションレベルにおけるマルチタスキングを伝統的にサポートしてこなかった。このアプローチは、デバイスの限られた電力リソースの浪費を最小限にする利点があるが、インタラクティブな環境を(ユーザアプリケーションを介して)ユーザに提供する能力を制限することになる。
パーソナル電子機器向けのサービスは、マルチタスキングやバックグラウンド処理の形態がサポートされることを通じて提供される。開示されるサービスは、フォアグラウンドプロセスのユーザエクスペリエンスまたはパーソナル電子機器の電源リソースに対する大きくネガティブな影響なしに、ユーザアプリケーションがバックグラウンド処理を利用することを許容する。開示されるサービスの実施は、実行中のユーザアプリケーションに対して実質的に透過であり、幾つかのケースにおいて、ユーザアプリケーションの明示的な協調がなくても実施することができる。開示されるマルチタスキングを達成するために、動作制限数が強制されるかもしれない。そのような制限の結果は、プロセスがバックグラウンドにある場合はそれを行うことができず、フォアグラウンドでは行うことができるということだろう。
あるサービスにおいて、フォアグラウンドユーザアプリケーションは、フォアグラウンド状態から移動されると非実行状態に遷移する。他のサービスにおいて、バックグラウンドプロセスは、非実行状態に遷移される前に、タスクを完了するための最大の時間が与えられる。また別のサービスにおいて、オーディオアプリケーション(例えば、オーディオ信号を生成または記録するユーザアプリケーション)は、ユーザによって一時停止されるまで、および、一時停止されない限りバックグラウンドにおける実行が認められる。さらに別のサービスにおいて、ユーザアプリケーションによって示される(instantiated)通信ソケットは、それを示す(instantiating)ユーザアプリケーションが非実行状態にあっても維持される。このサービスを利用可能なアプリケーションの典型は、ボイスオーバインターネットプロトコル(VOIP)を用いるユーザアプリケーションである。さらに他の実施例において、ユーザアプリケーションは、非実行状態にある場合、通知(例えば位置イベント)の受信が許可される。開示される各サービスは、一つ以上の制限に依存するか、一つ以上の制限を使用して、動作における、フルタイムのマルチタスキング動作を妨げるか防ぐことができる。つまり、開示されるサービスは、マルチタスキングがフォアグラウンドプロセスに著しく干渉したり、パーソナル電子機器の電源を過度に利用したりしない場合のみ、マルチタスキングを許可する。
実施例のスレッドスケジュール構成例を示す図、 実施例のタスク完了サービス動作を示すフローチャート、 実施例のオーディオサービス動作を示すフローチャート、 実施例のネットワークサービス動作を示すフローチャート、 実施例のパーソナル電子機器を示すブロック図、 他の実施例のパーソナル電子機器を示すブロック図、 実施例の無線部および位置情報処理部を示すブロック図、 実施例のパーソナル電子機器を示すブロック図。
パーソナル電子機器向けのサービスは、マルチタスク処理やバックグラウンド処理の制限された形態がサポートされることを通じて提供される。開示される動作制限との組み合わせにおいて、開示される一つ以上のサービスの使用は、機器の電源リソースに僅かな影響を伴う堅牢なインタラクティブ環境をユーザに与えるため、ユーザアプリケーションにバックグラウンドにおける実行を許可する。幾つかの実施例において、バックグラウンド処理は、特定のタスクの完了、特定の時間(例えば5-30分間)、または、特定タイプのタスク(例えばオーディオ動作)に制限される。他の実施例において、ユーザアプリケーションは、一つ以上の特定のイベントの発生による復帰をオペレーティングシステムに通知後、動作を終了する。復帰時、アプリケーションは、バックグラウンドにおいて補足的な動作を実行する。開示されるサービスの実施は、実行中のユーザアプリケーションに対して実質的に透過であり、幾つかのケースにおいて、ユーザアプリケーションの明示的な協調がなくても実施することができる。
ここで使用する用語「パーソナル電子機器」は、携帯電話、パーソナルディジタルアシスタント、ハンドヘルドエンターテイメント機器、パッドまたはタブレットコンピュータシステム、あるいは、セットトップボックス(例えばApple TV(Appleの登録商標)またはケーブルコンバータボックス)などの携帯ディジタルデバイスである。ここで使用する用語「サービス」は、ユーザインタフェイスがなく、アプリケーションプログラミングインタフェイス(API)のようなコールインタフェイスを介してプログラマティキャリ(programmatically)にアクセスされ、コールプロセスのために幾つかのタスクを実行するユーティリティ、ファンクションまたはプログラムコードモジュールを指す。
以下では、説明の目的のために、本発明の完全な理解を提供するために多数の特定の詳細が説明される。しかし、これら特定の詳細がなくても本発明が実施できることは、当業者にとって明らかだろう。他の例において、本発明が不明瞭になることを避けるために、構造および装置はブロック図の形態で示される。添字なしの番号の参照は、参照番号に対応する添字のすべての例示の参照であると理解される。さらに、この開示において使用される言語は、主に可読性や教示目的のために選択されていて、本発明の主題を正確に記述したり囲むようには選択されていないかも知れないが、本発明の主題の決定は請求項に頼ることにする。本明細書における「一実施例」または「実施例」の参照は、実施例に関連して説明される特定の特徴、構成または特性が本発明の少なくとも一つの実施例に含まれることを意味し、「一実施例」または「実施例」のマルチ参照が必ずすべて同じ実施例を参照していると理解されるべきではない。
実際に実装される任意の多数のプログラミングとコンポーネントの決定は、開発者の特定の目標(例えばシステムおよびビジネス関連の制約とコンプライアンス)を達成しなければならなず、それら目標は実装ごとに異なることが理解されるだろう。また、そのような開発の努力は、複雑かつ時間がかかることが理解されるだろうが、それでもなお、この開示に利益をもつパーソナルコンピュータ機器開発分野の当業者にとっては日常的作業だろう。
フォアグラウンドプロセスのユーザエクスペリエンスまたはパーソナル電子機器の電源リソースに対する大きくネガティブな影響なしに、バックグラウンド処理またはマルチタスキングの効果を得るために、動作制限数が強制されるかもしれない。そのような制限の結果は、プロセスがバックグラウンドにある場合はそれを行うことができず、フォアグラウンドでは行うことができるということだろう。
ここで使用する用語「フォアグラウンドプロセス」は、現在、システムリソース(例えばプラットフォームの中央処理装置およびグラフィカル処理装置)にアクセスし、ユーザインタフェイス(UI)またはグラフィカルユーザインタフェイス(GUI)をユーザに提示するプロセスを意味する。(従って「フォアグラウンド」はフォアグラウンドプロセスが実行されている状態である。)対照的に「バックグラウンドプロセス」は、システムリソースにアクセスすることが予定され、現在、ユーザにUI/GUIを提供しないプロセスである。(従って「バックグラウンド」はバックグラウンドプロセスが実行されている状態である。)ここで使用する用語「プロセス」はユーザアプリケーションを意味する。逆に、ユーザアプリケーションは、UI/GUIを提示することが可能な実行可能なコードモジュールである。
[動作制限]
以下の動作制限のリスト例は、バックグラウンドプロセスがフォアグラウンドプロセスに及ぼす有害な影響を制限するために強制される場合がある。
1. プロセッサスケジューリング
バックグラウンドプロセスがフォアグラウンドプロセスの妨げにならないような方法で、フォアグラウンドプロセスとバックグラウンドプロセスに異なるプロセッサスケジューリング「優先度」を割り当てる。当業者であれば、UNIX(登録商標)(AT&Tの登録商標)およびMachのようなオペレーティング環境において、プロセスはスケジューリングされず、スレッドがスケジューリングされることを認識するだろう。さらに、スレッドは、プログラム、アプリケーションまたはプロセスの他の部分と独立または並列に実行可能なプログラム、アプリケーションまたはプロセスの一部であることが認識されるだろう。
図1を参照すると、一実施例において、バックグラウンドスレッドには、フォアグラウンドスレッドに割り当てられた優先度レベルにある程度重なる優先度バンドから優先度が割り当てられる。重畳する優先度バンドは、実行中のフォアグラウンドプロセス/スレッドがあるとしても、バックグラウンドプロセス/スレッドを進行させる(つまり実行の)可能性を高める。この実施例においてスレッドの応答性を高めるには、入出力(I/O)動作をブロックすることなく、それらの全クァンタム(entire quantum)を使用するスレッドを降格する(つまり、それらのスケジューリング優先度を下げる)ことが有益であることがわかった。一実施例において、スレッドの優先度は、ブロックされずに、割り当てられたクァンタムをフルに使う都度、1カウントずつ減少する。(フルクァンタムのプロセス使用は、中央処理装置を使用するプロセスの指標(indicator)であることが認識されるだろう。)他の実施例においてこれが発生した場合、スレッドの優先度を複数カウント低減することができる。バックグラウンドバンドとフォアグラウンドバンドの間の優先度レベルにおける「重畳」量は1以上あればよい。
2. ディスクスケジューリング
一実施例において、システムのストレージ装置(例えば、磁気ハードドライブおよびソリッドステートハードディスク装置)にアクセスする場合、フォアグラウンドスレッドには、バックグラウンドスレッドよりも高い優先度が与えられる。さらに、バックグラウンドプロセス(つまり、バックグラウンド状態にあるプロセスに関連するスレッド)によるシステムのストレージ装置のアクセスはレート制限される。
3. 着信ネットワークアクティビティ
一実施例において、バックグラウンドまたは非実行状態の(例えばサスペンドされた)アプリケーションあての全パケットをドロップすることで、着信(incoming)ネットワークトラフィックが加減(moderate)される。さらに、意図的に(artificially)小さいバッファサイズを末端(distal)のネットワークサイトに報告して、着信TCP(伝送制御プロトコル)トラフィックを抑制する(throttle)。当業者であれば、TCPがバッファサイズに関連するトラフィックフロー制御機構の既存セットを備え、受信側がトラフィックを扱うことができるよりも高速なネットワークを経由するトラフィックが送信されないことを認識するだろう。前述したように、一実施例において意図的に小さいバッファサイズが報告され、送信側は受信トラフィックの流れを遅くするか停止する。
4. 発信ネットワークアクティビティ
一実施例において、ネットワークアクセスは二つのキューの使用によって調停(mediate)され、一つのキューはフォアグラウンドプロセスに関連するジョブ用であり、もう一つのキューはバックグラウンドプロセスに関連するジョブ用である。バックグラウンドキューを超える優先度をフォアグラウンドキューに与えることが有益であることが分かった。例えば、バックグラウンドキューに対してフォアグラウンドキューを100%優先してもよい。この設定において、バックグラウンドキュー内のジョブは、フォアグラウンドキューが空の場合にサービスを受けることができる。別の実施例において、フォアグラウンドキュー内のジョブは、バックグラウンドキューに対して所望する割合(例えば90対10、80対20、75対27または50対50)でサービスを受けることができる。さらに別の実施例において、一度、ジョブがキュー(例えばフォアグラウンドキュー)に配置されると、その後、当該ジョブに関連するプロセスが別の動作状態(例えばバックグラウンド)に配置されても、当該ジョブは移動されない。さらに別の実施例において、ジョブのキューの位置は、当該ジョブに関連するプロセスの動作状態を反映して更新される。
5. グラフィクス動作
一実施例において、例えばiPhone(Appleの登録商標)オペレーティングシステムのように、アプリケーションが表示画面に書いたり描いたりするために経由する少なくとも二つの機構がある。第一の機構は、グラフィクス処理ユニット(GPU)など、専用のハードウェアの使用を経由する。第二の機構は、プラットフォームの一つ以上の中央処理装置(CPU)の使用を経由する。一実施例によれば、iPhone(登録商標)オペレーティング環境において、バックグラウンドプロセスは専用のグラフィクスハードウェアのアクセスが許可されず、例えば、GPUのアクセスを試みる如何なるバックグラウンドプロセスも終了される。別の例では、CPUを介して可視グラフィクスの生成を試みるバックグラウンドプロセスは無視される、つまり、描画バッファ/メモリに書き込むためにCPUの使用を指示するコマンドを実行する試みは無視される。幾つかの実施例において、バックグラウンド状態に置かれたプロセス/アプリケーションに関連する描画メモリは「パージ可能(purgeable)」とマークされる。つまり、フォアグラウンドプロセスは、より多くのメモリを必要とする場合、現在バックグラウンド状態にあるプロセスに元々付与されているディスプレイメモリを(標準メモリアロケーション手法を介して)使用することができる。
6. 通知
プロセスがバックグラウンド状態からフォアグラウンド状態に遷移する場合、プロセスは各種類の通知ごとに一つの通知の受信が許可される。より詳しくは、一実施例において、多数の通知イベントが統合される(consolidate)。例えば、ユーザが彼のパーソナル電子機器(例えばiPhone(登録商標))を縦表示から横表示に、さらに縦表示に回転し、そして横表示に戻した場合の三つの向きの通知イベントの結果は単一の通知、最後の状態、横向きに合体される(coalesce)。これにより、多数のイベントに応答する必要がなくなり、アプリケーションの応答性が向上する。例えば、通知の種類には(例えば、加速度計やジャイロスコープセンサの入力からの)向きの変更通知、(アドレス帳のエントリが変更されると発生する)アドレス帳データベース通知、および(共有リソース画像ライブラリの画像が変更されると発生する)カメラロール通知が含まれる。
7. ロック
共有リソースにロックオンし、サスペンド状態にある任意のプロセスは(サスペンドよりもむしろ)終了させる。共有リソースには、例えば、専用のグラフィクスハードウェアとファイルディスクリプタが含まれる。他の実施例において、ユーザアプリケーションがバックグラウンド状態になると、共有リソースは、ユーザアプリケーションから「引き離される(take away)」。例えば、アプリケーション(プロセス)がカメラのハードウェアにロックオンしている場合、ユーザアプリケーションがバックグラウンド状態に置かれると、当該ロックは取り除かれる。ここで使用する「サスペンド状態」は、プロセスが実行のためにスレッドをスケジューリングすることは許されないが、プロセスの状態がメインメモリに保持された状態である。
8. ハードウェア制限
一実施例において、バックグラウンドプロセスが所定のシステムハードウェアリソースへのアクセスを獲得することを妨げる。バックグラウンドプロセスが利用不能なハードウェアは、例えばカメラ、GPU、加速度センサ、ジャイロスコープ、近接センサおよびマイクであるが、これらに限定されない。
9. メモリ管理
実行プロセスを収容するために充分なメモリを保持するため、パーソナル電子機器のコアメモリが指定された「クリチカル」ポイントに近付くと、プロセスがメモリから取り除かれる。一実施例において、取り除かれたプロセスは休止(hibernate)される。別の実施例において、取り除かれたプロセスは終了される。ここで使用する用語「コアメモリ」または「メインメモリ」は、ユーザアプリケーションが実行されるパーソナル電子機器のメインランダムアクセスメモリを意味する。「休止プロセス」は、その動作状態が不揮発性メモリに書き込まれたプロセスであり、(1)休止プロセスは実行のためにスレッドをスケジューリングすることができず、(2)休止プロセスのメインメモリにおける「フットプリント」は実質的にゼロである。「終了プロセス」は、その動作状態が削除され、従って、再起動されるまで実行することができないプロセスである。ハイバネーションメモリの処理(act)の間、オンデマンドに再作成(パージ可能)または再ロード(クリーン)可能な処理は、修正されたメモリに配置されるだけか、再構成可能ではない(un-reconstitutable)別のやり方で不揮発性メモリに書き込まれる。別の実施例において、不揮発性メモリの指定領域は「ハイバネーション」メモリとして使用するため、ブート時に別けて設定される。休止プロセスが復帰される場合、不揮発性メモリの休止プロセスのデータはメインメモリに戻され、それによって、不揮発性ストレージのスペースを解放する。一実施例において、指定時間を超えてアクセスされないアプリケーションが「休止」される。
メインメモリから削除されるアプリケーションを選択するための所望のアプローチを作成することができる。例えば、最近使用したアプリケーションを最初に削除する。あるいは、現在非実行中の最大のアプリケーションを削除する。一実施例において、取り除くために選択されたアプリケーションは、指定サイズ(例えば8MB、16MBまたは32MB)を超える場合は終了され、指定サイズよりも小さいアプリケーションは休止される。さらに別の実施例において、バックグラウンドオーディオユーザアプリケーションは、サスペンドされたユーザアプリケーションが終了された後のみ、フォアグラウンドユーザアプリケーションの前に終了させることができる。
同様に「クリチカル」ポイントは、設計者が望む任意の値である。例えば、クリチカルポイントは50%、75%および90%を含む。代表的なクリチカルポイントとして75%を使用し、メインメモリが容量の75%に達する、例えば256メガバイト(MB)のメインメモリが192MBフルに達すると、メインメモリから取り除くためにアプリケーションが選択される。
[動作状態]
上記の制限が後述する様々なサービスに如何に適用されるかを理解する上の助けとして、表1は、パーソナル電子機器上で実行されるユーザプロセスの五つの動作状態を識別し説明する。
表1 動作状態
─────┬────────────────┬─────────────
モード │ 説明 │ 制限
または状態│ │
─────┼────────────────┼─────────────
フォア │この状態のプロセスは、システムリ│なし
グラウンド│ソースにアクセスし、現在、ユーザ│
│インタフェイスを提示する │
─────┼────────────────┼─────────────
バック │この状態のプロセスは、システムリ│リアルタイムプロセスはリア
グラウンド│ソースにアクセスするが、現在、 │ルタイム制限の対象(オー
│ユーザインタフェイスを提示しない│ディオ、VOIP/ネットワーク
│ │通信アプリケーションを除き
│ │バックグラウンドに置かれる
│ │と非リアルタイム優先度に降
│ │格)、他の全プロセスは他の
│ │全制限の対象
─────┼────────────────┼─────────────
サスペンド│この状態のプロセスは、メインメモ│実行には不適切
│リ内で動作状態にあり、サスペンド│
│されている事実を除き、実行のため│
│のスケジューリングが可能 │
─────┼────────────────┼─────────────
休止 │この状態のプロセスは、動作状態が│実行には不適切
│不揮発性メモリに書かれている。 │
│プロセスを識別し配置し復帰させる│
│情報だけをメインメモリに保持 │
─────┼────────────────┼─────────────
終了 │メインメモリ内で、もはや動作状態│実行には不適切
│がアクセスできないプロセス │
─────┴────────────────┴─────────────
ここで使用する用語「非実行状態」は、サスペンド状態、休止状態、終了状態の一つを意味する。
[サービスの例]
以下、記述されるサービス動作の「環境」はiPhone(登録商標)オペレーティングシステムである。これは例示のみであり、開示されるサービスは、どのようなパーソナル電子機器にも同様に適用することができる。
1. 高速タスク切替サービス
過去、アプリケーションは、iPhone(登録商標)オペレーティングシステムのフォアグラウンド状態から去る場合、単純に終了されていた。高速タスク切替サービスは、アプリケーションがフォアグラウンド状態から去る時点で、幾らかの処理(例えば数秒)を行う機会が与えられたという通知の受信をアプリケーションに許可する。この時間の経過後、アプリケーションはサスペンドされる(つまりサスペンド状態に置かれる)。一実施例において、この開示に従うオペレーティング環境は、実行中の全プロセスに高速タスク切替を適用することができる(後述するように、別のサービスを利用しない限り)。別の実施例において、各アプリケーションは、サスペンドされることをプログラマティキャリ(programmatically)に指定する必要がある。
サスペンドされている間、プロセス/アプリケーションは命令を実行することができない。これは、Unix(登録商標)やMachのようなスレッドオペレーティング環境において、プロセスはスレッドの実行をスケジューリングできないことを意味する。しかし、幾つかの実施例においては、プロセス自身がサスペンド(あるいは、休止または終了)された後であっても、プロセスに代わって開始されたカーネルの活動(effort)が継続されることがある。「カーネルの活動」例には、進行中のI/O動作、仮想メモリ、ネットワークバッファ動作が含まれる。そのような動作の完了は、サスペンドされたプロセスの復帰をトリガしても、しなくてもよい。
なお、ここで議論した種類のプロセスの休止は、従来技術の「スリープ」または「ハイバネーション」アクションのようなシステムレベルの動作と異なる。「スリープ」や「ハイバネーション」アクションはどちらも「システム全体(system-wide)」の動作である。従来技術によれば、スリープまたは休止モードの間、プロセスは実行されない。これに対して、ここで説明する休止モードは個々のプロセスに適用され、第一のプロセスの休止は第二プロセスの実行を妨げることはない。
2. タスク完了サービス
タスク完了サービスは、フォアグラウンド状態で開始され、バックグラウンド状態にあるタスクを完了するために、限られた能力をもつプロセスを提供する。一実施例において、フォアグラウンドプロセスとの干渉を避けるために、バックグラウンドプロセス(つまり、バックグラウンド状態で実行中のプロセス)は抑制(throttle)される。このサービスの使用に適したタスクの例は、ネットワークアップロードとダウンロード動作、ディスク格納とリトリーブ動作、画像処理動作(例えば、GPUなど専用のグラフィクスハードウェアを必要としない動作)である。一実施例において、バックグラウンドプロセスは、指定されたイベントが発生するまで(上述した自身のスケジュール優先度に従いCPU時間を受け取って)処理を継続することが許される。イベントの例には、(処理を完了するために指定された時間、例えば、5から30分の「クロック」時間または5ミリ秒のCPU時間をプロセスに与える)システムタイマ、機器の外部電源の喪失、あるいは、一次または二次ディスプレイのアクティベーションが含まれる。
図2を参照すると、非フォアグラウンドアプリケーション(第二のAPP)がフォアグラウンドになる(ブロック0)ことが通知されると、タスク完了動作の例200が開始される。これは、例えば、二番目のユーザアプリケーションを開始するユーザ要求、システムアプリケーションへの移行、または、VOIPユーザアプリケーションへの着信の結果である。現在のフォアグラウンドユーザアプリケーション(第一のAPP)がバックグラウンドで実行可能なアプリケーションとして自身を指定していない場合(ブロック210のNO)、第一のAPPは非実行状態に置かれ(ブロック215)、第二のAPPがフォアグラウンドになる(ブロック220)。例えば、第一のAPPは休止される(つまり、休止状態に置かれる)。第一のAPPがバックグラウンドで実行可能なアプリケーションとして自身を指定していると、プロパティリスト(p-list)エントリかのうように(ブロック210のYES)、第一のAPPはバックグラウンド状態に置かれ、その現在の動作を完了させるために指定の時間が与えられる(ブロック225)。そして、第二のAPPがフォアグラウンドになり、実行が許可される(ブロック230)。バックグラウンドにおいて、第一のAPPは、やがて実行するためにスケジューリングされる(プロセッサスケジューリングに関する上記の議論を参照)(ブロック235)。第一のAPPは、指定されたイベントが発生するか、そのタスクを完了しないうちは、バックグラウンドにおける実行が許可される。何れかのイベントが発生するか、プロセスがそのタスクを完了すると(ブロック240と245のYES)、第一のAPPは例えば休止または終了状態である非実行状態に置かれる。何れのイベントも発生しないと(ブロック240と245のNO)、第一のAPPは実行を継続する(ブロック235)。
一実施例において、非アクティブなフォアグラウンドプロセスは、同様に、フルシステムリソースにアクセスする能力が制限される場合がある。例えば、一つ以上の非アクティブなフォアグラウンドプロセス(つまり、現在、ユーザ入力を受信していないフォアグラウンドプロセス)は、バックグラウンドプロセスに関する説明と同じように、ストレージディスク(制限2)と着信および発信ネットワークバッファ(制限3と4)のアクセス、および/または、指定されたハードウェアと対話する能力(制限8)が制限される。同様に、電力損失に関して、アクティブなフォアグラウンドプロセスを除く全フォアグラウンドプロセスが休止されるか、バックグラウンドに「プッシュ」され、その後、それらの動作(behavior)が、ここで説明したバックグラウンド処理の管理体制(regime)に従い制御される。
一実施例において、プロセスは、(例えば、ブロック210に従う動作の間に)それがタスク完了サービスの利用を望むことをプログラマティキャリに宣言する必要がある。これは例えば静的に宣言され、ユーザアプリケーションは、APIコール、プロパティリスト(p-list)エントリ、インストール時または最初の実行時にユーザが指定した変更可能な設定(changeable setting)を介して、タスク完了サービスを利用することができる。別の実施例において、タスク完了は、実行時およびコード内で、それが動作を開始したことを宣言(その後、その動作を終了したことを宣言)するアプリケーションに基づき与えられる。アプリケーションがフォアグラウンド状態を離れ、そのようなタスクが未処理である場合、アプリケーションには、それらを完了するまでのある程度の時間が与えられる。指定されたイベントの発生時、または、すぐにタスクが完了する場合、アプリケーションはサスペンドされる。さらに別の実施例において、指定された数の適切なタスクの一つを実行する任意のプロセスまたはユーザアプリケーションは、タスク完了サービス(例えば、上記動作の何れか)を利用することができる。例えば、ファイルアップロードまたはダウンロード動作を実行する任意のプロセスは、タスク完了サービスの制限に従い、バックグラウンドに置くことができる。
3. オーディオサービス
オーディオサービスは、バックグラウンド状態において、プロセスまたはアプリケーションがオーディオを再生したり録音することを許可する。一実施例において、オーディオプロセスはリアルタイムスレッドを利用し、それに応じてスケジューリングされる(図1参照)。一般に、リアルタイムプロセスはバックグラウンドに置かれると非リアルタイム優先度に降格されるが、オーディオサービスを使用するアプリケーションには当て嵌らない。記載する実施例は、フォアグラウンドプロセスとの干渉を最小化するためにオーディオアプリケーション用のリアルタイムスレッドを利用し、一度に一つのリアルタイムオーディオ処理がバックグラウンド状態で許可される。(この数が単なる例示であることが認識されるだろう。パーソナル電子機器の処理能力が充分にあれば、多数のオーディオプロセスが同時にバックグラウンドでアクティブになる。)
図3を参照すると、オーディオ動作(例えば、音楽再生または音声録音動作)を実行するフォアグラウンドユーザアプリケーションが、現在フォアグラウンドではない他のアプリケーション(第二のAPP)がフォアグラウンドになるという通知を受信した場合(ブロック305)、オーディオサービス動作の例300が開始される。そして、ユーザオーディオアプリケーションはバックグラウンドに置かれ(ブロック310)、第二のAPPはフォアグラウンドになる(ブロック315)。一実施例において、ライブラリの指定セットから実行するために、リアルタイムバックグラウンドスレッドが制限される。例えば、サードパーティのライブラリ(例えば、アプリケーション開発者によって提供されるライブラリ)を使用して、リアルタイムバックグラウンドスレッドを妨げる。後のある時点で、ユーザはバックグラウンドオーディオアプリケーションに「一時停止」コマンドを発行する(ブロック320)。応答において、ユーザバックグラウンドオーディオアプリケーションはバックグラウンド状態からサスペンド状態に移動される(ブロック325)。ユーザが「再開」コマンドを発行する(ブロック330のYES)までオーディオアプリケーションはサスペンド状態に維持され、その後、オーディオアプリケーションはバックグラウンド状態に戻され、そのオーディオ動作の実行が継続される(ブロック335)。別の実施例において、オーディオアプリケーションは、サスペンドモードよりも休止モードに置かれる。
幾つかの実施例において、プロセスは、APIコール、プロパティリスト(p-list)エントリ、あるいは、インストール時または最初の実行時にユーザが指定する変更可能な設定を介して、オーディオサービスが利用可能であることを静的に宣言する。他の実施例において、オーディオを再生または記録する任意のプロセスは、オーディオサービスをそれに適用する。これらのアプリケーションのコードを実行すると、関連するプロセスは、高速タスク切替またはタスク完了サービスに従って、オーディオ動作中にサスペンドすることができない。
4. 通知サービス
通知サービスは、どのような状態(フォアグラウンド、バックグラウンド、サスペンドまたは休止)のプロセスにも、メッセージの受信と応答を許可する。これらのメッセージは、外部ソース(「プッシュ」通知)または受信プロセス/アプリケーション自体(「ローカル」通知)に由来する。
一般に、メッセージの受信時、オペレーティングシステムモジュール(例えば、iPhone(登録商標)オペレーティングシステムの「Springboard」アプリケーション)は、ターゲットアプリケーション(つまり、通知メッセージが向けられているアプリケーション)を識別し、そのアプリケーションをバックグラウンドで起動し、復帰したアプリケーションにメッセージを渡す。別の実施例においては、メッセージの受信時、オペレーティングシステム(例えば、Springboard)が、ユーザがターゲットアプリケーション(つまり、通知メッセージが指示するアプリケーション)への切り替えを選ぶことができるようなダイアログボックスを生成する。選択されると、ターゲットアプリケーションはフォアグラウンドになる。(ターゲットアプリケーションが既にバックグラウンドにあれば、復帰の必要がないことが認識されるだろう。)その後、アプリケーションは、例えばオペレーティングシステム要求を介してユーザにダイアログを提示することを含む、メッセージに応答する機会を与えられる。そして、受信プロセスの制御は、関連するサービス(例えば、高速タスク切替、タスク完了、オーディオ、VOIP、または、位置情報とジオフェンシング(Geo-Fencing))に従って提供される。別の実施例においては、バックグラウンドプロセスあての通知は、通知受信の実質的な直後に配信されるよりも、キューされた後に(例えば、5分ごとに)配信される。
5. ネットワークサービス
ネットワークサービスは、サスペンドされたネットワークアプリケーションが通信ソケットを維持(つまり継続)することを許可する。ここで使用するネットワークアプリケーションは、ネットワーク通信ソケットを使用するユーザアプリケーションである。ネットワークアプリケーションの例はユーザVOIPアプリケーションである。従来技術において、ユーザネットワークアプリケーション/プロセスがサスペンドされると、それは通信ソケットを維持する能力を失い、その結果、通信データ(例えば、着信VOIP電話コール)を受信し続けることができない。
図4を参照すると、ユーザVOIPアプリケーションがサスペンド状態に移行する(ブロック405)ことによって開始されるVOIPサービス動作400によるネットワークサービスの動作例が示される。一実施例において、サスペンド状態への移行期にあるVOIPプロセスは、オペレーティングシステム(例えば、ネットワークデーモン経由)に「ハートビート」メッセージの送信に必要な時間間隔を指定する(ブロック410)。このデーモンは、プロセスが関連するソケットがデータを受信した場合、または、指定時間の満了においてプロセスの復帰に責任をもつ − ハートビート保守の終了。この側面のさらなる情報は、Message Notification Service Connections and Displaying Icon Badgesと題された米国特許出願公開第2009/0305732号明細書を参照。このようなアプリケーションは、その全体がここに組み込まれる。
暫くすると、ネットワークデーモンがメッセージを受信する(ブロック415)。そして、ターゲットアプリケーションが識別され(ブロック420)、バックグラウンド状態に復帰され(ブロック425)、メッセージが渡される(ブロック430)。そして、バックグラウンドVOIPアプリケーションは、メッセージ(例えば、着信VOIPコールまたは「ハートビート要求(heartbeat needed)」メッセージ)に応答する(ブロック435)。要求されたタスク(needed task)がハートビートを発行すると、VOIPアプリケーションはサスペンド状態に戻る。要求されたタスクが着信VOIPコールに応答した場合、VOIPアプリケーションは、ユーザにコールを受けるか無視するかを選択させるために、オペレーティングシステムにUIの発行を要求する。当該コールが無視される場合、VOIPアプリケーションはサスペンド状態に戻る。当該コールに応答する場合、(例えば、オペレーティングシステムが提示するUIの適切な要素をユーザが選択する手段によって)VOIPアプリケーションはフォアグラウンドになる。オペレーティングシステムデーモンは当該技術分野において周知と認識されるが、ここで説明する種類のパーソナル電子機器におけるサスペンドプロセスのためのネットワーク通信(例えば、VOIP、および、ワイファイ(wireless fidelity or WiFi))ソケットの維持は斬新である。
6. 位置情報とジオフェンシングサービス
位置情報とジオフェンシングサービスは、指定された位置イベントが発生した場合に、バックグラウンドまたはサスペンドプロセスが通知(例えば、オペレーティングシステムデーモンからのメッセージ)を受信することを許可する。位置イベントの例には、指定位置に着く、指定位置から去る、指定領域に入る、指定領域から去る、または、「重要な」距離の移動(何が「重要」かはユーザまたはユーザアプリケーションによって指定される)が含まれるが、これらに限定されない。一実施例において、プロセス/アプリケーションは、位置情報とジオフェンシング動作サービスの利用を(例えば、プロパティリスト(p-list)パラメータを経由して)プログラマティキャリに宣言する必要がある。別の実施例において、ジオフェンシング動作はプロパティリスト(p-list)エントリの使用を必要せず、すべてのジオフェンシングアプリケーションはジオフェンシングサービスを利用する。
位置情報動作において、位置追跡動作が進行中である限り、アプリケーションはバックグラウンドに維持され、システムのスケジューリング機構に従い処理時間を受け取る(上記の議論を参照)。一実施例において、追跡動作が終了するか他の方法で停止した場合、プロセスは終了される(つまり、サスペンド状態に置かれる。プロセスを終了または休止することもできる)。プロセスがメッセージに応答すると、プロセスはクエース(quiesce)される(サスペンド状態に戻る)か、次のメッセージを待つバックグラウンド状態にブロックされる。一実施例において、バックグラウンド状態で位置情報サービス(Location service)を使用するユーザアプリケーションの数は、他のシステムリソースの使用に関連する。例えば、システムメモリが不足すると、現在、位置追跡を行っているユーザアプリケーションが終了される。別の実施例において、集中型(centralized)デーモンは位置情報要求を(とくに所望の要求精度を配慮して)集約し、最もアグレッシブなモードに適したハードウェアを起動する。例えば、一つのユーザアプリケーションが3km内のユーザ位置情報を要求し(携帯電話セルベースドポジショニングが使用可能な例)、第二のユーザアプリケーションが500m内のユーザ位置情報を要求し(WiFiスキャニングが利用可能な例)、第三のアプリケーションが100m内のユーザ位置情報を要求する(GPSが必要)場合、GPSポジショニングを使用し、バックグラウンドで位置を追跡する全アプリケーションは良質な(finer)ポジショニングの利益を得る。
ジオフェンシング動作において、指定領域の境界に交差する度に、プロセスは(例えばデーモンを介して)オペレーティングシステムからメッセージを受信する。プロセスが実行中(例えば、バックグラウンドにあり時間が割り当てらている間)であれば、プロセスはメッセージを処理する機会が与えられる。アプリケーションが非処理中(例えば、バックグラウンドにあり非処理中、または、サスペンドまたは休止されている)であれば、プロセス/アプリケーションは、(バックグラウンドで)イベントを処理することが許可され、その後、復帰される。さらに、プロセスが終了されている場合、前述した通知サービスと同様に、プロセスはバックグラウンド状態に復帰される。「Location-Based Application Program Management」と題する出願番号12/123,456の関連する開示を参照。一実施例において、位置情報処理は、ユーザアプリケーションを実行するためにオペレーティングシステムを実行するプロセッサ(以下「アプリケーションプロセッサ」と呼ぶ)から分離されたプロセッサを使用し、アプリケーションプロセッサが眠っている(asleep)場合も、ここに記載された種類の位置情報とジオフェンシング動作が発生する。位置情報サービスと同様に、バックグラウンド状態でジオフェンシングサービスを利用するユーザアプリケーションの数は、他のシステムリソースの使用に関連する。例えば、システムメモリが不足すると、現在、位置追跡を行っているユーザアプリケーションは終了される。
[パーソナル電子機器のアーキテクチャ]
図5を参照すると、一つ以上の上記サービスを実装可能なパーソナル電子機器500が、それ(例えば便宜的(opportunistic)マルチタスキング)を行うことが有益な場合、一つ以上の上記制限を使用してマルチタスキング動作を可能にする一実施例が示される。図示するように、ユーザアプリケーション505Aから505Nは、標準的なオペレーティングシステムコールのためにアプリケーションランチャ510(例えば、iPhone(登録商標)オペレーティングシステムの「Springboard」)と相互作用し、上記サービスにアクセスし利用するためにマルチタスキングサービスライブラリ(MT SRV)515と相互作用する。
図6を参照すると、無線手段605と位置情報処理手段610を含む別の実施例に従うシステム600が示される。図7を参照すると、無線手段605は、受信回路700、送信回路705およびメモリ710を含む。受信回路700と送信回路705は、例えば、携帯電話網、衛星通信網、または、ディジタルコンピュータネットワーク(例えば、ローカルエリアネットワークWiFi接続を介したインターネット)に接続するために使用される。メモリ710は、受信データ、送信するデータ、および、当該技術分野において周知のオペレーショナルパラメータ情報の格納に使用される。インタフェイス715は、無線手段605と位置情報手段610の間の通信を容易にするために提供される。位置情報手段610は、プロセッサ720、メモリ725およびオペレーティングシステムインタフェイス730を含む。一般に、位置情報手段610は、(例えば、インタフェイス730を介して一つ以上のユーザアプリケーション505A-505Nから)位置情報の更新要求とジオフェンシングの制限要求を受信し、(インタフェイス715を介して)無線手段605から受信した位置情報を処理し、インタフェイス730を介して位置情報の返信および要求アプリケーションの更新を行う。プロセッサ720は、一つ以上の既製(off-the-shelf)プロセッサ、一つ以上のカスタム設計プロセッサ、または、既製およびカスタム設計プロセッサの組み合わである。メモリ725は、揮発性および不揮発性固体メモリ、磁気または光メモリの任意の形態または組み合わせである。
一実施例において、電力のアベイラビリティに基づき、一つ以上の上記サービスが提供される。例えば、パーソナル電子機器が電源(例えば、AC電源)に接続されている場合、標準的近代的なオペレーティングシステム手順(つまり、完全または無制限のマルチタスキング)に従いマルチタスキング能力が提供される。他方、パーソナル電子機器が電源に接続されていない場合、この開示(例えば、部分的または便宜的(opportunistic)マルチタスキング)に従いマルチタスキング能力が提供される。
図8を参照すると、パーソナル電子機器800は、処理部805およびサポート機器810を含む物理的装置によって組み立てることができる。処理部805は、プロセッサ815、メモリ820および入出力回路825を含む。機器800は、図示するように、さらに、無線手段605および位置情報手段610を含む。入出力回路825は、プロセッサ815およびメモリ820に接続し、一つ以上のディスプレイユニット830(例えば、タッチスクリーンディスプレイ)、一つ以上の入出力デバイス835(例えば、タッチスクリーン、キーボード、マウス、ジョイスティック)、一つ以上のプログラム格納デバイス(STRG)840(例えば、磁気、光学または固体メモリ)、および、その他のハードウェア845(例えばネットワークインタフェイス)に接続する。
図6、7、8に示すアーキテクチャにおいて、位置情報またはジオフェンシング要求を行ったアプリケーション(例えば、アプリケーション505A)がサスペンド、休止または終了されている場合でも、位置情報とジオフェンシング処理は無線手段605および位置情報手段610を介して継続される。さらに、アプリケーションプロセッサ815が休止または眠っている(asleep)場合でも、位置情報とジオフェンシング動作は継続される。すなわち、アプリケーションプロセッサ815がどの状態にあるかに関係なく、位置情報とジオフェンシング動作はプロセッサ720を介して継続される。
材料、部品、回路素子と同様に、例示した動作方法の詳細における様々な変更が、以下の特許請求の範囲から逸脱することなく可能である。この開示に従うマルチタスク能力の提供は、一つ以上のプログラムモジュールに編成された命令を実行するプログラム可能な制御デバイスによって実行される。プログラム可能な制御デバイス(例えば、プロセッサ720と215)は、例えば、Intel(登録商標)のAtom(登録商標)、Core(登録商標)、Pentium(登録商標)およびCeleron(登録商標)プロセッサファミリ、ARM(登録商標)のCoretex(登録商標)およびARM(登録商標)プロセッサファミリ、カスタム設計ステートマシンの一つ以上のメンバである任意のプログラマブルコントローラ装置を含むことができる。カスタム設計ステートマシンは、特定用途向集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)を含む集積回路のようなハードウェア機器によって組み立てられるが、それに限定されない。
プログラム命令の確実な(tangibly)収録(embeding)に適したストレージデバイス(例えばメモリ710、725、220、820)には、磁気ディスク(固定、フロッピ(登録商標)、リムーバブル)およびテープ、CD-ROMおよびディジタルビデオディスク(DVD)のような光学式メディア、並びに、消去可能なプログラマブルリードオンリメモリ(EPROM)、電気的消去が可能なプログラマブルリードオンリメモリ(EEPROM)、プログラマブルゲートアレイ、および、フラッシュデバイスなどの半導体メモリデバイスが含まれる。
最後に、上記の説明は、例示を目的とし、限定的ではないことが理解されるべきである。例えば、上記の実施例は互いに組み合わせて使用することができる。多くの他の実施例は、上記の説明をレビューする当業者には明らかだろう。従って、本発明の範囲は、添付する請求項が享受する均等物の全範囲に沿い、添付する請求項を参照して決定されるべきである。添付する請求項において、用語「including」と「in which」はそれぞれ、平易な英語の同義語である「comprising」と「wherein」として使用される。

Claims (21)

  1. 電子機器のマルチタスキング方法であって、
    電子機器において、第一のフォアグラウンド状態において第一のユーザアプリケーションのタスクを実行し、
    前記電子機器において、第二のフォアグラウンド状態において第二のユーザアプリケーションを実行するためのユーザ要求を受信し、前記ユーザ要求の受信時に前記第二のユーザアプリケーションは第一のバックグラウンド状態にあり、
    前記第一のフォアグラウンド状態において前記タスクを実行する前記第一のユーザアプリケーションから前記第一のユーザアプリケーションが第二のバックグラウンド状態において前記タスクの実行の継続が可能か否かの宣言を受信し、前記宣言は、前記第一のユーザアプリケーションの実行時に前記第一のユーザアプリケーションからのコードで受信され、
    前記ユーザ要求の受信と前記宣言の受信に応答して、前記第一のユーザアプリケーションの前記タスクの実行を継続し、前記第二のユーザアプリケーションを前記第一のバックグラウンド状態から前記第二のフォアグラウンド状態に移すとともに、前記第一のユーザアプリケーションを前記第一のフォアグラウンド状態から前記第二のバックグラウンド状態に移し
    前記電子機器において、前記第二のフォアグラウンド状態において前記第二のユーザアプリケーションを実行し、
    前記宣言の受信、前記第一のユーザアプリケーションの前記第一のフォアグラウンド状態から前記第二のバックグラウンド状態への移動、および、前記第二のユーザアプリケーションの前記第一のバックグラウンド状態から前記第二のフォアグラウンド状態への移動に基づき、前記第一のユーザアプリケーションが前記第一のフォアグラウンド状態にあった間に開始された前記タスクを完了するために前記第二のバックグラウンド状態において前記第一のユーザアプリケーションを実行状態に置き、
    (i)前記実行状態の間に前記第一のユーザアプリケーションが前記タスクの実行を完了した場合、または、(ii)前記実行状態の間に前記第一のユーザアプリケーションが所定のハードウェアリソースにアクセスを試みた場合、前記第のユーザアプリケーションを非実行状態に置く方法。
  2. さらに、前記宣言の受信に基づき、前記第一のユーザアプリケーションが前記第二のバックグラウンド状態において前記タスクの実行の継続が不可能な場合、前記第一のユーザアプリケーションを非実行状態に置く請求項1に記載された方法。
  3. さらに、前記第一のユーザアプリケーションの前記第一のフォアグラウンド状態から前記第二のバックグラウンド状態への移動に基づき、前記第一のユーザアプリケーションが所定のハードウェアリソースアクセスを試みた後、前記第一のユーザアプリケーションを非実行状態に置く請求項1に記載された方法。
  4. 前記所定のハードウェアリソースにはグラフィクス処理ユニットが含まれる請求項3に記載された方法。
  5. 前記所定のハードウェアリソースにはカメラデバイスが含まれる請求項3に記載された方法。
  6. さらに、前記第一のユーザアプリケーションの前記第一のフォアグラウンド状態から前記第二のバックグラウンド状態への移動に基づき、前記第一のユーザアプリケーション前記タスクを完了した後、前記第一のユーザアプリケーションを前記実行状態からサスペンド状態に移請求項1に記載された方法。
  7. さらに、前記実行状態の間所定の時間、前記第一のユーザアプリケーション前記タスクの実行を継続した後、前記第一のユーザアプリケーションを前記実行状態からサスペンド状態に移す請求項1に記載された方法。
  8. 前記第一のユーザアプリケーションの前記第一のフォアグラウンド状態から前記前記第二のバックグラウンド状態への動時、前記第一のユーザアプリケーションは、ネットワークアップロード動作、ネットワークダウンロード動作、ディスク格納動作およびディスクリトリーブ動作から構成されるグループから選択された前記タスクを実行している請求項1に記載された方法。
  9. さらに、前記第一のユーザアプリケーションが共有システムリソースを獲得する場合、前記第一のユーザアプリケーションを前記第二のバックグラウンド状態から終了状態に移す請求項1に記載された方法。
  10. 前記共有システムリソースは共有ファイルディスクリプタを有す請求項9に記載された方法。
  11. プログラマブル制御デバイスに請求項1に従う方法を実行させるための命令が格納された前記プログラマブル制御デバイスが読み取り可能なプログラム格納デバイス。
  12. メモリと、
    前記メモリに格納されたコンピュータプログラム命令と、
    前記メモリに接続されたプログラマブル制御デバイスとを有するパーソナル電子機器であって、前記コンピュータプログラム命令を実行する前記プログラマブル制御デバイスは、
    前記パーソナル電子機器において、第一のフォアグラウンド状態において第一のユーザアプリケーションのタスクを実行し、
    前記パーソナル電子機器において、第二のフォアグラウンド状態において第二のユーザアプリケーションを実行するためのユーザ要求を受信し、前記ユーザ要求の受信時に前記第二のユーザアプリケーションは第一のバックグラウンド状態にあり、
    前記第一のフォアグラウンド状態において前記タスクを実行する前記第一のユーザアプリケーションから前記第一のユーザアプリケーションが第二のバックグラウンド状態において前記タスクの実行の継続が可能か否かの宣言を受信し、前記宣言は、前記第一のユーザアプリケーションの実行時に前記第一のユーザアプリケーションからのコードで受信され、
    前記ユーザ要求の受信と前記宣言の受信に応答して、前記第一のユーザアプリケーションの前記タスクの実行を継続し、前記第二のユーザアプリケーションを前記第一のバックグラウンド状態から前記第二のフォアグラウンド状態に移すとともに、前記第一のユーザアプリケーションを前記第一のフォアグラウンド状態から前記第二のバックグラウンド状態に移し
    前記パーソナル電子機器において、前記第二のフォアグラウンド状態において前記第二のユーザアプリケーションを実行し、
    前記宣言の受信、前記第一のユーザアプリケーションの前記第一のフォアグラウンド状態から前記第二のバックグラウンド状態への移動、および、前記第二のユーザアプリケーションの前記第一のバックグラウンド状態から前記第二のフォアグラウンド状態への移動に基づき、(i)実行状態の間に前記第一のユーザアプリケーションが前記タスクの実行を完了した場合、または、(ii)前記実行状態の間に前記第一のユーザアプリケーションが所定のハードウェアリソースにアクセスを試みた場合、前記第のユーザアプリケーションを非実行状態に置くパーソナル電子機器。
  13. 前記パーソナル電子機器は、携帯電話、パーソナルディジタルアシスタント、ハンドヘルドエンターテイメント機器、パッドコンピュータシステムおよびセットトップボックスから構成されるグループから選択されたパーソナル電子機器である請求項12に記載されたパーソナル電子機器。
  14. パーソナル電子機器のマルチタスキング方法であって、
    パーソナル電子機器において、第一のフォアグラウンド状態において第一のユーザアプリケーションのオーディオ動作を実行し、
    前記パーソナル電子機器において、第二のフォアグラウンド状態において第二のユーザアプリケーションを実行するためのユーザ要求を受信し、前記第二のユーザアプリケーションを実行するための前記ユーザ要求の受信時に前記第二のユーザアプリケーションは第一のバックグラウンド状態にあり、
    前記第一のフォアグラウンド状態において前記オーディオ動作を実行する前記第一のユーザアプリケーションから前記第一のユーザアプリケーションが第二のバックグラウンド状態において前記オーディオ動作の実行の継続が可能か否かの宣言を受信し、前記宣言は、前記第一のユーザアプリケーションの実行時に前記第一のユーザアプリケーションからのコードで受信され、
    前記第二のユーザアプリケーションを実行するための前記ユーザ要求の受信と前記宣言の受信に応答して、前記第一のユーザアプリケーションの前記オーディオ動作の実行を継続し、前記第二のユーザアプリケーションを前記第一のバックグラウンド状態から前記第二のフォアグラウンド状態に移すとともに、前記第一のユーザアプリケーションを前記第一のフォアグラウンド状態から前記第二のバックグラウンド状態に移し
    前記パーソナル電子機器において、前記第二のフォアグラウンド状態において前記第二のユーザアプリケーションを実行し
    前記パーソナル電子機器において、前記オーディオ動作を一時停止するためのユーザ要求を受信し、
    前記オーディオ動作を一時停止するためのユーザ要求の受信に応答して前記第一のユーザアプリケーションを非実行状態に置く方法。
  15. 前記第一のユーザアプリケーションを非実行状態に置く処理は、前記第一のユーザアプリケーションをサスペンド状態に置くことを含む請求項14に記載された方法。
  16. さらに、前記パーソナル電子機器において、前記第一のユーザアプリケーションの前記オーディオ動作の実行を継続するためのユーザ要求を受信し、
    前記第一のユーザアプリケーションの前記オーディオ動作の実行を継続するための前記ユーザ要求の受信に応答して、前記オーディオ動作の実行を継続するために、前記第一のユーザアプリケーションを前記非実行状態から前記第二のバックグラウンド状態に移す請求項14に記載された方法。
  17. 前記オーディオ動作実行はオーディオ信号の生成を含む請求項14に記載された方法。
  18. 前記オーディオ動作実行はオーディオ信号の記録を含む請求項14に記載された方法。
  19. プログラマブル制御デバイスに請求項14に従う方法を実行させるための命令が格納された前記プログラマブル制御デバイスが読み取り可能なプログラム格納デバイス。
  20. メモリと、
    前記メモリに格納されたコンピュータプログラム命令と、
    前記メモリに接続されプログラマブル制御デバイスとを有するパーソナル電子機器であって、前記コンピュータプログラム命令を実行する前記プログラマブル制御デバイスは、
    パーソナル電子機器において、第一のフォアグラウンド状態において第一のユーザアプリケーションのオーディオ動作を実行し、
    前記パーソナル電子機器において、第二のフォアグラウンド状態において第二のユーザアプリケーションを実行するためのユーザ要求を受信し、前記第二のユーザアプリケーションを実行するための前記ユーザ要求の受信時に前記第二のユーザアプリケーションは第一のバックグラウンド状態にあり、
    前記第一のフォアグラウンド状態において前記オーディオ動作を実行する前記第一のユーザアプリケーションから前記第一のユーザアプリケーションが第二のバックグラウンド状態において前記オーディオ動作の実行の継続が可能か否かの宣言を受信し、前記宣言は、前記第一のユーザアプリケーションの実行時に前記第一のユーザアプリケーションからのコードで受信され、
    前記第二のユーザアプリケーションを実行するための前記ユーザ要求の受信と前記宣言の受信に応答して、前記第一のユーザアプリケーションの前記オーディオ動作の実行を継続し、前記第二のユーザアプリケーションを前記第一のバックグラウンド状態から前記第二のフォアグラウンド状態に移すとともに、前記第一のユーザアプリケーションを前記第一のフォアグラウンド状態から前記第二のバックグラウンド状態に移し
    前記パーソナル電子機器において、前記第二のフォアグラウンド状態において前記第二のユーザアプリケーションを実行し
    前記パーソナル電子機器において、前記オーディオ動作を一時停止するためのユーザ要求を受信し、
    前記オーディオ動作を一時停止するためのユーザ要求の受信に応答して前記第一のユーザアプリケーションを非実行状態に置くパーソナル電子機器。
  21. 前記パーソナル電子機器は、携帯電話、パーソナルディジタルアシスタント、ハンドヘルドエンターテイメント機器、パッドコンピュータシステムおよびセットトップボックスから構成されるグループから選択されたパーソナル電子機器である請求項20に記載されたパーソナル電子機器。
JP2013503719A 2010-04-07 2010-09-22 便宜的マルチタスキング Active JP5723968B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US32161610P 2010-04-07 2010-04-07
US61/321,616 2010-04-07
PCT/US2010/049816 WO2011126499A2 (en) 2010-04-07 2010-09-22 Opportunistic multitasking

Publications (3)

Publication Number Publication Date
JP2013524362A JP2013524362A (ja) 2013-06-17
JP2013524362A5 JP2013524362A5 (ja) 2013-11-07
JP5723968B2 true JP5723968B2 (ja) 2015-05-27

Family

ID=43501035

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013503719A Active JP5723968B2 (ja) 2010-04-07 2010-09-22 便宜的マルチタスキング

Country Status (10)

Country Link
US (5) US20110252422A1 (ja)
EP (2) EP3508975A1 (ja)
JP (1) JP5723968B2 (ja)
KR (1) KR101724176B1 (ja)
CN (2) CN102298538B (ja)
AU (1) AU2010350737A1 (ja)
CA (2) CA2988269C (ja)
DE (1) DE112010005473T5 (ja)
TW (1) TW201135445A (ja)
WO (1) WO2011126499A2 (ja)

Families Citing this family (147)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1814474B1 (en) 2004-11-24 2011-09-14 Samy Abdou Devices for inter-vertebral orthopedic device placement
US8589541B2 (en) 2009-01-28 2013-11-19 Headwater Partners I Llc Device-assisted services for protecting network capacity
US8832777B2 (en) 2009-03-02 2014-09-09 Headwater Partners I Llc Adapting network policies based on device service processor configuration
US8391834B2 (en) 2009-01-28 2013-03-05 Headwater Partners I Llc Security techniques for device assisted services
US8275830B2 (en) 2009-01-28 2012-09-25 Headwater Partners I Llc Device assisted CDR creation, aggregation, mediation and billing
US8406748B2 (en) 2009-01-28 2013-03-26 Headwater Partners I Llc Adaptive ambient services
US8799451B2 (en) 2009-01-28 2014-08-05 Headwater Partners I Llc Verifiable service policy implementation for intermediate networking devices
US8346225B2 (en) 2009-01-28 2013-01-01 Headwater Partners I, Llc Quality of service for device assisted services
US8402111B2 (en) 2009-01-28 2013-03-19 Headwater Partners I, Llc Device assisted services install
US10798252B2 (en) 2009-01-28 2020-10-06 Headwater Research Llc System and method for providing user notifications
US9955332B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Method for child wireless device activation to subscriber account of a master wireless device
US11973804B2 (en) 2009-01-28 2024-04-30 Headwater Research Llc Network service plan design
US10492102B2 (en) 2009-01-28 2019-11-26 Headwater Research Llc Intermediate networking devices
US10237757B2 (en) 2009-01-28 2019-03-19 Headwater Research Llc System and method for wireless network offloading
US9706061B2 (en) 2009-01-28 2017-07-11 Headwater Partners I Llc Service design center for device assisted services
US10715342B2 (en) 2009-01-28 2020-07-14 Headwater Research Llc Managing service user discovery and service launch object placement on a device
US11985155B2 (en) 2009-01-28 2024-05-14 Headwater Research Llc Communications device with secure data path processing agents
US10200541B2 (en) 2009-01-28 2019-02-05 Headwater Research Llc Wireless end-user device with divided user space/kernel space traffic policy system
US10064055B2 (en) 2009-01-28 2018-08-28 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US9270559B2 (en) 2009-01-28 2016-02-23 Headwater Partners I Llc Service policy implementation for an end-user device having a control application or a proxy agent for routing an application traffic flow
US9572019B2 (en) 2009-01-28 2017-02-14 Headwater Partners LLC Service selection set published to device agent with on-device service selection
US9565707B2 (en) 2009-01-28 2017-02-07 Headwater Partners I Llc Wireless end-user device with wireless data attribution to multiple personas
US10484858B2 (en) 2009-01-28 2019-11-19 Headwater Research Llc Enhanced roaming services and converged carrier networks with device assisted services and a proxy
US10779177B2 (en) 2009-01-28 2020-09-15 Headwater Research Llc Device group partitions and settlement platform
US9609510B2 (en) 2009-01-28 2017-03-28 Headwater Research Llc Automated credential porting for mobile devices
US9980146B2 (en) 2009-01-28 2018-05-22 Headwater Research Llc Communications device with secure data path processing agents
US10841839B2 (en) 2009-01-28 2020-11-17 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US10326800B2 (en) 2009-01-28 2019-06-18 Headwater Research Llc Wireless network service interfaces
US10248996B2 (en) 2009-01-28 2019-04-02 Headwater Research Llc Method for operating a wireless end-user device mobile payment agent
US11218854B2 (en) 2009-01-28 2022-01-04 Headwater Research Llc Service plan design, user interfaces, application programming interfaces, and device management
US10264138B2 (en) 2009-01-28 2019-04-16 Headwater Research Llc Mobile device and service management
US9392462B2 (en) 2009-01-28 2016-07-12 Headwater Partners I Llc Mobile end-user device with agent limiting wireless data communication for specified background applications based on a stored policy
US9954975B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Enhanced curfew and protection associated with a device group
US10783581B2 (en) 2009-01-28 2020-09-22 Headwater Research Llc Wireless end-user device providing ambient or sponsored services
JP5289153B2 (ja) * 2009-04-14 2013-09-11 キヤノン株式会社 情報処理装置及びその制御方法、並びにコンピュータプログラム
US8764806B2 (en) 2009-12-07 2014-07-01 Samy Abdou Devices and methods for minimally invasive spinal stabilization and instrumentation
US8634860B2 (en) 2010-01-15 2014-01-21 Apple Inc. Location determination using cached location area codes
US8660576B2 (en) 2010-01-15 2014-02-25 Apple Inc. Adaptive location determination
US8655371B2 (en) 2010-01-15 2014-02-18 Apple Inc. Location determination using cached location area codes
US8433334B2 (en) 2010-01-15 2013-04-30 Apple Inc. Managing a location database for network-based positioning system
US8504059B2 (en) 2010-01-15 2013-08-06 Apple Inc. Location filtering using mobile country code
JP5590114B2 (ja) * 2010-03-11 2014-09-17 富士通株式会社 ソフトウェア制御装置、ソフトウェア制御方法、およびソフトウェア制御プログラム
US8620344B2 (en) 2010-04-07 2013-12-31 Apple Inc. Location-based application program management
US20110252422A1 (en) 2010-04-07 2011-10-13 Apple Inc. Opportunistic Multitasking
US11595901B2 (en) 2010-07-26 2023-02-28 Seven Networks, Llc Optimizing mobile network traffic coordination across multiple applications running on a mobile device
US20120149352A1 (en) 2010-07-26 2012-06-14 Ari Backholm Context aware traffic management for resource conservation in a wireless network
US8886773B2 (en) 2010-08-14 2014-11-11 The Nielsen Company (Us), Llc Systems, methods, and apparatus to monitor mobile internet activity
US9501100B2 (en) * 2010-09-30 2016-11-22 Apple Inc. Communicating sensor data between electronic devices
TWI546700B (zh) * 2011-01-13 2016-08-21 宏達國際電子股份有限公司 手持電子裝置及其控制方法與電腦程式產品
US9342381B2 (en) * 2011-02-03 2016-05-17 Symantec Corporation Method and system for establishing a DLP-compliant environment
US10631246B2 (en) 2011-02-14 2020-04-21 Microsoft Technology Licensing, Llc Task switching on mobile devices
US9032413B2 (en) * 2011-09-01 2015-05-12 Microsoft Technology Licensing, Llc Decoupling background work and foreground work
US8578394B2 (en) * 2011-09-09 2013-11-05 Microsoft Corporation Exempting applications from suspension
US20130067050A1 (en) * 2011-09-11 2013-03-14 Microsoft Corporation Playback manager
US8845728B1 (en) 2011-09-23 2014-09-30 Samy Abdou Spinal fixation devices and methods of use
US9042286B2 (en) * 2011-11-04 2015-05-26 Intel Corporation Reducing wireless power consumption and signaling overhead for internet application background messages
DE202012100620U1 (de) 2011-11-22 2012-06-13 Square, Inc. System zur Bearbeitung von kartenlosen Bezahlungstransaktionen
US9164803B2 (en) 2012-01-20 2015-10-20 Microsoft Technology Licensing, Llc Background task resource control
US20130212600A1 (en) * 2012-02-15 2013-08-15 Microsoft Corporation Constrained mode for running applications
US20130226240A1 (en) 2012-02-22 2013-08-29 Samy Abdou Spinous process fixation devices and methods of use
US8793697B2 (en) 2012-02-23 2014-07-29 Qualcomm Incorporated Method and system for scheduling requests in a portable computing device
CN103293967A (zh) * 2012-02-29 2013-09-11 陕西省地方电力(集团)有限公司 一种用于智能抄表终端的多任务控制方法
US9741045B1 (en) * 2012-03-16 2017-08-22 Square, Inc. Ranking of merchants for cardless payment transactions
US9411637B2 (en) 2012-06-08 2016-08-09 Apple Inc. Adaptive process importance
US9319246B2 (en) * 2012-06-25 2016-04-19 Microsoft Technology Licensing, Llc Voice-over-internet protocol (VOIP) application platform
US9191417B2 (en) * 2012-06-28 2015-11-17 Microsoft Technology Licensing, Llc Cross-process media handling in a voice-over-internet protocol (VOIP) application platform
US8789055B1 (en) 2012-08-01 2014-07-22 Kabam, Inc. Maintaining time fidelity for an instance of a virtual space placed in a background state
US9736265B2 (en) * 2012-08-09 2017-08-15 Facebook, Inc. Handling notifications
US9198767B2 (en) 2012-08-28 2015-12-01 Samy Abdou Devices and methods for spinal stabilization and instrumentation
CN103631654A (zh) * 2012-08-29 2014-03-12 中国移动通信集团公司 一种应用切换控制方法、装置及业务受理终端
US9320617B2 (en) 2012-10-22 2016-04-26 Cogent Spine, LLC Devices and methods for spinal stabilization and instrumentation
US9258172B2 (en) * 2012-10-24 2016-02-09 Microsoft Technology Licensing, Llc Calling an unready terminal
US11449854B1 (en) 2012-10-29 2022-09-20 Block, Inc. Establishing consent for cardless transactions using short-range transmission
CN102984582B (zh) * 2012-11-12 2016-05-11 北京奇虎科技有限公司 搭载操作系统的智能电视系统管理方法及装置
CN102981906A (zh) * 2012-11-16 2013-03-20 广东欧珀移动通信有限公司 一种应用程序后台进程管理方法及装置
US9264850B1 (en) 2012-11-20 2016-02-16 Square, Inc. Multiple merchants in cardless payment transactions and multiple customers in cardless payment transactions
JP6070150B2 (ja) * 2012-12-14 2017-02-01 富士通株式会社 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
EP2763372B1 (en) * 2013-02-01 2017-05-10 HTC Corporation Electronic apparatus, computer-readable medium and data synchronization method
US9652791B1 (en) 2013-02-08 2017-05-16 Square, Inc. Updating merchant location for cardless payment transactions
US10356579B2 (en) * 2013-03-15 2019-07-16 The Nielsen Company (Us), Llc Methods and apparatus to credit usage of mobile devices
KR102083316B1 (ko) * 2013-04-24 2020-04-14 삼성전자주식회사 사용자 디바이스의 메모리 관리 방법 및 장치
KR102089447B1 (ko) 2013-06-04 2020-03-16 삼성전자 주식회사 전자 기기 및 그의 애플리케이션 제어 방법
US9336068B2 (en) * 2013-06-07 2016-05-10 Apple Inc. Throttling of application access to resources
CN105637926B (zh) 2013-06-11 2019-06-21 七网络有限责任公司 将应用流量分载至共享通信信道进行无线网络中的信令优化用于使用专有和非专有协议的流量
CN104252389B (zh) * 2013-06-27 2016-04-13 腾讯科技(深圳)有限公司 应用程序运行方法、系统
CN105339898B (zh) * 2013-07-23 2019-08-06 英特尔公司 操作系统切换方法及装置
US9924322B2 (en) 2013-07-23 2018-03-20 Square, Inc. Computing distances of devices
US9286097B2 (en) 2013-07-23 2016-03-15 Intel Corporation Switching a first OS in a foreground to a standby state in response to a system event and resuming a second OS from a background
US10332162B1 (en) 2013-09-30 2019-06-25 Square, Inc. Using wireless beacons for transit systems
US10319013B2 (en) 2013-10-28 2019-06-11 Square, Inc. Electronic ordering system
US10163148B1 (en) 2013-11-13 2018-12-25 Square, Inc. Wireless beacon shopping experience
JP2015106167A (ja) * 2013-11-28 2015-06-08 ソニー株式会社 情報処理装置、情報処理方法および記憶媒体
CN104679581B (zh) * 2013-12-03 2018-06-15 腾讯科技(深圳)有限公司 后台运行程序的方法及装置
KR102148948B1 (ko) * 2013-12-06 2020-08-27 삼성전자주식회사 전자 장치의 멀티 태스킹 방법 및 그 전자 장치
CN104699218B (zh) 2013-12-10 2019-04-19 华为终端(东莞)有限公司 一种任务管理方法及设备
CN103702195B (zh) * 2013-12-27 2017-12-08 乐视致新电子科技(天津)有限公司 一种应用程序的进程控制方法和装置
CN104850373A (zh) * 2014-02-18 2015-08-19 中兴通讯股份有限公司 一种分屏处理方法和装置
WO2015130022A1 (ko) * 2014-02-26 2015-09-03 엘지전자 주식회사 디지털 디바이스 및 상기 디지털 디바이스에서 데이터 처리 방법
KR102311248B1 (ko) * 2014-02-26 2021-10-12 엘지전자 주식회사 디지털 디바이스 및 상기 디지털 디바이스에서 비디오 데이터 처리 방법
JP6403976B2 (ja) * 2014-04-09 2018-10-10 アルパイン株式会社 コンピュータプログラム、情報処理装置及び処理実行方法
TWI602125B (zh) * 2014-04-17 2017-10-11 國立臺灣大學 資源分配方法
US10026083B1 (en) 2014-05-11 2018-07-17 Square, Inc. Tab for a venue
CN104050035B (zh) * 2014-05-14 2018-05-25 小米科技有限责任公司 应用程序的处理方法及装置
CN105335171B (zh) * 2014-06-24 2019-05-10 北京奇虎科技有限公司 应用程序常驻操作系统后台的方法及装置
EP3074868A1 (en) * 2014-07-03 2016-10-05 Spotify AB A method and system for the identification of music or other audio metadata played on an ios device
US9762688B2 (en) 2014-10-31 2017-09-12 The Nielsen Company (Us), Llc Methods and apparatus to improve usage crediting in mobile devices
US9924017B2 (en) * 2015-05-28 2018-03-20 Livio, Inc. Methods and systems for a vehicle computing system to launch an application
US10127509B2 (en) 2015-09-17 2018-11-13 Bank Of America Corporation System for temporarily suspending a workflow associated with a work item
US10857003B1 (en) 2015-10-14 2020-12-08 Samy Abdou Devices and methods for vertebral stabilization
CN105677460B (zh) * 2015-12-28 2019-07-23 小米科技有限责任公司 应用程序处理方法以及装置
JP6069553B1 (ja) * 2016-02-04 2017-02-01 京セラ株式会社 通信装置、通信制御方法、およびプログラム
US10162653B2 (en) 2016-03-31 2018-12-25 Vmware, Inc. Capturing components of an application using a sandboxed environment
CN106095482A (zh) * 2016-05-31 2016-11-09 宇龙计算机通信科技(深圳)有限公司 应用程序的冻结方法及装置
CN106095551B (zh) * 2016-06-07 2020-10-30 腾讯科技(深圳)有限公司 展示媒体文件的方法和装置
US10223228B2 (en) 2016-08-12 2019-03-05 International Business Machines Corporation Resolving application multitasking degradation
US20180063670A1 (en) * 2016-08-26 2018-03-01 Microsoft Technology Licensing, Llc Background management of mobile applications
CN106648849A (zh) * 2016-10-18 2017-05-10 上海传英信息技术有限公司 进程的冷冻方法和移动终端
US10973648B1 (en) 2016-10-25 2021-04-13 Samy Abdou Devices and methods for vertebral bone realignment
US10744000B1 (en) 2016-10-25 2020-08-18 Samy Abdou Devices and methods for vertebral bone realignment
CN108011772A (zh) * 2016-11-01 2018-05-08 中兴通讯股份有限公司 一种sbc对终端心跳检测的方法、装置及会话边界控制器
EP3523950A4 (en) * 2016-11-21 2019-10-02 Samsung Electronics Co., Ltd. METHOD AND APPARATUS FOR GENERATING A STATE
US10860369B2 (en) * 2017-01-11 2020-12-08 International Business Machines Corporation Self-adjusting system for prioritizing computer applications
KR102365649B1 (ko) 2017-06-28 2022-02-22 삼성전자주식회사 화면 제어 방법 및 이를 지원하는 전자 장치
CN107402807A (zh) * 2017-07-18 2017-11-28 浪潮金融信息技术有限公司 在计算机系统中有效提升多任务执行效率的方法、系统和处理器
JP2020537211A (ja) * 2017-10-13 2020-12-17 ホアウェイ・テクノロジーズ・カンパニー・リミテッド アプリケーション管理方法および端末
US11915012B2 (en) 2018-03-05 2024-02-27 Tensera Networks Ltd. Application preloading in the presence of user actions
US11922187B2 (en) 2018-03-05 2024-03-05 Tensera Networks Ltd. Robust application preloading with accurate user experience
US11792307B2 (en) 2018-03-28 2023-10-17 Apple Inc. Methods and apparatus for single entity buffer pool management
KR102492996B1 (ko) * 2018-06-08 2023-01-31 삼성전자주식회사 외부 입력을 이용하여 백그라운드 태스크를 처리하는 전자 장치 및 그 저장 매체
CN109299600B (zh) * 2018-08-02 2021-07-13 珠海格力电器股份有限公司 一种应用锁定解锁方法、装置、终端及可读存储介质
US11179248B2 (en) 2018-10-02 2021-11-23 Samy Abdou Devices and methods for spinal implantation
CN109857530B (zh) * 2019-01-21 2021-09-03 湖北亿咖通科技有限公司 一种应用请求调度方法及装置
CN112256119A (zh) * 2019-07-02 2021-01-22 中兴通讯股份有限公司 应用程序冷冻控制方法、装置、终端及可读存储介质
WO2021019415A1 (en) 2019-07-30 2021-02-04 Tensera Networks Ltd. Pre-rendering of application user-interfaces in user devices
CN112558745A (zh) * 2019-09-24 2021-03-26 中兴通讯股份有限公司 终端应用程序冷冻控制的方法、装置、终端及存储介质
US11558348B2 (en) 2019-09-26 2023-01-17 Apple Inc. Methods and apparatus for emerging use case support in user space networking
US11829303B2 (en) 2019-09-26 2023-11-28 Apple Inc. Methods and apparatus for device driver operation in non-kernel space
US10863580B1 (en) * 2020-05-14 2020-12-08 Accenture Global Solutions Limited Continuous short range wireless communication detection for user devices using a background application
US11606302B2 (en) 2020-06-12 2023-03-14 Apple Inc. Methods and apparatus for flow-based batching and processing
CN111880875B (zh) * 2020-07-15 2023-12-22 百度在线网络技术(北京)有限公司 多媒体播放的控制方法、装置、设备、存储介质和系统
US11775359B2 (en) 2020-09-11 2023-10-03 Apple Inc. Methods and apparatuses for cross-layer processing
US11954540B2 (en) 2020-09-14 2024-04-09 Apple Inc. Methods and apparatus for thread-level execution in non-kernel space
US11799986B2 (en) 2020-09-22 2023-10-24 Apple Inc. Methods and apparatus for thread level execution in non-kernel space
WO2022130156A1 (en) * 2020-12-20 2022-06-23 Tensera Networks Ltd. Preloading of applications transparently to user
CN113542782B (zh) * 2021-07-06 2023-11-03 腾讯音乐娱乐科技(深圳)有限公司 引导直播互动的方法、装置、电子设备及存储介质
US11882051B2 (en) 2021-07-26 2024-01-23 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
US11876719B2 (en) 2021-07-26 2024-01-16 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694603A (en) * 1982-09-28 1997-12-02 Reiffin; Martin G. Computer memory product with preemptive multithreading software
US5012409A (en) 1988-03-10 1991-04-30 Fletcher Mitchell S Operating system for a multi-tasking operating environment
TW278291B (ja) * 1992-06-30 1996-06-11 Motorola Inc
US5410543A (en) 1993-01-04 1995-04-25 Apple Computer, Inc. Method for connecting a mobile computer to a computer network by using an address server
US5428789A (en) * 1993-08-27 1995-06-27 Waldron, Iii; Theodore C. Method and apparatus for optimizing user response time in a priority preemptive operating system
US5542088A (en) 1994-04-29 1996-07-30 Intergraph Corporation Method and apparatus for enabling control of task execution
US5911077A (en) 1996-05-31 1999-06-08 Micron Electronics, Inc. System for multithreaded disk drive operation in a computer system
US7444641B1 (en) * 1998-03-10 2008-10-28 Agere Systems Inc. Context controller having context-specific event selection mechanism and processor employing the same
US6205468B1 (en) 1998-03-10 2001-03-20 Lucent Technologies, Inc. System for multitasking management employing context controller having event vector selection by priority encoding of contex events
US6260150B1 (en) 1998-03-10 2001-07-10 Agere Systems Guardian Corp. Foreground and background context controller setting processor to power saving mode when all contexts are inactive
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US7847833B2 (en) * 2001-02-07 2010-12-07 Verisign, Inc. Digital camera device providing improved methodology for rapidly taking successive pictures
US6823517B1 (en) 2000-01-27 2004-11-23 Andrew E. Kalman Multi-tasking-real-time operating system for microprocessors with limited memory that constrains context switching to occur only at task level
US6598143B1 (en) * 2000-02-24 2003-07-22 International Business Machines Corporation Method to increase performance of acquiring free memory pages
US6910212B2 (en) * 2000-12-04 2005-06-21 International Business Machines Corporation System and method for improved complex storage locks
US7082492B2 (en) * 2002-08-10 2006-07-25 Cisco Technology, Inc. Associative memory entries with force no-hit and priority indications of particular use in implementing policy maps in communication devices
TW579466B (en) 2002-08-12 2004-03-11 Mitac Int Corp Method for improving overall working efficiency of data storage device in multi-task operation environment
JP4343112B2 (ja) 2002-11-04 2009-10-14 リサーチ イン モーション リミテッド 無線通信装置バッテリ消費方法およびシステム
US7444637B2 (en) * 2003-02-18 2008-10-28 Microsoft Corporation Systems and methods for scheduling coprocessor resources in a computing system
GB0316080D0 (en) * 2003-07-09 2003-08-13 Nokia Corp Service halt
US20050026654A1 (en) * 2003-07-30 2005-02-03 Motorola, Inc. Dynamic application resource management
TWI255423B (en) 2003-12-26 2006-05-21 Mitac Int Corp Method of wake-up and instantly initiating application program for computer system
US7383463B2 (en) * 2004-02-04 2008-06-03 Emc Corporation Internet protocol based disaster recovery of a server
US7457484B2 (en) * 2004-06-23 2008-11-25 Creative Technology Ltd Method and device to process digital media streams
WO2006003681A1 (en) 2004-07-01 2006-01-12 H3G S.P.A. Method, terminal and system for providing video, audio and text contents in mobile telephone networks
US20060106807A1 (en) 2004-11-18 2006-05-18 Microsoft Corporation System and method for transferring a file in advance of its use
US7826874B2 (en) * 2004-11-24 2010-11-02 Research In Motion Limited System and method for selectively activating a communication device
JP2006209560A (ja) 2005-01-28 2006-08-10 Kyocera Corp 携帯端末装置とその表示方法
US7895594B2 (en) 2005-03-28 2011-02-22 Freescale Semiconductor, Inc. Virtual machine extended capabilities using application contexts in a resource-constrained device
WO2007024035A1 (en) 2005-08-26 2007-03-01 Ktf Technologies, Inc. User terminal for performing a plurality of applications simultaneously
US7689838B2 (en) 2005-12-22 2010-03-30 Intel Corporation Method and apparatus for providing for detecting processor state transitions
US7987160B2 (en) 2006-01-30 2011-07-26 Microsoft Corporation Status tool to expose metadata read and write queues
US20070197196A1 (en) * 2006-02-22 2007-08-23 Michael Shenfield Apparatus, and associated method, for facilitating delivery and processing of push content
US7561901B2 (en) 2006-05-15 2009-07-14 Telefonaktiebolaget Lm Ericsson (Publ) Adaptation of push mail filters to save UE battery power
JP2007316721A (ja) 2006-05-23 2007-12-06 Toshiba Corp 携帯端末
US20070299812A1 (en) 2006-06-26 2007-12-27 Datallegro, Inc. Workload manager for relational database management systems
US8112755B2 (en) 2006-06-30 2012-02-07 Microsoft Corporation Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources
KR20080009415A (ko) 2006-07-24 2008-01-29 엘지전자 주식회사 백그라운드 태스크 제어 방법 및 이를 수행하기 위한이동통신 단말기
JP4769669B2 (ja) * 2006-09-07 2011-09-07 富士通株式会社 モバイルipに準拠する移動通信システム、ホームエージェント、モバイルノード及び方法
US7962911B2 (en) 2007-02-02 2011-06-14 International Business Machines Corporation Method and apparatus for preventing undesired termination of a process in an information handling system
GB0712199D0 (en) 2007-06-23 2007-08-01 Calnex Solutions Ltd Network tester
US20090028127A1 (en) 2007-07-26 2009-01-29 Gordon Kent Walker Methods and apparatus for providing computational load allocation in a network environment
US7904673B2 (en) 2007-11-20 2011-03-08 Seagate Technology Llc Data storage device with histogram of idle time and scheduling of background and foreground jobs
US8239861B2 (en) * 2008-02-07 2012-08-07 Arm Limited Software-based unloading and reloading of an inactive function to reduce memory usage of a data processing task performed using a virtual machine
US8818934B2 (en) 2008-03-13 2014-08-26 Oracle International Corporation Transparent support for distributed transactions in a clustered disk-sharing database environment
US20090286490A1 (en) 2008-05-19 2009-11-19 Yuan-Hung Chung Oscillator circuit, transceiver, and method for generating oscillatory signal
US8135392B2 (en) 2008-06-06 2012-03-13 Apple Inc. Managing notification service connections and displaying icon badges
US9027027B2 (en) 2008-06-09 2015-05-05 Microsoft Technology Licensing, Llc Thread management based on device power state
US8893156B2 (en) * 2009-03-24 2014-11-18 Microsoft Corporation Monitoring of distributed applications
US8683472B2 (en) 2009-09-01 2014-03-25 International Business Machines Corporation Adjusting thread priority to optimize computer system performance and the utilization of computer system resources
CN101667208B (zh) 2009-09-25 2013-06-26 深圳创维数字技术股份有限公司 数字电视接收机及其节目搜索、节目切换方法
US20110252422A1 (en) 2010-04-07 2011-10-13 Apple Inc. Opportunistic Multitasking

Also Published As

Publication number Publication date
DE112010005473T5 (de) 2013-01-24
US9104476B2 (en) 2015-08-11
JP2013524362A (ja) 2013-06-17
CA2795489A1 (en) 2011-10-13
CA2988269A1 (en) 2011-10-13
CN102298538B (zh) 2014-03-26
CA2988269C (en) 2019-05-07
CN103955403A (zh) 2014-07-30
WO2011126499A3 (en) 2012-04-19
US20110249668A1 (en) 2011-10-13
TW201135445A (en) 2011-10-16
US20110252429A1 (en) 2011-10-13
US9135059B2 (en) 2015-09-15
AU2010350737A1 (en) 2012-11-29
US20110252422A1 (en) 2011-10-13
CN102298538A (zh) 2011-12-28
WO2011126499A2 (en) 2011-10-13
KR20130048290A (ko) 2013-05-09
EP3508975A1 (en) 2019-07-10
US20110252423A1 (en) 2011-10-13
EP2556432A2 (en) 2013-02-13
CN103955403B (zh) 2018-09-28
KR101724176B1 (ko) 2017-04-06
CA2795489C (en) 2018-01-23
US20110252430A1 (en) 2011-10-13

Similar Documents

Publication Publication Date Title
JP5723968B2 (ja) 便宜的マルチタスキング
WO2018082570A1 (zh) I/o请求的调度方法及装置
US10133598B2 (en) Systems and methods of using a hypervisor to assign virtual processor priority based on task priority and to schedule virtual processors for guest operating systems
US10908954B2 (en) Quality of service classes
JP6320520B2 (ja) 多数の優先順キューに対するスレッドの割り当ておよびスケジューリング
TWI512619B (zh) 用於執行緒排程的方法以及系統
US9798584B1 (en) Methods and apparatus for IO sizing based task throttling
US11385928B2 (en) System and method for priority orchestration and scheduling of different background operations
JP6584655B2 (ja) フリップキューの管理に基づくグラフィックスコンテキストのスケジューリング
AU2013205570A1 (en) Opportunistic multitasking
JP2014182764A (ja) 情報処理装置、情報処理方法、及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130920

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130920

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141216

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150302

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150330

R150 Certificate of patent or registration of utility model

Ref document number: 5723968

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250