JP2014526733A - サスペンド状態及び実行状態におけるプロセスの管理 - Google Patents

サスペンド状態及び実行状態におけるプロセスの管理 Download PDF

Info

Publication number
JP2014526733A
JP2014526733A JP2014529682A JP2014529682A JP2014526733A JP 2014526733 A JP2014526733 A JP 2014526733A JP 2014529682 A JP2014529682 A JP 2014529682A JP 2014529682 A JP2014529682 A JP 2014529682A JP 2014526733 A JP2014526733 A JP 2014526733A
Authority
JP
Japan
Prior art keywords
application
suspended
state
timer
wake
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.)
Granted
Application number
JP2014529682A
Other languages
English (en)
Other versions
JP5985644B2 (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014526733A publication Critical patent/JP2014526733A/ja
Application granted granted Critical
Publication of JP5985644B2 publication Critical patent/JP5985644B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • 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
    • 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/461Saving or restoring of program or task context
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Telephone Function (AREA)

Abstract

アプリケーションに関連付けられる、論理的に関連するプロセスをサスペンドし、サスペンドされたプロセスを再開すべきか否かを1つ又は複数のウェイクポリシーに基づいて判断し、ならびに/あるいは、タイマ及び/又はシステムメッセージデータのようなアプリケーションのアプリケーション状態を管理する1つ又は複数の技法及び/又はシステムを提供する。すなわち、子プロセスのような、アプリケーションに関連付けられる、論理的に関連するプロセスが、プロセス間の論理的関係に基づいて識別及びサスペンドされ得る(例えば、論理コンテナ階層をトラバースして、論理的に関連するプロセスを識別することができる)。サスペンドされているプロセスは、ウェイクポリシーのセットに基づいて再開され得る。例えばサスペンドされているプロセスは、該サスペンドされているプロセスとの通信を試みているアプリケーションによってトリガされ得るプロセス間通信呼に基づいて再開されることがある。アプリケーションが現在の状態及び/又は関連する状態において再開され得るように、アプリケーションがサスペンドされている間、アプリケーションデータを管理することができる。

Description

本発明は、サスペンド状態及び実行状態においてプロセスを管理することに関する。
電力消費を節約し、デバイス及びアプリケーションの始動待ち時間を改善し、全体的な応答性を改善したデスクトップ、ラップトップ、スマートフォン及びタブレットのような多くのコンピューティングデバイスが開発されている。例えばデバイスが10分など、ある時間の間使用されないとき、デバイスは、アプリケーションの動作を大幅に減らすスリープ状態に置かれることがあり、その結果として電力消費の改善をもたらすことがある。その後、ユーザがデバイスを使用しようとするとき、デバイスは、ユーザにデバイスの全機能を利用可能にするためにこのスリープ状態から立ち上がる。
本概要の記載は、詳細な説明において下記にさらに説明される選択された概念を、簡略化した形で紹介するために設けられている。本概要は、特許請求に係る主題の重要な要因又は基本的な特徴を特定するように意図されておらず、特許請求に係る主題の範囲を限定するようにも意図されていない。
本明細書では、特に、アプリケーションに関連付けられた1つ又は複数のプロセスをサスペンドし、サスペンドされたプロセスを再開すべきか否かを1つ又は複数のウェイクポリシーに基づいて判断し、及び/又はアプリケーションのアプリケーション状態を管理する、1つ又は複数のシステム及び/又は技法を開示する。
コンピューティング環境は、プロセスに関連付けられたアプリケーションをホストすることができ、プロセスを1つ又は複数のプロセッサによってスレッドとして実行することできる。本明細書で説明される1つ又は複数のシステム及び/又は方法は、アプリケーション、プロセス、及び/又はスレッドに適用可能であることが認識される(例えばプロセスは、1つ又は複数のプロセッサ上でコードを実行するスレッドからなるため、本明細書に記載される技法及び/又はシステムはスレッドに等しく適用される)。コンピューティング環境は、複数のアプリケーション及び/又はプロセスをホストすることができるため、そのようなアプリケーション及び/又はプロセスを管理するよう論理コンテナ階層を実装してもよい。特に、アプリケーションを、論理コンテナ階層内のルート論理コンテナのような論理コンテナに割り当てることができる。同様に、プロセスを論理コンテナに割り当てることができる。論理コンテナ階層は、関連するアプリケーション、プロセス、及び/又は論理コンテナの階層のネスト化も可能にし得る。例えばテキストエディタアプリケーション(例えば親アプリケーション/プロセス)をルート論理コンテナに割り当てることができる。テキストエディタアプリケーションは、テキストエディタ印刷プロセス、テキストエディタ保存プロセス、及び/又はスペルチェッカプロセスのような1つ又は複数の子プロセスに関連付けられることがある。したがって、テキストエディタ印刷プロセス、テキストエディタ保存プロセス、及び/又はスペルチェッカプロセスは、例えばテキストエディタアプリケーションに割り当てられたルート論理コンテナに関連付けられる(例えばその中にネストされる)論理コンテナに割り当てることができる。このようなテキストエディタアプリケーション及び/又は子プロセスの間の関連付け(例えば関係)は識別可能であり得る。
本明細書において提供されるようなアプリケーションに関連付けられる1つ又は複数のプロセスをサスペンドする一例において、アプリケーションが非アクティブであるとの通知を受信することがある(例えばアプリケーションがユーザに可視ではないことがあり、ユーザが所定の時間内にアプリケーションと対話することができないことがあり、アプリケーションがバックグラウンド状態にあることがある等)。アプリケーションに関連付けられる1つ又は複数のプロセスを識別することができる。一例において、論理コンテナ階層を参照して1つ又は複数のプロセスを識別することができる。例えば、アプリケーションに割り当てられたルート論理コンテナを識別することができる。ルート論理コンテナに関連付けられた(例えばその中にネストされた)第1の論理コンテナに割り当てられた第1のプロセスを識別することができる。ルート論理コンテナに関連付けられた(例えばその中にネストされた)第1の論理コンテナに割り当てられた第2のプロセスを識別することができる。第1の論理コンテナに関連付けられた(例えばその中にネストされた)第2の論理コンテナに割り当てられた第3のプロセスを識別することができる。このようにして、第1のプロセス、第2のプロセス及び第3のプロセスを、アプリケーションに関連付けられているものとして識別することができる。様々なプロセス及び/又はアプリケーションがアプリケーションに関連付けられているものとして識別することができることが認識される。アプリケーションに関連付けられた1つ又は複数のプロセスを、サスペンド状態におき、該サスペンドされたプロセスを、プロセッサ実行スケジューリングの対象外にすることによって、電力消費を節約することができる。サスペンドされると、サスペンドされたアプリケーションに関連付けられる、新たに作成されたスレッド及び/又はプロセス(例えばルート論理コンテナ内にネストされている論理コンテナに割り当てられる新たに作成されたプロセス)がサスペンドされ、サスペンドの一貫性を、サスペンドされたアプリケーションに関連付けられるプロセスにわたって保つことができる。このように、アプリケーションに現在関連付けられているプロセス及び/又は新たに作成されたプロセスを、アプリケーションに関連付けられているものとして識別することができ、それに従ってサスペンドすることができる。本明細書において提供されるような1つ又は複数のプロセスのサスペンドは、デバイスがスリープモードにあるときにも又はないときにも発生し得るが、この場合、1つ又は複数のアプリケーションは非アクティブあるか又は使用されていないことを認識されたい。したがって、デバイスが使用中であっても電力を節約し、及び/又はバッテリ寿命を延長することができる。
本明細書において提供される、サスペンドされているプロセスを再開すべきか否かを判断する一例において、サスペンドされているプロセスに関連付けられたウェイクポリシーのセットを保持することができる。ウェイクポリシーは、サスペンドされているプロセスを再開して実行状態にする理由を示すことがある。一例において、ウェイクポリシーは、要求側アプリケーションが、プロセス間通信呼を、サスペンドされているプロセスに送るという状況に対応することがある。別の例において、ウェイクポリシーは、サスペンドされたプロセスに関連付けられるサスペンドされたアプリケーションが、フォアグランド状態に遷移する状況に対応することがある。別の例において、ウェイクポリシーは、サスペンドされたアプリケーションに関連付けられるユーザ入力が検出される状況に対応することがある。ウェイクポリシーは、サスペンドされているプロセスを起こす様々な状況及び/又は理由に対応し得ることを認識されたい。ウェイクポリシーは、ウェイクポリシーに関連付けられるウェイク通知であって、サスペンドされたプロセスについて現在係属中のウェイク通知(例えば要求側アプリケーションが、サスペンドされたプロセスにプロセス間通信を送信するなどの、ウェイクポリシーに関連付けられたイベントが発生しているという通知)の数を示すカウンタに関連付けられることがある。カウンタは、インクリメントされることもあり(例えばウェイク通知に関連付けられたイベントが係属中の場合がある)及び/又はデクリメントされることもある(例えばウェイク通知に関連付けられたイベントが完了している場合がある)。例えばプロセス間通信のウェイクポリシーのカウンタは、スプレッドシートアプリケーションがプロセス間通信呼をサスペンドされているテキストエディタに送ったという第1のウェイク通知を受信すると、1にインクリメントされてもよい。プロセス間通信ウェイクポリシーのカウンタは、ブラウザアプリケーションがプロセス間通信呼をサスペンドされているテキストエディタに送ったという第2のウェイク通知を受信すると、2にインクリメントされてもよい。
ウェイクポリシーのセットを評価して、サスペンドされているプロセスを実行状態におくか、又はサスペンドされているプロセスをサスペンド状態のままにするかを決定してもよい。一例において、サスペンドされているプロセスは、ウェイクポリシーに関連付けられる少なくとも1つのカウンタが閾値を超える値を含む(例えば少なくとも1つのカウンタが2より大きい値を有する)と判断したことに基づいて、実行状態におかれることがある。別の例において、1つ又は複数のカウンタの値を一緒に合計して、合計値を作成してもよい(例えば様々なウェイクポリシーに関連付けられた3つのカウンタが1の値を有することがあり、3という合計値が決定されてもよい)。合計値を、ウェイクポリシーに関連付けられた重みに基づいて調整してもよい(例えばユーザ入力に関連付けられるウェイクポリシーは、重み値2を受け取ることがあり、一方でリモートの第三者の要求に関連付けられるウェイクポリシーは重み値5を受け取ることがある。これは、リモートの第三者とは対照的にユーザに対して積極的に応答することがより有利である可能性があるためである)。同様に、特定のカウンタを無条件で観測し(例えばユーザカウンタ)、一方、別のカウンタは条件付きで(例えば周波数、ノイズ性、ソースなどに基づいて)観測されることがある。サスペンドされているプロセスが実行アプリケーションとして実行状態におかれた場合、実行中のプロセスをサスペンド状態に戻すべきか否か、及び/又はいつ戻すべきかを判断する際に、ウェイクポリシーの現在の状態及び/又はウェイク通知の完了から経過した時間を評価することがある。例えば実行中のプロセスは、追加のプロセス間通信呼が実行される場合、ある期間にわたって実行状態のままにされることがある。最適化として、特定のカウンタの「エッジ」遷移(0→1、1→0)に対して通知が配信され得る。第1の事例では、実行のためのポリシーが評価され、第2の事例では、サスペンドのためのポリシーが評価される。
一例において、ウェイクポリシーのセットが、論理コンテナ階層内のサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられてもよいことが認識される。したがって、サスペンドされているプロセスが実行状態におかれた場合、次いで、サスペンドされているプロセスに関連付けられる1つ又は複数のプロセス及び/又はアプリケーション(例えばサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられる論理コンテナに割り当てられているプロセス)が、実行状態におかれてもよい。
本明細書において提供されるような、アプリケーションを管理する一例において、アプリケーションに関連付けられたタイマのリストを保持してもよい。例えば絶対的タイマ(例えば2011/8/31のPM2:00のタイムアウト設定)、相対的タイマ(例えば10分でのタイムアウト設定)、及び/又は他のタイプのタイマを保持することができる。アプリケーションがサスペンドされるべきであるという通知を受信すると、タイマのリストから導出されるタイマ再設定データ(timer rebasing data)を含むアプリケーション状態(状態情報)が作成され得る。相対的タイマのような特定のタイマは、たとえタイマの根拠となる理由が発生していなくても、アプリケーションがサスペンドされている間にタイムアウトし得るので、アプリケーション状態情報が作成され得る。例えばテキストエディタアプリケーションは、スペルチェッカプロセスについて10分間の相対的タイマをセットしてもよい。これは、スペルチェッカプロセスは通常、エラーが発生していない限り、完了するのに10分以上かからないためである。しかしながら、スペルチェッカプロセスは、相対的タイマが作成されてから2分後にサスペンドされ、15分もの間にわたってサスペンドされる可能性がある。相対的タイマを調整しなければ、相対的タイマはタイムアウトし得る(例えばタイムアウトは、スペルチェッカのエラーには関連しておらず、スペルチェッカのサスペンドに関連するだけであるので、タイムアウトが不適切なことがある)。スペルチェッカは、誤ってはいないが単にサスペンドされるので、相対的タイマが、アプリケーション状態情報において、満了までの時間値のような相対的タイマ再設定データを使用して再設定され得る(例えばアプリケーション状態情報は、相対的タイマがサスペンドされたときから該相対的タイマの元の満了時刻までの期間を示す、満了までの時間値を含む相対的タイマ再設定データを含む可能性がある)。加えて、相対的タイマは、サスペンドされたアプリケーションが再開するときに、そうでなければ不要なCPU消費を引き起こす場合があり、及び/又はユーザ体験を損なう場合がある、タイマ満了までの余分な時間が生じないように調整され得る。対照的に、絶対的タイマは、絶対時間(例えば元の満了時間)に関連付けられ、したがって、アプリケーションは、タイマに関連付けられたアプリケーションがサスペンドされたか否かにかかわらず、絶対時間に到達したときに通知されることを望むことがある。したがって、絶対的タイマは、アプリケーション状態において、元の満了時間のような絶対的タイマ再設定データを使用して再設定され得る(例えばアプリケーション状態情報は、元の満了時刻を含む絶対的タイマ再設定データを含む可能性がある)。このように、タイマ再設定データを含むアプリケーション状態情報は、アプリケーションがサスペンド状態から実行状態に戻って再開するときにタイマを再設定するのに使用され得る。
本明細書において提供されるような、アプリケーションを管理する一例において、アプリケーションがサスペンド状態にある間、アプリケーションに関連付けられたアプリケーションメッセージキューを保持してもよい。アプリケーションメッセージキューは、アプリケーションについてのシステムメッセージ(例えば、制御パネル内の設定に関連付けられるシステムメッセージ)を記憶するように構成され得る。例えばタブレットデバイスのオペレーティングシステムは、ユーザインタフェースの色=緑というシステムメッセージ、言語=英語というシステムメッセージ、タブレットのビュー方向=縦長方向というシステムメッセージ等のような、テキストエディタに関するシステムメッセージをキューに入れてもよい。アプリケーションメッセージキューは、アプリケーションがサスペンドされている間にシステムメッセージを受信し、及び/又は記憶することがある。現在キューに入っているメッセージを不正確なものにする可能性がある重複したメッセージが、経時的に受信される可能性があるため(例えばサスペンドされている間、タブレットビュー方向が縦長方向に設定される第1のメッセージを受信し、その後、タブレットビュー方向が横長方向に設定される第2のメッセージを受信することがあり、この第2のメッセージが第1のメッセージを不適切なものにする可能性がある)、アプリケーションが現在の最新のアプリケーション状態で実行状態におかれることができるように、アプリケーションメッセージキューを管理することが有利である可能性がある。したがって、アプリケーションがサスペンド状態にある間に、アプリケーションキューに向けられた第1のシステムメッセージが受信され得る。第1のシステムメッセージが、アプリケーションメッセージキュー内の第2のシステムメッセージに対応するか否かについての判断を行うことができる。第1のシステムメッセージが第2のシステムメッセージに対応すると判断されると、第1のシステムメッセージ及び/又は第2のシステムメッセージを修正及び/又は削除してもよい(例えばユーザインタフェースの色=緑、という新たに受信した第1のシステムメッセージがアプリケーションメッセージキュー内におかれ、一方でユーザインタフェースの色=赤、というすでにキューに入っている第2のシステムメッセージが削除され得る)。このように、アプリケーションが再開されて実行状態になると、アプリケーションは、「陳腐化」した及び/又は不適切なシステムメッセージとは対照的に、アプリケーションメッセージキューからの関連するシステムメッセージを処理することができる。アプリケーションメッセージキューを管理することは、対象のプロセスが作動可能/実行可能でないときに冗長なメッセージがシステムリソースを不必要に消費しないという点において(例えば新たなメッセージを廃棄/削除してもよいこと、より古い対応するメッセージを廃棄/削除して新たなメッセージを保持してもよいこと、メッセージをインテリジェントに統合してもよいこと等)、更なる肯定的性能の利点を有する。
上記及び関連する目標を達成するために、以下の説明及び添付の図面は、特定の例示的な態様及び実施態様を説明する。これらは、1つ又は複数の態様を用いることが可能な様々な方法のほんのいくつかを示しているに過ぎない。本開示の他の態様、利点及び新規の特徴は、添付の図面とともに考慮するときに以下の詳細な説明から明らかになる。
アプリケーションに関連付けられる1つ又は複数のプロセスをサスペンドする例示的な方法を示すフローチャートである。 アプリケーションに関連付けられる1つまたはは複数のプロセスをサスペンドする例示的な方法を示すフローチャートである。 アプリケーションに関連付けられる1つ又は複数のプロセスをサスペンドする例示的なシステムを示す構成要素ブロック図である。 ウェイクポリシーのセットに基づいて、サスペンドされているプロセスを再開するか否かを判断する例示的な方法を示すフローチャートである。 ウェイクポリシーのセットに基づいて、サスペンドされているプロセスを再開するか否かを判断する例示的な方法を示すフローチャートである。 ウェイクポリシーに基づいて、サスペンドされているプロセスを再開するか否かを判断するための例示的なシステムを示す構成要素ブロック図である。 アプリケーションのアプリケーション状態を管理する例示的な方法を示すフローチャートである。 アプリケーションのアプリケーション状態を管理する例示的な方法を示すフローチャートである。 アプリケーションのアプリケーション状態を管理する例示的なシステムを示す構成要素ブロック図である。 アプリケーションのアプリケーション状態を管理する例示的なシステムを示す構成要素ブロック図である。 本明細書で説明されるプロビジョンの1つ又は複数を具現化するように構成されたプロセッサ実行可能命令を含むことができる、例示的なコンピュータ読取可能媒体の図である。 本明細書で説明されるプロビジョンの1つ又は複数が実装され得る、例示的なコンピューティング環境の図である。
以下では、特許請求に係る主題が図面を参照して説明されるが、図面において、同様の参照符号は概して全体を通じて同様の要素を参照するのに使用される。以下の記載では、説明のために、特許請求に係る主題の完全な理解を提供するよう多数の具体的な詳細を説明する。しかしながら、特許請求に係る主題は、これらの具体的な詳細なしに実施されることができることが明らかである。他の事例において、特許請求に係る主題の説明を容易にするために、構造及びデバイスがブロック図の形式で図示されている。
アプリケーションに関連付けられる1つ又は複数のプロセスをサスペンドし、1つ又は複数のウェイクポリシーに基づいて、サスペンドされたプロセスを再開すべきか否かを判断し、アプリケーションのアプリケーション状態を管理する1つ又は複数のシステム及び/又は技法が本明細書において提供される。具体的には、アプリケーションに関連付けられる1つ又は複数のプロセスがサスペンドされることがある(例えばアプリケーションに関連付けられるプロセスを論理コンテナ階層に基づいて識別し、グループとしてサスペンドすることがある)。サスペンドされたプロセスは、サスペンドされたプロセスを再開して実行状態にする理由を示すウェイクポリシーのセットを保持していることに基づいて再開され得る(例えば、要求側アプリケーションからサスペンドされているプロセスへの閾値数のプロセス間通信呼が受信される場合、そのプロセス間通信呼を処理するためにサスペンドされているプロセスが実行状態におかれる)。アプリケーションがサスペンドされている間、アプリケーション状態情報が、サスペンドされているアプリケーションに関連付けられるタイマから導出され、タイマは、サスペンドされているアプリケーションが再開されて実行状態になると、アプリケーション状態情報を使用して再設定され得る。加えて、アプリケーションがサスペンドされている間、アプリケーションメッセージキューが管理され、それによって、アプリケーションキューから不適切な及び/又は陳腐化したメッセージが修正及び/又は削除される。このように、実行状態に入ると、アプリケーションは、関連するシステムメッセージを処理することができ、その結果アプリケーションが現在のアプリケーション状態におかれることができる。
アプリケーションに関連付けられる1つ又は複数のプロセスをサスペンドする一実施形態が、図1の例示的な方法100によって図示されている。102において、方法が開始する。104において、アプリケーションが非アクティブであるとの通知が受信され得る(例えばアプリケーションはバックグラウンド状態に遷移していることがあり、アプリケーションがユーザに可視でないこと(例えばモニタ上のフォアグランドに提供されている異なるアプリケーションの後ろにあること)があり、ユーザがある期間の間アプリケーションと対話していないことがある等)。106において、アプリケーションに関連付けられる1つ又は複数のプロセスが識別され得る。一例において、論理コンテナ階層(例えば図3の論理コンテナ階層308)を参照して、いずれのプロセスがアプリケーションに関連付けられているかを判断することができる。例えばアプリケーションが、論理コンテナ階層内のルート論理コンテナに割り当てられ、アプリケーションに関連付けられているプロセスが、ルート論理コンテナに関連付けられた(例えばその中にネストされた)論理コンテナに割り当てられる可能性がある。
1つ又は複数のプロセスを識別する一例において、第1のプロセスが、ルート論理コンテナに関連付けられた(例えばその中にネストされた)第1の論理コンテナに割り当てられるとの判断に基づいて、アプリケーションに関連付けられているものとして判断されることがある(例えば第1のプロセスは、アプリケーションの直接の子プロセスであり得る)。別の例において、第2のプロセスが、ルート論理コンテナに関連付けられた第1の論理コンテナに割り当てられるとの判断に基づいて、その第2のプロセスは、アプリケーションに関連付けられているものとして判断されることがある(例えば第2のプロセスは、アプリケーションの直接の子プロセスであり得る)。別の例において、第2のプロセスが、第1の論理コンテナに関連付けられている第2の論理コンテナに割り当てられているという判断に基づいて、第2のプロセスは、アプリケーションに関連付けられているものとして判断されることがある(例えば第2のプロセスは、第1のプロセスの直接の子プロセス及び/又はアプリケーションの間接的な子プロセスであり得る)。このように、アプリケーションに関連付けられる1つ又は複数のプロセスが判断され得る。
108において、1つ又は複数のプロセスがサスペンド状態におかれる。例えば、サスペンドされているプロセスは、プロセッサが実行するのに不適切であるとしてマークされてもよく、その結果、サスペンドされているプロセスを含むスレッドは、スレッドスケジューラによって実行用の候補とみなされないことがある。一例において、アプリケーション、及び/又は1つ又は複数のプロセスに関連付けられている他のアプリケーションに、サスペンドを通知してもよく、これにより、そのようなアプリケーションに、状態情報を保存する機会を与えてもよい(例えばソーシャルネットワークアプリケーションは、ユーザによって閲覧されている現在のプロファイルに関連付けられる状態情報を保存することができ、再開されると、ソーシャルネットワークアプリケーションは現在のプロファイルをユーザに提示することができる)。サスペンドされているプロセスに関連付けられるメモリ内容が、保存済みのメモリ内容として記憶デバイスに保存され得る。このように、保存済みのメモリ内容をメモリに返すことができ、それによって、サスペンドされているプロセスが迅速に実行を再開することが可能になる。
新たに作成されたプロセス(例えば1つ又は複数のプロセスがサスペンドされた後に作成されたプロセス)は、この新たに作成されたプロセスが、サスペンドされているプロセス及び/又は非アクティブアプリケーションのうちの1つ又は複数に関連付けられるという判断に基づいて、サスペンド状態におかれてもよいことが認識される。例えば、新たに作成されたプロセスが、非アクティブアプリケーションのルート論理コンテナに関連付けられている論理コンテナに割り当てられている、という判断に基づいて、その新たに作成されたプロセスが非アクティブアプリケーションに関連付けられるとして判断されてもよい。このようにして、新たに作成されたプロセスがサスペンド状態におかれることがある。110において、方法は終了する。
アプリケーションに関連付けられる1つ又は複数のプロセスをサスペンドする一実施形態が、図2の1つの例示的な方法200によって図示されている。202において、方法が開始する。204において、アプリケーションが非アクティブであるとの通知が受信され得る。206において、論理コンテナ階層を繰り返しトラバースして、アプリケーションに関連付けられている1つ又は複数のプロセスを識別することができる。一例において、論理コンテナ階層内において、アプリケーションに割り当てられたルート論理コンテナが識別されることがある。第1のプロセスがルート論理コンテナに関連付けられた(例えばその中にネストされた)第1の論理コンテナに割り当てられる、との判断に基づいて、その第1のプロセスがアプリケーションに関連付けられるとして判断されることがある。別の例において、第2のプロセスが、ルート論理コンテナに関連付けられた第1の論理コンテナに割り当てられる、との判断に基づいて、該第2のアプリケーションはアプリケーションに関連付けられているものとして判断されることがある(例えば第2のプロセスは、アプリケーションの直接の子プロセスであり得る)。別の例において、第2のプロセスは、第1の論理コンテナに関連付けられた第2の論理コンテナに割り当てられるとの判断に基づいて、アプリケーションに関連付けられているものとして判断されることがある(例えば第2のプロセスは、第1のプロセスの直接の子プロセス及び/又はアプリケーションの間接的な子プロセスであり得る)。このように、アプリケーションに関連付けられた1つ又は複数のプロセスが識別され得る。208において、1つ又は複数のプロセスがサスペンド状態におかれる。このように、非アクティブアプリケーションに関連付けられたプロセス及び/又は新たに作成されたプロセスがサスペンドされ得る。210において、方法は終了する。
図3は、アプリケーションに関連付けられる1つ又は複数のプロセスをサスペンドするように構成されたシステム300の例を図示している。システム300は、サスペンド構成要素322を備える。サスペンド構成要素322は、アプリケーションが非アクティブであるとの通知を受信するように構成され得る。例えば、テキストエディタアプリケーション302及びスプレッドシートアプリケーション304が、コンピューティング環境内でホストされ得る。ユーザは、テキストエディタアプリケーション302からスプレッドシートアプリケーション304へと切り替えることがあり、その結果、テキストエディタアプリケーション302がバックグラウンド状態に遷移することになり得る。このように、サスペンド構成要素322は、テキストエディタの非アクティブ通知306を受信し得る。
サスペンド構成要素322は、論理コンテナ階層308を繰り返しトラバースして、アプリケーションに関連付けられた1つ又は複数のプロセスを識別するように構成される。一例において、テキストエディタアプリケーション302は、テキストエディタルート論理コンテナ310に割り当てられたテキストエディタプロセス312に関連付けられることがある。実行している間、テキストエディタアプリケーション302は、テキストエディタ印刷プロセス314及び/又はテキストエディタ保存プロセス316のような1つ又は複数の子プロセスを作成していることがあり、これらの子プロセスは、テキストエディタ論理コンテナ310に割り当てられることがある。加えて、テキストエディタアプリケーション302は、スペルチェッカ論理コンテナ318に割り当てられたスペルチェッカプロセス320に関連付けられるスペルチェック機能を呼び出していることがある。スペルチェッカプロセス320はテキストエディタアプリケーション302に関連付けられるので、スペルチェッカ論理コンテナ318は、テキストエディタルート論理コンテナ310内にネストされることがある。したがって、サスペンド構成要素322は、論理コンテナ階層308をトラバースすることに基づいて、テキストエディタ印刷プロセス314、テキストエディタ保存プロセス316、及び/又はスペルチェッカプロセス320がテキストエディタアプリケーション302に関連付けられ得ると判断することができる。このように、サスペンド構成要素322は、テキストエディタアプリケーション302が非アクティブであることに基づいて、テキストエディタプロセス312、テキストエディタ印刷プロセス314、テキストエディタ保存プロセス316、スペルチェッカプロセス320及び/又はテキストエディタアプリケーション302に関連付けられた新たに作成されたプロセスをサスペンドすることがあり(324)、上記プロセス及び/又はアプリケーションはプロセッサ実行リソース及び/又は他の電力消費リソースを使用するには不適格であるので、結果として電力消費が改善され得る。
サスペンドされているプロセスを再開すべきか否かを、ウェイクポリシーのセットに基づいて判断する一実施形態が、図4の例示的な方法400によって図示されている。402において方法が開始する。404において、サスペンドされているプロセスに関連付けられるウェイクポリシーのセットが保持され得る。ウェイクポリシーは、サスペンドされているプロセスが再開して実行状態になる理由を示すことができる。一例において、ウェイクポリシーは、要求側アプリケーションからサスペンドされているプロセスへのプロセス間通信呼に対応することがある(例えばスプレッドシートアプリケーションは、テキストエディタアプリケーションからのテキストの「切り取り」を要求して、「貼り付け」動作を満たすことを試み、プレゼンテーションアプリケーションは、その機能及び/又はデータがテキストエディタアプリケーションによって提供され得る「貼り付けられた」テキストオブジェクトを含むことがある等)。別の例において、ウェイクポリシーは、サスペンドされているアプリケーションに関連付けられるユーザ入力に対応してもよい(例えばユーザは、サスペンドされているテキストエディタアプリケーションと対話することを試みることがある)。別の例において、構成要素(例えばハードウェア構成要素、ソフトウェア構成要素、リモート第三者構成要素、ウェブ構成要素等)が、サスペンドされているプロセスへのアクセスを要求してもよい。別の例において、ウェイクポリシーは、サスペンドされているプロセスに関連付けられるサスペンドされているアプリケーションのバックグラウンド状態からフォアグランド状態への遷移に対応してもよい。このように、ウェイクポリシーのセットは、サスペンドされているプロセスを再開する様々なイベント/理由に関連付けられる、様々なウェイクポリシーを含むことができる。
カウンタがウェイクポリシーに関連付けられることがある。カウンタは、サスペンドされているプロセスについて現在係属中のウェイクポリシーに関連付けられるウェイク通知(例えば、ウェイクポリシーによって指定されるイベント/理由のインスタンス)の数を示すことがある。ウェイク通知は、プロセス間通信呼の通知のような、ウェイクポリシーによって指定されるイベント/理由の通知とすることができる。カウンタは、インクリメントされるか(例えばウェイク通知に関連付けられたイベントが係属中の場合がある)、及び/又はデクリメントされる(例えばウェイク通知に関連付けられたイベントが完了する場合ばある)。様々なウェイクポリシー及び対応するカウンタが、ウェイクポリシーのセット内に保持され得ることを認識されたい。例えばユーザ入力ウェイクポリシーに対する第1のカウンタは、ユーザがサスペンドされているテキストエディタとの対話を試みたという第1のウェイク通知を受信すると、1にインクリメントされてもよい。ユーザ入力ウェイクポリシーに対する第1のカウンタは、ユーザがサスペンドされているテキストエディタとの対話を2度試みたという第2のウェイク通知を受信すると、2にインクリメントされてもよい。プロセス間通信ウェイクポリシーに対する第2のカウンタは、スプレッドシートアプリケーションが、サスペンドされているテキストエディタとの通信を試みたという第3のウェイク通知を受信すると、1にインクリメントされてもよい。第2のカウンタは、スプレッドシートアプリケーションが、サスペンドされているテキストエディタとの通信をもう望まない(例えばユーザがスプレッドシートアプリケーションをシャットダウンする)と通知されると、0にデクリメントされてもよい。このように、ウェイクポリシーのセット内のウェイクポリシーに関連付けられるカウンタが保持され得る。
一例において、ウェイク通知は、プロセスの実行状態/サスペンド状態に照らしてカウンタがどのように遷移されるかに基づいて、フィルタリングされてもよい(例えば無視、削除、及び/又は発行を回避される)。一例において、プロセスが実行状態にあると判断されると、カウンタを値0から値1へと遷移させるウェイク通知がフィルタリングされ得る(例えば、すでに実行中のプロセスを実行状態におくウェイクポリシーをトリガするウェイク通知は、実行中のプロセスがすでに実行中であるため、フィルタリングされ得る)。別の例において、プロセスがサスペンド状態にあると判断されると、カウンタを値1から値0へと遷移させるウェイク通知がフィルタリングされ得る(例えば、すでにサスペンドされているプロセスをサスペンド状態におくウェイクポリシーをトリガするウェイク通知は、サスペンドされているプロセスがすでにサスペンドされているため、フィルタリングされ得る)。
406において、サスペンドされているプロセスに関連付けられたウェイクポリシーのセットを評価して、サスペンドされているプロセスを実行状態におくか、又はサスペンドされているプロセスをサスペンド状態のままにするかを決定してもよい。一例において、サスペンドされているプロセスは、ウェイクポリシーに関連付けられている少なくとも1つのカウンタが閾値を超える値を含む(例えば少なくとも1つのカウンタが0よりも大きい値を有する)との判断に基づいて、実行状態におかれてもよい。閾値を超える値を含むカウンタがない場合、サスペンドされているプロセスはサスペンド状態のままになり得る。別の例において、1つ又は複数のカウンタの値が一緒に合計されて、合計値が作成され得る。例えば、ユーザ入力ウェイクポリシーに関連付けられる第1のカウンタが2の値を有し、かつリモート第三者プロセス間通信呼ウェイクポリシーの第2のカウンタが2の値を有することに基づいて、合計値4が決定される。合計値4は、ウェイクポリシーに関連付けられた重みに基づいて調整されてもよい。例えばユーザ入力ウェイクポリシーは、サスペンドされているプロセスに関連付けられたアプリケーションがユーザに対して高応答性であるように、ユーザ入力に応答して、サスペンドされているプロセスを再開する/起こすことが望ましい場合があるので、(例えば2の値に2倍の重み修飾子を適用することに基づいて)4の重み値を有する可能性がある。例えばリモート第三者プロセス間通信ポリシーは、重大でない及び/又は望ましくない理由からサスペンドされているプロセスとの「ノイズの多い」通信を試みていることがあるリモートの第三者への応答性を下げるよう調整することが望ましい場合があるので、(例えば2の値に0.5倍の重み修飾子を適用することに基づいて)1の重み値を有する可能性がある。サスペンドされているプロセスは、合計値が閾値を超える(例えば、合計値5は閾値3を超える)との判断に基づいて、実行状態におかれることがある。
一例において、ウェイクポリシーのセットは、論理コンテナ階層内のサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられてもよいことが認識される。したがって、サスペンドされているプロセスが実行状態におかれる場合、サスペンドされているプロセスに関連付けられる1つ又は複数のプロセス及び/又はアプリケーションを、実行状態においてもよい。例えばテキストエディタプロセスが実行状態におかれることがある。テキストエディタプロセスが、テキストエディタルート論理コンテナに割り当てられることがある。スペルチェッカプロセスが、テキストエディタルート論理コンテナに関連付けられる(例えばその中にネストされる)論理コンテナに割り当てられるとの判断に基づいて、スペルチェッカプロセスが実行状態におかれることもある。このように、1つ又は複数の関連プロセスを再開して実行状態にすることができる。一例において、再開されたプロセスに関連付けられる保存済みのメモリ内容がメモリにリストアされ、それによって、そのようなプロセスは、電力を節約しつつ、応答性よく即座に実行を再開することができる。
実行プロセスとして実行状態におかれると、実行プロセスをサスペンド状態に戻すべきか否か、及び/又はいつ戻すべきかについての判断を行うことができる。一例において、ウェイクポリシーのセットの現在の状態が評価されることがある(例えばカウンタ値及び/又はカウンタ値の合計値が、閾値を上回っていない場合、実行プロセスはその後サスペンド状態に戻されることがある)。別の例において、実行プロセスを実行状態においたウェイク通知の完了から経過した時間が評価されることがある。例えば、プレゼンテーションアプリケーションは、機能及び/又はデータがサスペンドされているテキストエディタアプリケーションによって提供される「貼り付けされた」テキストオブジェクトを含むことがある。プレゼンテーションアプリケーションから、「貼り付けされた」テキストオブジェクトに関するサスペンドされているテキストエディタアプリケーションへのプロセス間通信呼が行われる。通信呼のウェイク通知が受信され、プロセス間通信呼を成立させるように、サスペンドされているテキストエディタアプリケーションが実行状態におかれる。プレゼンテーションアプリケーションがその後、「貼り付けされた」テキストオブジェクトに関するテキストエディタアプリケーションへのプロセス間通信呼を行うことがあるので、(例えばテキストエディタアプリケーションを直ぐにサスペンド状態に戻すのとは対照的に)テキストエディタアプリケーションが一定期間にわたって実行状態のままにすることを可能にすることは有利なことある。408において方法は終了する。
サスペンドされているプロセスを再開すべきか否かをウェイクポリシーのセットに基づいて判断する一実施形態が、図5の例示的な方法500によって示されている。502において方法が開始する。504において、論理コンテナ階層内のサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられるウェイクポリシーが保持され得る。ウェイクポリシーは、サスペンドされているプロセスを再開して実行状態にする理由を示すことができる。ウェイクポリシーは、サスペンドされているプロセスについて現在係属中の、ウェイクポリシーに関連付けられたウェイク通知の数を示すカウンタを含み得る。ウェイク通知は、プロセス間通信呼の通知など、ウェイクポリシーによって指定される、サスペンドされているプロセスを再開するイベント/理由の通知とすることができる。カウンタは、ウェイクポリシーに関連付けられたウェイク通知を受信したことに基づいて、インクリメントされることがある(例えば、ユーザ入力ウェイクポリシーに関連付けられるカウンタは、ユーザが、サスペンドされているプロセスに関連付けられたサスペンドされているアプリケーションとの対話を試みたことを示すウェイク通知を受信したことに基づいて、インクリメントされることがある)。カウンタは、ウェイク通知が現在係属中でないとの通知を受信したことに基づいて、デクリメントされることがある(例えばカウンタは、サスペンドされているアプリケーションをホストするコンピューティングデバイスからユーザがログオフしたとの通知に基づいて、デクリメントされることがある)。
一例では、506において、カウンタの値が閾値を上回ると判断されると、サスペンドされているプロセスが実行状態におかれる。一例において、論理コンテナ階層をトラバースして、サスペンドされているプロセスに関連付けられる1つ又は複数の追加のサスペンドされているプロセスを、その1つ又は複数の追加のサスペンドされているプロセスが、サスペンドされているプロセスの論理コンテナに関連付けられる(例えばその中にネストされる)論理コンテナに割り当てられているという判断に基づいて、識別してもよい。このように、1つ又は複数の追加のサスペンドされているプロセスを実行状態においてもよい。別の例において、508において、カウンタの値が閾値を下回ると判断されると、サスペンドされているプロセスはサスペンド状態のままにされ得る。このように、サスペンドされているプロセスは、ウェイクポリシーに基づいて、実行状態におかれるか又はサスペンド状態のままにされる。510において方法は終了する。
図6は、サスペンドされているプロセスを再開するか否かをウェイクポリシーのセットに基づいて判断するよう構成されたシステム600の例を図示している。システム600は、ウェイク構成要素624を備えることができる。ウェイク構成要素624は、ウェイクポリシー(例えば、プロセス間通信のウェイクポリシー628、ユーザ入力のウェイクポリシー630、バックグラウンドからフォアグランドのウェイクポリシー632、及び/又は他のウェイクポリシーのようなウェイクポリシーのセット626)を保持するように構成される。ウェイクポリシーは、論理コンテナ階層610内のサスペンドされているプロセスに割り当てられた論理コンテナに関連付けられる。例えばウェイクポリシーのセット626を、サスペンドされているテキストエディタアプリケーション602のサスペンドされているテキストエディタプロセス614に関連付けられたテキストエディタ論理コンテナ612に関連付けることができる。一例において、サスペンドされているテキストエディタ印刷プロセス616、サスペンドされているテキストエディタ保存プロセス618、及び/又はサスペンドされているスペルチェッカプロセス622は、これらのプロセスが関連し得るため(例えばサスペンドされているスペルチェッカプロセス622が、テキストエディタ論理コンテナ612内にネストされるスペルチェッカ論理コンテナ620に割り当てられる)、テキストエディタプロセス614のサスペンドに基づいてサスペンドされていることがある。
プロセス間通信ウェイクポリシー628のようなウェイクポリシーを、サスペンドされているプロセスのためのウェイク通知であって、ウェイクポリシーに関連付けられた現在係属中のウェイク通知の数を示すカウンタに関連付けることができる。ウェイク構成要素624は、ウェイクポリシーに関連付けられるウェイク通知を受信したことに基づいてカウンタをインクリメントし、及び/又はウェイク通知が現在係属中でないとの通知を受信したことに基づいてカウンタをデクリメントするように構成される。例えばウェイク通知608が受信され得る。ウェイク通知608は、スプレッドシートアプリケーション604が、貼り付けされたテキストオブジェクト606に関連するサスペンドされているテキストエディタアプリケーション602にプロセス間通信呼を送ったことを示すことがある(例えば、貼り付けされたテキストオブジェクト606は、サスペンドされたテキストエディタアプリケーション602から機能及び/又はデータを導出することができ、したがって、スプレッドシートアプリケーション604は、サスペンドされているテキストエディタアプリケーション602にそのような機能及び/又はデータを要求する)。ウェイク構成要素624は、ウェイク通知608に基づいて、プロセス間通信ウェイクポリシー628に関連付けられるカウンタを1にインクリメントすることができる。
ウェイク構成要素624は、カウンタの値が閾値を上回るという判断に基づいて、サスペンドされているプロセスを実行状態におくように構成され、そうでなければ、ウェイク構成要素624は、サスペンドされているプロセスをサスペンド状態のままにすることができる。例えばウェイク構成要素624は、プロセス間通信ウェイクポリシー628のカウンタが0よりも大きい1の値を含むことに基づいて、サスペンドされているテキストエディタプロセス614を実行状態におくことができる。ウェイク構成要素624は、論理コンテナ階層610をトラバースして、再開されて実行状態になるサスペンドされているテキストエディタプロセス614に関連付けられる、1つ又は複数の追加のサスペンドされているプロセスを識別することができる。例えば、サスペンドされているテキストエディタ印刷プロセス616、サスペンドされているテキストエディタ保存プロセス618、及び/又はサスペンドされているスペルチェッカプロセス622は、そのようなプロセスが、テキストエディタ論理コンテナ612に割り当てられる、及び/又はスペルチェッカ論理コンテナ620のようなテキストエディタ論理コンテナ612に関連付けられる(例えばその中にネストされる)論理コンテナに割り当てられるという判断に基づいて識別され得る。このように、ウェイク構成要素624は、サスペンドされているテキストエディタプロセス614、サスペンドされているテキストエディタ印刷プロセス616、サスペンドされているテキストエディタ保存プロセス618、及び/又はサスペンドされているスペルチェッカプロセス622を実行状態におくことができ(634)、それによって、テキストエディタアプリケーション602は、スプレッドシートアプリケーション604からのプロセス間通信呼に応答することができる。一例において、ウェイク構成要素624は、再開されるプロセスに関連付けられた保存済みのメモリ内容をメモリにおいて、テキストエディタアプリケーション602の応答性を改善することができる。
アプリケーションのアプリケーション状態を管理する一実施形態が、図7の例示的な方法700によって図示されている。702において方法が開始する。704において、アプリケーションに関連付けられたタイマのリストが保持される(例えばアプリケーションに関連付けられたプロセスの1つ又は複数のタイマが保持される)。すなわち、アプリケーションに関連付けられるプロセスは、相対的タイマ(例えばテキストエディタ保存プロセスのためにテキストエディタアプリケーションによって20秒に設定されるタイムアウト)、絶対的タイマ(例えばカレンダーアプリケーションによって2011/9/15のAM5:00に設定されるタイムアウト)、及び/又は他のタイプのタイマのような1つ又は複数のタイマに関連付けられる。タイマの一例において、テキストエディタアプリケーションは、テキストエディタ保存プロセスが一般的に、エラーが発生していない限り完了するのに20秒より多くはかからないため、テキストエディタ保存プロセスについて20秒間の相対的タイマを設定してもよい。タイマの別の例において、カレンダーアプリケーションは、ユーザに2011/9/15のAM6:00に目覚ましの通知を提供するリマインダとして、2011/9/15のAM5:00の絶対的タイマを設定してもよい。
一例において、これらのタイマの1つ又は複数を、論理コンテナ階層内の、アプリケーションに割り当てられるルート論理コンテナに関連付けること、及び/又はアプリケーションに関連付けられるプロセスに割り当てられる1つ又は複数の論理コンテナに関連付けることができる。例えば、第1のプロセスが、ルート論理コンテナに関連付けられる(例えばその中にネストされる)第1の論理コンテナに割り当てられるとの判断に基づいて、アプリケーションの第1のプロセスに関連付けられる第1のタイマを保持することができる。第2のプロセスが、ルート論理コンテナ及び/又は第1の論理コンテナに関連付けられる第2の論理コンテナに割り当てられるとの判断に基づいて、アプリケーションの第2のプロセスに関連付けられる第2のタイマを保持することができる。このように、アプリケーションのプロセスに関連付けられるタイマのリストを保持することができる。
706において、アプリケーションをサスペンド状態におくべきとの通知を受信すると、タイマのリストから導出されるタイマ再設定データを含むアプリケーション状態情報が作成される。一例において、絶対的タイマに関連付けられる絶対的タイマ再設定データがアプリケーション状態情報内に記憶されることがある。絶対的タイマ再設定データは、絶対的タイマの元の満了時刻を含むことができる(例えば、カレンダーアプリケーションは、プロセス及び/又はアプリケーションがサスペンド状態におかれていることに起因してその時刻を過ぎたか否かにかかわらず、2011/9/15のAM5:00に通知をしようとする)。別の例では、相対的タイマに関連付けられる相対的タイマ再設定データがアプリケーション状態情報内に記憶されることがある(例えば、テキストエディタアプリケーションは、テキストエディタ保存プロセスが実行状態の間に20秒以内に完了しない場合にタイムアウト通知をしようとする)。相対的タイマ再設定データは、満了までの時間値(例えば、相対的タイマがサスペンドされたときから相対的タイマの元の満了時刻までの期間)を含むことができる。相対的タイマ再設定データは、例えば元の満了時刻とは異なる満了までの時間値を含むことがあるが、これは、テキストエディタアプリケーションが、実行状態の間にテキストエディタ保存プロセスが完了するのに20秒より長くかかったか否かに関係する可能性があり(例えば20秒よりも長くかかることは、致命的なエラーが発生したことを示すことがある)、テキストエディタ保存プロセスがサスペンドしたことに起因する相対的タイマの満了は、テキストエディタアプリケーションが関係する致命的なタイムアウトを表していない可能性があるので、テキストエディタ保存プロセスのサスペンドは相対的タイマを知らせることがある。このように、アプリケーション状態情報が作成され得る。
アプリケーションがサスペンド状態から実行状態におかれるべきとの通知を受信すると、アプリケーション状態情報内のタイマ再設定データを、タイマのリストに関連付けられる1つ又は複数のタイマに適用することができる。一例において、絶対的タイマ再設定データを絶対的タイマに適用して、再設定された絶対的タイマを作成してもよい。再設定された絶対的タイマは、絶対的タイマの元の満了時刻を含んでもよい。元の満了時刻が満了した場合、満了の通知をアプリケーションに提供することができる。別の例において、相対的タイマ再設定データを相対的タイマに適用して、再設定された相対的タイマを作成してもよい。再設定された相対的タイマは、満了までの時間値を現在時刻に適用することから導出される、再設定された満了タイマを含んでもよい。このように、アプリケーション及び/又はアプリケーションに関連付けられたプロセスを、タイマに関して現在のアプリケーション状態におくことができる。708において、方法は終了する。
アプリケーションのアプリケーション状態を管理する一実施形態が、図8の例示的な方法800によって示される。802において、方法が開始する。アプリケーションを、アプリケーションメッセージキューに関連付けることができる。アプリケーションメッセージキューは、アプリケーションに対するシステムメッセージを記憶するように構成されてよい。このように、アプリケーションは、アプリケーションメッセージキューを通じてシステムメッセージを受信することができる(例えば、アプリケーションは実行状態にある間にシステムメッセージをキューから取り出すことができる)。システムメッセージは、システム設定における変化のような、アプリケーション状態に関係する様々な情報に対応することがある。一例において、ユーザがタブレットデバイスを回転させることがあり、これによって、ビュー方向が横長ビューモードから縦長ビューモードに変化し得る。タブレットデバイスのオペレーティングシステムは、現在のビューモードが縦長に設定されたことを示すシステムメッセージを、アプリケーションメッセージキューに入れてよい。このように、アプリケーションはシステムメッセージをキューから取り出して、アプリケーション自体をタブレットデバイスの現在の状態に適合するよう縦長モードにしてもよい。システムメッセージは、ユーザインタフェースの色、言語設定、入力デバイス情報等のような様々な他の情報を含んでよい。
804において、アプリケーションがサスペンド状態にある間、アプリケーションに関連付けられたアプリケーションメッセージキューが保持され得る。すなわち、アプリケーションメッセージキューは、一般的に、アプリケーションがサスペンド状態にあるか及び/又は実行状態にあるかにかかわらず、システムメッセージを受信することがある(例えば、テキストエディタアプリケーションがサスペンドされている間、ユーザがタブレットデバイスを複数回回転させることがあり、したがって、オペレーティングシステムは現在のビューモードに対応する複数のシステムメッセージをキューに入れることがある)。不都合なことに、アプリケーションがサスペンド状態にある間に、複数の対応するシステムメッセージが、アプリケーションメッセージキューに入れられることがあり、1つ又は複数のメッセージが不適格及び/又は陳腐になることがある。例えば、テキストエディタアプリケーションがサスペンドされている間、4つのシステムメッセージが、経時的にアプリケーションメッセージキューに入れられることがある。ユーザはタブレットデバイスのシステム言語設定をドイツ語に変更してもよく、したがって、言語=ドイツ語というシステムメッセージが、アプリケーションシステムキューに入れられる。次に、ユーザはタブレットデバイスを横長モードに回転させてもよく、したがって、ビューモード=横長というメッセージがアプリケーションシステムキューに入れられる。ユーザがその後、タブレットデバイスのシステム言語設定を英語に変更してもよく、したがって、言語=英語というシステムメッセージがアプリケーションシステムキューに入れられる。最後に、ユーザはタブレットデバイスを縦長モードに回転させてもよく、したがって、ビューモード=縦長というメッセージがアプリケーションシステムキューに入れられる。このように、アプリケーションメッセージキューは、言語及びビューモードが他の値に変更されたことにより、言語=ドイツ語及びビューモード=横長というシステムメッセージのような不適切な及び/又は陳腐化したシステムメッセージを含むことがある。したがって、アプリケーションメッセージキューは、不適切な及び/又は陳腐化したメッセージを削除及び/又は修正すように維持され得る。
一例において、アプリケーションがサスペンド状態にある間に、アプリケーションメッセージキューに向けられた第1のシステムメッセージが受信されることがある。第1のシステムメッセージがアプリケーションメッセージキュー内の第2のシステムメッセージに対応するか否かについて判断が行われ得る(例えば、第1のシステムメッセージが言語システムメッセージに対応する場合、アプリケーションメッセージキューをトラバースして、言語システムメッセージに対応する1つ又は複数のシステムメッセージを識別してもよい)。第1のシステムメッセージが第2のシステムメッセージに対応すると判断すると、第1のシステムメッセージ及び/又は第2のシステムメッセージが削除及び/又は修正され得る(例えば、より新しい及び/又はより関連性のある第1のシステムメッセージを保持し、第2のシステムメッセージを削除してもよい)。例えば関連性ランク付けを第1のシステムメッセージ及び第2のシステムメッセージに割り当てて、どちらのシステムメッセージを修正及び/又は削除すべきかを判断してもよい。806において、方法は終了する。
図9は、タイマデータ及び/又はシステムメッセージデータのような、アプリケーションのアプリケーション状態を管理するよう構成されるシステム900の一例を示す。システム900は、アプリケーション状態マネージャ910を備えることができる。アプリケーション状態マネージャ910は、アプリケーションに関連付けられるタイマのリスト904を保持するように構成されることがある。例えばタイマのリスト904は、10分後にタイムアウトするように設定されたスペルチェッカの相対的タイマ906、2011/8/12のPM3:00にタイムアウトするように設定されたテキストエディタの絶対的タイマ908、及び/又は他のタイマを含むことがある。アプリケーション状態マネージャ910は、アプリケーションがサスペンド状態におかれるべきであるという通知902を受信することがある。例えば通知902は、テキストエディタアプリケーション及び/又はスペルチェッカアプリケーションがサスペンド状態におかれるべきであるということを示してもよい。
通知902を受信すると、アプリケーション状態マネージャ910は、タイマのリスト904から導出されるタイマ再設定データを含むアプリケーション状態情報912を作成することができる。例えば、スペルチェッカの相対的タイマ906のための相対的タイマ再設定データ914が作成されることがある。相対的タイマ再設定データ914は、スペルチェッカアプリケーションがサスペンドされた時間までに10分間のうち2分間が経過し、したがって10分間の相対的タイマの満了まで8分間残っているため、8分間という満了までの時間値を含む可能性がある。テキストエディタの絶対的タイマ908のための絶対的タイマ再設定データ916が作成されることもある。絶対的タイマ再設定データ916は、2011/8/12 PM3:00というの元の満了時刻を含み得る。このようにして、アプリケーション状態情報912が作成され得る。
テキストエディタアプリケーション及び/又はスペルチェッカアプリケーションが実行状態におかれるべきであるという通知を受信すると、アプリケーション状態情報912内の相対的タイマ再設定データ914及び/又は絶対的タイマ再設定データ916が、スペルチェッカの相対的タイマ906及び/又はテキストエディタの絶対的タイマ908に適用されてよい。このように、8分間という再設定された相対的タイマが作成され、2011/8/12 PM3:00という再設定された絶対的タイマが作成され得る。
図10は、システムメッセージデータのような、アプリケーションのアプリケーション状態を管理するように構成されるシステム1000の一例を示す。システム1000は、メッセージ管理構成要素1006を備えることができる。メッセージ管理構成要素1006は、アプリケーションがサスペンド状態にある間、アプリケーションに関連付けられたアプリケーションメッセージキュー1004を保持するように構成され得る。アプリケーションメッセージキュー1004は、アプリケーションのためのシステムメッセージを記憶するように構成されてよい。一例において、テキストエディタアプリケーションがアプリケーションメッセージキュー1004に関連付けられることがある。テキストエディタアプリケーションがサスペンド状態におかれることがある。テキストエディタアプリケーションがサスペンドされている間に、新たなシステムメッセージがアプリケーションメッセージキュー1004内に入れられることがあることが認識され得る。アプリケーションメッセージキュー1004の現在の状態は、ビューモード=横長のシステムメッセージ、ユーザインタフェース=緑のシステムメッセージ、言語=英語のシステムメッセージ、新たな入力デバイス=マウス、及び/又は他のシステムメッセージを含み得る。
アプリケーションがサスペンドされている間に、新たなシステムメッセージ1002を受信することがある(例えば、ビューモード=縦長という新たなシステムメッセージ、ユーザインタフェース=赤という新たなシステムメッセージ、新たな入力デバイス=キーボードという新たなシステムメッセージ、及び/又は他の新たなシステムメッセージ)。メッセージ管理構成要素1006は、新たなシステムメッセージ1002を考慮して、不適切及び/又は陳腐化したシステムメッセージがアプリケーションメッセージキュー1004から削除及び/又は修正されるよう、アプリケーションメッセージキュー1004を保持するように構成され得る。一例において、ビューモード=縦長という新たなシステムメッセージは、アプリケーションメッセージキュー1004内のビューモード=横長というシステムメッセージに対応するものとして判断され得る。ビューモード=縦長という新たなシステムメッセージは、ビューモード=横長というシステムメッセージを不適切及び/又は陳腐にし得るため、ビューモード=横長というシステムメッセージが削除され(1012)、ビューモード=縦長という新たなシステムメッセージがアプリケーションメッセージキュー1004に追加される(1008)。
別の例において、ユーザインタフェース=赤という新たなシステムメッセージは、アプリケーションメッセージキュー1004内のユーザインタフェース=緑というシステムメッセージに対応するものとして判断され得る。ユーザインタフェース=赤という新たなシステムメッセージは、ユーザインタフェース=緑というシステムメッセージを不適切及び/又は陳腐にし得るため、ビユーザインタフェース=緑というシステムメッセージが削除され(1014)、ユーザインタフェース=赤という新たなシステムメッセージがアプリケーションメッセージキュー1004に追加される(1010)。別の例において、新たな入力デバイス=キーボードという新たなシステムメッセージは、新たな入力デバイス=マウスというシステムメッセージに対応するものとして判断され得る。新たな入力デバイス=キーボードという新たなシステムメッセージは、新たな入力デバイス=マウスというシステムメッセージに対する追加であるので、新たな入力デバイス=マウスというシステムメッセージは修正されて(1016)、新たな入力デバイス=マウス及びキーボードというシステムメッセージになる。このように、アプリケーションメッセージキュー1004は、アプリケーションがサスペンドされている間にメッセージ管理構成要素によって保持されるので、アプリケーションは、再開されると、関連するシステムメッセージのみをキューから取り出せばよい。
更に別の実施形態は、本明細書に提示される技法の1つ又は複数を実施するように構成されるプロセッサ実行可能命令を含むコンピュータ読取可能媒体を含む。これらの方法で考案され得る例示的なコンピュータ読取可能媒体が図11に示されている。図11において、実装形態1100は、コンピュータ読取可能データ1114が符号化されるコンピュータ読取可能媒体1116(例えばCD−R、DVD−R又はハードディスクドライブのプラッタ)を備える。このコンピュータ読取可能データ1114は、本明細書に記載の原理の1つ又は複数に従って動作するように構成されるコンピュータ命令1112のセットを備える。1つのそのような実施形態1100において、プロセッサ実行可能コンピュータ命令1112は、例えば図1の例示的な方法100の少なくとも一部、図2の例示的な方法200の少なくとも一部、図4の例示的な方法400の少なくとも一部、図5の例示的な方法500の少なくとも一部、図7の例示的な方法700の少なくとも一部、及び/又は図8の例示的な方法800の少なくとも一部のような、方法1110を実行するように構成され得る。別のそのような実施形態において、プロセッサ実行可能命令1112は、例えば図3の例示的なシステム300の少なくとも一部、図6の例示的なシステム600の少なくとも一部、図9の例示的なシステム900の少なくとも一部、及び/又は図10の例示的なシステム1000の少なくとも一部のような、システムを実装するように構成され得る。本明細書に提示される技法に従って動作するように構成されている多くのそのようなコンピュータ読取可能媒体が当業者によって考案される可能性がある。
本主題は構造的特徴及び/又は方法的動作に特有の文言において説明されているが、特許請求の範囲において定義される本主題は必ずしも、上述の具体的な特徴及び動作に限定されないことは理解されよう。むしろ、上述の具体的な特徴及び動作は、特許請求の範囲を実装するための例示的な形式として開示されている。
本明細書において使用される場合、「構成要素」、「モジュール、「システム」、「インタフェース」等の用語は、一般的に、コンピュータ関連のエンティティ、すなわち、ハードウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア又は実行中のソフトウェアのいずれかを指すように意図される。例えば構成要素は、これらには限定されないが、プロセッサ上で動作するプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム及び/又はコンピュータであってもよい。例示として、コントローラ上で動作しているアプリケーションとコントローラとの双方を構成要素とすることができる。1つ又は複数の構成要素がプロセス及び/又は実行スレッド内に存在してもよく、構成要素を、1つのコンピュータ上に局在化してもよく、及び/又は2つ若しくはそれ以上のコンピュータの間に分散させてもよい。
さらに、特許請求に係る主題を、開示される主題を実装するようコンピュータを制御するソフトウェア、ファームウェア、ハードウェア又はそれらの任意の組合せを生成するために標準的なプログラミング及び/又はエンジニアリング技法を使用する、方法、装置、又は製造品として実装されてもよい。「製品」という用語は、本明細書において使用されるとき、任意のコンピュータ読取可能デバイス、キャリア又は媒体からアクセス可能なコンピュータプログラムを包含するように意図される。当然、本開示の範囲及び精神から逸脱することなく、この構成に多くの修正を行うことができることが当業者には認識されよう。
図12及び以下の記述は、本明細書で説明されるプロビジョンの1つ又は複数の実施形態を実装する適切なコンピューティング環境の簡潔で一般的な説明を提供する。図12の動作環境は適切な動作環境の一例に過ぎず、動作環境の使用又は機能の範囲に関していかなる限定をも示唆するように意図されるものではない。例示的なコンピューティングデバイスは、限定ではないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド又はラップトップデバイス、モバイルデバイス(携帯電話、携帯情報端末(PDA)、メディアプレーヤ等のような)、マルチプロセッサシステム、家庭用電化製品、ミニコンピュータ、メインフレームコンピュータ、上記のシステム又はデバイスのいずれかを含む分散コンピューティング環境等を含む。
必須ではないが、諸実施形態は、1つ又は複数のコンピューティングデバイスによって実行されている「コンピュータ読取可能命令」の一般的な文脈において説明されている。コンピュータ読取可能命令は、(後述される)コンピュータ読取可能媒体を介して分散されてもよい。コンピュータ読取可能命令は、特定のタスクを実行し、又は特定の抽象データ型を実装する、関数、オブジェクト、アプリケーションプログラミングインタフェース(API)、データ構造等のような、プログラムモジュールとして実装されてもよい。典型的に、コンピュータ読取可能命令の機能は、様々な実施形態において所望に応じて組合せ又は分散されてもよい。
図12は、本明細書において提供される1つ又は複数の実施形態を実装するように構成されるコンピューティングデバイス1212を備えるシステム1210の一例を示す。一構成において、コンピューティングデバイス1212は、少なくとも1つの処理装置1216及びメモリ1218を含む。コンピューティングデバイスの正確な構成及びタイプに応じて、メモリ1218は、揮発性(例えばRAMのような)、不揮発性(例えばROM、フラッシュメモリ等のような)又はそれら2つの何らかの組合せであってもよい。この構成は、図12において破線1214によって示されている。
他の実施形態において、デバイス1212は、追加の特徴及び/又は機能を含んでもよい。例えばデバイス1212は、限定ではないが、磁気ストレージ、光ストレージ等を含む追加のストレージ(例えば取外し可能及び/又は取外し不可能)も含んでもよい。そのような追加のストレージは、図12においストレージ1220によって示されている。一実施形態において、本明細書において提供される1つ又は複数の実施形態を実装するためのコンピュータ読取可能命令は、ストレージ1220内にあってもよい。ストレージ1220は、オペレーティングシステム、アプリケーションプログラム等を実装するための他のコンピュータ読取可能命令を記憶してもよい。コンピュータ読取可能命令は、例えば処理装置1216による実行のためにメモリ1218内にロードされてもよい。
本明細書において使用されるとき、「コンピュータ読取可能媒体」という用語は、コンピュータ記憶媒体を含む。コンピュータ記憶媒体は、コンピュータ読取可能命令又は他のデータのような情報の記憶のための任意の方法又は技術で実装される揮発性及び不揮発性、取外し可能及び取外し不可能の媒体を含む。メモリ1218及びストレージ1220は、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、限定ではないが、RAM、ROM、EEPROM、フラッシュメモリ若しくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)若しくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、又は所望の情報を記憶するのに使用可能であり、デバイス1212によってアクセス可能な任意の他の媒体を含む。任意のこのようなコンピュータ記憶媒体はデバイス1212の一部であってもよい。
デバイス1212は、デバイス1212が他のデバイスと通信することを可能にする通信接続(複数可)1226を含んでもよい。通信接続1226は、限定ではないが、モデム、ネットワークインタフェースカード(NIC)、統合ネットワークインタフェース、無線周波数送信機/受信機、赤外線ポート、USB接続、又はコンピューティングデバイス1212を他のコンピューティングデバイスに接続するための他のインタフェースを含んでもよい。通信接続1226は、有線接続又は無線接続を含んでもよい。通信接続1226は通信媒体を送信及び/又は受信することもある。
「コンピュータ読取可能媒体」という用語は、通信媒体を含んでもよい。通信媒体は、典型的に、搬送波若しくは他の伝送機構のように、コンピュータ読取可能命令又は他のデータを「変調データ信号」で具現化し、任意の情報配信媒体を含む。「変調データ信号」という用語は、その特性のうちの1つ又は複数が、信号内に情報を符号化するような手法で設定又は変更された信号を含んでもよい。
デバイス1212は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス、赤外線カメラ、ビデオ入力デバイス及び/又は任意の他の入力デバイスのような入力デバイス(複数可)1224を含んでもよい。1つ又は複数のディスプレイ、スピーカ、プリンタ及び/又は任意の他の出力デバイスのような出力デバイス(複数可)1222もデバイス1212に含まれてもよい。入力デバイス1224及び出力デバイス1222は、有線接続、無線接続又はそれらの任意の組合せを介してデバイス1212に接続されてもよい。一実施形態において、別のコンピューティングデバイスからの入力デバイス又は出力デバイスを、コンピューティングデバイス1212の入力デバイス1224又は出力デバイス1222として使用してもよい。
コンピューティングデバイス1212の構成要素は、バスのような様々な相互接続によって接続されてもよい。そのような相互接続は、PCI Expressのような周辺構成要素相互接続(PCI)、ユニバーサルシリアルバス(USB)、ファームウェア(IEEE 1394)及び光学バス構造等を含んでもよい。別の実施形態において、コンピューティングデバイス1212の構成要素は、ネットワークによって相互接続されてもよい。例えばメモリ1218は、ネットワークによって相互接続された異なる物理的位置に置かれた複数の物理メモリユニットから構成されてもよい。
コンピュータ読取可能命令を記憶するのに利用される記憶デバイスがネットワークにわたって分散されてもよいことが当業者には認識されよう。例えば、ネットワーク1228を介してアクセス可能なコンピューティングデバイス1230が、本明細書において提供される1つ又は複数の実施形態を実装するコンピュータ読取可能命令を記憶してもよい。コンピューティングデバイス1212は、コンピューティングデバイス1230にアクセスして、コンピュータ読取可能命令の一部又はすべてを実行するためにダウンロードしてもよい。あるいは、コンピューティングデバイス1212は、必要に応じてコンピュータ読取可能命令のうちいくつかの部分をダウンロードしてもよく、又は一部の命令をコンピューティングデバイス1212において実行し、一部をコンピューティングデバイス1230において実行してもよい。
諸実施形態の様々な動作が本明細書において提供される。一実施形態において、説明された動作のうちの1つ又は複数が、1つ又は複数のコンピュータ読取可能媒体上に記憶されるコンピュータ読取可能命令の性質であってもよく、これらの命令は、コンピューティングデバイスによって実行されると、該コンピューティングデバイスに、説明された動作を実行させる。動作の一部又はすべてが説明される順序は、これらの動作が必ずしも順序に依存することを暗示するものとして解釈されるべきではない。代替的な順序が、本明細書の利益を享受する当業者によって認識されよう。さらに、本明細書において提供される各実施形態において、必ずしもすべての動作が存在するとは限らないことが理解されよう。
さらに、「例示」という語は本明細書において、例、事例又は実例としての役割を果たすことを意味するように使用される。「例示」として本明細書で説明される任意の態様又は設計が、必ずしも他の態様又は設計よりも有利であるものとして解釈されるべきではない。むしろ、例示という語の使用は、概念を具体的に提示するように意図されている。本明細書において使用されるとき、「又は(若しくは、あるいは)」という用語は、排他的な「又は」を意味するものではなく、包含的な「又は」を意味するように意図されている。すなわち、別途指定されない限り、又は文脈から明らかでない限り、「XがA又はBを用いる」は、任意の自然な包含的順列を意味するように意図されている。すなわち、XがAを用いるか、XがBを用いるか、XがA及びBの双方を用いる場合、「XがA又はBを用いる」は、上記の事例のいずれかの下で満たされる。加えて、本明細書及び特許請求の範囲において使用されるとき冠詞「ある(a、an)」は、概して、別途指定されない限り、又は文脈から単数形が対象になることが明らかでない限り、「1つ又は複数」を意味するように解釈され得る。また、A及びB等の少なくとも1つとは、概して、A又はBか、AとBの双方を意味する。
本開示は、1つ又は複数の実装態様に関して図示及び説明されているが、当業者には、本明細書及び添付の図面を読み理解することに基づいて、等価な代替及び変更が着想されよう。本開示は、すべてのそのような変更及び代替を含むものであり、特許請求の範囲の記載範囲によってのみ限定される。特に上述の構成要素(例えば要素、リソース等)によって実行される様々な機能に関して、そのような構成要素を説明するのに使用される用語は、別途指示されない限り、本開示の例示的な実装態様における機能を実行する開示された構造に構造的に等価でないとしても、説明された構成要素の指定された機能を実行する任意の構成要素に対応する(すなわち機能的に等価である)ことが意図される。加えて、本開示の特定の特徴は、いくつかの実施態様のうちの1つのみに関して開示されていることがあるが、そのような特徴を、任意の所与の又は特定の用途に望まれ、有利であり得るように、他の実施態様の1つ又は複数の他の特徴と組み合わせてもよい。さらに、「含む(include)」、「有する(having)」、「有する(has)」、「有する、用いる(with)」という用語又はそれらの変化形が詳細な説明又は特許請求の範囲のいずれかにおいて使用されている限りにおいて、そのような用語は、「備える(comprising)」という用語と同様に包含的であることが意図されている。

