(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-01
(54)【発明の名称】個々のアプリケーション用のカスタマイズされたルートプロセス
(51)【国際特許分類】
G06F 9/445 20180101AFI20221124BHJP
【FI】
G06F9/445
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022520359
(86)(22)【出願日】2020-09-30
(85)【翻訳文提出日】2022-05-23
(86)【国際出願番号】 US2020053529
(87)【国際公開番号】W WO2021067424
(87)【国際公開日】2021-04-08
(32)【優先日】2019-10-03
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】ユダノフ ドミトリー
(72)【発明者】
【氏名】ブラッドショウ サムエル イー.
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AC01
5B376AC11
5B376AC28
5B376DA20
5B376FA13
(57)【要約】
コンピューティングデバイス(たとえば、モバイルデバイス)は、アプリケーションの事前の実行のパターンに従って、アプリケーションのルートプロセスを初期点まで実行することができる。ルートプロセスは、コンピューティングデバイス内の個々のアプリケーションの多くのそれぞれのカスタマイズされたルートプロセスの1つである可能性がある。デバイスは、デバイスのユーザーからアプリケーションを起動する要求を受信することができる。そして、デバイスは、アプリケーションを起動する要求を受信すると、アプリケーションのルートプロセスを使用することによってアプリケーションを起動することができる。実行、受信、または起動のうちの少なくとも1つは、デバイスのオペレーティングシステムによって実行することができる。デバイスはまた、アプリケーションのルートプロセスを複数のプロセスにフォークすることができ、アプリケーションを起動する要求を受信すると、アプリケーションを起動する要求に従って複数のプロセスのうちの少なくとも1つを使用することによって起動することができる。
【特許請求の範囲】
【請求項1】
方法であって、
モバイルデバイスにおいて、アプリケーションの事前の実行のパターンに従って、前記アプリケーションのルートプロセスを初期点まで実行することと、
前記モバイルデバイスのユーザーから前記アプリケーションを起動する要求を受信することと、
前記アプリケーションを起動する前記要求を受信すると、前記アプリケーションの前記ルートプロセスを使用することによって前記モバイルデバイスで前記アプリケーションを起動することと
を含む、前記方法。
【請求項2】
前記実行、前記受信、または前記起動のうちの少なくとも1つが、前記モバイルデバイスのオペレーティングシステム(OS)によって実行される、請求項1に記載の方法。
【請求項3】
前記モバイルデバイスの前記オペレーティングシステム(OS)によって、前記アプリケーションの前記ルートプロセスを複数のプロセスにフォークすることと、
前記アプリケーションを起動する前記要求を受信すると、前記アプリケーションを起動する前記要求に従って、前記複数のプロセスのうちの少なくとも1つを使用することによって前記モバイルデバイス内の前記アプリケーションを起動することと
を含む、請求項1に記載の方法。
【請求項4】
前記複数のプロセスの少なくともいくつかが前記ルートプロセスとは異なる、請求項3に記載の方法。
【請求項5】
前記アプリケーションの前記事前の実行のパターンが、前記ユーザー及び他のユーザーによる前記モバイルデバイスでの前記アプリケーションの使用に由来し、前記ルートプロセスが任意のユーザーによる前記モバイルデバイスでの前記アプリケーションの使用のためにカスタマイズされる、請求項1に記載の方法。
【請求項6】
前記アプリケーションの前記事前の実行のパターンが、前記ユーザーによる前記モバイルデバイスでの前記アプリケーションの使用に由来し、前記ルートプロセスが前記ユーザーによる前記モバイルデバイスでの前記アプリケーションの使用のためにカスタマイズされる、請求項1に記載の方法。
【請求項7】
前記アプリケーションの前記事前の実行のパターンが、前記ユーザーによる前記モバイルデバイス及び前記少なくとも1つの他のコンピューティングデバイスでの前記アプリケーションの使用に由来し、前記ルートプロセスが前記ユーザーによる前記モバイルデバイス及び前記少なくとも1つの他のコンピューティングデバイスでの前記アプリケーションの使用のためにカスタマイズされる、請求項1に記載の方法。
【請求項8】
前記アプリケーションの前記ルートプロセスを前記実行することが、前記アプリケーションのためのメモリへの任意の初期の書き込みの前にメモリ内のデータを移動することを含み、
前記移動されたデータが、前記アプリケーションの前記事前の実行のパターンに関連するデータを含む、請求項1に記載の方法。
【請求項9】
前記メモリへの任意の初期の書き込みの前に前記メモリ内のデータを前記移動することが、共通コード及び読み取り専用データを移動することを回避することを含む、請求項8に記載の方法。
【請求項10】
前記モバイルデバイスのオペレーティングシステム(OS)が前記OSのルートプロセスをフォークした後に、前記アプリケーションの前記ルートプロセスの前記実行をカスタマイズするために前記アプリケーションのための予測される初期の書き込みを実行することを含む、請求項8に記載の方法。
【請求項11】
前記OSによって、前記アプリケーションの前記ルートプロセスを複数のプロセスにフォークすることと、
前記OSによって、前記アプリケーションを起動する前記要求を受信すると、前記アプリケーションを起動する前記要求に従って前記複数のプロセスのうちの少なくとも1つを使用することによって前記モバイルデバイス内の前記アプリケーションを起動することと
を含む、請求項10に記載の方法。
【請求項12】
前記アプリケーションの前記ルートプロセスのためのデータをフラッシュメモリに格納することを含む、請求項1に記載の方法。
【請求項13】
前記アプリケーションの前記ルートプロセスのためのデータを不揮発性ランダムアクセスメモリ(NVRAM)に格納することを含む、請求項1に記載の方法。
【請求項14】
前記NVRAMが3D XPointメモリを含む、請求項13に記載の方法。
【請求項15】
前記アプリケーションのためのメモリからの読み取り及びメモリへの書き込みの頻度または最新性を決定するために前記アプリケーションの使用を監視することと、
前記アプリケーションのためのメモリからの読み取り及びメモリへの書き込みの前記頻度または前記最新性に従って、前記アプリケーションの前記事前の実行のパターンを生成することと
を含む、請求項1に記載の方法。
【請求項16】
前記モバイルデバイスの前記ユーザーから前記アプリケーションを終了する要求を受信することと、
前記アプリケーションを終了する前記要求を受信すると、少なくとも部分的に、前記アプリケーション及び前記アプリケーションの前記ルートプロセスを終了することと、
少なくとも部分的に、前記アプリケーション及び前記ルートプロセスを終了した後に、少なくとも部分的に、所定の条件に従って前記ルートプロセスを再実行することと
を含む、請求項1に記載の方法。
【請求項17】
前記ルートプロセスの前記少なくとも部分的な再実行が、前記アプリケーションの事前の実行の前記パターンに基づく、または前記アプリケーションの事前の実行の前記パターンによって更新される、請求項16に記載の方法。
【請求項18】
前記モバイルデバイスの前記ユーザーから前記アプリケーションを終了する要求を受信することと、
前記アプリケーションを終了する前記要求を受信すると、少なくとも部分的に、前記アプリケーションを終了することと、
前記アプリケーションを終了する前記要求を受信すると、前記アプリケーションの前記ルートプロセスを実行し続けることと
を含む、請求項1に記載の方法。
【請求項19】
コンピューティングデバイスと関連付けられたプロセッサによる実行時に、方法を実行するコンピュータ実行可能命令で具体的に符号化された非一時的なコンピュータ可読記憶媒体であって、前記方法が、
モバイルデバイスにおいて、アプリケーションの事前の実行のパターンに従って、前記アプリケーションのルートプロセスを初期点まで実行することと、
前記モバイルデバイスのユーザーから前記アプリケーションを起動する要求を受信することと、
前記アプリケーションを起動する前記要求を受信すると、前記アプリケーションの前記ルートプロセスを使用することによって前記モバイルデバイス内の前記アプリケーションを起動することと
を含む、前記非一時的なコンピュータ可読記憶媒体。
【請求項20】
方法であって、
コンピューティングデバイスのオペレーティングシステム(OS)によって、アプリケーションの事前の実行のパターンに従って、前記アプリケーションのルートプロセスをバックグラウンドプロセスとして実行することと、
前記OSによって、前記コンピューティングデバイスのユーザーから、前記アプリケーションを起動する要求を受信することと、
前記OSによって、前記アプリケーションを起動する前記要求を受信すると、前記アプリケーションの前記ルートプロセスまたは前記ルートプロセスのフォークされたプロセスを使用することによって、前記コンピューティングデバイス内の前記アプリケーションを起動することと
を含む、前記方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本出願は、2019年10月3日に出願され、「CUSTOMIZED ROOT PROCESSES FOR INDIVIDUAL APPLICATIONS」と題され、その開示全体が参照により本明細書に組み込まれる米国特許出願第16/592,529号の優先権を主張する。
【0002】
本明細書に開示される少なくともいくつかの実施形態は、一般的なコンピューティングシステムのルートプロセスに関し、より具体的には、コンピューティングデバイスでの個々のアプリケーション用のカスタマイズされたルートプロセスに関する。
【背景技術】
【0003】
ANDROID(登録商標)オペレーティングシステムの内部機構には、すべてのANDROIDアプリケーションプロセスの親プロセスまたはルートプロセスとして機能するzygoteが含まれる。UNIX(登録商標)及びUNIXに類似したオペレーティングシステム(LINUX及びANDROIDなど)では、任意の非初期プロセス(または任意の非ゼロプロセス)を、少なくとも部分的にオペレーティングシステム(OS)の初期プロセスまたはゼロプロセスから派生することができる。したがって、ANDROID OSによる「zygote」という用語を使用するのは、そのルートプロセスまたはプロセス0を参照するためである。
【0004】
ANDROIDは、GOOGLEが開発したモバイルデバイス用のモバイルOSである。ANDROIDは、LINUXカーネル及び他のオープンソースソフトウェアの修正バージョンに基づいており、主にモバイルデバイス(たとえば、スマートホン、タブレットなど)用に設計されている。GOOGLEはまた、モノのインターネット(IoT)用のANDROIDのバージョンも開発した。そして、ANDROIDのバージョンは、テレビまたは他の家庭用電化製品、車載情報システム、ウェアラブルスマートデバイス、ゲーム機、デジタルカメラ、及びPCを含む他のタイプの電子機器用に開発されてきた。
【0005】
ANDROID、UNIX、またはUNIXに類似した別のOSによる非ゼロプロセスの作成は、別のプロセスが1つのプロセスの複数のプロセスにフォークされる「fork()」で表されるシステムコールを実行するときに行われる。フォークを呼び出したプロセスは親プロセスであり、新しく作成されたプロセスは子プロセスである。UNIXまたはUNIXに類似したオペレーティングシステムでは、カーネルは、たとえば初期プロセスまたはゼロプロセスの場合の「0」などのそのプロセス識別子によって各プロセスを識別することができる。UNIX及び類似したオペレーティングシステムでは、ゼロプロセス(つまり、プロセス0)は、OSの起動時に生成されるルートプロセスである。「init」として知られる第1の子プロセス(たとえば、プロセス1)は、少なくとも部分的に、ゼロプロセスから派生することができ、OS内の他のすべてのプロセスの祖先になることができる。
【0006】
本開示は、以下に示す詳細な説明及び本開示の様々な実施形態の添付図面から、より十分に理解される。
【図面の簡単な説明】
【0007】
【
図1】本開示のいくつかの実施形態による、複数のアプリケーションのそれぞれのルートプロセスを含み、実行する例示的なモバイルデバイスを示す。
【
図2】本開示のいくつかの実施形態による、
図1及び
図3に示されるモバイルデバイスが実行できる例示的な操作の流れ図を示す。
【
図3】本開示のいくつかの実施形態による、複数のアプリケーションのそれぞれのルートプロセスを含み、実行する例示的なモバイルデバイスを示す。
【
図4】本開示のいくつかの実施形態による、
図1及び
図3に示されるモバイルデバイスが実行できる例示的な操作の流れ図を示す。
【
図5】本開示のいくつかの実施形態による、
図1及び
図3に示されるモバイルデバイスが実行できる例示的な操作の流れ図を示す。
【
図6】本開示のいくつかの実施形態による、
図1及び
図3に示されるモバイルデバイスが実行できる例示的な操作の流れ図を示す。
【
図7】本開示のいくつかの実施形態による、個々のアプリケーション用のカスタマイズされたルートプロセスの作成を実施することができる例示的なコンピューティングデバイスを示す。
【
図8】本開示のいくつかの実施形態による、ルートプロセスの例示的な代替策を含む、
図1及び
図3に示される例示的なモバイルデバイスを示す。
【発明を実施するための形態】
【0008】
本明細書に開示される少なくともいくつかの実施形態は、一般的なコンピューティングシステムのルートプロセスに関し、より具体的には、コンピューティングデバイスでの個々のアプリケーション用のカスタマイズされたルートプロセスに関する。
【0009】
本明細書に開示されるいくつかの実施形態は、1つまたは複数のデバイスでのユーザーによる1つまたは複数のアプリケーションの使用を監視するように構成された1つまたは複数のコンピューティングデバイスのオペレーティングシステム(OS)、またはハイパーバイザーなどに関する。たとえば、いくつかの実施形態は、ユーザーによるデバイス内でのアプリケーションの使用を監視するように構成されたモバイルデバイスのOSに関する場合がある。そのような実施形態の監視は、OS、ハイパーバイザーなどにアプリケーションのためにメモリから読み取らせ、メモリに書き込ませる、アプリケーションによる典型的な初期の読み取りまたは書き込みを識別することができる。監視はまた、アプリケーション及び関連アプリケーションの使用パターンの監視を含む場合もある(たとえば、データアクセスパターン、ユーザーが使用する一般的な曜日、通常使用される時刻、アプリケーションの使用に相互に関連する、使用される他のアプリケーションなど)。初期の読み取り及び書き込みは、特にアプリケーションのためのそれぞれのルートプロセスを介して使用されるメモリ内に格納またはキャッシュすることができる。初期の読み取り及び書き込みは、使用頻度、使用の最新性などに応じて、メモリを介して、OS、ハイパーバイザーなどによって管理、維持、優先順位付けなどを行うことができる。いくつかの実施形態では、格納またはキャッシュすることは、初期の読み取り及び書き込みを加速するためのより高速なメモリで行うことができる。
【0010】
いくつかの実施形態では、アプリケーションのルートプロセスのための命令及び/またはデータは、フラッシュメモリまたは不揮発性ランダムアクセスメモリ(NVRAM)などの永続的な不揮発性メモリに格納することができる。いくつかの実施形態では、NVRAMは3D XPointメモリを含むことができる。
【0011】
アプリケーションのルートプロセスは、OS、ハイパーバイザーなどの起動時に起動することができる。いくつかの実施形態では、アプリケーションが一定の期間内に使用されない場合、またはアプリケーションが、CPU、GPU、メモリ、または他のリソースなどのシステムリソースを過度に消費する場合、アプリケーションのルートプロセスを強制終了(kill)することができる。そのような実施形態では、アプリケーションの使用を見越して、OS、ハイパーバイザーなどは、アプリケーションの監視において識別されたパターンに従ってルートプロセスを再起動するように構成することができる。パターンの優先順位は、パターンの数量、頻度、及び/または最新性に基づく場合があり、アプリケーションの任意のタイプのメモリアクセスパターンを監視及び追跡することができる。監視及び追跡は、読み取り特殊レジスタ及び書き込み特殊レジスタ(たとえば、モデル特有のレジスタ)を介してOSを通じて利用可能であるハードウェア及びソフトウェアのパフォーマンスカウンタを含むことができる。パターンは、メモリからの読み取り、メモリへの書き込み、物理メモリ空間のアドレスパターン、仮想空間のアドレスパターン、データの局所性(空間的及び/または時間的)、バンクの競合、または命令ごとのCPUサイクルの数量、頻度、及び/または最新性などのメトリックに基づく場合がある。パターンはまた、トランスレーションルックアサイドバッファ(TLB)メトリック及びOSが利用可能な他のメトリックの数量、頻度、及び/または最新性などのメトリックに基づく場合がある。
【0012】
いくつかの実施形態では、アプリケーションがコンピューティングデバイス(モバイルデバイスなど)にインストールされた後、デバイスのOSまたは関連するハイパーバイザーは、アプリケーションを事前起動して、ユーザー用のカスタマイズされたルートアプリケーションプロセスを生成することができる。事前起動は、ユーザーがコンピューティングデバイスにアプリケーションの起動を要求する前に行われる可能性がある。アプリケーションは、少なくとも部分的にOSまたはハイパーバイザーなどを介して実行することができる。したがって、アプリケーションの事前起動プロセスまたはルートプロセスは、OSのルートプロセスとは異なる。そのような実施形態では、OSまたはハイパーバイザーなどは、データを移動及び/またはコピーして、アプリケーションのルートプロセスをセットアップすることができる。いくつかの実施形態では、データのコピー及び/または移動は、最初に、OSのルートプロセスによって行うことができる。これは、アプリケーションのルートプロセスによってなど、アプリケーションのための任意の初期の読み取りまたは書き込みの前に行われる可能性がある。いくつかの実施形態では、共通コード及び読み取り専用データ(たとえば、ライブラリ、ランタイム、ドライバ、メモリページ)は、OSのルートプロセス、またはアプリケーションのそれぞれのルートプロセスによってコピー及び/または移動されない。いくつかの実施形態では、ルートプロセスのコード及びデータは、ルートプロセス、別のプロセス、またはOSによるコード及びデータの初期修正までコピーされない。いくつかの実施形態では、コード及びデータの修正された部分だけがコピーされるが、修正されなかった部分は共通のままである。いくつかの実施形態では、これらの部分は、メモリページ、キャッシュラインもしくはファイルシステムセクタ、またはコンピュータ可読記憶媒体の他の要素への書き込みを監視することによって識別することができる。
【0013】
コンピューティングデバイス(たとえば、モバイルデバイス)は、ユーザーによるアプリケーションの頻繁な使用または最近の使用を監視して、アプリケーションのルートプロセスに追加する初期の読み取り及び書き込みを決定することができる。これにより、OS、ハイパーバイザーなどは、アプリケーションのためにメモリから読み取る、及び/またはメモリに書き込むことができる。初期書き込みの結果としてのデータの移動及び/またはコピーはまた、ユーザーが、OS、ハイパーバイザーなどにアプリケーションを起動するように要求する前に実行される可能性がある。
【0014】
OS、ハイパーバイザーなどがシステムレベルのルートプロセスをフォークした後、アプリケーションのルートプロセスをカスタマイズするためにアプリケーションのための予測された初期の読み取り及び/または書き込みを使用することができる。そのような例では、アプリケーションの高速な起動のために、アプリケーションのカスタマイズされたルートプロセスを永続的な不揮発性メモリ(たとえば、フラッシュメモリ及び/またはNVRAM)に保存することができる。
【0015】
ユーザーが、OS、ハイパーバイザーなどにアプリケーションを起動することを要求すると、OS、ハイパーバイザーなどは、アプリケーションの事前起動されたプロセス(すなわち、アプリケーションのルートプロセス)または事前起動されたプロセスからフォークしたプロセスを使用して、ユーザーにサービスを提供することができる。アプリケーションのルートプロセスからフォークしたプロセスは、ルートプロセスに類似する場合もあれば、異なる場合もある。
【0016】
また、ユーザーがアプリケーションを強制終了すると、OSは、アプリケーションのアクティブプロセス及び/またはアプリケーションのルートプロセスを完全にまたは部分的に強制終了することができる。ユーザーがアプリケーションを実行することを見越して、OS、ハイパーバイザーなどは、アプリケーションのルートプロセスを再起動することができ、これは、最新の及び/または最も頻繁なユーザーのアプリケーション使用パターンに基づいてさらにカスタマイズすることができる。
【0017】
図1及び
図3は、本開示のいくつかの実施形態による、複数のアプリケーションのためのそれぞれのルートプロセスを含み、実行する例示的なモバイルデバイス102を示す。
図2、
図4、
図5、及び
図6は、本開示のいくつかの実施形態による、
図1及び
図3に示されるモバイルデバイス102が実行できる例示的な方法200、400、500、及び600の流れ図を示す。
【0018】
具体的には、
図1は、少なくともコントローラ及びメモリ104を含むモバイルデバイス102を示す。モバイルデバイス102のコントローラ及びメモリ104は、モバイルデバイスで実行されるアプリケーション(たとえば、アプリケーション106a、106b、及び106cを参照)のための命令及びデータを含むことができる。モバイルデバイス102のコントローラは、データに基づいてアプリケーションのための命令を実行することができる。データは、バイナリフォーマットでまたはプログラミング言語インタプリタによる解釈に適したフォーマットでアプリケーション命令コードを含むことができる。データは、いくつかのデータ構造、ライブラリなどを含むことができる。コントローラはまた、コントローラのレジスタに命令及びデータを保持することができる。メモリは、そのメモリセルに命令及びデータを保持することができる。いくつかの実施形態では、モバイルデバイス102のメモリのメモリセルは、フラッシュメモリセル及び/またはNVRAMセルを含むことができる。NVRAMセルは、3D XPointメモリセルである場合もあれば、それを含む場合もある。
【0019】
いくつかの実施形態では、メモリは、異なる速度、待ち時間、帯域幅、及び他のパラメータを有することができる。たとえば、SRAMメモリは高速キャッシュとして使用でき、DRAMはメインメモリとして使用でき、NVRAMはストレージメモリとして使用することができる。
【0020】
モバイルデバイス102に含まれ、そこで実行可能な各アプリケーションのための命令及びデータは、アプリケーションのルートプロセスのためのルートプロセスデータ及び命令を含むことができる。モバイルデバイス102に含まれるアプリケーションのそれぞれのルートプロセス(たとえば、アプリケーション106aのルートプロセス108、アプリケーション106bのルートプロセス112、及びアプリケーション106cのルートプロセス116を参照)は、コントローラ及びメモリ104によって実装することができる。コントローラは、ルートプロセスのための命令及びデータに従ってルートプロセスの命令を実行するように構成することができ、メモリは、コントローラによるルートプロセスの実行のために命令及びデータを保持または格納するように構成することができる。
【0021】
モバイルデバイス102に含まれるアプリケーション(たとえば、アプリケーション106a、106b、及び106cを参照)の他のプロセスは、コントローラ及びメモリ104によっても実装することができる。コントローラは、他のプロセスのための命令及びデータに従ってアプリケーションの他のプロセスの命令を実行するように構成することができ、メモリは、コントローラによる他のプロセスの実行のために命令及びデータを保持または格納するように構成することができる。
【0022】
具体的には、
図2は、
図1に示されるモバイルデバイス102によってまたはモバイルデバイス102と同様に構成された別のタイプのコンピューティングデバイスによって実行できる方法200の動作を示す。また、いくつかの実施形態では、方法200は、少なくとも部分的に、一般的なコンピューティングデバイスのOSまたはモバイルデバイスのOSによって実行することができる。方法200はまた、少なくとも部分的に、ハイパーバイザー及び/または1つまたは複数のオペレーティングシステムによって実行することができる。
【0023】
図2では、方法200は、ステップ202でアプリケーションの事前の実行のパターンに従って、アプリケーションのルートプロセスを初期点まで実行することから開始する。また、方法200は、アプリケーションの事前の実行のパターンに従ってアプリケーションのルートプロセスをカスタマイズし、次に、アプリケーションの事前の実行のパターンに従ってアプリケーションのルートプロセスを初期点まで実行することから開始することができる。
【0024】
アプリケーションの事前の実行のパターンは、監視及び/または追跡されるアプリケーションの事前の実行のパターンの少なくとも数量、頻度、及び/または最新性を含む、それらに関連する、またはそれらに基づくことができる。監視及び/または追跡されるパターンは、ユーザーまたはマシンによるアプリケーション使用の任意のタイプのパターンである可能性がある。たとえば、アプリケーションのためのメモリのアクセス及び使用の任意のタイプのパターンを監視及び/または追跡することができる。アプリケーションの事前の実行のパターンは、ユーザーまたはマシンによるアプリケーションの使用の任意のタイプのパターンの数量、頻度、及び/または最新性などのメトリックを含む、それらに関連する、またはそれらに基づくことができる。たとえば、パターンは、メモリからの読み取り、メモリへの書き込み、物理メモリ空間のアドレスパターン、仮想空間のアドレスパターン、データの局所性(空間的及び/または時間的)、バンクの競合、または命令ごとのCPUサイクルなどの数量、頻度、及び/または最新性などのメトリックを含む、それに関連する、またはそれに基づく場合がある。
【0025】
アプリケーションのルートプロセスを実行することは、アプリケーションのためのメモリへの任意の初期の書き込み及び/またはメモリからの任意の初期の読み取りの前に、メモリ内のデータを移動することを含むことができる。また、アプリケーションのルートプロセスを実行することは、アプリケーションのためのメモリへの任意の初期の書き込み及び/またはメモリからの任意の初期の読み取りの前に、メモリ内のデータをコピーすることを含む場合がある。そして、移動及び/またはコピーされたデータは、アプリケーションの事前の実行のパターンに関連するデータを含む場合がある。いくつかの実施形態では、メモリへの任意の初期の書き込み前にメモリ内でデータを移動及び/またはコピーすることは、共通コード及び読み取り専用データを移動及び/またはコピーすることを回避することを含む場合がある。いくつかの実施形態では、方法200は、コンピューティングデバイスのOS(またはハイパーバイザー)がOS(またはハイパーバイザ-)のルートプロセスをフォークした後に、アプリケーションのルートプロセスがアプリケーションのためのアプリケーションレベルプロセスとなるように、アプリケーションのルートプロセスの実行をカスタマイズするために、アプリケーションのための予測された初期の書き込み及び/または読み取りを実行することを含むことができる。
【0026】
また、方法200は、ルートプロセス(図面には図示されていない)の実行の少なくとも一部の前に、フラッシュメモリにアプリケーションのルートプロセスのためのデータを格納することを含むことができる。方法200はまた、ルートプロセス(図面には図示されていない)の実行の少なくとも一部の前に、NVRAMにアプリケーションのルートプロセスのためのデータを格納することを含むことができる。NVRAMは、3D XPointメモリを含むことができる。いくつかの実施形態では、新しいデータを格納することにより、アプリケーションの使用に関連する古い未使用のデータを上書きすることができる。
【0027】
ステップ204で、方法200は、ユーザーから、アプリケーションを起動する要求を受信することを続ける。ステップ206で、方法200は、アプリケーションを起動する要求を受信すると、アプリケーションのルートプロセスを使用することによってアプリケーションを起動することを続ける。いくつかの実施形態では、方法200は、アプリケーションの事前の実行のパターンに従って、バックグラウンドプロセスとして、少なくとも部分的にコンピューティングデバイスのOSによってアプリケーションのルートプロセスを実行することを含むことができる。そのような実施形態では、方法200はまた、OSによって、コンピューティングデバイスのユーザーから、アプリケーションを起動する要求を受信することを含むことができる。そして、方法200は、OSによって、アプリケーションを起動する要求を受信すると、アプリケーションのルートプロセスまたはルートプロセスのフォークプロセスを使用することによって、コンピューティングデバイス内のアプリケーションを起動することを含むことができる。いくつかの実施形態では、フォークプロセスのコード及びデータは、アプリケーション、別のプロセス、またはOSによるコード及びデータの初期修正までコピーされない。いくつかの実施形態では、コード及びデータの修正された部分だけがコピーされるが、修正されなかった部分は共通のままである。いくつかの実施形態では、そのような部分は、メモリページ、キャッシュラインもしくはファイルシステムセクタ、またはコンピュータ可読記憶媒体の他の要素への書き込みを監視することによって識別することができる。
【0028】
いくつかの実施形態では、ルートプロセスを初期点まで実行することは、たとえばクラウドコンピューティング環境では1つのデバイス上で行うことができ、次にアプリケーションのうちの少なくとも1つを起動する要求を別のデバイスから受信すると、ルートプロセスをフォークし、次にネットワークを介して、たとえばモバイルデバイスなどの別のデバイスにフォークプロセスを転送し、次にモバイルデバイスでアプリケーションの開始点としてフォークプロセスを使用する。
【0029】
いくつかの実施形態では、方法200は、コンピューティングデバイス(たとえば、モバイルデバイス)または複数のコンピューティングデバイスにおいて、ステップ202で、アプリケーションの事前の実行のパターンに従ってアプリケーションのルートプロセスを初期点まで実行することを含むことができる。方法200はまた、ステップ204で、コンピューティングデバイス(複数可)によって、コンピューティングデバイス(複数可)のユーザーからアプリケーションを起動する要求を受信することを含むことができる。方法200はまた、ステップ206で、アプリケーションを起動する要求を受信すると、アプリケーションのルートプロセスを使用することによってコンピューティングデバイス(複数可)内のアプリケーションを起動することを含むことができる。そのような実施形態では、方法200のステップの各ステップまたは少なくともいくつかは、コンピューティングデバイス(複数可)のオペレーティングシステム、コンピューティングデバイス(複数可)の1つまたは複数のオペレーティングシステム、ハイパーバイザー、またはそれらの任意の組み合わせによって実行することができる。たとえば、実行ステップ、受信ステップ、または起動ステップのうちの少なくとも1つは、少なくとも部分的に、コンピューティングデバイス(複数可)内のOSによって実行することができる。
【0030】
具体的には、
図3は、少なくともコントローラ及びメモリ104を含むモバイルデバイス102を示す。
図3に示されるように、モバイルデバイス102のコントローラ及びメモリ104は、モバイルデバイスで実行されるアプリケーション(たとえば、アプリケーション306a、306b、及び306cを参照)のための命令及びデータを含むことができる。モバイルデバイス102のコントローラは、データに基づいてアプリケーションのための命令を実行することができる。データは、バイナリフォーマットでまたはプログラミング言語インタプリタによる解釈に適したフォーマットでアプリケーション命令コードを含むことができる。データは、いくつかのデータ構造、ライブラリなどを含むことができる。コントローラはまた、コントローラのレジスタに命令及びデータを保持することができる。メモリは、そのメモリセルに命令及びデータを保持することができる。いくつかの実施形態では、モバイルデバイス102のメモリのメモリセルは、フラッシュメモリセル及び/またはNVRAMセルを含むことができる。
【0031】
図3にも図示されるように、モバイルデバイス102に含まれ、そこで実行可能な各アプリケーションのための命令及びデータは、アプリケーションのルートプロセスのためのルートプロセスデータ及び命令を含むことができる。モバイルデバイス102に含まれるアプリケーションのルートプロセスは、
図3に示されるように(たとえば、それぞれのルートプロセス308、312、及び316を参照)コントローラ及びメモリ104によって実装することができる。コントローラは、ルートプロセスのための命令及びデータに従ってルートプロセスの命令を実行するように構成することができ、メモリは、コントローラによるルートプロセスの実行のための命令及びデータを保持または格納するように構成することができる。また、
図3に示されるように、モバイルデバイス102に含まれるアプリケーション(たとえば、アプリケーション306a、306b、及び306cを参照)の他のプロセスは、コントローラ及びメモリ104によって実装することもできる。コントローラは、他のプロセスのための命令及びデータに従ってアプリケーションの他のプロセスの命令を実行するように構成することができ、メモリは、コントローラによる他のプロセスの実行のために命令及びデータを保持または格納するように構成することができる。
【0032】
さらに、
図3に示されるように、コントローラ及びメモリ104は、モバイルデバイス102に格納され、そこで実行可能なアプリケーションのそれぞれのルートプロセスからフォークされた複数のプロセス(たとえば、フォークプロセス310a、310b、310c、314a、314b、318a、及び318bを参照)のためのデータ及び命令を含むことができる。
図3に示されるように、少なくともプロセス310a、310b、及び310cは、ルートプロセス308からフォークされる。ただし、ルートプロセス308からフォークされるより多くのプロセスがある場合がある。また、プロセス314a及び314bは、ルートプロセス312からフォークされている。そして、プロセス318a及び318bは、ルートプロセス316からフォークされている。
【0033】
いくつかの実施形態では、モバイルデバイス102のオペレーティングシステム、またはモバイルデバイス内のまたはモバイルデバイスと関連付けられたハイパーバイザーは、アプリケーションのルートプロセス(たとえば、アプリケーション306aのルートプロセス308、アプリケーション306bのルートプロセス312、及びアプリケーション306cのルートプロセス316)を複数のプロセス(たとえば、フォークプロセス310a、310b、310c、314a、314b、318a、及び318bを参照)にフォークするように構成される。そのような実施形態では、オペレーティングシステムまたはハイパーバイザーは、アプリケーションを起動する要求を受信すると、アプリケーションを起動する要求に従って、複数のフォークプロセス(たとえば、フォークプロセス310a、310b、310c、314a、314b、318a、及び318b)及び/またはそれぞれのルートプロセス(たとえば、アプリケーション306aのルートプロセス308、アプリケーション306bのルートプロセス312、及びアプリケーション306cのルートプロセス316を参照)のうちの少なくとも1つを使用することによって、モバイルデバイス102内でアプリケーションを起動するように構成することができる。
【0034】
フォークされた複数のプロセスの少なくともいくつかまたはそれぞれは、アプリケーションの親ルートプロセスとは異なる可能性がある。違いは、実行されるコンピューティングデバイス内の異なるアプリケーション及び異なるアプリケーション部分に基づく可能性がある。そして、フォークされた複数のプロセスの少なくともいくつかまたはそれぞれは、アプリケーションの実行の少なくともなんらかの点で、アプリケーションの親ルートプロセスと同一である可能性がある。
【0035】
いくつかの実施形態では、フォークされたルートプロセスの初期実行は、ライブラリをプリロードすること、必要とされるライブラリ及び初期データ構造の中からフォークプロセスを構成すること、及びさらなる再利用のためにフォークプロセスを保存することに限定することができる。また、いつでも、プロセスの再実行に時間を費やすことを回避するためにフォークプロセスを再利用できるように、フォークプロセスの実行をなんらかの状態でメモリに保存することができる。
【0036】
具体的には、
図4は、
図3に示されるモバイルデバイス102によってまたはモバイルデバイス102と同様に構成された別のタイプのコンピューティングデバイスによって実行できる方法400の動作を示す。また、いくつかの実施形態では、方法400は、一般的なコンピューティングデバイスのオペレーティングシステムまたはモバイルデバイスのオペレーティングシステムによって実行することができる。方法400はまた、少なくとも部分的に、ハイパーバイザー及び/または1つまたは複数のオペレーティングシステムによって実行することができる。
【0037】
図4では、方法400は、ステップ402(
図2に示されるステップ202に類似する)で、アプリケーションの事前の実行のパターンに従って、アプリケーションのルートプロセスを初期点まで実行することから開始する。また、方法400は、アプリケーションの事前の実行のパターンに従ってアプリケーションのルートプロセスをカスタマイズし、次に、アプリケーションの事前の実行のパターンに従ってアプリケーションのルートプロセスを初期点まで実行することから開始することができる。
【0038】
アプリケーションの事前の実行のパターンは、監視及び/または追跡されるアプリケーションの事前の実行のパターンの少なくとも数量、頻度、及び/または最新性を含む、それらに関連する、またはそれらに基づくことができる。監視及び/または追跡されるパターンは、ユーザーまたはマシンによるアプリケーション使用の任意のタイプのパターンである可能性がある。たとえば、アプリケーションのためのメモリのアクセス及び使用の任意のタイプのパターンを監視及び/または追跡することができる。アプリケーションの事前の実行のパターンは、ユーザーまたはマシンによるアプリケーションの使用の任意のタイプのパターンの数量、頻度、及び/または最新性などのメトリックを含む、それらに関連する、またはそれらに基づくことができる。たとえば、パターンは、メモリからの読み取り、メモリへの書き込み、物理メモリ空間のアドレスパターン、仮想空間のアドレスパターン、データの局所性(空間的及び/または時間的)、バンクの競合、または命令ごとのCPUサイクルなどの数量、頻度、及び/または最新性などのメトリックを含む、それに関連する、またはそれに基づく場合がある。
【0039】
アプリケーションのルートプロセスを実行することは、アプリケーションのためのメモリへの任意の初期の書き込み及び/またはメモリからの任意の初期の読み取りの前に、メモリ内のデータを移動することを含むことができる。また、アプリケーションのルートプロセスを実行することは、アプリケーションのためのメモリへの任意の初期の書き込み及び/またはメモリからの任意の初期の読み取りの前に、メモリ内のデータをコピーすることを含む場合がある。そして、移動及び/またはコピーされたデータは、アプリケーションの事前の実行のパターンに関連するデータを含む場合がある。いくつかの実施形態では、メモリへの任意の初期の書き込み前にメモリ内でデータを移動及び/またはコピーすることは、共通コード及び読み取り専用データを移動及び/またはコピーすることを回避することを含む場合がある。いくつかの実施形態では、方法400は、コンピューティングデバイスのオペレーティングシステム(またはハイパーバイザー)がオペレーティングシステム(またはハイパーバイザー)のルートプロセスをフォークした後に、アプリケーションのルートプロセスがアプリケーションのためのアプリケーションレベルプロセスとなるように、アプリケーションのルートプロセスの実行をカスタマイズするために、アプリケーションのための予測された初期の書き込み及び/または読み取りを実行することを含むことができる。
【0040】
また、方法400は、ルートプロセス(図面には図示されていない)の実行の少なくとも一部の前に、フラッシュメモリにアプリケーションのルートプロセスのためのデータを格納することを含むことができる。方法400はまた、ルートプロセス(図面には図示されていない)の実行の少なくとも一部の前に、NVRAMにアプリケーションのルートプロセスのためのデータを格納することを含むことができる。NVRAMは、3D XPointメモリを含むことができる。
【0041】
ステップ404(
図2に示されるステップ204に類似する)で、方法400は、ユーザーからアプリケーションを起動する要求を受信することを続ける。ステップ406で、方法400は、アプリケーションのルートプロセスを複数のプロセスにフォークすることを続ける。ステップ408で、方法400は、アプリケーションを起動する要求を受信すると、アプリケーションを起動する要求に従って複数のプロセスのうちの少なくとも1つを使用することによってアプリケーションを起動することを続ける。代わりに、ステップ408で、方法400は、アプリケーションを起動する要求を受信すると、アプリケーションを起動する要求に従って、親ルートプロセス(たとえば、ルートプロセス308を参照)及び複数のプロセス(たとえば、フォークプロセス310a、310b、及び310c)を使用することによってアプリケーションを起動することを続けることができる。
【0042】
いくつかの実施形態では、方法400は、コンピューティングデバイス(たとえば、モバイルデバイス)または複数のコンピューティングデバイスにおいて、ステップ402で、アプリケーションの事前の実行のパターンに従ってアプリケーションのルートプロセスを初期点まで実行することを含むことができる。方法400はまた、ステップ404で、コンピューティングデバイス(複数可)によって、コンピューティングデバイス(複数可)のユーザーからアプリケーションを起動する要求を受信することを含むことができる。方法400はまた、ステップ406で、コンピューティングデバイスによって(コンピューティングデバイスのOSによってなど)アプリケーションのルートプロセスを複数のプロセスにフォークすることを含むことができる。方法400はまた、ステップ408で、アプリケーションを起動する要求を受信すると、アプリケーションを起動する要求に従って複数のプロセスのうちの少なくとも1つを使用することによってコンピューティングデバイス内のアプリケーションを起動することを含むことができる。
【0043】
そのような実施形態では、方法400のステップの各ステップまたは少なくともいくつかは、コンピューティングデバイス(複数可)のオペレーティングシステム、コンピューティングデバイス(複数可)の1つまたは複数のオペレーティングシステム、ハイパーバイザー、またはそれらの任意の組み合わせによって実行することができる。たとえば、実行ステップ、受信ステップ、または起動ステップのうちの少なくとも1つは、コンピューティングデバイス(複数可)内のOSによって実行することができる。いくつかの実施形態では、方法400は、ステップ406で、アプリケーションのルートプロセスを複数の同一のプロセスにフォークすること、及びステップ408で、アプリケーションを起動する要求を受信すると、アプリケーションを起動する要求に従って複数の同一のプロセスのうちの少なくとも1つを使用することによってモバイルデバイスでアプリケーションを起動することを含むことができる。
【0044】
方法400に関して、フォークされた複数のプロセスの少なくともいくつかまたはそれぞれは、アプリケーションの親ルートプロセスとは異なる可能性がある。違いは、実行されるコンピューティングデバイス内の異なるアプリケーション及び異なるアプリケーション部分に基づく可能性がある。そして、フォークされた複数のプロセスの少なくともいくつかまたはそれぞれは、アプリケーションの実行の少なくともなんらかの点で、アプリケーションの親ルートプロセスと同一である可能性がある。
【0045】
方法200及び400を実装できる実施形態などのいくつかの実施形態では、アプリケーションの事前の実行のパターンは、特定のユーザー及び他のユーザーによる特定のコンピューティングデバイス(たとえば、特定のモバイルデバイス)でのアプリケーションの使用に由来し、その結果、ルートプロセスは任意のユーザーによる特定のコンピューティングデバイスでのアプリケーションの使用のためにカスタマイズされる。
【0046】
方法200及び400を実装できるいくつかの他の実施形態などのいくつかの他の実施形態では、アプリケーションの事前の実行のパターンは、特定のユーザーによる特定のコンピューティングデバイス(たとえば、特定のモバイルデバイス)でのアプリケーションの使用に由来し、その結果、ルートプロセスは特定のユーザーによる特定のモバイルデバイスでのアプリケーションの使用のためにカスタマイズされる。
【0047】
方法200及び400を実装できるいくつかの他の実施形態などのいくつかの他の実施形態では、アプリケーションの事前の実行のパターンは、特定のユーザーによる特定のコンピューティングデバイス(たとえば、特定のモバイルデバイス)及び少なくとも1つの他のコンピューティングデバイスでの特定のアプリケーションの使用に由来し、その結果、ルートプロセスは特定のユーザーによるコンピューティングデバイス及び少なくとも1つの他のコンピューティングデバイスでのアプリケーションの使用のためにカスタマイズされる。
【0048】
様々なライブラリからルートプロセスを構成すること、使用可能な他のルートプロセスをデフォルトで使用すること、データ構造を形成すること、及びルートプロセスコンポーネントについてネットワークを介して様々なソースに問い合わせることを含むがこれらに限定されない、ルートプロセスをカスタマイズすることを行うことができる。
【0049】
具体的には、
図5は、
図1及び
図3に示されるモバイルデバイス102によってまたはモバイルデバイス102と同様に構成された別のタイプのコンピューティングデバイスによって実行できる方法500の動作を示す。また、いくつかの実施形態では、方法500は、一般的なコンピューティングデバイスのオペレーティングシステムまたはモバイルデバイスのオペレーティングシステムによって実行することができる。方法400はまた、少なくとも部分的に、ハイパーバイザー及び/または1つまたは複数のオペレーティングシステムによって実行することができる。
【0050】
図5では、方法500は、ステップ502で、アプリケーションのためのメモリからの読み取り及びメモリへの書き込みの頻度または最新性を決定するためにアプリケーションの使用を監視することから開始する。いくつかの実施形態(図示されていない)で、方法500は、アプリケーションの事前の実行のパターンの数量、頻度、及び/または最新性を決定するために、アプリケーションの使用を監視及び/または追跡することから開始することができる。
【0051】
アプリケーションの事前の実行のパターンは、監視及び/または追跡されるアプリケーションの事前の実行のパターンの少なくとも数量、頻度、及び/または最新性を含む、それらに関連する、またはそれらに基づくことができる。監視及び/または追跡されるパターンは、ユーザーまたはマシンによるアプリケーション使用の任意のタイプのパターンである可能性がある。たとえば、アプリケーションのためのメモリのアクセス及び使用の任意のタイプのパターンを監視及び/または追跡することができる。パターンは、メモリからの読み取り、メモリへの書き込み、物理メモリ空間のアドレスパターン、仮想空間のアドレスパターン、データの局所性(空間的及び/または時間的)、バンクの競合、または命令ごとのCPUサイクルなどの数量、頻度、及び/または最新性などのメトリックを含む、それに関連する、またはそれに基づく場合がある。
【0052】
また、アプリケーションの使用の監視及び追跡は、アプリケーションの開始中(たとえば、アプリケーションがメモリにロードされているときを含む)、及び/または後にアプリケーションの実行中に行われる可能性がある。アプリケーションの使用の監視及び追跡は、アプリケーションの開始中、及び開始後のアプリケーションの実行の任意の他の期間に行われる可能性がある。実行中にアプリケーションの使用を監視及び追跡すると、アプリケーションの効果的及び/または効率的なルートプロセスの導出を容易にすることができる。たとえば、開始後、ユーザーは、アプリケーションのいくつかの要素をトリガし、なんらかの結果を予想するために画面にタッチすることができる。アプリケーションの実行中に行われる監視に基づいて、重大なメモリオブジェクトをプリロードできるため、いくつかの実施形態では、その結果の配信は非常に迅速である可能性がある。いくつかの実施形態では、オブジェクトのプリロードは、NAND型フラッシュメモリなどのより低速のメモリからDRAMなどのより高速のメモリで行うことができる。
【0053】
ステップ504で、方法500は、アプリケーションのためのメモリからの読み取り及びメモリへの書き込みの頻度または最新性に従って、アプリケーションの事前の実行のパターンを生成することを続ける。いくつかの実施形態(図示されていない)では、方法500は、監視及び/または追跡されるアプリケーションの事前の実行でのパターンの数量、頻度、及び/または最新性に従ってアプリケーションの事前の実行のパターンを生成することを続けることができる。
【0054】
また、アプリケーションの事前の実行の生成されたパターンは、監視及び/または追跡されるアプリケーションの事前の実行のパターンの少なくとも数量、頻度、及び/または最新性を含む、それらに関連する、またはそれらに基づくことができる。ステップ504で生成されたパターンは、ユーザーまたはマシンによるアプリケーション使用の任意のタイプのパターンである可能性がある。たとえば、ステップ504で生成されたパターンは、メモリアクセスの任意のタイプのパターンを含む可能性があり、アプリケーションの使用は監視及び/または追跡することができる。また、たとえば、生成されたパターンは、メモリからの読み取り、メモリへの書き込み、物理メモリ空間のアドレスパターン、仮想空間のアドレスパターン、データの局所性(空間的及び/または時間的)、バンクの競合の数量、頻度、及び/または最新性などのメトリック、またはアプリケーション及びアプリケーションためのメモリの使用に関連する任意の他のタイプのメトリックを含む、それらに関連する、またはそれらに基づく場合がある。
【0055】
図5に示されるように、方法500は、ステップ504の後に方法200からのステップを継続する。たとえば、ステップ504の後、方法は、ステップ504で生成されたアプリケーションの事前の実行のパターンに従って、アプリケーションのルートプロセスを初期点まで実行するステップ202を続ける。次に、方法500は、ステップ204で、ユーザーからアプリケーションを起動する要求を受信することを続ける。そして、方法500は、ステップ206で、アプリケーションを起動する要求を受信すると、アプリケーションのルートプロセスを使用することによってアプリケーションを起動することを続ける。
【0056】
具体的には、
図6は、
図1及び
図3に示されるモバイルデバイス102によってまたはモバイルデバイス102と同様に構成された別のタイプのコンピューティングデバイスによって実行できる方法600の動作を示す。また、いくつかの実施形態では、方法600は、一般的なコンピューティングデバイスのオペレーティングシステムまたはモバイルデバイスのオペレーティングシステムによって実行することができる。方法600はまた、少なくとも部分的に、ハイパーバイザー及び/または1つまたは複数のオペレーティングシステムによって実行することができる。
【0057】
図6に示されるように、方法600は、方法200のステップから開始する。方法600は、アプリケーションの事前の実行のパターンに従って、アプリケーションのルートプロセスを初期点まで実行するステップ202から開始する。次に、方法600は、ステップ204で、ユーザーからアプリケーションを起動する要求を受信することを続ける。そして、方法600は、ステップ206で、アプリケーションを起動する要求を受信すると、アプリケーションのルートプロセスを使用することによってアプリケーションを起動することを続ける。
【0058】
ステップ602で、方法600は、ユーザーからアプリケーションを終了する要求を受信することを続ける。たとえば、ステップ602で、方法600は、コンピューティングデバイスのユーザー(たとえば、モバイルデバイスのユーザー)からアプリケーションを終了する要求を受信することを続ける。
【0059】
ステップ604で、方法600は、アプリケーションを終了する要求を受信すると、少なくとも部分的に、アプリケーションを終了することを続ける。ステップ606で、方法600は、アプリケーションを終了する要求を受信すると、アプリケーションのルートプロセスを使用することによって、少なくとも部分的にアプリケーションを終了することを続ける。
【0060】
図6に示されるように、ステップ606が完了すると、ステップ608で、方法600は、(少なくとも部分的にアプリケーション及びルートプロセスを終了した後に)所定の条件に従って、少なくとも部分的にルートプロセスを再実行することを続ける。ステップ608で、ルートプロセスの少なくとも部分的な再実行は、アプリケーションの以前の実行のパターンに基づいて行われることができる。また、ステップ608で、ルートプロセスの少なくとも部分的な再実行は、アプリケーションの事前の実行のパターンによって更新することができる。
【0061】
図6に示されるように、ステップ606が完了しないとき、ステップ610で、方法600は、アプリケーションを終了する要求を受信すると、アプリケーションのルートプロセスの実行を続けることを進める。言い換えれば、方法600は、ステップ602で、モバイルデバイスのユーザーからアプリケーションを終了する要求を受信することを含むことができ、次にステップ604で、方法600は、アプリケーションを終了する要求を受信すると、少なくとも部分的にアプリケーションを終了することを含むことができ、次にステップ610で、方法600は、アプリケーションを終了する要求を受信すると、ステップ604と610との間でルートプロセスを停止することなく、アプリケーションのルートプロセスを実行し続けることを含むことができる。この結果、ユーザーが、このルートプロセスを使用できる、少なくとも部分的に終了したアプリケーションまたは他のアプリケーションを再起動することを決定した場合にも、アプリケーションのルートプロセスは、再利用することができる。
【0062】
方法200、方法400、方法500、方法600、または本明細書に説明される任意の他の方法、プロセス、または操作に関して、いくつかの実施形態では、非一時的なコンピュータ可読記憶媒体は、少なくとも1つの処理装置(
図7に示されるコントローラ706など)によって実行されると、少なくとも1つの処理装置に、方法200、方法400、方法500、方法600、または本明細書に説明される任意の他の方法、プロセス、または操作、及び/またはそれらの任意の組み合わせを実行させる命令を格納している。
【0063】
たとえば、いくつかの実施形態は、コンピューティングデバイスと関連付けられたプロセッサによって実行されると、
図2に示される方法200などの方法を実行するコンピュータ実行可能命令で具体的に符号化された非一時的なコンピュータ可読記憶媒体を含むことができる。たとえば、方法は、モバイルデバイスにおいて、アプリケーションの事前のパターンに従ってアプリケーションのルートプロセスを初期点まで実行することを含むことができる。方法はまた、モバイルユーザーからアプリケーションを起動する要求を受信することを含むことができる。そして、方法は、アプリケーションを起動する要求を受信すると、アプリケーションのルートプロセスを使用することによって、モバイルデバイス内のアプリケーションを起動することを含むことができる。
【0064】
また、たとえば、いくつかの実施形態は、コンピューティングデバイスと関連付けられたプロセッサによって実行されると、
図4に示される方法400、
図5に示される方法500、及び
図6に示される方法600などの方法を実行するコンピュータ実行可能命令で具体的に符号化された非一時的なコンピュータ可読記憶媒体を含むことができる。
【0065】
図7は、本開示のいくつかの実施形態による、個々のアプリケーション用のカスタマイズされたルートプロセスの作成を実装することができる例示的なコンピューティングデバイス700を示す。デバイス700は、スマートホン、タブレットコンピュータ、IoTデバイス、スマートテレビ、スマートウォッチ、眼鏡もしくは他のスマート家庭用電化製品、車載情報システム、ウェアラブルスマートデバイス、ゲーム機、PC、デジタルカメラ、またはそれらの任意の組み合わせなどのモバイルデバイスである、またはそれらにいくらか類似しているモバイルデバイス102または任意の他のタイプのコンピューティングデバイスである可能性がある、またはそれらを含む可能性がある、またはそれらの一部である可能性がある。図示されるように、デバイス700は、少なくとも広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、イントラネット、4Gもしくは5Gなどの移動無線ネットワーク、エクストラネット、インターネット、及び/またはそれらの任意の組み合わせを含む通信ネットワーク(複数可)714に接続することができる。
【0066】
本明細書に説明されるコンピューティングデバイスまたはモバイルデバイス(モバイルデバイス102またはコンピューティングデバイス700など)のそれぞれは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、携帯電話、ウェブアプライアンス、サーバ、ネットワークルータ、スイッチもしくはブリッジ、またはそのマシンによって講じられる処置を指定する命令のセットを(連続してまたは別の方法で)実行できる任意のマシンである場合がある、またはそれらに置き換えられる場合がある。
【0067】
また、
図7に示されるデバイス700及び
図1と
図3に示されるモバイルデバイス102について単一のマシンが示されているが、用語「マシン」はまた、本明細書で説明される方法または操作のうちの任意の1つまたは複数を実行するために、個々にまたは共同で命令の1つのセット(または複数のセット)を実行するマシンの任意の集まりを含むと解釈されるものとする。そして、図示されたコンピューティングデバイスまたはモバイルデバイスのそれぞれは、それぞれ、少なくともバス及び/またはマザーボード、1つまたは複数のコントローラ(1つまたは複数のCPUなど)、一時データストレージを含むことができるメインメモリ、少なくとも1つのタイプのネットワークインターフェース、永続的なデータストレージを含むことができるストレージシステム、及び/またはそれらの任意の組み合わせを含むことができる。いくつかのマルチデバイスの実施形態では、1つのデバイスは本明細書に説明される方法のいくつかの部分を完了し、次に別のデバイスが本明細書に説明される方法の他のステップを続けることができるように、ネットワークを介して完了の結果を別のデバイスに送信することができる。
【0068】
図7はまた、本開示のいくつかの実施形態による、例示的なコンピューティングデバイス700の例示的な部分を示す。デバイス700は、図示されるように、ネットワーク(複数可)714に通信可能に結合することができる。デバイス700は、少なくともバス704、コントローラ706(CPUなど)、メモリ708、ネットワークインターフェース710、データストレージシステム712、及び他のコンポーネント716(GPSコンポーネント、I/Oコンポーネント、及びセンサなどのモバイルデバイスまたはコンピューティングデバイスに見られる任意のタイプのコンポーネントである場合がある)を含む。他のコンポーネント716は、1つまたは複数のディスプレイ、異なるタイプのセンサ、音声及び/または視覚の入力/出力デバイス、追加のアプリケーション特有のメモリ、1つまたは複数の追加のコントローラ(たとえば、GPU)、またはそれらの任意の組み合わせを含むことができる。バス704は、コントローラ706、メモリ708、ネットワークインターフェース710、データストレージシステム712、及び他のコンポーネント716を通信可能に結合する。デバイス700は、少なくともコントローラ706、メモリ708(たとえば、読み出し専用メモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)(たとえばシンクロナスDRAM(SDRAM)またはラムバスDRAM(RDRAM)など)、スタティックランダムアクセスメモリ(SRAM)など)、及びデータストレージシステム712を含んでおり、これらは(複数のバスを含むことができる)バス704を介して互いと通信する。
【0069】
別の言い方をすると、
図7は、本開示の実施形態が動作することができるコンピュータシステムを有する例示的なデバイス700のブロック図である。いくつかの実施形態では、コンピュータシステムは、実行時に、本明細書に説明される方法のいずれか1つ以上をマシンに実行させるための命令のセットを含むことができる。そのような実施形態では、マシンを、LAN、イントラネット、エクストラネット、及び/またはインターネット(たとえば、ネットワーク(複数可)714)内の他のマシンに接続する(たとえば、ネットワークインターフェース710を介してネットワーク接続する)ことができる。マシンは、クライアントサーバネットワーク環境内のサーバまたはクライアントマシンの機能で、ピアツーピア(または分散)ネットワーク環境(たとえば本明細書で説明するピアツーピアネットワーク)内のピアマシンとして、またはクラウドコンピューティングインフラストラクチャもしくは環境内のサーバもしくはクライアントマシンとして動作することができる。
【0070】
処理装置706は、マイクロプロセッサ、中央処理装置などの、1つまたは複数の汎用処理装置を表す。より詳細には、処理装置は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、単一命令複数データ(SIMD)、複数命令複数データ(MIMD)、または他の命令セットを実装するプロセッサ、または命令セットの組み合わせを実装するプロセッサとすることができる。コントローラ706はまた、1つまたは複数の特殊用途処理装置、たとえば特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサなどとすることができる。コントローラ706は、本明細書で説明される動作及びステップを実行するための命令を実行するように構成される。コントローラ706は、1つまたは複数の通信ネットワーク(ネットワーク(複数可)714など)を介して通信するために、ネットワークインターフェース710などのネットワークインターフェースデバイスをさらに含むことができる。
【0071】
データストレージシステム712は、本明細書で説明される方法または機能のうちのいずれか1つまたは複数を具現化する1つまたは複数の命令セットまたはソフトウェアが格納されたマシン可読記憶媒体(コンピュータ可読媒体としても知られている)を含むことができる。命令はまた、コンピュータシステムがそれを実行する間に、メモリ708内及び/またはコントローラ706内に完全にまたは少なくとも部分的に存在することができ、メモリ708、及びコントローラ706はまた、マシン可読記憶媒体を構成する。メモリ708は、デバイス700のメインメモリである場合がある、またはそれを含む場合がある。
【0072】
メモリ、コントローラ、及びデータ記憶装置部分を、実施形態例においてそれぞれ単一部分であると示しているが、各部分は、命令を記憶してその対応する動作を行うことができる単一部分または複数部分を含むと解釈すべきである。用語「マシン可読記憶媒体」はまた、マシンによって実行するための命令のセットを格納またはエンコードすることが可能であり、マシンに本開示の方法のうちの任意の1つまたは複数を実行させる任意の媒体を含むと解釈されるのとする。したがって、用語「マシン可読記憶媒体」は、ソリッドステートメモリ、光媒体、及び磁気媒体を含むが、これに限定されないと解釈されるものとする。
【0073】
図8は、本開示のいくつかの実施形態による、ルートプロセスの例示的な代替策を含む、
図1及び
図3に示される例示的なモバイルデバイス102を示す。
図8に示されるように、モバイルデバイス102は、コントローラ及びメモリ104、ならびにルートプロセスの代替策の4つの例示的な事例(
図8に示される例示的な事例1、2、3、及び4を参照)を含む。
図8に示されるモバイルデバイス102はまた、
図1及び
図3に示されるモバイルデバイス102の態様を含むことができる。
【0074】
図8に示される第1の例示的な事例は事例1である。事例1では、アプリケーション306aは、それが
図3に示されるように示されている。アプリケーション306aは、複数のフォークプロセス(たとえば、フォークプロセス310a、310b、及び310cを参照)にフォークされるルートプロセス308を含む。
【0075】
図8に示される第2の例示的な事例は事例2である。事例2では、アプリケーション802は、ルートプロセス「a」を含み、アプリケーション804は、ルートプロセス「b」を含む。事例2では、複数のアプリケーションに使用されている異なるルートプロセスが示されている。これは、多対1のマッピング例の上位集合である多対多のマッピング例である。アプリケーションのルートプロセスは、2つ以上のアプリケーションによって使用することができる。また、本明細書に説明されるいくつかの実施形態では、1対多のマッピング例を使用することができる。たとえば、単一のアプリケーションによって、複数の異なるルートプロセスを使用することができる。
図8に示されるように、事例2では、アプリケーション802のルートプロセス「a」は、フォークプロセス1aと2aにフォークされ、プロセス1aは、アプリケーション802によって使用されており、プロセス2aはアプリケーション804によって使用されている。また、図示されるように、事例2では、アプリケーション804のルートプロセス「b」は、フォークプロセス1bと2bにフォークされ、フォークプロセス1bはアプリケーション802によって使用されており、プロセス2bはアプリケーション804によって使用されている。
【0076】
図8に示される第3の例示的な事例は事例3である。事例3では、アプリケーション806は、ルートプロセス「a」を含み、(モバイルデバイス102のOSである)オペレーティングシステム808は、ルートプロセス「b」を含む。事例3で、ルートプロセス「a」は少なくともフォークプロセス1aと2にフォークされ、ルートプロセス「b」は少なくともフォークプロセス1bにフォークされる。事例3で、OSによって生成されたフォークプロセス(フォークプロセス1b)は、1つまたは複数のアプリケーションによって使用することができる(たとえば、
図8は、アプリケーション806によって使用されている、OSによって生成されたフォークプロセスを示す)。そして、OS808は、それ自体のプロセスを修正及び/または生成するために任意のアプリケーションからフォークプロセスを要求することができる(たとえば、OSによって使用されていることが示される、アプリケーション806のルートプロセス「a」からフォークされたフォークプロセス2を参照)。そして、OS以外の他のアプリケーションは、アプリケーション806のルートプロセス「a」からフォークされたフォークプロセス2を使用することができる。
【0077】
図8に示される第4の例示的な事例は事例4である。事例4では、アプリケーション810は、ルートプロセス「a」を含み、アプリケーション812は、ルートプロセス「b」を含む。事例4では、フォークプロセス1と2は、アプリケーション810のルートプロセス「a」からフォークされ、少なくともフォークプロセス1は、アプリケーション812のルートプロセス「b」からもフォークされる。事例4は、異なるアプリケーションからの2つのフォークプロセスを1つのフォークプロセス(たとえば、フォークプロセス1を参照)にマージすることを示す。いくつかの例では、異なるアプリケーションからのフォークプロセスは、結合されてマージされたフォークプロセスにマージされる異なるフォークプロセスである可能性がある。他のいくつかの例では、マージされるフォークプロセスは、同じプロセス及び/またはデータを含むことができる。
図8の事例4に示されるマージの実装は、フォークプロセスのマージを含む特別なフォークプロセスを含むことができるマージされたフォークを介して行うことができる。特別なフォークプロセスは、OSシステムコールである可能性がある。マージを伴う特別なフォークは、1つまたは複数のプロセスを入力として使用し(たとえば、それぞれがバイトコードで表される)、プロセス(複数可)を1つの参照プロセスにマージすることができる。それは、マージスキーマ(XMLファイルで記述されるマージスキーマなど)を使用することができる。マージスキーマは、バイトコード及びデータのセクションを指すことができ、各セクションは、特定の関数呼び出しまたはタスクを表すことができる。マージスキーマはまた、各セクションのマージのための指示を提供することができる(たとえば、第1のプロセス内の関連するセクションが、第2のプロセス内のセクションに置き換えられる、または第1のプロセスAに挿入されるなど)。
【0078】
先行する詳細な説明の一部は、アルゴリズム及びコンピュータメモリ内のデータビットに対する操作の記号表現の観点から提示されている。このようなアルゴリズムの説明及び表現は、その働きの趣旨を当業者に最も効果的に伝えるためにデータ処理技術において当業者が用いる方法である。アルゴリズムはここでは(及び全般的に)、望ましい結果に至る自己矛盾のない動作順序であると考えられる。動作は、物理量の物理的な操作を必要とするものである。通常、必ずしもではないが、これらの量は格納し、組み合わせ、比較し、及び他の方法で操作することができる電気または磁気信号という形を取る。主に共通使用の理由により、これらの信号をビット、値、要素、シンボル、文字、用語、数などと言うことが、時によって好都合であることが分かっている。
【0079】
しかし、これら及び同様の用語はすべて、適切な物理量に対応付けられるべきであり、これらの量に適用される好都合な標示にすぎないことをしっかりと認識しておくべきである。本開示では、コンピュータシステムのレジスタ及びメモリ内の物理(電子的)量として表されたデータを操作して、コンピュータシステムメモリもしくはレジスタまたは他のこのような情報記憶システム内の物理量として同様に表された他のデータに変換するコンピュータシステムまたは同様の電子コンピューティング装置の操作及びプロセスに言及することができる。
【0080】
本開示は、本明細書における動作を実行するための装置にも関する。この装置は、意図された目的のために特別に構築することができる、またはこの装置は、コンピュータに格納されたコンピュータプログラムによって選択的に起動または再構成される汎用コンピュータを含むことができる。そのようなコンピュータプログラムは、任意のタイプのディスク、たとえば、フロッピーディスク、光ディスク、CD-ROM、及び光磁気ディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気もしくは光カード、またはそれぞれがコンピュータシステムバスに結合される電子命令の格納に適した任意のタイプの媒体であるが、これらに限定されないコンピュータ可読記憶媒体に格納することができる。
【0081】
本明細書で示したアルゴリズム及び表示は、何らかの特定のコンピュータまたは他の装置に本来的に関係づけられるものではない。様々な汎用システムは、本明細書の教示に従ってプログラムで使用することができる、または方法を実行するための特殊な装置を構築することが便利であることが判明する場合がある。種々のこれらのシステムの構造は、以下の説明で述べるように現れる。加えて、本開示は何らかの特定のプログラミング言語に関して説明されていない。本明細書で説明したような本開示の教示を実施するために、種々のプログラミング言語を使用できることを理解されたい。
【0082】
本開示を、本開示によるプロセスを行うようにコンピュータシステム(または他の電子装置)をプログラミングするために用いることができる命令が格納されたマシン可読媒体を含むことができる、コンピュータプログラム製品またはソフトウェアとして示すことができる。マシン可読媒体には、マシン(たとえば、コンピュータ)によって読取可能な形態で情報を格納するための任意のメカニズムが含まれる。いくつかの実施形態では、マシン可読(たとえば、コンピュータ可読)媒体としては、マシン(たとえば、コンピュータ)読取可能な記憶媒体、たとえば読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光記録媒体、フラッシュメモリコンポーネントなどが挙げられる。
【0083】
前述の明細書では、本開示の実施形態は、その特定の例示的な実施形態を参照して説明されてきた。以下の特許請求の範囲に記載されるように、本開示の実施形態のより広い精神及び範囲から逸脱することなく、それに様々な修正を加えることができることは明らかである。したがって、明細書及び図面は限定的な意味ではなく例示的な意味で考慮されるべきである。
【国際調査報告】