JP6564845B2 - オペレーティングシステム起動加速 - Google Patents

オペレーティングシステム起動加速 Download PDF

Info

Publication number
JP6564845B2
JP6564845B2 JP2017500386A JP2017500386A JP6564845B2 JP 6564845 B2 JP6564845 B2 JP 6564845B2 JP 2017500386 A JP2017500386 A JP 2017500386A JP 2017500386 A JP2017500386 A JP 2017500386A JP 6564845 B2 JP6564845 B2 JP 6564845B2
Authority
JP
Japan
Prior art keywords
service
loading
vehicle
computing device
class
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017500386A
Other languages
English (en)
Other versions
JP2017520856A (ja
Inventor
プラカシュ ラマン,
プラカシュ ラマン,
プランジャル チャクラボルティー,
プランジャル チャクラボルティー,
ユージーン バーギーズ,
ユージーン バーギーズ,
Original Assignee
ハーマン インターナショナル インダストリーズ インコーポレイテッド
ハーマン インターナショナル インダストリーズ インコーポレイテッド
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 ハーマン インターナショナル インダストリーズ インコーポレイテッド, ハーマン インターナショナル インダストリーズ インコーポレイテッド filed Critical ハーマン インターナショナル インダストリーズ インコーポレイテッド
Publication of JP2017520856A publication Critical patent/JP2017520856A/ja
Application granted granted Critical
Publication of JP6564845B2 publication Critical patent/JP6564845B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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/4406Loading of operating system
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Description

関連出願の相互参照
本願は、2014年7月10日に出願された「OPERATING SYSTEM STARTUP ACCELERATION」と題されたインド特許出願第3427/CHE/2014号の優先権を主張し、すべての目的のためにその開示全体を参照により本明細書に組み込む。
本開示は、コンピューティングデバイスのオペレーティングシステムのための初期化ルーチンの加速に関する。
コンピューティングデバイスのためのオペレーティングシステムは、コンピューティングデバイスのハードウェアコンポーネントを使用するのに必須のサービス、リソース及びドライバを起動するための初期化ルーチンを実行することができる。初期化ルーチン速度は、ロードされるサービス、リソース及びドライバの数に基づき得、コンピューティングデバイスのいくつかの機能性は、初期化ルーチンが完了するまで利用することができない。
コンピューティングデバイスの電源オンと、コンピューティングデバイスのオペレーティングシステム/アプリケーションの初期化との間の許容可能な遅延量は、コンピューティングデバイスの環境及び/または用法に基づいて変動し得る。例えば、車両に利用されるコンピューティングデバイスは、車載コンピューティングデバイスの機能性が、車両の機能性、安全機能などに影響を与え得るので、パーソナルコンピューティングデバイスよりも厳しい遅延考慮事項(例えば、より小さい許容可能な遅延量)を有する場合がある。コンピューティングデバイスについての初期化ルーチンを速めるための方法及びシステムの実施形態が開示される。いくつかの実施形態では、コンピューティングデバイスのオペレーティングシステムの初期化中のクラスの選択的なロード方法は、仮想マシンを初期化することと、第一のクラスリストから選択されたクラスをロードすることと、及びコンピューティングデバイスのリソースをロードすることと、を含む。方法は、さらに、オペレーティングシステムのサービスを初期化してサービスマネージャを用いてそのサービスを登録するように構成されたサービスローディングプロセスをロードすることと、及びサービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードすることと、を含む。
いくつかの実施形態では、オペレーティングシステムを初期化するためのコンピューティングデバイスは、プロセッサと、仮想マシンを初期化し、第一のクラスリストから選択されたクラスをロードし、そしてコンピューティングデバイスのリソースをロードするための、プロセッサによって実行可能な命令を記憶するストレージデバイスと、を含むことができる。命令は、さらに、オペレーティングシステムのサービスを初期化してサービスマネージャを用いてそのサービスを登録するように構成されたサービスローディングプロセスをロードし、サービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードするように実行可能であっても良い。
いくつかの実施形態では、車載コンピューティングデバイスは、1つ以上のプロセッシングコアを含むプロセッサと、車載コンピューティングデバイスのオペレーティングシステムを初期化するための命令を記憶するストレージデバイスと、を備えている。この命令は、仮想マシンを初期化し、プロセッサスレッドプールにおけるスレッドの数がプロセッサに含まれるプロセッサコアの数に基づくプロセッサスレッドプールを使用して第一のクラスリストの各クラスをロードし、そしてプロセッサスレッドプールを使用して車載コンピューティングデバイスのリソースをロードするように、プロセッサによって実行可能である。命令は、さらに、オペレーティングシステムのサービスを初期化してサービスマネージャを用いてそのサービスを登録するように構成されたサービスローディングプロセスをロードし、プロセッサスレッドプールを使用して、サービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードするように実行可能であっても良い。
本明細書は、例えば、以下の項目も提供する。
(項目1)
コンピューティングデバイスのオペレーティングシステムの初期化中のクラスの選択的なロード方法であって、
仮想マシンを初期化することと、
第一のクラスリストから選択されたクラスをロードすることと、
前記コンピューティングデバイスのリソースをロードすることと、
前記オペレーティングシステムのサービスを初期化してサービスマネージャを用いて前記サービスを登録するように構成されたサービスローディングプロセスをロードすることと、及び
前記サービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードすることと、を含む、前記方法。
(項目2)
前記第一のクラスリストにおける各クラスが、ロード時間閾値よりも短いロード時間を有し、プロセス閾値よりも多い数のプロセスに利用される、項目1に記載の方法。
(項目3)
前記第二のクラスリストにおける各クラスが、前記ロード時間閾値よりも長いロード時間を有し、前記プロセス閾値よりも多い数のプロセスに利用される、項目1または2のいずれか1項に記載の方法。
(項目4)
アプリケーションを分岐するためのコマンドを受信するためのソケットを待機することと、及びリクエストされたアプリケーションを分岐するためのコマンドの受信に応答して、前記リクエストされたアプリケーションをロードするために前記リクエストされたアプリケーションを分岐することと、をさらに含む、項目1〜3のいずれか1項に記載の方法。
(項目5)
前記サービスローディングプロセスのローディングが、さらに、ヒューマンマシンインターフェースを立ち上げる前に前記サービスローディングプロセスによって重要サービスのみをロードすることを含む、項目1〜4のいずれか1項に記載の方法。
(項目6)
前記ヒューマンマシンインターフェースを立ち上げることと、及び前記ヒューマンマシンインターフェースを介して最後に使用されたアプリケーションを立ち上げることと、をさらに含む、項目5に記載の方法。
(項目7)
アプリケーションを立ち上げるためのリクエストに応答して前記アプリケーションを立ち上げることをさらに含む、項目1〜6のいずれか1項に記載の方法。
(項目8)
前記コンピューティングデバイスのサービスマネージャにおいて、リクエストされたサービスについてのアプリケーションからのリクエストを受信することと、前記リクエストされたサービスが前記コンピューティングデバイスにおいて既に実行されているかどうかを決定することと、前記リクエストされたサービスが未だ実行されていない場合に、前記リクエストされたサービスを起動することと、及び前記リクエストされたサービスが実行されている場合に、前記リクエストされたサービスに関連するサービスハンドルを前記アプリケーションに戻すことと、をさらに含む、項目1〜7のいずれか1項に記載の方法。
(項目9)
使用すべきドライバの通知を受信することと、前記ドライバを初期化することと、及び前記ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することと、をさらに含む、項目1〜8のいずれか1項に記載の方法。
(項目10)
前記ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することが、前記ドライバによってサポートされる各ハードウェアインスタンスに関連する初期化のステージを決定することと、及び第一の初期化のステージに関連する各ハードウェアインスタンスについて、そのハードウェアインスタンスを初期化することと、を含む、項目9に記載の方法。
(項目11)
前記ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することが、さらに、第一の初期化のステージに関連しない各ハードウェアインスタンスについて、前記ハードウェアインスタンスに関連する前記ステージにマッチする関連するステージリストに、そのハードウェアインスタンスについてのエントリを追加することを含む、項目10に記載の方法。
(項目12)
第一の初期化ステージ後の各初期化ステージにおいて、その初期化ステージに関連するステージリストを取り出すことと、及びその初期化ステージに関連する前記ステージリストに含まれる各ハードウェアインスタンスを初期化することと、をさらに含む、項目11に記載の方法。
(項目13)
プロセッサと、
前記プロセッサによって実行可能な命令を記憶するストレージデバイスと、を備えており、前記命令が、
仮想マシンを初期化することと、
第一のクラスリストから選択されたクラスをロードすることと、
コンピューティングデバイスのリソースをロードすることと、
オペレーティングシステムのサービスを初期化してサービスマネージャを用いて前記サービスを登録するように構成されたサービスローディングプロセスをロードすることと、
及び
前記サービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードすることと、を含む、コンピューティングデバイス。
(項目14)
前記仮想マシンがDalvik仮想マシンを備えており、前記コンピューティングデバイスが、車両内に統合された車載コンピューティングデバイスを備えており、前記命令が、さらに、前記第一のクラスリストから選択された前記クラスをロードするためのZygoteプロセスを呼び出すように実行可能である、項目13に記載のコンピューティングデバイス。
(項目15)
前記サービスローディングプロセスが、プロセス間通信ソケットを介した、新規のアプリケーションを求めるコマンドの検出に応答して、前記新規のアプリケーションをロードするように構成された、項目13または14のいずれか1項に記載のコンピューティングデバイス。
本開示は、以下の添付の図面を参照する非限定的な実施形態の以下の記述を読むことによって、より良く理解することができる。
本開示の1つ以上の実施形態に従う、車両の車室の内部の例示的な部分図を示す。 本開示の1つ以上の実施形態に従う、コンピューティングデバイスにおけるアプリケーション仮想マシンの初期化を加速する例示的な方法に関するフローチャートである。 本開示の1つ以上の実施形態に従う、例示的な車載コンピューティングシステムのブロック図を示す。 本開示の1つ以上の実施形態に従う、オペレーティングシステムにおけるサービスを選択的にロードするための例示的な方法のフローチャートである。 本開示の1つ以上の実施形態に従う、コンピューティングデバイスにおけるオペレーティングシステムのサービスを管理するための例示的な方法のフローチャートである。 本開示の1つ以上の実施形態に従う、例示的なドライバ及び種々のステージにおいてロードできる関連するハードウェアインスタンスを示す。 本開示の1つ以上の実施形態に従う、初期化されたドライバに関してハードウェアインスタンスを選択的に初期化するための例示的な方法のフローチャートである。 本開示の1つ以上の実施形態に従う、コンピューティングデバイスにおけるアプリケーションをロードするための例示的な方法のフローチャートである。
前述のように、初期化ルーチンの速度は、コンピューティングデバイスの起動と、コンピューティングデバイスの機能性の有効化との間の遅延を特徴づける。例えば、車両内のコンピューティングデバイス(例えば、車載コンピューティングデバイス)は、車両の起動に応答して起動し得るが、例えば、ナビゲーションシステム、オーディオ制御などの機能性には、コンピューティングデバイスが初期化ルーチンを完了するまでアクセスすることができない。本開示は、一部の初期化ルーチンが、コンピューティングデバイスの初期動作に必須でない特定のハードウェアドライバに関連するクラス、リソース、サービス/アプリケーション、及びハードウェアインスタンスをロードし得ることを認識する。これらの要素の各々のローディングは、コンピューティングデバイスの初期化時間を増大するので、これらの要素を選択的にロードすることによって、コンピューティングデバイスをより効率的に初期化し、それによって、デバイスのアベイラビリティに伴う遅延を短縮することができる。後述する方法及びシステムは、構成すべきクラス、リソース、サービス、アプリケーション及びハードウェアインスタンスを、例えば、デバイス特性、デバイスの意図される使用、デバイスの優先使用、リクエストされた機能性、デバイス/初期化ルーチン/アプリケーションの機能性に関わる要素の臨界/依存性などの考慮事項から導き出された各要素の優先度に基づいて選択することができる。このようにして、コンピューティングデバイスの機能性を犠牲にすることなく、初期化時間を短縮するように、機能のローディング/初期化を知的に選択することができる。
図1は、運転者及び/または一名以上の搭乗者が着席することができる、車両102の車室100の内部である、あるタイプの環境の例示的な部分図を示す。図1の車両102は、駆動輪(図示せず)と内燃機関104とを含む自動車であり得る。内燃機関104は、吸気流路を介して吸気を受け取り、排気流路を介して燃焼ガスを排出することができる1つ以上の燃焼室を含むことができる。車両102は、車両タイプの中でもとりわけ、道路走行用の自動車であり得る。いくつかの実施例では、車両102は、車両運動及び/またはエンジンからのエネルギーを吸収し、吸収したエネルギーを、エネルギー貯蔵デバイスによる貯蔵に適切なエネルギー形態に変換するように動作可能なエネルギー変換デバイスを含むハイブリッド推進システムを含むことができる。車両102は、燃料電池、太陽エネルギー捕捉要素、及び/または車両に電力を供給するための他のエネルギー貯蔵システムを組み込む全電動車両を含むことができる。
示すように、計器盤106は、様々なディスプレイと、車両102の運転者(ユーザとも称される)がアクセス可能な制御装置とを含むことができる。例えば、計器盤106は、車載コンピューティングシステム109(例えば、インフォテインメントシステム)のタッチスクリーン108と、オーディオシステム制御パネルと、計器群110と、を含むことができる。図1に示す例示的なシステムは、別個のオーディオシステム制御パネルを用いることなく、タッチスクリーン108などの、車載コンピューティングシステム109のユーザインターフェースを介して実行できるオーディオシステム制御装置を含むが、他の実施形態では、車両は、例えば、ラジオ、コンパクトディスクプレーヤ、MP3プレーヤなどの従来の車両オーディオシステムのための制御装置を含むことができるオーディオシステム制御パネルを含むことができる。オーディオシステム制御装置は、車両スピーカシステムのスピーカ112を介して音声出力の1つ以上の態様を制御するための機構を含むことができる。例えば、車載コンピューティングシステムまたはオーディオシステム制御装置は、音声出力の音量、車両スピーカシステムの個々のスピーカ間の音の分配、音声信号の均等化、及び/または音声出力の任意の他の態様を制御することができる。さらなる実施例では、車載コンピューティングシステム109は、タッチスクリーン108を介して直接受信したユーザ入力に基づいて、または外部デバイス150及び/若しくは携帯デバイス128を介して受信したユーザに関するデータ(例えば、ユーザの健康状態及び/または環境)に基づいて、ラジオ局選択、プレイリスト選択、音声入力のソース(例えば、ラジオ、CD、またはMP3)などを調節することができる。
いくつかの実施形態では、タッチスクリーン108、表示画面、様々な制御ダイヤル、ノブ及びボタン、メモリ、プロセッサ(複数可)、及び任意のインターフェース要素(例えば、コネクタまたはポート)などの、車載コンピューティングシステム109の1つ以上のハードウェア要素は、車両の計器盤106に据え付けられる統合されたヘッドユニットを形成することができる。ヘッドユニットは、計器盤106に固定してまたは取り外し可能に取り付けることができる。追加的または代替的な実施形態では、車載コンピューティングシステムの1つ以上のハードウェア要素は、モジュラーであっても良いし、車両の複数の位置に据え付けることができる。車載コンピューティングシステム109は、プロセッサと、様々なアクション、タスクなどを実行するための、プロセッサによって実行可能な命令を記憶するメモリ(例えば、ストレージデバイス)と、を含むことができる。例えば、車載コンピューティングシステム109のメモリは、車載コンピューティングシステムのアプリケーション、ならびに車載コンピューティングシステムによって実行される他のデータ処理、制御及びアクションを管理するためのオペレーティングシステムを記憶することができる。
計器群110は、燃料計、タコメータ、速度計及び走行距離計などの様々な計器、ならびにインジケータ及び警告灯を含むことができる。ハンドル114が、計器群110の下方の計器盤から突出し得る。選択的に、ハンドル114は、タッチスクリーン108と連動して使用され、車載コンピューティングシステムの機構をナビゲートし、車載コンピューティングシステムを制御できる制御装置116を含むことができる。図1に描写するコンポーネントに加えて、計器盤106が、ドア及びウィンドウ制御装置、低電圧電源出力としても使用できるたばこのライター、グローブボックス、及び/または任意の他の適切な要素などの追加のコンポーネントを含み得ることが認識される。1つ以上の実施形態では、環境制御システム通気口118を介する車内環境(例えば、車室温度)の制御は、タッチスクリーン108を使用して実行でき、それ故に、計器盤106に別個の環境制御インターフェースを含まなくても良い。しかしながら、代替的な実施形態では、別個の環境制御インターフェースを提供しても良い。
車室100は、車両、ユーザ及び/または環境を監視するための1つ以上のセンサを含むことができる。例えば、車室100は、座席に加えられた圧力を測定してユーザの存在を決定するように構成された1つ以上の座席搭載型圧力センサ120を含むことができる。車室100は、ドアの開放及び/若しくは閉鎖、ドアのロッキング、ドアウィンドウの動作、ならびに/または任意の他の適切なドア活動事象などのドア活動を監視するように構成された1つ以上のドアセンサ122を含むことができる。車室の湿度含有量を測定する湿度センサ124を含ませることができる。音声コマンドの形態のユーザ入力を受信して、ユーザが電話をかける、及び/または車室100内の周囲ノイズを測定することができるマイクロフォン126を含ませることができる。図1に例証するセンサの配置が例示であり、車両の任意の適切な位置に1つ以上の追加的または代替的なセンサを位置付けることができることを理解すべきである。例えば、追加のセンサを、エンジンルーム内、車両の外面、及び/または車両の動作、車両の周囲状況、車両のユーザなどに関する情報を提供するための他の適切な位置に位置付けることができる。車両の周囲状況、車両状況または車両運転者に関する情報は、外部デバイス150及び/または携帯デバイス128に連結されたセンサなどの、車両外部/それとは別のセンサ(すなわち、車両システムの一部ではない)からも受信できる。
車室100は、走行前、走行中及び/または走行後に車両内に保管される携帯デバイス128などの1つ以上のユーザの物体も含むことができる。携帯デバイスとしては、スマートフォン、タブレット、ラップトップコンピュータ、携帯用メディアプレーヤ、及び/または任意の適切な携帯コンピューティングデバイスを挙げることができる。携帯デバイス128は、通信リンク130を介して車載コンピューティングシステムに接続することができる。通信リンク130は、有線(例えば、ユニバーサルシリアルバス[USB]、モバイルハイデフィニションリンク[MHL]、高精細度マルチメディアインターフェース[HDMI(登録商標)]など)であっても良いし、無線(例えば、BLUETOOTH(登録商標)、WIFI、近距離無線通信[NFC]、セルラー方式の接続性など)であっても良いし、携帯デバイスと車載コンピューティングシステムとの間の双方向通信を提供するように構成されても良い。例えば、通信リンク130は、様々な車両システム(例えば、車両オーディオシステム、環境制御システムなど)及びタッチスクリーン108からのセンサ及び/または制御信号を携帯デバイス128に提供し、かつ携帯デバイス128からの制御及び/または表示信号を車載システム及びタッチスクリーン108に提供することができる。通信リンク130は、車載電源から携帯デバイス128に電力を供給して、携帯デバイスの内蔵バッテリを充電することもできる。
携帯デバイス128は、車載コンピューティングシステムから空間的に分離し、実質的に外部の通信リンク(例えば、ケーブルまたは無線周波数信号)を介して接続されたものとして例証するが、携帯デバイスを特定の位置に保持するためのスロット132または他の収納構造を、計器盤106または車両内の他の位置に形成できることを理解すべきである。収納構造は、携帯デバイスとコンピューティングシステムとの間の実質的に内部の通信リンクを提供するための、携帯デバイス128を取り付けるまたは「ドッキング」することができる統合コネクタ134を含むことができる。
車載コンピューティングシステム109は、ユーザによって操作されるが、車両102外部に位置する追加のデバイス、例えば、1つ以上の外部デバイス150にも通信可能に連結することができる。描写する実施形態では、外部デバイス150は車両102の外側に位置するが、代替的な実施形態では、外部デバイスが車室100内側に位置しても良いことが認識される。外部デバイスとしては、サーバのコンピューティングシステム、パーソナルコンピューティングシステム、携帯用電子デバイス、電子リストバンド、電子ヘッドバンド、携帯用音楽プレーヤ、電子活動追跡デバイス、歩数計、スマートウォッチ、GPSシステムなどを挙げることができる。外部デバイス150は、通信リンク130を参照して論じたように有線でも無線でも良く、外部デバイスと車載コンピューティングシステムとの間の双方向通信を提供するように構成された通信リンク136を介して車載コンピューティングシステムと接続することができる。例えば、外部デバイス150は、1つ以上のセンサを含み、通信リンク136は、外部デバイス150からのセンサ出力を車載コンピューティングシステム109及びタッチスクリーン108に送信することができる。外部デバイス150は、コンテキストデータ、ユーザ行動/嗜好、動作ルールなどに関する情報を記憶及び/または受信し、外部デバイス150からのそのような情報を車載コンピューティングシステム109及びタッチスクリーン108に送信することもできる。
車載コンピューティングシステム109は、外部デバイス150、携帯デバイス128及び/または他の入力源から受信した入力を分析し、様々な車載システム(例えば、環境制御システムまたはオーディオシステム)に関する設定を選択し、タッチスクリーン108及び/またはスピーカ112を介して出力を提供し、携帯デバイス128及び/または外部デバイス150と通信し、かつ/または評価に基づいて他のアクションを実行することができる。いくつかの実施形態では、評価のすべてまたは一部は、携帯デバイス128及び/または外部デバイス150によって実行することができる。
いくつかの実施形態では、外部デバイス150のうちの1つ以上は、携帯デバイス128及び/または別の外部デバイス150を介して、間接的に車載コンピューティングシステム109と通信可能に連結しても良い。例えば、通信リンク136は、外部デバイス150からの出力が携帯デバイス128に伝達されるように、外部デバイス150と携帯デバイス128とを通信可能に連結することができる。その後、外部デバイス150から受信したデータを、携帯デバイス128によって収集されたデータと携帯デバイス128において集約し、次に、集約されたデータを、通信リンク130を介して車載コンピューティングシステム109及びタッチスクリーン108に送信することができる。類似のデータ集約がサーバシステムにおいて生じ、その後、通信リンク136/130を介して車載コンピューティングシステム109及びタッチスクリーン108に送信することができる。
図2は、図1の車載コンピューティングデバイス109などのコンピューティングデバイスにおけるアプリケーション仮想マシンの初期化を加速する方法200に関するフローチャートである。例えば、方法200は、ANDROID(登録商標)オペレーティングシステム初期化のためのZygoteプロセスの一部として利用することができる。方法200は、202において、アプリケーション仮想マシン(例えば、ANDROID(登録商標)オペレーティングシステムのためのDalvik)を初期化することを含む。例えば、そのような初期化は、コンピューティングデバイスを電源オン、さもなければ動作を開始するようにコンピューティングデバイスに命令することによってトリガすることができる。方法は、204において、CPUスレッドプールを使用して、プレシステム_サーバのクラスリストから選択されたクラスをロードすることを含む。206に示すように、CPUスレッドプールにおけるスレッドの数は、CPUコアの数に2を乗じた数に基づく。各スレッドを使用して、クラスをロードし、リソースをロードし、かつ/または任意の他の適切なタスクを実行することができる。
いくつかのシステムにおいて、すべてのクラス及びリソースのプレロード後に、システム_サーバプロセスをロードして、コンピューティングデバイスを動作させるための他のサービスのローディングを開始することができる。システム_サーバプロセスは、オペレーティングシステムの初期化中に使用されるサービスを初期化してサービスマネージャを用いてそのサービスを登録するように構成されたサービスローディングプロセスであっても良い。システム_サーバプロセスは、オペレーティングシステムの他のアクティビティを管理するアクティビティマネージャも起動することができる。すべてのクラスではなく、プレシステム_サーバのクラスリストにおけるクラスのみをロードすることによって、システムは、プレロードされるクラスの数を減少し、クラスをプレロードするのに費やされる時間を短縮することができる。プレシステム_サーバのクラスリストは、各クラスのロード時間、各クラスを使用するプロセスの数、及び/または各クラスの優先度を示す任意の他のパラメータに基づいて生成することができる。例えば、プレシステム_サーバのクラスリスト内のクラスは、閾値ロード時間(例えば、1つの非限定的な実施例では1250μs)よりも短いロード時間を有し、プロセスの閾値数(例えば、1つの非限定的な実施例では10のプロセス)よりも多いプロセスに使用することができる。プレシステム_サーバのクラスリストは、システム_サーバをロードできるシステム_サーバプロセスを含むことができる。いくつかの実施例では、システム_サーバは、プレシステム_サーバのクラスリストにおけるすべての他のクラスがロードされた後にロードされる最後のプロセスであっても良い。ANDROID(登録商標)オペレーティングシステムのためのプレシステム_サーバのクラスの例示的なリストは、以下の別表Iに提供される。例示的なリストは、包括的でなくても良く、例えば、コンピューティングデバイスにおけるオペレーティングシステム/ソフトウェアコンピューティングデバイス/ハードウェアコンティングデバイスの用法/環境などのファクタに基づいて、追加的または代替的なクラスを含ませるまたはリストから除去することができる。任意の適切な閾値ロード時間及びプロセスの閾値数を利用して、本開示の範囲から逸脱することなく、プレシステム_サーバのクラスリストを生成できることを理解すべきである。
方法200は、208において、スレッドプールを使用してリソースをロードすることを含む。リソースは、アプリケーションまたは他のソフトウェアが、例えば、レイアウト定義、アニメーション命令、ビットマップ、ユーザインターフェース文字列などを利用する追加のファイル及びコンテンツを含むことができる。いくつかの実施例では、初期化中にロードすべきすべてのリソースは、208においてロードすることができる。他の実施例では、リソース(例えば、プレシステム_サーバのステージにロードされたリソースのサブセット、及びポストシステム_サーバのステージにロードされたリソースのサブセット)は、前述のようなクラスと同様のステージにおいてロードすることができる。方法は、210に進み、システム_サーバをロードするためにシステム_サーバプロセスを分岐する。分岐は、既存のプロセスをコピーして、既存のプロセスのコピーの間にロードすべき新規のプロセスをオーバーレイすることを含むことができる。システム_サーバプロセスは、リクエストに応じて他のアプリケーションを分岐することができる。従って、方法200は、212に進み、プロセス間通信ソケットを待機して、(例えば、アプリケーションを立ち上げるためのリクエストに基づく)アプリケーションを分岐するためのコマンドを受信する。アプリケーションを分岐するためのそのようなコマンドを受信すると、システム_サーバプロセスは、それ自体のコピーを作り出し、コピーにおいてリクエストされたアプリケーションをオーバーレイしてリクエストされたアプリケーションをロードする。
214に示すように、システム_サーバプロセスの分岐後、ポストシステム_サーバのクラスリストからのクラスをロードすることができる。ポストシステム_サーバのクラスリストは、プレシステム_サーバのクラスリストに関して前述したロード時間閾値及び/またはプロセス閾値に基づいて生成することができる。例えば、ポストシステム_サーバのクラスリストは、初期化手順の一部としてロードすべきであるが、前述したロード時間閾値(例えば、1つの非限定的な実施例では1250μs)を超えたロード時間を有するクラスを含み、プロセスの閾値数(例えば、1つの非限定的な実施例では10のプロセス)よりも多いプロセスに利用され得る。ANDROID(登録商標)オペレーティングシステムのためのポストシステム_サーバのクラスの例示的なリストは、以下の別表IIに提供される。例示的なリストは、包括的でなくても良く、例えば、コンピューティングデバイスにおけるオペレーティングシステム/ソフトウェアコンピューティングデバイス/ハードウェアコンティングデバイスの用法/環境などのファクタに基づいて、追加的または代替的なクラスを含ませるまたはリストから除去することができる。任意の適切な閾値ロード時間及びプロセスの閾値数を利用して、本開示の範囲から逸脱することなく、プレシステム_サーバのクラスリストを生成できることを理解すべきである。いくつかの実施例では、追加のローディングステージを利用することができる。例えば、プレシステム_サーバのクラスリスト及び/またはポストシステム_サーバのクラスリストは、初期化ルーチン中に種々のステージにおいてロードするための追加のリストに分けることができる。
図3は、車両301の内側に構成及び/または統合された車載コンピューティングシステム300のブロック図を示す。車載コンピューティングシステム300は、図1の車載コンピューティングシステム109の実施例であっても良く、かつ/またはいくつかの実施形態における図2の方法200などの本明細書に記述する方法の1つ以上を実行することができる。いくつかの実施例では、車載コンピューティングシステムは、情報ベースのメディアコンテンツ(エンターテインメントコンテンツ、ナビゲーションサービスなどを含むオーディオ及び/またはビジュアルメディアコンテンツ)を、操作者の車内体験を向上するために車両ユーザに提供するように構成された車両インフォテインメントシステムであっても良い。車両インフォテインメントシステムは、様々な車両システム、サブシステム、ハードウェアコンポーネントならびに運転者及び/または搭乗者の車内体験を向上するために車両301に統合されたまたは統合可能なソフトウェアアプリケーション及びシステムを含むことができる。
車載コンピューティングシステム300は、オペレーティングシステムプロセッサ314及びインターフェースプロセッサ320を含む1つ以上のプロセッサを含むことができる。オペレーティングシステムプロセッサ314は、車載コンピューティングシステム上のオペレーティングシステムを実行し、入力/出力、表示、再生及び車載コンピューティングシステムの他の動作を制御することができる。インターフェースプロセッサ320は、車両間システム通信モジュール322を介して車両制御システム330と相互作用することができる。
車両間システム通信モジュール322は、例えば、車両制御システム330を経由して、データを他の車両システム331及び車両制御要素361に出力し、その一方で、他の車両コンポーネント及びシステム331、361から入力されたデータを受信することもできる。データを出力するときに、車両間システム通信モジュール322は、バスを介して車両の任意の状態、車両周囲環境に対応する信号、または車両に接続された任意の他の情報源の出力を提供することができる。車両データ出力としては、例えば、アナログ信号(例えば、現在の速度)、個々の情報源によって提供されるデジタル信号(例えば、クロック、温度計、グローバルポジショニングシステム[GPS]センサなどの位置センサなど)、車両データネットワーク(例えば、そこを通じてエンジン関連情報を通信できるエンジンのコントローラエリアネットワーク[CAN]バス、そこを通じて環境制御関連情報を通信できる環境制御CANバス、及びそこを通じて車両におけるマルチメディアコンポーネント間でマルチメディアデータを通信するマルチメディアデータネットワーク)を通じて伝播されるデジタル信号を挙げることができる。例えば、車載コンピューティングシステムは、エンジンCANバスから、車輪センサによって概算される車両の現在の速度、車両のバッテリ及び/または電力配分システムを通じた車両の電力状態、車両の点火装置の状態などを取り出すことができる。さらに、イーサネット(登録商標)などの他の相互作用手段を、本開示の範囲から逸脱することなく同様に使用することができる。
プロセッサ314及び320によって実行可能な命令などのデータを不揮発性の形態において記憶する不揮発性ストレージデバイス308を、車載コンピューティングシステム300に含ませることができる。ストレージデバイス308は、クラウドベースのサーバに接続する、及び/またはクラウドベースのサーバに送信するための情報を収集するためのアプリケーションを車載コンピューティングシステム300が実行できるアプリケーションデータを記憶することができる。アプリケーションは、車両システム/センサ、入力デバイス(例えば、ユーザインターフェース318)、車載コンピューティングシステムと通信するデバイス(例えば、Bluetooth(登録商標)リンクを介して接続された携帯デバイス)などによって集められた情報を取り出すことができる。車載コンピューティングシステム300は、さらに、揮発性メモリ316を含むことができる。揮発性メモリ316は、ランダムアクセスメモリ(RAM)であっても良い。不揮発性ストレージデバイス308及び/または揮発性メモリ316などの非一時的ストレージデバイスは、プロセッサ(例えば、オペレーティングシステムプロセッサ314及び/またはインターフェースプロセッサ320)によって実行されたときに、車載コンピューティングシステム300を制御して、本開示に記述するアクションの1つ以上を実行する命令及び/またはコードを記憶することができる。
例えば、ユーザからの音声コマンドを受信し、車両における周囲ノイズを測定し、車両の音響環境に従い車両のスピーカからの音声を調整するか否かを決定するためのマイクロフォン302を、車載コンピューティングシステム300に含ませることができる。音声処理ユニット304が、マイクロフォン302から受信した音声コマンドなどの音声コマンドを処理することができる。いくつかの実施形態では、車載コンピューティングシステム300は、車両のオーディオシステム332に含まれるマイクロフォンを使用して、音声コマンドを受信し、周囲車両ノイズをサンプリングすることもできる。
車載コンピューティングシステム300のセンササブシステム310に1つ以上の追加のセンサを含ませることができる。例えば、センササブシステム310は、車両の駐車においてユーザを援助するための後方カメラ、及び/または(例えば、顔認識及び/またはユーザジェスチャを使用して)ユーザを識別するための車室カメラなどのカメラを含むことができる。車載コンピューティングシステム300のセンササブシステム310は、様々な車両センサと通信し、それからの入力を受信し、さらに、ユーザ入力を受信することができる。例えば、センササブシステム310によって受信される入力としては、変速ギア位置、変速クラッチ位置、アクセルペダル入力、ブレーキ入力、変速セレクタ位置、車両速度、エンジン速度、エンジンを流れる気流、周囲温度、吸気温度など、ならびに環境制御システムセンサ(例えば、伝熱流体温度、不凍温度、ファン回転速度、乗員室温度、所望の乗員室温度、周囲湿度など)、ユーザによって出された音声コマンドを検出する音声センサ、車両のフォブからのコマンドを受信する、選択的に、それの地理的位置/近接度を追跡するフォブセンサなどからの入力を挙げることができる。特定の車両システムセンサが、単独でセンササブシステム310と通信できるが、他のセンサも、センササブシステム310及び車両制御システム330両方と通信する、または車両制御システム330を通じてセンササブシステム310と間接的に通信することができる。車載コンピューティングシステム300のナビゲーションサブシステム311は、(例えば、GPSセンサ及び/またはセンササブシステム310からの他のセンサを通じた)位置情報、経路案内、交通情報、注視点(POI)識別などのナビゲーション情報を生成及び/または受信し、かつ/または他のナビゲーションサービスを運転者に提供することができる。
車載コンピューティングシステム300の外部デバイスインターフェース312は、車両301外部に位置する1つ以上の外部デバイス340と連結可能であり、かつ/または通信することができる。外部デバイスは、車両301外部に位置するものとして例証するが、例えば、ユーザが車両301を運転しながら外部デバイスを動作させているときには、車両301内に一時的に収容できることを理解すべきである。言い換えれば、外部デバイス340は、車両301に不可欠なものではない。外部デバイス340は、(例えば、Bluetooth(登録商標)接続を介して接続された)携帯デバイス342、または代替的なBluetooth(登録商標)使用可能なデバイス352を含むことができる。携帯デバイス342としては、有線及び/または無線通信を介して車載コンピューティングシステムと通信できる携帯電話、スマートフォン、ウェアラブルデバイス/センサ、または他の携帯用電子デバイス(複数可)を挙げることができる。他の外部デバイスは、外部サービス346を含む。例えば、外部デバイスは、車両から離れて、車両の外部に位置する車外デバイスを含むことができる。なおも他の外部デバイスは、例えば、ソリッドステートドライブ、ペンドライブ、USBドライブなどの外部ストレージデバイス354を含む。外部デバイス340は、本開示の範囲から逸脱することなく、無線でまたはコネクタを介して車載コンピューティングシステム300と通信することができる。例えば、外部デバイス340は、ネットワーク360、ユニバーサルシリアルバス(USB)接続、直接的な有線接続、直接的な無線接続及び/または他の通信リンクを介して、外部デバイスインターフェース312を介して車載コンピューティングシステム300と通信することができる。外部デバイスインターフェース312は、運転者の接触と関連付けられた携帯デバイスと車載コンピューティングシステムが通信できる通信インターフェースを提供することができる。例えば、外部デバイスインターフェース312は、通話を確立し、かつ/またはテキストメッセージ(例えば、SMS、MMSなど)を(例えば、図2のSMSサービス202、電話サービス204及び/または電子メールサービス206を通じて)運転者の接触と関連付けられた携帯デバイスに(例えば、セルラー方式の通信ネットワークを介して)送ることができる。
1つ以上のアプリケーション344を、携帯デバイス342において動作させることができる。実施例として、携帯デバイスアプリケーション344は、ユーザと携帯デバイスとの相互作用に関するユーザデータを集約するように動作することができる。例えば、携帯デバイスアプリケーション344は、携帯デバイスにおいてユーザによって聴かれた音楽プレイリスト、(ユーザによって受け取られた通話の頻度及び持続期間を含む)通話ログ、ユーザが頻繁に訪れた位置及び各位置において費やされた時間を含む位置情報などに関するデータを集約することができる。収集されたデータは、アプリケーション344によってネットワーク360を介して外部デバイスインターフェース312に転送することができる。さらに、外部デバイスインターフェース312を介して車載コンピューティングシステム300からの具体的なユーザデータリクエストを携帯デバイス342において受信することができる。具体的なデータリクエストは、ユーザが地理的に位置する場所、ユーザの位置における周囲ノイズレベル及び/または音楽ジャンル、ユーザの位置における周囲気象状況(温度、湿度など)などを決定するためのリクエストを含むことができる。携帯デバイスアプリケーション344は、制御命令をコンポーネント(例えば、マイクロフォンなど)、またはリクエストされたデータを携帯デバイスにおいて収集できる携帯デバイス342の他のアプリケーション(例えば、ナビゲーションアプリケーション)に送ることができる。次に、携帯デバイスアプリケーション344は、収集された情報を車載コンピューティングシステム300に戻して伝達することができる。
同様に、1つ以上のアプリケーション348を、外部サービス346において動作させることができる。実施例として、外部サービスアプリケーション348は、複数のデータソースからのデータを集約及び/または分析するように動作することができる。例えば、外部サービスアプリケーション348は、ユーザの1つ以上のソーシャルメディアアカウントからのデータ、車載コンピューティングシステムからのデータ(例えば、センサデータ、ログファイル、ユーザ入力など)、インターネットのクエリからのデータ(例えば、気象データ、POIデータ)などを集約することができる。収集されたデータは、別のデバイスに送信する、ならびに/またはアプリケーションによって分析して運転者、車両及び環境の状態を決定し、状態に基づいてアクションを実行する(例えば、他のデバイスにデータをリクエストする/送る)ことができる。
車両制御システム330は、種々の車載機能に関わる様々な車両システム331の態様を制御するための制御装置を含むことができる。これらは、例えば、オーディオエンターテインメントを車両乗員に提供するための車両オーディオシステム332の態様、車両乗員の車室冷房または暖房要求を満たすための環境制御システム334の態様、ならびに車両乗員が他者との遠隔通信網を確立するための遠隔通信システム336の態様を制御することを含むことができる。
オーディオシステム332は、スピーカなどの電磁変換器を含む1つ以上の音響再生デバイスを含むことができる。車両オーディオシステム332は、パッシブであっても良いし、例えば、電力増幅器を含むことによってアクティブであっても良い。いくつかの実施例では、車載コンピューティングシステム300は、音響再生デバイスのための唯一の音源であっても良いし、音声再生システム(例えば、携帯電話などの外部デバイス)と接続された他の音源が存在しても良い。音声再生デバイスとの任意のそのような外部デバイスの接続は、アナログ、デジタルまたはアナログ技術とデジタル技術との任意の組み合わせであっても良い。
環境制御システム334は、車両301の車室または乗員室内部に快適な環境を提供するように構成できる。環境制御システム334は、例えば、空気口、暖房機、空調装置、統合された暖房機と空調装置システムなどの換気を制御できるコンポーネントを含む。暖房及び空調設定とリンクされた他のコンポーネントは、フロントガラスを洗浄することができるフロントガラス除霜及び防曇システム、ならびに吸気口を通じて乗員室に入る外気を洗浄するための換気フィルタを含むことができる。
車両制御システム330は、ハンドル制御装置362(例えば、ハンドル備え付けのオーディオシステム制御装置、走行制御装置、ワイパー制御装置、ヘッドライト制御装置、方向指示制御装置など)、計器盤制御装置、マイクロフォン(複数可)、アクセル/ブレーキ/クラッチペダル、ギアシフト、運転者または搭乗者のドアに位置付けられたドア/ウィンドウ制御装置、座席制御装置、車室照明制御装置、オーディオシステム制御装置、車室温度制御装置など、エンジン及び/または車両の車室内部の補助要素に関連する様々な車両制御装置361(または、車両システム制御要素)の設定を調節するための制御装置も含むことができる。制御信号は、車両のオーディオシステム332の1つ以上のスピーカにおける音声出力も制御することができる。例えば、制御信号は、例えば、音量、均等化、音像(例えば、1つ以上の規定された位置から生じるようにユーザに見える音声出力を生成する音声信号の構成)、複数個のスピーカ間の音声分配などの音声出力特性を調節することができる。同様に、制御信号は、環境制御システム334の通気口、空調装置及び/または暖房機を制御することができる。例えば、制御信号は、車室の具体的な区域への冷却空気の送達を増大することができる。
車両の外側に位置付けられた制御要素(例えば、安全システムのための制御装置)も、例えば、通信モジュール322を介してコンピューティングシステム300に接続することができる。車両制御システムの制御要素は、ユーザ入力を受信するように車両上に及び/または車両内部に、物理的にかつ取り外せないように位置付けることができる。車載コンピューティングシステム300からの制御命令の受信に加えて、車両制御システム330は、ユーザによって操作された1つ以上の外部デバイス340、例えば、携帯デバイス342からの入力も受信することができる。これにより、外部デバイス340から受信したユーザ入力に基づいて、車両システム331及び車両制御装置361の態様を制御することができる。
車載コンピューティングシステム300は、さらに、アンテナ306を含むことができる。アンテナ306は、単一のアンテナとして示すが、いくつかの実施形態では1つ以上のアンテナを備えることができる。車載コンピューティングシステムは、アンテナ306を介して広帯域無線インターネットアクセスを取得し、さらに、例えば、ラジオ、テレビ、気象、交通などの放送信号を受信することができる。車載コンピューティングシステムは、1つ以上のアンテナ306を介してGPS信号などの位置決め信号を受信することができる。車載コンピューティングシステムは、アンテナ(複数可)306を通じた無線周波数を介して、または適切な受信デバイスを介した赤外線若しくは他の手段を介して、無線コマンドも受信することができる。いくつかの実施形態では、アンテナ306は、オーディオシステム332または遠隔通信システム336の一部として含ませることができる。さらに、アンテナ306は、外部デバイスインターフェース312を介してAM/FMラジオ信号を外部デバイス340(例えば、携帯デバイス342)に提供することができる。
車載コンピューティングシステム300の1つ以上の要素は、ユーザインターフェース318を介してユーザによって制御することができる。ユーザインターフェース318は、図1のタッチスクリーン108などのタッチスクリーンに提示されたグラフィカルユーザインターフェース、及び/またはユーザ駆動のボタン、スイッチ、ノブ、ダイヤル、スライダなどを含むことができる。例えば、ユーザ駆動の要素としては、ハンドル制御装置、ドア及び/またはウィンドウ制御装置、計器盤制御装置、オーディオシステム設定、環境制御システム設定などを挙げることができる。ユーザは、ユーザインターフェース318を介して、車載コンピューティングシステム300の1つ以上のアプリケーション及び携帯デバイス342とも相互作用することができる。ユーザインターフェース318におけるユーザの車両設定嗜好の受信に加えて、車載制御システムによって選択された車両設定も、ユーザインターフェース318においてユーザに表示することができる。通知及び他のメッセージ(例えば、受信したメッセージ)、ならびにナビゲーション援助を、ユーザインターフェースのディスプレイにおいてユーザに表示することができる。ユーザ嗜好/情報及び/または提示されたメッセージに対する応答を、ユーザインターフェース上のユーザ入力を介して実行することができる。
図4は、オペレーティングシステムにおけるサービスを選択的にロードするための方法400のフローチャートである。方法400は、図1の車載コンピューティングデバイス109などのコンピューティングデバイスによって実行することができる。方法は、402において、システム_サーバを起動することを含む。例えば、方法400は、コンピューティングデバイスのオペレーティングシステム及び/または他のソフトウェアを初期化して動作させるために、図2の方法200の210中及び/または後に実行することができる。404に示すように、システム_サーバを利用して、重要サービス(例えば、システムが機能しないまたは不十分に機能することがないような、システムの機能化に重要なサービス)をロードすることができる。例えば、パッケージマネージャ、ウィンドウマネージャ、入力マネージャ及びマウントサービスなどのサービスが、ANDROID(登録商標)オペレーティングシステムの機能化に重要であり得るサービスの実施例である。404に示すような重要サービスのローディングは、重要サービスのみをロードして、任意の他のサービスをロードしない(例えば、ロードしなくてもシステムが依然として機能できる重要でないサービスをロードしない)ことを含むことができる。(後にロードできる、及び/またはサービスの使用を求めるリクエストに応答してのみロードできる)重要でないサービスの実施例としては、(音声認識のための)UIのスピーチサービス、BLUETOOTH(登録商標)マネージャ、(車両ラジオ制御装置を調節するための)チューナサービスなどを挙げることができる。
方法は、406において、ヒューマンマシンインターフェース(HMI)を立ち上げることを含む。例えば、ヒューマンマシンインターフェースは、初期化されたコンピューティングデバイス及び/またはオペレーティングシステムとユーザが相互作用できるユーザインターフェース(UI)及び/またはグラフィカルユーザインターフェース(GUI)を含むことができる。408に示すように、HMIを利用して、最後に使用されたアプリケーションを含むアプリケーションを立ち上げることができる。例えば、コンピューティングデバイスは、車載コンピューティングデバイスであっても良く、最後に使用されたアプリケーションは、車両及び/または車載コンピューティングシステムがシャットオフする前にアクティブであった最後のアプリケーション(例えば、ナビゲーションアプリケーション)であっても良い。410に示すように、最後に使用されたアプリケーションの立ち上げは、任意の従属サービス(複数可)、アプリケーション(複数可)、リソース(複数可)、クラス(複数可)などの立ち上げ及び/または初期化を含むことができる。例えば、ナビゲーションアプリケーションは、車両を位置決めするためのGPSサービスなどの従属サービスを利用することができる。従って、ナビゲーションは、410において、GPSサービスを立ち上げて、立ち上げたときにナビゲーションアプリケーションの適切な動作を保証することをリクエストすることができる。いくつかの実施形態では、最後に使用されたアプリケーションは、すべての従属サービス(複数可)を立ち上げた後などに立ち上げることができる。他の実施形態では、最後に使用されたアプリケーションは、従属サービス(複数可)などと一緒に(例えば、従属サービスと並行して)立ち上げることができる。方法は、412において、リクエストに応答して残りのサービスを立ち上げることを含む。このようにして、効率的な、リクエスト駆動の初期化プロセスを可能にすることがリクエストされたときに、サービス及び関連する従属サービス/アプリケーションを動的に立ち上げることができる。
図5は、コンピューティングデバイスにおけるオペレーティングシステムのサービスを管理する方法500のためのフローチャートである。例えば、方法500は、図1の車載コンピューティングシステム109によって実行され、車載コンピューティングシステムにおいてロードを試みているアプリケーションによって出されたサービスリクエストをハンドルすることができる。方法は、502において、コンピューティングデバイスのサービスマネージャにおいて、サービスを求めるリクエストを受信することを含む。504に示すように、リクエストは、サービスを利用するアプリケーションから受信することができる。例えば、図4における方法400の410に関連して記述したように、方法500を実行して、立ち上げを試みているアプリケーションに関する従属サービスを立ち上げることができる。方法500は、506において、リクエストされたサービスがコンピューティングデバイスにおいて既に実行されているかどうかを決定することを含む。サービスが未だ実行されていない場合には(例えば、506における「NO」)、方法は、508に進み、リクエストされたサービスを起動することをシステム_サービスプロセスに通知し、510に進み、サービスの起動を待機する。サービスが起動中(または、サービスが既に実行されている、506における「YES」の場合)には、方法は、512に進み、サービスのリクエスタ(例えば、サービスをリクエストしたアプリケーション)にサービスハンドルを戻す。サービスハンドルは、サービスが起動中/後である、及び/またはサービスを呼び出すためのアプリケーションによってサービスを利用できることの確認としての機能を果たすことができる。
図6は、ドライバと種々のステージにおいてロードできる関連するハードウェアインスタンスとの間の関係を示すブロック図である。図2に関して前述したような種々のステージ(例えば、プレシステム_サーバのステージ及びポストシステム_サーバのステージ)においてロードできるクラスと同様に、ドライバ、及び使用特性に基づいてステージにおける関連するハードウェアインスタンスをロードすることによって、コンピューティングデバイス/オペレーティングシステム初期化を加速させることができる。例えば、第一のドライバ、ドライバ1は、ハードウェアインスタンス602の第一のグループをサポートし、第二のドライバ、ドライバ2は、ハードウェアインスタンス604の第二のグループをサポートすることができる。各ハードウェアインスタンスは、ハードウェアインスタンス602a〜d及び604a〜cの各々の内側の数字によって例証されるような特定の初期化のステージにおいて使用されるものとして指定することができる。例えば、(ドライバ1によってサポートされる)ハードウェアインスタンス602b、及び(ドライバ2によってサポートされる)ハードウェアインスタンス604aは、これらのハードウェアインスタンスの優先度に基づいて、ステージ1に関連付くことができる。ステージ1のハードウェアインスタンスは、システムにおいて最も重要なハードウェアインスタンスであり得る。言い換えれば、ステージ1のハードウェアインスタンスは、システムの動作に影響を与え得、かつ/またはオペレーティングシステムの初期化中またはその直後に起動されるアプリケーションまたは他のプロセスに利用され得る。例えば、ステージ1のハードウェアインスタンスは、図4の方法400における404に言及した重要サービスをロードするために、かつ/または重要サービスによって利用され得る。
図6に例証するように、各ステージにおいて、影付きのハードウェアインスタンスは、そのステージ中に初期化される、及び/またはそのステージに入るときには既に初期化されているハードウェアインスタンスを表す。例えば、ステージ1において、ステージ1として指定されたすべてのハードウェアインスタンス(例えば、ハードウェアインスタンス602b及び604a)が初期化される。ステージ2では、ステージ1として指定されたハードウェアインスタンスは、既に初期化されていて、ステージ2として指定されたハードウェアインスタンス(例えば、ハードウェアインスタンス602c及び604c)が、新規に初期化される。ステージ3では、すべてのハードウェアインスタンスが、既に初期化されている(ステージ1及びステージ2のインスタンス)、または新規に初期化される(例えば、ステージ3のハードウェアインスタンス602a、602d及び604b)。一部のオペレーティングシステムは、ハードウェアコンポーネントをシステムにおいて利用可能な関連するカーネルを識別するためのデバイスツリーを利用することができる。各ハードウェアインスタンスについての初期化のステージの表示を、ステージに従いハードウェアインスタンスをカーネルが選択的にロードできるデバイスツリーの新規のエントリとして追加することができる。
図7は、初期化されたドライバに関してハードウェアインスタンスを選択的に初期化する方法700のためのフローチャートである。方法700は、図1の車載コンピューティングシステム109などの車載コンピューティングシステムによって実行され、デバイスについての起動速度を増大することができる。方法700は、702において、オペレーティングシステムによって使用可能なドライバを識別する通知を受信することを含む。704に示すように、ドライバの使用は、アプリケーション及び/またはプロセスによってリクエストすることができる。例えば、システム_サーバプロセス及び/または他の初期化アプリケーション/プロセスが、起動中のフラッシュメモリハードウェアをサポートするドライバの使用をリクエストすることができる。方法は、706において、702の通知において識別されたドライバを初期化することを含む。前述した実施例に続いて、フラッシュメモリは、コンピューティングデバイスにおける複数個のメモリ管理回路のコントローラ(MMCコントローラ)のうちの1つによって制御することができる。すべてのMMCコントローラが単一ドライバによってサポートされるので、そのドライバをリクエストし、その後、フラッシュメモリを使用するリクエストに応答してそれを初期化することができる。
方法は、708において、ドライバのハードウェア初期化ルーチンを呼び出すことを含む。710に示すように、ハードウェア初期化ルーチンは、ドライバによってサポートされる各ハードウェアインスタンスについて、そのハードウェアインスタンスを第一のステージにおいて初期化すべきかどうかを決定することを含む。例えば、図6に関して前述したように、各ハードウェアインスタンスは、ハードウェアインスタンスがシステムによって使用される(それ故に、初期化される)相対的時間を示す特定のステージに関連付けることができる。所与のハードウェアインスタンスが第一のステージに関連しない場合には、次に、方法は、712に示すように、そのハードウェアインスタンスについてのエントリを関連するステージリストに追加することを含む(例えば、ハードウェアインスタンスが第二のステージに関連する場合には、ハードウェアインスタンスについてのエントリを第二のステージリストに追加するなど)。反対に、714に示すように、所与のハードウェアインスタンスが第一のステージに関連する場合には、方法は、そのハードウェアインスタンスを初期化することを含む。このようにして、ドライバによってサポートされる各ハードウェアインスタンスを評価し、第一のステージにおいて利用されるハードウェアインスタンスのみをロードすることによって、初期化ローディング時間を短縮することができる。
前述した実施例に続いて、すべてのMMCコントローラが同じドライバによってサポートされるので、フラッシュメモリのためのMMCコントローラをサポートするドライバの初期化によって、各MMCコントローラ(及び、関連するハードウェア)を評価することができる。例えば、別のMMCコントローラが、第三のステージに関連し得る、WiFiチップなどのネットワーキングハードウェアを制御することができる(例えば、WiFiチップは、初期化プロセスにおいてフラッシュメモリよりもかなり後になるまで、または初期化プロセスが既に完了した後にしか要求/リクエストされない)。従って、MMCコントローラドライバをロードするときに、(第一のステージに関連する)フラッシュメモリのためのMMCコントローラを初期化し、その一方で、第三のステージに到達したときに初期化すべき(第三のステージに関連する)WiFiカードのためのMMCコントローラを第三のステージリストに追加することができる。このようにして、複数のハードウェアインスタンスをサポートするドライバをロードする場合でさえも、リクエストされたハードウェアインスタンスのみをロードすることによって、初期化ロード時間を短縮することができる。
方法は、716において、すべてのドライバが完了したかどうかを決定することを含む。例えば、706〜714に記述したプロセスは、使用がリクエストされたすべてのドライバについて繰り返すことができる。いくつかの実施形態では、システムのすべてのドライバを、ステップ706〜714を通じて評価することができる。いずれの実施例でも、すべてのドライバ(使用がリクエストされた及び/またはシステムのすべてのドライバ)が完了していない場合には(例えば、716における「NO」)、方法は、706に戻り、次のドライバを初期化して、次のそのドライバのためのハードウェア初期化ルーチンを進める。すべてのドライバ(使用がリクエストされた及び/またはシステムのすべてのドライバ)が完了した場合には(例えば、716における「YES」)、方法は、718に進み、アプリケーション/プロセス(例えば、702/704においてドライバ/ハードウェアインスタンスの使用をリクエストしたアプリケーション/プロセス)を起動する。方法700の前のステップは、第一の初期化ステージ中に、オペレーティングシステムのカーネルによって完了することができた。アプリケーションの起動後、システムは、車両、コンピューティングデバイス及び/またはユーザ入力の状態を管理/監視して、ステージ遷移のカーネルに情報を与えることができる。方法は、720において、ステージ変更通知(例えば、第一の初期化のステージから第二のステージへの変更)を待機することを含む。例えば、ステージ変更通知は、現在のステージについてのすべてのローディング及び他のタスクの完了に応答して、または新規のアプリケーションロードリクエストに応答して提供することができる。方法は、722に示すように、ステージ変更に応答して、通知において識別されたステージに関連するハードウェアインスタンスのリストを取り出すことを含む。例えば、第一のステージにおいては即座に初期化されない各ハードウェアインスタンスの、712における関連するステージリストへの追加によって、722において言及され得る、各ステージにおけるハードウェアインスタンスのリストの生成及び更新が可能になる。724において、取り出したリストにおけるすべてのハードウェアインスタンスを初期化する。
所与のステージにおける各ハードウェアインスタンスの初期化に応答して、方法は、726に進み、すべてのステージが完了したか否かを評価する。例えば、システムは、初期化されていない追加のハードウェアインスタンスが追加的なステージリストに存在しているか否かを決定することができる。すべてのステージが完了していない場合には(例えば、726における「NO」)、方法は、720に戻り、ステージが次のステージに変更されることを待機する。すべてのステージが完了した場合には(例えば、726における「YES」)、方法は、終了する、または戻ってさらなる初期化リクエストを待機する。
MMCコントローラ及び関連するハードウェア要素(例えば、フラッシュメモリ及びWiFiチップ)についての前述した実施例に加えて、方法700の一部として、他のドライバとハードウェア要素との組み合わせを評価及び初期化することができる。追加の、非限定的な実施例として、コンピューティングデバイスは、タッチスクリーンセンサ、ラジオチューニング制御及び電力管理チップのいずれかにその各々が接続された、インター集積回路コントローラ(I2Cコントローラ)の三つのインスタンスを含むことができる。コンピューティングデバイスは、BLUETOOTH(登録商標)チップ、車両インターフェースプロセッシングチップなどに接続するのに使用できるシリアルバスインターフェース(例えば、万能非同期送受信機−UART)の四つのインスタンスを含むことができる。そのようなコントローラのインスタンスは、前述したMMCコントローラの実施例と同様に、ブートするステージに基づいて有効にすることができる。他の実施例では、ハードウェア要素(例えば、USBインターフェース/チップ、ディスプレイなど)は、関連するステージにおいてロードできる、単一ドライバに関連する単一インスタンスとして存在することができる。例えば、ディスプレイは、1つのハードウェアインスタンス(ディスプレイ)のみをサポートするディスプレイドライバに関連付くことができる。従って、ディスプレイが(例えば)ステージ2に関連する場合には、ディスプレイドライバは、ステージ2までロード/初期化しなくても良い。ドライバを初期化するときに、ドライバによって1つのみのハードウェアインスタンスがサポートされるので、ドライバの初期化に応答してハードウェアインスタンスを初期化することができる。
図8は、コンピューティングデバイスにおいて最後に使用されたアプリケーションをロードするための方法800のフローチャートである。例えば、方法800は、図1の車載コンピューティングデバイス109などの車載コンピューティングデバイスによって実行することができる。方法800は、802において、コンピューティングデバイスを起動することを含む。方法、804において、ナビゲーションアプリケーションが、コンピューティングデバイスにおいて最後に使用されたアプリケーションであったことを決定することを含む。例えば、ナビゲーションアプリケーションは、コンピューティングデバイスの最後のシャットダウン事象において実行すべき最後のアプリケーションであり得た、かつ/またはコンピューティングデバイスのシャットダウン事象よりも前にユーザ入力を受信する及び/若しくはアクションを実行するための最後のアプリケーションであり得る。方法は、806において、ナビゲーションアプリケーションによって使用されるサービスを求めるリクエストを受信することを含む。808に示すように、コンピューティングデバイスにおいて未だ実行されていないリクエストからの任意のサービスをロードすることができる。810において、各々のリクエストされたサービスについてのサービスハンドルをナビゲーションアプリケーションに戻す。方法は、812において、GPSセンサのためのドライバ(複数可)のユーザを求めるリクエストを受信することを含む。例えば、ナビゲーションアプリケーションは、GPSセンサを利用して動作させ、それ故に、アプリケーションは、ロードすべき、GPSセンサのためのドライバをリクエストし、この要素にアクセスすることができる。
方法は、814において、GPSセンサをサポートする任意のドライバに関連するハードウェア初期化ルーチンを呼び出すことを含む。816において、GPSセンサを初期化し、818において、現在の(または、前の)初期化のステージに関連し、ドライバによってサポートされる任意の残りのハードウェアインスタンスをロードする。例えば、初期化ルーチンがステージ1にある場合には、818において、GPSセンサをサポートするドライバは、ステージ1に関連する(例えば、ステージ1中に初期化/使用されるものとして指定された)他のハードウェアインスタンスもサポートし、そのようなハードウェアインスタンスをロードする。方法は、820において、ドライバによってサポートされるが、現在のまたは前の初期化のステージに関連しないハードウェアインスタンスについてのエントリを関連するステージリストに追加することを含む。822において、GPSセンサ及び従属サービスの初期化時に、HMI通じてナビゲーションアプリケーションを立ち上げることができる。
前述したシステム及び方法は、コンピューティングデバイスのオペレーティングシステムの初期化中のクラスの選択的なロード方法も提供する。この方法は、仮想マシンを初期化することと、第一のクラスリストから選択されたクラスをロードすることと、コンピューティングデバイスのリソースをロードすることと、オペレーティングシステムのサービスを初期化してサービスマネージャを用いてそのサービスを登録するように構成されたサービスローディングプロセスをロードすることと、及びサービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードすることと、を含む。方法の第一の実施例において、第一のクラスリストにおける各クラスは、追加的にまたは代替的に、ロード時間閾値よりも短いロード時間を有し、プロセス閾値よりも多い数のプロセスに利用され得る。方法の第二の実施例は、選択的に、第一の実施例を含み、さらに、第二のクラスリストにおける各クラスが、ロード時間閾値よりも長いロード時間を有し、プロセス閾値よりも多い数のプロセスに利用されることを含む。方法の第三の実施例は、選択的に、第一及び第二の実施例の1つ以上を含み、さらに、アプリケーションを分岐するためのコマンドを受信するためのソケットを待機し、そしてリクエストされたアプリケーションを分岐するためのコマンドの受信に応答して、リクエストされたアプリケーションをロードするためにリクエストされたアプリケーションを分岐することを含む。方法の第四の実施例は、選択的に、第一〜第三の実施例の1つ以上を含み、さらに、サービスローディングプロセスのローディングが、さらに、ヒューマンマシンインターフェースを立ち上げる前にサービスローディングプロセスによって重要サービスのみをロードすることを含む、ことを含む。方法の第五の実施例は、選択的に、第一〜第四の実施例の1つ以上を含み、さらに、ヒューマンマシンインターフェースを立ち上げることと、及びヒューマンマシンインターフェースを介して最後に使用されたアプリケーションを立ち上げることと、を含む。方法の第六の実施例は、選択的に、第一〜第五の実施例の1つ以上を含み、さらに、アプリケーションを立ち上げるためのリクエストに応答してアプリケーションを立ち上げることを含む。方法の第七の実施例は、選択的に、第一〜第六の実施例の1つ以上を含み、さらに、コンピューティングデバイスのサービスマネージャにおいて、リクエストされたサービスについてのアプリケーションからのリクエストを受信することと、リクエストされたサービスがコンピューティングデバイスにおいて既に実行されているかどうかを決定することと、リクエストされたサービスが未だ実行されていない場合に、リクエストされたサービスを起動することと、及びリクエストされたサービスが実行されている場合に、リクエストされたサービスに関連するサービスハンドルをアプリケーションに戻すことと、を含む。方法の第八の実施例は、選択的に、第一〜第七の実施例の1つ以上を含み、さらに、使用すべきドライバの通知を受信することと、ドライバを初期化することと、及びドライバによってサポートされるハードウェアインスタンスを選択的に初期化することと、を含む。方法の第九の実施例は、選択的に、第一〜第八の実施例の1つ以上を含み、さらに、ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することが、ドライバによってサポートされる各ハードウェアインスタンスに関連する初期化のステージを決定することと、及び第一の初期化のステージに関連する各ハードウェアインスタンスについて、そのハードウェアインスタンスを初期化することとを含む、ことを含む。方法の第十の実施例は、選択的に、第一〜第九の実施例の1つ以上を含み、さらに、ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することが、さらに、第一の初期化のステージに関連しない各ハードウェアインスタンスについて、ハードウェアインスタンスに関連するステージにマッチする関連するステージリストに、そのハードウェアインスタンスについてのエントリを追加することを含む、ことを含む。方法の第十一の実施例は、選択的に、第一〜第十の実施例の1つ以上を含み、さらに、第一の初期化ステージ後の各初期化ステージにおいて、その初期化ステージに関連するステージリストを取り出すことと、及びその初期化ステージに関連するステージリストに含まれる各ハードウェアインスタンスを初期化することと、を含む。
前述したシステム及び方法は、プロセッサと、仮想マシンを初期化するための、プロセッサによって実行可能な命令を記憶するストレージデバイスと、を備えたコンピューティングデバイスも提供し、そしてこの命令は、第一のクラスリストから選択されたクラスをロードすることと、コンピューティングデバイスのリソースをロードすることと、オペレーティングシステムのサービスを初期化してサービスマネージャを用いてそのサービスを登録するように構成されたサービスローディングプロセスをロードすることと、及びサービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードすることと、を含む。コンピューティングデバイスの第一の実施例において、仮想マシンは、追加的にまたは代替的に、Dalvik仮想マシンであっても良く、命令は、追加的にまたは代替的に、さらに、第一のクラスリストから選択されたクラスをロードするためのZygoteプロセスを呼び出すように実行可能であっても良い。コンピューティングデバイスの第二の実施例は、選択的に、第一の実施例を含み、さらに、コンピューティングデバイスが、車両内に統合された車載コンピューティングデバイスを備える、ことを含む。コンピューティングデバイスの第三の実施例は、選択的に、第一及び第二の実施例の1つ以上を含み、さらに、サービスローディングプロセスが、プロセス間通信ソケットを介した、新規のアプリケーションを求めるコマンドの検出に応答して、新規のアプリケーションをロードするように構成されることを含む。コンピューティングデバイスの第四の実施例は、選択的に、第一〜第三の実施例の1つ以上を含み、さらに、第一のクラスリストにおける各クラスが、ロード時間閾値よりも短いロード時間を有し、プロセス閾値よりも多い数のプロセスに利用され、かつ第二のクラスリストにおける各クラスが、ロード時間閾値よりも長いロード時間を有し、プロセス閾値よりも多い数のプロセスに利用されることを含む。
前述したシステム及び方法は、1つ以上のプロセッシングコアを含むプロセッサと、車載コンピューティングデバイスのオペレーティングシステムを初期化するための命令を記憶するストレージデバイスと、を備えた車載コンピューティングデバイスも提供し、この命令は、仮想マシンを初期化し、プロセッサスレッドプールにおけるスレッドの数がプロセッサに含まれるプロセッサコアの数に基づくプロセッサスレッドプールを使用して第一のクラスリストの各クラスをロードし、プロセッサスレッドプールを使用して車載コンピューティングデバイスのリソースをロードし、オペレーティングシステムのサービスを初期化してサービスマネージャを用いてそのサービスを登録するように構成されたサービスローディングプロセスをロードし、そしてプロセッサスレッドプールを使用して、サービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスのみをロードするように、プロセッサによって実行可能である。車載コンピューティングデバイスの第一の実施例において、第一のクラスリストの各クラスのローディングは、追加的にまたは代替的に、プロセッサスレッドプールにおけるスレッドの数に2を乗じた数に等しい数の、第一のリストからのクラスを同時にロードすることを含むことができる。車載コンピューティングデバイスの第二の実施例は、選択的に、第一の実施例を含み、さらに、命令が、さらに、使用すべきドライバの通知を受信し、ドライバを初期化し、そしてドライバによってサポートされるハードウェアインスタンスを選択的に初期化するように実行可能であることを含む。車載コンピューティングデバイスの第三の実施例は、選択的に、第一及び第二の実施例の1つ以上を含み、さらに、第一のクラスリストの各クラスをロードする命令が、第一のクラスのクラスのみをロードし、かつ第二のクラスのクラスは全くロードしない命令を含み、第二のクラスリストからのクラスをロードする命令が、第二のクラスリストからのクラスのみをロードし、かつ第一のクラスリストのクラスは全くロードしない命令を含む、ことを含む。
実施形態の記述は、例証及び説明を目的として提示した。実施形態についての適切な変更及び変化を、前述に照らして実行する、または方法の実践から得ることができる。例えば、別の様に注記されていない限り、記述した方法の1つ以上は、図1に関連して記述した車載コンピューティングシステム109などの適切なデバイス及び/またはデバイスの組み合わせによって実行することができる。方法は、例えば、ストレージデバイス、メモリ、ハードウェアネットワークインターフェース/アンテナ、スイッチ、アクチュエータ、クロック回路などの1つ以上の追加のハードウェア要素と組み合わされた1つ以上の論理デバイス(例えば、プロセッサ)を用いて、記憶した命令を遂行することによって実行することができる。記述した方法及び関連するアクションは、本出願に記述した順序に加えて、様々な順序、並行及び/または同時でも実行することができる。記述したシステムは、事実上例示であり、追加の要素を含む、かつ/または要素を除外することができる。例えば、多くの例証となる実施例を、ANDROID(登録商標)オペレーティングシステム及び車載コンピューティングデバイスに関連して記述したが、前述の方法及びシステムを、任意の適切なハードウェア(例えば、携帯用コンピューティングデバイス、スマートフォン、タブレット、ラップトップ、デスクトップコンピューティングデバイス、サーバのコンピューティングシステムなど)及び/またはオペレーティングシステムに含ませることができる及び/またはそれらによって利用できることを理解すべきである。本開示の主題は、開示した様々なシステム及び構成、ならびに他の特徴、機能及び/または特性のすべての新規のかつ自明でない組み合わせ及びサブコンビネーションを含む。
本出願に使用されるような、単数形及び「a」または「an」という単語に続いて列挙される要素またはステップは、そのような除外が記載されていない限り、前述の要素またはステップの複数形を除外しないように理解すべきである。さらに、本開示の「one embodiment」または「one example」との言及は、列挙した特徴も組み込む追加の実施形態の存在を除外するように解釈されることは意図しない。「first」、「second」及び「third」などの用語は、単にラベルとして使用され、それらの対象に数値的要件または特定の位置秩序を課すことは意図しない。以下の特許請求の範囲は、特に、新規のかつ自明でないものとみなされる前述の開示からの主題を指し示す。

Claims (14)

  1. コンピューティングデバイスのオペレーティングシステムの初期化中クラス選択的ロードする方法であって、前記方法は、
    仮想マシンを初期化することと、
    第一のクラスリストから選択されたクラスをロードすることと、
    前記コンピューティングデバイスのリソースをロードすることと、
    前記オペレーティングシステムのサービスを初期化してサービスマネージャを用いて前記サービスを登録するように構成されたサービスローディングプロセスをロードすることと
    前記サービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードすることと
    を含み、
    前記第一のクラスリストにおける各クラスが、ロード時間閾値よりも短いロード時間を有し、プロセス閾値よりも多い数のプロセスに利用される、方法。
  2. 前記第二のクラスリストにおける各クラスが、前記ロード時間閾値よりも長いロード時間を有し、前記プロセス閾値よりも多い数のプロセスに利用される、請求項1に記載の方法。
  3. アプリケーションを分岐するためのコマンドを受信するためのソケットを待機することと、リクエストされたアプリケーションを分岐するためのコマンドの受信に応答して、前記リクエストされたアプリケーションをロードするために前記リクエストされたアプリケーションを分岐することとをさらに含む、請求項1〜のいずれか1項に記載の方法。
  4. 前記サービスローディングプロセスロードすることが、さらに、ヒューマンマシンインターフェースを立ち上げる前に前記サービスローディングプロセスによって重要サービスのみをロードすることを含む、請求項1〜のいずれか1項に記載の方法。
  5. 前記ヒューマンマシンインターフェースを立ち上げることと、前記ヒューマンマシンインターフェースを介して最後に使用されたアプリケーションを立ち上げることとをさらに含む、請求項に記載の方法。
  6. アプリケーションを立ち上げるためのリクエストに応答して前記アプリケーションを立ち上げることをさらに含む、請求項1〜のいずれか1項に記載の方法。
  7. 前記コンピューティングデバイスのサービスマネージャにおいて、リクエストされたサービスについてのアプリケーションからのリクエストを受信することと、前記リクエストされたサービスが前記コンピューティングデバイスにおいて既に実行されているかどうかを決定することと、前記リクエストされたサービスが未だ実行されていない場合に、前記リクエストされたサービスを起動することと、前記リクエストされたサービスが実行されている場合に、前記リクエストされたサービスに関連するサービスハンドルを前記アプリケーションに戻すこととをさらに含む、請求項1〜のいずれか1項に記載の方法。
  8. 使用すべきドライバの通知を受信することと、前記ドライバを初期化することと、前記ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することとをさらに含む、請求項1〜のいずれか1項に記載の方法。
  9. 前記ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することが、前記ドライバによってサポートされる各ハードウェアインスタンスに関連する初期化のステージを決定することと、第一の初期化のステージに関連する各ハードウェアインスタンスについて、そのハードウェアインスタンスを初期化することとを含む、請求項に記載の方法。
  10. 前記ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することが、さらに、第一の初期化のステージに関連しない各ハードウェアインスタンスについて、前記ハードウェアインスタンスに関連する前記ステージにマッチする関連するステージリストに、そのハードウェアインスタンスについてのエントリを追加することを含む、請求項に記載の方法。
  11. 第一の初期化ステージ後の各初期化ステージにおいて、その初期化ステージに関連するステージリストを取り出すことと、その初期化ステージに関連する前記ステージリストに含まれる各ハードウェアインスタンスを初期化することとをさらに含む、請求項10に記載の方法。
  12. プロセッサと、
    ストレージデバイスと
    を備えるコンピューティングデバイスであって、
    前記ストレージデバイスは、
    仮想マシンを初期化することと、
    第一のクラスリストから選択されたクラスをロードすることと、
    前記コンピューティングデバイスのリソースをロードすることと、
    オペレーティングシステムのサービスを初期化してサービスマネージャを用いて前記サービスを登録するように構成されたサービスローディングプロセスをロードすることと
    前記サービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードすることと
    を実行するように前記プロセッサによって実行可能な命令を記憶しており、
    前記第一のクラスリストにおける各クラスが、ロード時間閾値よりも短いロード時間を有し、プロセス閾値よりも多い数のプロセスに利用される、コンピューティングデバイス。
  13. 前記仮想マシンがDalvik仮想マシンを備えており、前記コンピューティングデバイスが、車両内に統合された車載コンピューティングデバイスを備えており、前記命令が、さらに、前記第一のクラスリストから選択された前記クラスをロードするためのZygoteプロセスを呼び出すように実行可能である、請求項12に記載のコンピューティングデバイス。
  14. 前記サービスローディングプロセスが、プロセス間通信ソケットを介した、新規のアプリケーションを求めるコマンドの検出に応答して、前記新規のアプリケーションをロードするように構成され、請求項12または13のいずれか1項に記載のコンピューティングデバイス。
JP2017500386A 2014-07-10 2015-07-09 オペレーティングシステム起動加速 Active JP6564845B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN3427CH2014 2014-07-10
IN3427/CHE/2014 2014-07-10
PCT/US2015/039735 WO2016007737A1 (en) 2014-07-10 2015-07-09 Operating system startup acceleration

Publications (2)

Publication Number Publication Date
JP2017520856A JP2017520856A (ja) 2017-07-27
JP6564845B2 true JP6564845B2 (ja) 2019-08-21

Family

ID=53761520

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017500386A Active JP6564845B2 (ja) 2014-07-10 2015-07-09 オペレーティングシステム起動加速

Country Status (6)

Country Link
US (1) US10379871B2 (ja)
EP (2) EP3167363B1 (ja)
JP (1) JP6564845B2 (ja)
KR (1) KR102442181B1 (ja)
CN (1) CN106537341A (ja)
WO (1) WO2016007737A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180009316A1 (en) * 2015-01-07 2018-01-11 Green Ride Ltd. Vehicle-user human-machine interface apparatus and systems
CN107220055B (zh) * 2017-05-26 2024-03-29 上海传英信息技术有限公司 用于终端启动的方法、系统及终端
CN110780930B (zh) * 2019-09-23 2023-06-06 广州视源电子科技股份有限公司 启动Android系统的方法、装置、电子设备及存储介质
US11928478B2 (en) * 2019-10-29 2024-03-12 Hewlett-Packard Development Company, L.P. Tracking device state transitions
KR20220109093A (ko) * 2021-01-28 2022-08-04 삼성전자주식회사 전자 장치 및 이의 제어 방법

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3278885B2 (ja) * 1992-03-06 2002-04-30 富士通株式会社 コンピュータシステム
JP2742394B2 (ja) * 1994-12-02 1998-04-22 株式会社ナムコ ゲームプログラムおよびデータの読込み方法、ならびにこれを用いたゲーム装置
US6944846B2 (en) * 2001-12-14 2005-09-13 Hewlett-Packard Development Company, L.P. Algorithm for localization of a JAVA application using reflection API and a custom class loader
US7174447B2 (en) * 2003-11-14 2007-02-06 Intel Corporation Providing a pre-boot driver for use during operating system runtime of a computer system
KR101017372B1 (ko) * 2003-12-23 2011-02-28 삼성전자주식회사 작업 스케쥴러를 이용한 다수의 디바이스 초기화 방법
JP2006172305A (ja) * 2004-12-17 2006-06-29 Nec Corp 無線基地局装置及びプログラムダウンロード方法並びにそのプログラム
JP2006323549A (ja) * 2005-05-18 2006-11-30 Hitachi Ltd システムの起動方法
US7461247B2 (en) * 2005-06-03 2008-12-02 Qnx Software Systems Gmbh & Co. Kg Method for transitioning control of a peripheral device from a first device driver to a second device driver during operating system initialization
US8074231B2 (en) * 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US7499991B2 (en) * 2005-11-10 2009-03-03 International Business Machines Corporation Autonomic application server unneeded process disablement
KR100772867B1 (ko) * 2006-02-23 2007-11-02 삼성전자주식회사 복수의 애플리케이션에 대해 부분적으로 분리된 수행환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기
US8141075B1 (en) * 2006-05-08 2012-03-20 Vmware, Inc. Rule engine for virtualized desktop allocation system
US20080082665A1 (en) * 2006-10-02 2008-04-03 Dague Sean L Method and apparatus for deploying servers
KR20090008695A (ko) * 2007-07-18 2009-01-22 삼성전자주식회사 이동통신 단말기에서 선택 적재를 위한 장치 및 방법
US7996666B2 (en) * 2007-09-04 2011-08-09 Apple Inc. User influenced loading sequence of startup applications
JP2009217711A (ja) * 2008-03-12 2009-09-24 Mitsubishi Electric Corp 情報処理装置
CN101299848B (zh) * 2008-05-30 2012-07-18 宇龙计算机通信科技(深圳)有限公司 一种移动终端应急应用的启动方法、系统及移动终端
JP2010079566A (ja) * 2008-09-25 2010-04-08 Alpine Electronics Inc 情報処理装置およびアプリケーション起動方法
US9671241B2 (en) * 2009-02-03 2017-06-06 Telenav, Inc. Navigation system having route customization mechanism and method of operation thereof
JP5391918B2 (ja) * 2009-08-10 2014-01-15 株式会社リコー 情報処理装置、情報処理方法、及び情報処理プログラム
JP2011043932A (ja) * 2009-08-20 2011-03-03 Ricoh Co Ltd 情報処理装置
JP2011096145A (ja) * 2009-10-30 2011-05-12 Pioneer Electronic Corp 情報処理装置、起動制御方法、起動制御プログラムおよび記録媒体
JP2011186657A (ja) * 2010-03-05 2011-09-22 Aisin Aw Co Ltd 車載機器制御装置、車載機器制御方法、及び車載機器制御プログラム
US9026343B2 (en) * 2010-12-29 2015-05-05 Paccar Inc Systems and methods for improving the efficiency of a vehicle
US9003175B2 (en) * 2011-04-29 2015-04-07 Lenovo (Singapore) Pte. Ltd. System and method for accelerated boot performance
JP5385347B2 (ja) * 2011-08-02 2014-01-08 レノボ・シンガポール・プライベート・リミテッド メイン・メモリのフリー・メモリ量を拡大する方法およびコンピュータ
US20130054945A1 (en) * 2011-08-24 2013-02-28 Microsoft Corporation Adaptive sensing for early booting of devices
CN102298532B (zh) * 2011-09-15 2014-12-10 奇智软件(北京)有限公司 一种基于启动项的管理方法及装置
CN103092656B (zh) * 2013-01-23 2016-09-14 深圳市航盛电子股份有限公司 一种导航系统及导航方法
CN103324506A (zh) * 2013-06-24 2013-09-25 上海天奕达电子科技有限公司 一种控制Android应用程序安装的方法及手机
CN103488478A (zh) * 2013-09-03 2014-01-01 厦门雅迅网络股份有限公司 基于android平台的设备管理框架
US9268610B2 (en) * 2013-11-01 2016-02-23 Vmware, Inc. Rapid virtual machine cloning

Also Published As

Publication number Publication date
KR102442181B1 (ko) 2022-09-08
US10379871B2 (en) 2019-08-13
JP2017520856A (ja) 2017-07-27
EP3796159A1 (en) 2021-03-24
CN106537341A (zh) 2017-03-22
WO2016007737A1 (en) 2016-01-14
EP3167363B1 (en) 2020-12-16
KR20170030515A (ko) 2017-03-17
EP3167363A1 (en) 2017-05-17
US20170168848A1 (en) 2017-06-15
EP3796159B1 (en) 2022-08-31

Similar Documents

Publication Publication Date Title
JP6567642B2 (ja) オペレーティングシステム起動加速
US11034362B2 (en) Portable personalization
JP6496502B2 (ja) 車載コンピューティングシステムにおけるオペレーティングシステムの置換
JP6564845B2 (ja) オペレーティングシステム起動加速
US20130167159A1 (en) Vehicle comprising multi-operating system
US20170286785A1 (en) Interactive display based on interpreting driver actions
JP2015032314A5 (ja)
JP2015129753A (ja) 車内通知提示のスケジューリング
JP6577566B2 (ja) オペレーティングシステム起動加速
KR20220065669A (ko) 온-디바이스 캐시를 이용한 하이브리드 페칭
US20170364138A1 (en) In-vehicle computing system with power conserving maintenance tasks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180510

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190318

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190613

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190729

R150 Certificate of patent or registration of utility model

Ref document number: 6564845

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