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