Claims (10)

  1. アプリケーションのアプリケーション状態を管理する方法であって、
    アプリケーションに関連付けられるタイマのリストを保持するステップと、
    前記アプリケーションはサスペンド状態におかれるべきであるとの通知を受信すると、前記タイマのリストから導出されるタイマ再設定データを含むアプリケーション状態を作成するステップと
    を含む、方法。
  2. 前記アプリケーション状態を作成するステップは、
    前記アプリケーション状態内に絶対的タイマに関連付けられる絶対的タイマ再設定データを記憶することを含み、前記絶対的タイマ再設定データは、前記絶対的タイマの元の満了時刻を含む、請求項1に記載の方法。
  3. 前記アプリケーション状態を作成するステップは、
    前記アプリケーション状態内に相対的タイマに関連付けられる相対的タイマ再設定データを記憶することを含み、前記相対的タイマ再設定データは、満了までの時間値を含む、請求項1に記載の方法。
  4. 前記満了までの時間値は、前記相対的タイマがサスペンドされたときから前記相対的タイマの元の満了時刻までの期間を示す、請求項3に記載の方法。
  5. 前記タイマのリストを保持するステップは、
    論理コンテナ階層内において前記アプリケーションに割り当てられたルート論理コンテナに関連付けられる1つ又は複数のタイマを保持するステップを含み、該1つ又は複数のタイマを保持することは、
    前記アプリケーションの第1のプロセスが、前記論理コンテナ階層内の前記ルート論理コンテナに関連付けられた第1の論理コンテナに割り当てられると判断したことに基づいて、前記第1のプロセスに関連付けられた第1のタイマを維持することを含む、請求項1に記載の方法。
  6. 前記アプリケーションが前記サスペンド状態から実行状態におかれるべきであるとの通知を受信すると、前記アプリケーション状態内の前記タイマ再設定データを、前記タイマのリストに関連付けられる1つ又は複数のタイマに適用するステップを含む、請求項1に記載の方法。
  7. アプリケーションのアプリケーション状態を管理するシステムであって、
    アプリケーションに関連付けられるタイマのリストを保持し、
    前記アプリケーションがサスペンド状態におかれるべきであるとの通知を受信すると、前記タイマのリストから導出されるタイマ再設定データを含むアプリケーション状態を作成する
    ように構成されるアプリケーション状態マネージャを備える、システム。
  8. 前記アプリケーション状態マネージャは、
    前記アプリケーションが前記サスペンド状態から実行状態におかれるべきであるとの通知を受信すると、前記アプリケーション状態内の前記タイマ再設定データを、前記タイマのリストに関連付けられている1つ又は複数のタイマに適用するように構成される、請求項7に記載のシステム。
  9. 前記アプリケーション状態マネージャは、
    絶対的タイマ再設定データを絶対的タイマに適用して、該絶対的タイマの元の満了時刻を含む、再設定された絶対的タイマを作成し、
    相対的タイマ再設定データを相対的タイマに適用して、満了までの時間値を現在の時刻に適用することから導出される再設定満了時刻を含む、再設定された相対的タイマを作成する
    ように構成される、請求項8に記載のシステム。
  10. 前記アプリケーションが前記サスペンド状態にある間、前記アプリケーションに関連付けられるアプリケーションメッセージキューであって、前記アプリケーションに対するシステムメッセージを記憶するように構成されるアプリケーションメッセージキューを保持し、
    前記アプリケーションが前記サスペンド状態にある間、前記アプリケーションメッセージキューに向けられた第1のシステムメッセージが、前記アプリケーションメッセージキュー内の第2のシステムメッセージに対応するか否かを判断し、
    前記第1のシステムメッセージが前記第2のシステムメッセージに対応すると判断すると、前記第1のシステムメッセージと前記第2のシステムメッセージとのうちの少なくとも一方を修正する
    ように構成されるメッセージ管理構成要素を備える、請求項7に記載のシステム。
JP2014529682A 2011-09-12 2011-10-11 サスペンド状態及び実行状態におけるプロセスの管理 Active JP5985644B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/230,698 US9588576B2 (en) 2011-09-12 2011-09-12 Managing processes within suspend states and execution states
US13/230,698 2011-09-12
PCT/US2011/055696 WO2013039526A1 (en) 2011-09-12 2011-10-11 Managing processes within suspend states and execution states

Publications (2)

Publication Number Publication Date
JP2014526733A true JP2014526733A (ja) 2014-10-06
JP5985644B2 JP5985644B2 (ja) 2016-09-06

Family

ID=47831061

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014529682A Active JP5985644B2 (ja) 2011-09-12 2011-10-11 サスペンド状態及び実行状態におけるプロセスの管理

Country Status (6)

Country Link
US (1) US9588576B2 (ja)
EP (1) EP2756386B1 (ja)
JP (1) JP5985644B2 (ja)
KR (1) KR101943133B1 (ja)
CN (1) CN102999384B (ja)
WO (1) WO2013039526A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7434431B2 (ja) 2017-09-28 2024-02-20 オラクル・インターナショナル・コーポレイション 状態管理永続性

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014138010A1 (en) * 2013-03-04 2014-09-12 Yagi Corporation Activity interruption management
CN103984743B (zh) * 2014-05-23 2018-03-09 北京猎豹网络科技有限公司 一种管理内存资源的方法及装置
CN104951282A (zh) * 2015-05-21 2015-09-30 中国人民解放军理工大学 一种定时器管理系统及方法
US11023233B2 (en) 2016-02-09 2021-06-01 Intel Corporation Methods, apparatus, and instructions for user level thread suspension
CN108121572B (zh) * 2016-11-28 2021-02-12 华为技术有限公司 一种web应用启动方法及装置
CN109032777B (zh) * 2018-06-29 2021-02-05 北京鸿享技术服务有限公司 进程重启方法、装置、计算设备及计算机存储介质
CN112988375B (zh) * 2019-12-17 2024-04-09 华为技术有限公司 进程管理方法和装置、电子设备
US11762525B2 (en) * 2020-01-15 2023-09-19 Vmware, Inc. Enterprise branding configuration provisioning

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001318807A (ja) * 2000-05-11 2001-11-16 Nec Microsystems Ltd タスク切り替え制御方法及び装置
JP2005107757A (ja) * 2003-09-30 2005-04-21 Matsushita Electric Ind Co Ltd プログラムの暴走検出方法およびプログラムの暴走検出装置
JP2006178822A (ja) * 2004-12-24 2006-07-06 Denso Corp マイクロコンピュータおよび時間計測方法
JP2010108294A (ja) * 2008-10-30 2010-05-13 Ntt Docomo Inc イベントキュー管理装置及びイベントキュー管理方法

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5944829A (en) 1996-09-30 1999-08-31 Intel Corporation Adjusting software characteristics by user interface based upon battery level and the amount of time the user wants the battery to last
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
US6834386B1 (en) 1999-07-16 2004-12-21 Microsoft Corporation Method and system for regulating background tasks using performance measurements
JP2001256066A (ja) 2000-02-29 2001-09-21 Internatl Business Mach Corp <Ibm> コンピュータシステム、オペレーティングシステムの切り替えシステム、オペレーティングシステムの実装方法、オペレーティングシステムの切り替え方法、記憶媒体及びプログラム伝送装置
US6883170B1 (en) * 2000-08-30 2005-04-19 Aspect Communication Corporation Method and system to maintain a hierarchy of instantiated application objects and to enable recovery from an applications failure
US20020059357A1 (en) 2000-10-27 2002-05-16 Pac Interactive Technology, Inc System, method and apparatus of simplifying interpretation of suspend and wake-up functions in operating system for information appliance (IA)
TW564652B (en) 2002-09-05 2003-12-01 Ind Tech Res Inst A mobility management method and system for wireless data networks
US7506273B2 (en) 2003-03-19 2009-03-17 International Business Machines Corporation Method and system for modifying properties of graphical user interface components
CN100549966C (zh) 2003-09-30 2009-10-14 明导公司 使用一个或多个自动机的系统验证
US7472389B2 (en) * 2003-10-29 2008-12-30 Honeywell International Inc. Stochastically based thread budget overrun handling system and method
US20050155011A1 (en) 2004-01-12 2005-07-14 Stephan Heik Method and system for restricting access in a distributed job environment
GB0411682D0 (en) * 2004-05-25 2004-06-30 Chello Broadband N V Display of enhanced content
US7827558B2 (en) 2004-06-30 2010-11-02 Devicevm, Inc. Mechanism for enabling a program to be executed while the execution of an operating system is suspended
CN100375034C (zh) 2005-01-05 2008-03-12 联想(新加坡)私人有限公司 在计算机系统中用于对进程进行休眠的方法和系统
US20060236390A1 (en) * 2005-04-18 2006-10-19 Research In Motion Limited Method and system for detecting malicious wireless applications
US20060248471A1 (en) 2005-04-29 2006-11-02 Microsoft Corporation System and method for providing a window management mode
US7373537B2 (en) 2005-06-28 2008-05-13 Intel Corporation Response to wake event while a system is in reduced power consumption state
US20070028052A1 (en) 2005-07-28 2007-02-01 International Business Machines Corporation Method and apparatus for maintaining cached state data for one or more shared devices in a logically partitioned computer system
US7895309B2 (en) * 2006-01-11 2011-02-22 Microsoft Corporation Network event notification and delivery
US20070245163A1 (en) 2006-03-03 2007-10-18 Yung-Hsiang Lu Power management in computer operating systems
JP4356800B2 (ja) 2006-03-03 2009-11-04 日本電気株式会社 携帯電話機および携帯電話機の制御方法
US7769028B2 (en) * 2006-06-21 2010-08-03 Harris Corporation Systems and methods for adaptive throughput management for event-driven message-based data
JP4342576B2 (ja) 2006-07-25 2009-10-14 株式会社エヌ・ティ・ティ・ドコモ 複数オペレーティングシステム切替制御装置及びコンピュータシステム
US7584376B2 (en) 2006-08-23 2009-09-01 Palm, Inc. Method and apparatus for power management
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
US7853812B2 (en) 2007-02-07 2010-12-14 International Business Machines Corporation Reducing power usage in a software application
KR20080086757A (ko) 2007-03-23 2008-09-26 주식회사 엘지텔레콤 이동통신단말기에서의 어플리케이션 구동방법
US8627327B2 (en) 2007-10-24 2014-01-07 International Business Machines Corporation Thread classification suspension
US20090295746A1 (en) * 2008-04-29 2009-12-03 Davidson Philip L Event registration and dispatch system and method for multi-point controls
GB0808576D0 (en) 2008-05-12 2008-06-18 Xmos Ltd Compiling and linking
US8776078B2 (en) 2008-05-20 2014-07-08 International Business Machines Corporation Method for dynamically freeing computer resources
CN101281480B (zh) 2008-05-21 2010-06-23 中兴通讯股份有限公司 一种嵌入式系统中实现睡眠功能的方法
US9027027B2 (en) 2008-06-09 2015-05-05 Microsoft Technology Licensing, Llc Thread management based on device power state
US8510577B2 (en) 2008-07-28 2013-08-13 Microsoft Corporation Reducing power consumption by offloading applications
US7861024B2 (en) 2008-09-30 2010-12-28 Intel Corporation Providing a set aside mechanism for posted interrupt transactions
US20100088495A1 (en) 2008-10-04 2010-04-08 Microsoft Corporation Mode-specific container runtime attachment
US8239667B2 (en) 2008-11-13 2012-08-07 Intel Corporation Switching between multiple operating systems (OSes) using sleep state management and sequestered re-baseable memory
US8543803B2 (en) 2009-02-20 2013-09-24 Lenovo (Singapore) Pte Ltd Apparatus, system, and method for accurate automated scheduling of computer suspend and resume
US7853817B2 (en) 2009-02-26 2010-12-14 Apple Inc. Power management independent of CPU hardware support
US8352933B2 (en) 2009-03-26 2013-01-08 International Business Machines Corporation Concurrent patching of operating systems
US8239867B2 (en) 2009-06-03 2012-08-07 Apple Inc. Method and apparatus for implementing atomic FIFO
US8490075B2 (en) 2009-11-23 2013-07-16 Nokia Corporation Method and apparatus for optimizing an exchange of service updates
CN102087651A (zh) 2009-12-02 2011-06-08 石庆生 一种酒店客房服务控制装置
US9361165B2 (en) 2009-12-03 2016-06-07 International Business Machines Corporation Automated merger of logically associated messages in a message queue
US8286011B2 (en) 2010-02-28 2012-10-09 Freescale Semiconductor, Inc. Method of waking processor from sleep mode
US8688966B2 (en) * 2010-08-31 2014-04-01 Apple Inc. Systems, methods, and computer-readable media for presenting visual content with a consistent orientation
US8726063B2 (en) * 2011-07-26 2014-05-13 Raytheon Company Systems and methods providing output sample frequency determinism by calculating a delay with a wall clock and using a timer to compensate for the delay

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001318807A (ja) * 2000-05-11 2001-11-16 Nec Microsystems Ltd タスク切り替え制御方法及び装置
JP2005107757A (ja) * 2003-09-30 2005-04-21 Matsushita Electric Ind Co Ltd プログラムの暴走検出方法およびプログラムの暴走検出装置
JP2006178822A (ja) * 2004-12-24 2006-07-06 Denso Corp マイクロコンピュータおよび時間計測方法
JP2010108294A (ja) * 2008-10-30 2010-05-13 Ntt Docomo Inc イベントキュー管理装置及びイベントキュー管理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7434431B2 (ja) 2017-09-28 2024-02-20 オラクル・インターナショナル・コーポレイション 状態管理永続性

Also Published As

Publication number Publication date
EP2756386B1 (en) 2021-11-24
WO2013039526A1 (en) 2013-03-21
CN102999384A (zh) 2013-03-27
EP2756386A1 (en) 2014-07-23
US20130067490A1 (en) 2013-03-14
KR20140067040A (ko) 2014-06-03
EP2756386A4 (en) 2016-06-15
CN102999384B (zh) 2017-05-17
US9588576B2 (en) 2017-03-07
KR101943133B1 (ko) 2019-01-28
JP5985644B2 (ja) 2016-09-06

Similar Documents

Publication Publication Date Title
JP5872699B2 (ja) サスペンド状態及び実行状態におけるプロセスの管理
JP5985644B2 (ja) サスペンド状態及び実行状態におけるプロセスの管理
US9952897B2 (en) Managing processes within suspend states and execution states
US10684641B2 (en) Suspension and/or throttling of processes for connected standby
CA2844294C (en) Suspension and/or throttling of processes for connected standby
AU2011374896B2 (en) Suspension and/or throttling of processes for connected standby

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140924

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160314

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: 20160705

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160803

R150 Certificate of patent or registration of utility model

Ref document number: 5985644

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