(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスのオペレーティングシステムの初期化中にクラスを選択的にロードする方法であって、前記方法は、
仮想マシンを初期化することと、
第一のクラスリストから選択されたクラスをロードすることと、
前記コンピューティングデバイスのリソースをロードすることと、
前記オペレーティングシステムのサービスを初期化してサービスマネージャを用いて前記サービスを登録するように構成されたサービスローディングプロセスをロードすることと、
前記サービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードすることと
を含み、
前記第一のクラスリストにおける各クラスが、ロード時間閾値よりも短いロード時間を有し、プロセス閾値よりも多い数のプロセスに利用される、方法。
【請求項２】
前記第二のクラスリストにおける各クラスが、前記ロード時間閾値よりも長いロード時間を有し、前記プロセス閾値よりも多い数のプロセスに利用される、請求項１に記載の方法。
【請求項３】
アプリケーションを分岐するためのコマンドを受信するためのソケットを待機することと、リクエストされたアプリケーションを分岐するためのコマンドの受信に応答して、前記リクエストされたアプリケーションをロードするために前記リクエストされたアプリケーションを分岐することとをさらに含む、請求項１〜２のいずれか１項に記載の方法。
【請求項４】
前記サービスローディングプロセスをロードすることが、さらに、ヒューマンマシンインターフェースを立ち上げる前に前記サービスローディングプロセスによって重要サービスのみをロードすることを含む、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記ヒューマンマシンインターフェースを立ち上げることと、前記ヒューマンマシンインターフェースを介して、最後に使用されたアプリケーションを立ち上げることとをさらに含む、請求項４に記載の方法。
【請求項６】
アプリケーションを立ち上げるためのリクエストに応答して前記アプリケーションを立ち上げることをさらに含む、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記コンピューティングデバイスのサービスマネージャにおいて、リクエストされたサービスについてのアプリケーションからのリクエストを受信することと、前記リクエストされたサービスが前記コンピューティングデバイスにおいて既に実行されているかどうかを決定することと、前記リクエストされたサービスが未だ実行されていない場合に、前記リクエストされたサービスを起動することと、前記リクエストされたサービスが実行されている場合に、前記リクエストされたサービスに関連するサービスハンドルを前記アプリケーションに戻すこととをさらに含む、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
使用すべきドライバの通知を受信することと、前記ドライバを初期化することと、前記ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することとをさらに含む、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
前記ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することが、前記ドライバによってサポートされる各ハードウェアインスタンスに関連する初期化のステージを決定することと、第一の初期化のステージに関連する各ハードウェアインスタンスについて、そのハードウェアインスタンスを初期化することとを含む、請求項８に記載の方法。
【請求項１０】
前記ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することが、さらに、第一の初期化のステージに関連しない各ハードウェアインスタンスについて、前記ハードウェアインスタンスに関連する前記ステージにマッチする関連するステージリストに、そのハードウェアインスタンスについてのエントリを追加することを含む、請求項９に記載の方法。
【請求項１１】
第一の初期化ステージ後の各初期化ステージにおいて、その初期化ステージに関連するステージリストを取り出すことと、その初期化ステージに関連する前記ステージリストに含まれる各ハードウェアインスタンスを初期化することとをさらに含む、請求項１０に記載の方法。
【請求項１２】
プロセッサと、
ストレージデバイスと
を備えるコンピューティングデバイスであって、
前記ストレージデバイスは、
仮想マシンを初期化することと、
第一のクラスリストから選択されたクラスをロードすることと、
前記コンピューティングデバイスのリソースをロードすることと、
オペレーティングシステムのサービスを初期化してサービスマネージャを用いて前記サービスを登録するように構成されたサービスローディングプロセスをロードすることと、
前記サービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードすることと
を実行するように前記プロセッサによって実行可能な命令を記憶しており、
前記第一のクラスリストにおける各クラスが、ロード時間閾値よりも短いロード時間を有し、プロセス閾値よりも多い数のプロセスに利用される、コンピューティングデバイス。
【請求項１３】
前記仮想マシンがＤａｌｖｉｋ仮想マシンを備えており、前記コンピューティングデバイスが、車両内に統合された車載コンピューティングデバイスを備えており、前記命令が、さらに、前記第一のクラスリストから選択された前記クラスをロードするためのＺｙｇｏｔｅプロセスを呼び出すように実行可能である、請求項１２に記載のコンピューティングデバイス。
【請求項１４】
前記サービスローディングプロセスが、プロセス間通信ソケットを介した、新規のアプリケーションを求めるコマンドの検出に応答して、前記新規のアプリケーションをロードするように構成される、請求項１２または１３のいずれか１項に記載のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１４年７月１０日に出願された「ＯＰＥＲＡＴＩＮＧ  ＳＹＳＴＥＭ  ＳＴＡＲＴＵＰ  ＡＣＣＥＬＥＲＡＴＩＯＮ」と題されたインド特許出願第３４２７／ＣＨＥ／２０１４号の優先権を主張し、すべての目的のためにその開示全体を参照により本明細書に組み込む。
【０００２】
本開示は、コンピューティングデバイスのオペレーティングシステムのための初期化ルーチンの加速に関する。
【背景技術】
【０００３】
コンピューティングデバイスのためのオペレーティングシステムは、コンピューティングデバイスのハードウェアコンポーネントを使用するのに必須のサービス、リソース及びドライバを起動するための初期化ルーチンを実行することができる。初期化ルーチン速度は、ロードされるサービス、リソース及びドライバの数に基づき得、コンピューティングデバイスのいくつかの機能性は、初期化ルーチンが完了するまで利用することができない。
【発明の概要】
【課題を解決するための手段】
【０００４】
コンピューティングデバイスの電源オンと、コンピューティングデバイスのオペレーティングシステム／アプリケーションの初期化との間の許容可能な遅延量は、コンピューティングデバイスの環境及び／または用法に基づいて変動し得る。例えば、車両に利用されるコンピューティングデバイスは、車載コンピューティングデバイスの機能性が、車両の機能性、安全機能などに影響を与え得るので、パーソナルコンピューティングデバイスよりも厳しい遅延考慮事項（例えば、より小さい許容可能な遅延量）を有する場合がある。コンピューティングデバイスについての初期化ルーチンを速めるための方法及びシステムの実施形態が開示される。いくつかの実施形態では、コンピューティングデバイスのオペレーティングシステムの初期化中のクラスの選択的なロード方法は、仮想マシンを初期化することと、第一のクラスリストから選択されたクラスをロードすることと、及びコンピューティングデバイスのリソースをロードすることと、を含む。方法は、さらに、オペレーティングシステムのサービスを初期化してサービスマネージャを用いてそのサービスを登録するように構成されたサービスローディングプロセスをロードすることと、及びサービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードすることと、を含む。
【０００５】
いくつかの実施形態では、オペレーティングシステムを初期化するためのコンピューティングデバイスは、プロセッサと、仮想マシンを初期化し、第一のクラスリストから選択されたクラスをロードし、そしてコンピューティングデバイスのリソースをロードするための、プロセッサによって実行可能な命令を記憶するストレージデバイスと、を含むことができる。命令は、さらに、オペレーティングシステムのサービスを初期化してサービスマネージャを用いてそのサービスを登録するように構成されたサービスローディングプロセスをロードし、サービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードするように実行可能であっても良い。
【０００６】
いくつかの実施形態では、車載コンピューティングデバイスは、１つ以上のプロセッシングコアを含むプロセッサと、車載コンピューティングデバイスのオペレーティングシステムを初期化するための命令を記憶するストレージデバイスと、を備えている。この命令は、仮想マシンを初期化し、プロセッサスレッドプールにおけるスレッドの数がプロセッサに含まれるプロセッサコアの数に基づくプロセッサスレッドプールを使用して第一のクラスリストの各クラスをロードし、そしてプロセッサスレッドプールを使用して車載コンピューティングデバイスのリソースをロードするように、プロセッサによって実行可能である。命令は、さらに、オペレーティングシステムのサービスを初期化してサービスマネージャを用いてそのサービスを登録するように構成されたサービスローディングプロセスをロードし、プロセッサスレッドプールを使用して、サービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードするように実行可能であっても良い。
本明細書は、例えば、以下の項目も提供する。
（項目１）
コンピューティングデバイスのオペレーティングシステムの初期化中のクラスの選択的なロード方法であって、
仮想マシンを初期化することと、
第一のクラスリストから選択されたクラスをロードすることと、
前記コンピューティングデバイスのリソースをロードすることと、
前記オペレーティングシステムのサービスを初期化してサービスマネージャを用いて前記サービスを登録するように構成されたサービスローディングプロセスをロードすることと、及び
前記サービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードすることと、を含む、前記方法。
（項目２）
前記第一のクラスリストにおける各クラスが、ロード時間閾値よりも短いロード時間を有し、プロセス閾値よりも多い数のプロセスに利用される、項目１に記載の方法。
（項目３）
前記第二のクラスリストにおける各クラスが、前記ロード時間閾値よりも長いロード時間を有し、前記プロセス閾値よりも多い数のプロセスに利用される、項目１または２のいずれか１項に記載の方法。
（項目４）
アプリケーションを分岐するためのコマンドを受信するためのソケットを待機することと、及びリクエストされたアプリケーションを分岐するためのコマンドの受信に応答して、前記リクエストされたアプリケーションをロードするために前記リクエストされたアプリケーションを分岐することと、をさらに含む、項目１〜３のいずれか１項に記載の方法。
（項目５）
前記サービスローディングプロセスのローディングが、さらに、ヒューマンマシンインターフェースを立ち上げる前に前記サービスローディングプロセスによって重要サービスのみをロードすることを含む、項目１〜４のいずれか１項に記載の方法。
（項目６）
前記ヒューマンマシンインターフェースを立ち上げることと、及び前記ヒューマンマシンインターフェースを介して最後に使用されたアプリケーションを立ち上げることと、をさらに含む、項目５に記載の方法。
（項目７）
アプリケーションを立ち上げるためのリクエストに応答して前記アプリケーションを立ち上げることをさらに含む、項目１〜６のいずれか１項に記載の方法。
（項目８）
前記コンピューティングデバイスのサービスマネージャにおいて、リクエストされたサービスについてのアプリケーションからのリクエストを受信することと、前記リクエストされたサービスが前記コンピューティングデバイスにおいて既に実行されているかどうかを決定することと、前記リクエストされたサービスが未だ実行されていない場合に、前記リクエストされたサービスを起動することと、及び前記リクエストされたサービスが実行されている場合に、前記リクエストされたサービスに関連するサービスハンドルを前記アプリケーションに戻すことと、をさらに含む、項目１〜７のいずれか１項に記載の方法。
（項目９）
使用すべきドライバの通知を受信することと、前記ドライバを初期化することと、及び前記ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することと、をさらに含む、項目１〜８のいずれか１項に記載の方法。
（項目１０）
前記ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することが、前記ドライバによってサポートされる各ハードウェアインスタンスに関連する初期化のステージを決定することと、及び第一の初期化のステージに関連する各ハードウェアインスタンスについて、そのハードウェアインスタンスを初期化することと、を含む、項目９に記載の方法。
（項目１１）
前記ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することが、さらに、第一の初期化のステージに関連しない各ハードウェアインスタンスについて、前記ハードウェアインスタンスに関連する前記ステージにマッチする関連するステージリストに、そのハードウェアインスタンスについてのエントリを追加することを含む、項目１０に記載の方法。
（項目１２）
第一の初期化ステージ後の各初期化ステージにおいて、その初期化ステージに関連するステージリストを取り出すことと、及びその初期化ステージに関連する前記ステージリストに含まれる各ハードウェアインスタンスを初期化することと、をさらに含む、項目１１に記載の方法。
（項目１３）
プロセッサと、
前記プロセッサによって実行可能な命令を記憶するストレージデバイスと、を備えており、前記命令が、
仮想マシンを初期化することと、
第一のクラスリストから選択されたクラスをロードすることと、
コンピューティングデバイスのリソースをロードすることと、
オペレーティングシステムのサービスを初期化してサービスマネージャを用いて前記サービスを登録するように構成されたサービスローディングプロセスをロードすることと、
及び
前記サービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードすることと、を含む、コンピューティングデバイス。
（項目１４）
前記仮想マシンがＤａｌｖｉｋ仮想マシンを備えており、前記コンピューティングデバイスが、車両内に統合された車載コンピューティングデバイスを備えており、前記命令が、さらに、前記第一のクラスリストから選択された前記クラスをロードするためのＺｙｇｏｔｅプロセスを呼び出すように実行可能である、項目１３に記載のコンピューティングデバイス。
（項目１５）
前記サービスローディングプロセスが、プロセス間通信ソケットを介した、新規のアプリケーションを求めるコマンドの検出に応答して、前記新規のアプリケーションをロードするように構成された、項目１３または１４のいずれか１項に記載のコンピューティングデバイス。
【０００７】
本開示は、以下の添付の図面を参照する非限定的な実施形態の以下の記述を読むことによって、より良く理解することができる。
【図面の簡単な説明】
【０００８】
【図１】本開示の１つ以上の実施形態に従う、車両の車室の内部の例示的な部分図を示す。
【図２】本開示の１つ以上の実施形態に従う、コンピューティングデバイスにおけるアプリケーション仮想マシンの初期化を加速する例示的な方法に関するフローチャートである。
【図３】本開示の１つ以上の実施形態に従う、例示的な車載コンピューティングシステムのブロック図を示す。
【図４】本開示の１つ以上の実施形態に従う、オペレーティングシステムにおけるサービスを選択的にロードするための例示的な方法のフローチャートである。
【図５】本開示の１つ以上の実施形態に従う、コンピューティングデバイスにおけるオペレーティングシステムのサービスを管理するための例示的な方法のフローチャートである。
【図６】本開示の１つ以上の実施形態に従う、例示的なドライバ及び種々のステージにおいてロードできる関連するハードウェアインスタンスを示す。
【図７】本開示の１つ以上の実施形態に従う、初期化されたドライバに関してハードウェアインスタンスを選択的に初期化するための例示的な方法のフローチャートである。
【図８】本開示の１つ以上の実施形態に従う、コンピューティングデバイスにおけるアプリケーションをロードするための例示的な方法のフローチャートである。
【発明を実施するための形態】
【０００９】
前述のように、初期化ルーチンの速度は、コンピューティングデバイスの起動と、コンピューティングデバイスの機能性の有効化との間の遅延を特徴づける。例えば、車両内のコンピューティングデバイス（例えば、車載コンピューティングデバイス）は、車両の起動に応答して起動し得るが、例えば、ナビゲーションシステム、オーディオ制御などの機能性には、コンピューティングデバイスが初期化ルーチンを完了するまでアクセスすることができない。本開示は、一部の初期化ルーチンが、コンピューティングデバイスの初期動作に必須でない特定のハードウェアドライバに関連するクラス、リソース、サービス／アプリケーション、及びハードウェアインスタンスをロードし得ることを認識する。これらの要素の各々のローディングは、コンピューティングデバイスの初期化時間を増大するので、これらの要素を選択的にロードすることによって、コンピューティングデバイスをより効率的に初期化し、それによって、デバイスのアベイラビリティに伴う遅延を短縮することができる。後述する方法及びシステムは、構成すべきクラス、リソース、サービス、アプリケーション及びハードウェアインスタンスを、例えば、デバイス特性、デバイスの意図される使用、デバイスの優先使用、リクエストされた機能性、デバイス／初期化ルーチン／アプリケーションの機能性に関わる要素の臨界／依存性などの考慮事項から導き出された各要素の優先度に基づいて選択することができる。このようにして、コンピューティングデバイスの機能性を犠牲にすることなく、初期化時間を短縮するように、機能のローディング／初期化を知的に選択することができる。
【００１０】
図１は、運転者及び／または一名以上の搭乗者が着席することができる、車両１０２の車室１００の内部である、あるタイプの環境の例示的な部分図を示す。図１の車両１０２は、駆動輪（図示せず）と内燃機関１０４とを含む自動車であり得る。内燃機関１０４は、吸気流路を介して吸気を受け取り、排気流路を介して燃焼ガスを排出することができる１つ以上の燃焼室を含むことができる。車両１０２は、車両タイプの中でもとりわけ、道路走行用の自動車であり得る。いくつかの実施例では、車両１０２は、車両運動及び／またはエンジンからのエネルギーを吸収し、吸収したエネルギーを、エネルギー貯蔵デバイスによる貯蔵に適切なエネルギー形態に変換するように動作可能なエネルギー変換デバイスを含むハイブリッド推進システムを含むことができる。車両１０２は、燃料電池、太陽エネルギー捕捉要素、及び／または車両に電力を供給するための他のエネルギー貯蔵システムを組み込む全電動車両を含むことができる。
【００１１】
示すように、計器盤１０６は、様々なディスプレイと、車両１０２の運転者（ユーザとも称される）がアクセス可能な制御装置とを含むことができる。例えば、計器盤１０６は、車載コンピューティングシステム１０９（例えば、インフォテインメントシステム）のタッチスクリーン１０８と、オーディオシステム制御パネルと、計器群１１０と、を含むことができる。図１に示す例示的なシステムは、別個のオーディオシステム制御パネルを用いることなく、タッチスクリーン１０８などの、車載コンピューティングシステム１０９のユーザインターフェースを介して実行できるオーディオシステム制御装置を含むが、他の実施形態では、車両は、例えば、ラジオ、コンパクトディスクプレーヤ、ＭＰ３プレーヤなどの従来の車両オーディオシステムのための制御装置を含むことができるオーディオシステム制御パネルを含むことができる。オーディオシステム制御装置は、車両スピーカシステムのスピーカ１１２を介して音声出力の１つ以上の態様を制御するための機構を含むことができる。例えば、車載コンピューティングシステムまたはオーディオシステム制御装置は、音声出力の音量、車両スピーカシステムの個々のスピーカ間の音の分配、音声信号の均等化、及び／または音声出力の任意の他の態様を制御することができる。さらなる実施例では、車載コンピューティングシステム１０９は、タッチスクリーン１０８を介して直接受信したユーザ入力に基づいて、または外部デバイス１５０及び／若しくは携帯デバイス１２８を介して受信したユーザに関するデータ（例えば、ユーザの健康状態及び／または環境）に基づいて、ラジオ局選択、プレイリスト選択、音声入力のソース（例えば、ラジオ、ＣＤ、またはＭＰ３）などを調節することができる。
【００１２】
いくつかの実施形態では、タッチスクリーン１０８、表示画面、様々な制御ダイヤル、ノブ及びボタン、メモリ、プロセッサ（複数可）、及び任意のインターフェース要素（例えば、コネクタまたはポート）などの、車載コンピューティングシステム１０９の１つ以上のハードウェア要素は、車両の計器盤１０６に据え付けられる統合されたヘッドユニットを形成することができる。ヘッドユニットは、計器盤１０６に固定してまたは取り外し可能に取り付けることができる。追加的または代替的な実施形態では、車載コンピューティングシステムの１つ以上のハードウェア要素は、モジュラーであっても良いし、車両の複数の位置に据え付けることができる。車載コンピューティングシステム１０９は、プロセッサと、様々なアクション、タスクなどを実行するための、プロセッサによって実行可能な命令を記憶するメモリ（例えば、ストレージデバイス）と、を含むことができる。例えば、車載コンピューティングシステム１０９のメモリは、車載コンピューティングシステムのアプリケーション、ならびに車載コンピューティングシステムによって実行される他のデータ処理、制御及びアクションを管理するためのオペレーティングシステムを記憶することができる。
【００１３】
計器群１１０は、燃料計、タコメータ、速度計及び走行距離計などの様々な計器、ならびにインジケータ及び警告灯を含むことができる。ハンドル１１４が、計器群１１０の下方の計器盤から突出し得る。選択的に、ハンドル１１４は、タッチスクリーン１０８と連動して使用され、車載コンピューティングシステムの機構をナビゲートし、車載コンピューティングシステムを制御できる制御装置１１６を含むことができる。図１に描写するコンポーネントに加えて、計器盤１０６が、ドア及びウィンドウ制御装置、低電圧電源出力としても使用できるたばこのライター、グローブボックス、及び／または任意の他の適切な要素などの追加のコンポーネントを含み得ることが認識される。１つ以上の実施形態では、環境制御システム通気口１１８を介する車内環境（例えば、車室温度）の制御は、タッチスクリーン１０８を使用して実行でき、それ故に、計器盤１０６に別個の環境制御インターフェースを含まなくても良い。しかしながら、代替的な実施形態では、別個の環境制御インターフェースを提供しても良い。
【００１４】
車室１００は、車両、ユーザ及び／または環境を監視するための１つ以上のセンサを含むことができる。例えば、車室１００は、座席に加えられた圧力を測定してユーザの存在を決定するように構成された１つ以上の座席搭載型圧力センサ１２０を含むことができる。車室１００は、ドアの開放及び／若しくは閉鎖、ドアのロッキング、ドアウィンドウの動作、ならびに／または任意の他の適切なドア活動事象などのドア活動を監視するように構成された１つ以上のドアセンサ１２２を含むことができる。車室の湿度含有量を測定する湿度センサ１２４を含ませることができる。音声コマンドの形態のユーザ入力を受信して、ユーザが電話をかける、及び／または車室１００内の周囲ノイズを測定することができるマイクロフォン１２６を含ませることができる。図１に例証するセンサの配置が例示であり、車両の任意の適切な位置に１つ以上の追加的または代替的なセンサを位置付けることができることを理解すべきである。例えば、追加のセンサを、エンジンルーム内、車両の外面、及び／または車両の動作、車両の周囲状況、車両のユーザなどに関する情報を提供するための他の適切な位置に位置付けることができる。車両の周囲状況、車両状況または車両運転者に関する情報は、外部デバイス１５０及び／または携帯デバイス１２８に連結されたセンサなどの、車両外部／それとは別のセンサ（すなわち、車両システムの一部ではない）からも受信できる。
【００１５】
車室１００は、走行前、走行中及び／または走行後に車両内に保管される携帯デバイス１２８などの１つ以上のユーザの物体も含むことができる。携帯デバイスとしては、スマートフォン、タブレット、ラップトップコンピュータ、携帯用メディアプレーヤ、及び／または任意の適切な携帯コンピューティングデバイスを挙げることができる。携帯デバイス１２８は、通信リンク１３０を介して車載コンピューティングシステムに接続することができる。通信リンク１３０は、有線（例えば、ユニバーサルシリアルバス［ＵＳＢ］、モバイルハイデフィニションリンク［ＭＨＬ］、高精細度マルチメディアインターフェース［ＨＤＭＩ（登録商標）］など）であっても良いし、無線（例えば、ＢＬＵＥＴＯＯＴＨ（登録商標）、ＷＩＦＩ、近距離無線通信［ＮＦＣ］、セルラー方式の接続性など）であっても良いし、携帯デバイスと車載コンピューティングシステムとの間の双方向通信を提供するように構成されても良い。例えば、通信リンク１３０は、様々な車両システム（例えば、車両オーディオシステム、環境制御システムなど）及びタッチスクリーン１０８からのセンサ及び／または制御信号を携帯デバイス１２８に提供し、かつ携帯デバイス１２８からの制御及び／または表示信号を車載システム及びタッチスクリーン１０８に提供することができる。通信リンク１３０は、車載電源から携帯デバイス１２８に電力を供給して、携帯デバイスの内蔵バッテリを充電することもできる。
【００１６】
携帯デバイス１２８は、車載コンピューティングシステムから空間的に分離し、実質的に外部の通信リンク（例えば、ケーブルまたは無線周波数信号）を介して接続されたものとして例証するが、携帯デバイスを特定の位置に保持するためのスロット１３２または他の収納構造を、計器盤１０６または車両内の他の位置に形成できることを理解すべきである。収納構造は、携帯デバイスとコンピューティングシステムとの間の実質的に内部の通信リンクを提供するための、携帯デバイス１２８を取り付けるまたは「ドッキング」することができる統合コネクタ１３４を含むことができる。
【００１７】
車載コンピューティングシステム１０９は、ユーザによって操作されるが、車両１０２外部に位置する追加のデバイス、例えば、１つ以上の外部デバイス１５０にも通信可能に連結することができる。描写する実施形態では、外部デバイス１５０は車両１０２の外側に位置するが、代替的な実施形態では、外部デバイスが車室１００内側に位置しても良いことが認識される。外部デバイスとしては、サーバのコンピューティングシステム、パーソナルコンピューティングシステム、携帯用電子デバイス、電子リストバンド、電子ヘッドバンド、携帯用音楽プレーヤ、電子活動追跡デバイス、歩数計、スマートウォッチ、ＧＰＳシステムなどを挙げることができる。外部デバイス１５０は、通信リンク１３０を参照して論じたように有線でも無線でも良く、外部デバイスと車載コンピューティングシステムとの間の双方向通信を提供するように構成された通信リンク１３６を介して車載コンピューティングシステムと接続することができる。例えば、外部デバイス１５０は、１つ以上のセンサを含み、通信リンク１３６は、外部デバイス１５０からのセンサ出力を車載コンピューティングシステム１０９及びタッチスクリーン１０８に送信することができる。外部デバイス１５０は、コンテキストデータ、ユーザ行動／嗜好、動作ルールなどに関する情報を記憶及び／または受信し、外部デバイス１５０からのそのような情報を車載コンピューティングシステム１０９及びタッチスクリーン１０８に送信することもできる。
【００１８】
車載コンピューティングシステム１０９は、外部デバイス１５０、携帯デバイス１２８及び／または他の入力源から受信した入力を分析し、様々な車載システム（例えば、環境制御システムまたはオーディオシステム）に関する設定を選択し、タッチスクリーン１０８及び／またはスピーカ１１２を介して出力を提供し、携帯デバイス１２８及び／または外部デバイス１５０と通信し、かつ／または評価に基づいて他のアクションを実行することができる。いくつかの実施形態では、評価のすべてまたは一部は、携帯デバイス１２８及び／または外部デバイス１５０によって実行することができる。
【００１９】
いくつかの実施形態では、外部デバイス１５０のうちの１つ以上は、携帯デバイス１２８及び／または別の外部デバイス１５０を介して、間接的に車載コンピューティングシステム１０９と通信可能に連結しても良い。例えば、通信リンク１３６は、外部デバイス１５０からの出力が携帯デバイス１２８に伝達されるように、外部デバイス１５０と携帯デバイス１２８とを通信可能に連結することができる。その後、外部デバイス１５０から受信したデータを、携帯デバイス１２８によって収集されたデータと携帯デバイス１２８において集約し、次に、集約されたデータを、通信リンク１３０を介して車載コンピューティングシステム１０９及びタッチスクリーン１０８に送信することができる。類似のデータ集約がサーバシステムにおいて生じ、その後、通信リンク１３６／１３０を介して車載コンピューティングシステム１０９及びタッチスクリーン１０８に送信することができる。
【００２０】
図２は、図１の車載コンピューティングデバイス１０９などのコンピューティングデバイスにおけるアプリケーション仮想マシンの初期化を加速する方法２００に関するフローチャートである。例えば、方法２００は、ＡＮＤＲＯＩＤ（登録商標）オペレーティングシステム初期化のためのＺｙｇｏｔｅプロセスの一部として利用することができる。方法２００は、２０２において、アプリケーション仮想マシン（例えば、ＡＮＤＲＯＩＤ（登録商標）オペレーティングシステムのためのＤａｌｖｉｋ）を初期化することを含む。例えば、そのような初期化は、コンピューティングデバイスを電源オン、さもなければ動作を開始するようにコンピューティングデバイスに命令することによってトリガすることができる。方法は、２０４において、ＣＰＵスレッドプールを使用して、プレシステム＿サーバのクラスリストから選択されたクラスをロードすることを含む。２０６に示すように、ＣＰＵスレッドプールにおけるスレッドの数は、ＣＰＵコアの数に２を乗じた数に基づく。各スレッドを使用して、クラスをロードし、リソースをロードし、かつ／または任意の他の適切なタスクを実行することができる。
【００２１】
いくつかのシステムにおいて、すべてのクラス及びリソースのプレロード後に、システム＿サーバプロセスをロードして、コンピューティングデバイスを動作させるための他のサービスのローディングを開始することができる。システム＿サーバプロセスは、オペレーティングシステムの初期化中に使用されるサービスを初期化してサービスマネージャを用いてそのサービスを登録するように構成されたサービスローディングプロセスであっても良い。システム＿サーバプロセスは、オペレーティングシステムの他のアクティビティを管理するアクティビティマネージャも起動することができる。すべてのクラスではなく、プレシステム＿サーバのクラスリストにおけるクラスのみをロードすることによって、システムは、プレロードされるクラスの数を減少し、クラスをプレロードするのに費やされる時間を短縮することができる。プレシステム＿サーバのクラスリストは、各クラスのロード時間、各クラスを使用するプロセスの数、及び／または各クラスの優先度を示す任意の他のパラメータに基づいて生成することができる。例えば、プレシステム＿サーバのクラスリスト内のクラスは、閾値ロード時間（例えば、１つの非限定的な実施例では１２５０μｓ）よりも短いロード時間を有し、プロセスの閾値数（例えば、１つの非限定的な実施例では１０のプロセス）よりも多いプロセスに使用することができる。プレシステム＿サーバのクラスリストは、システム＿サーバをロードできるシステム＿サーバプロセスを含むことができる。いくつかの実施例では、システム＿サーバは、プレシステム＿サーバのクラスリストにおけるすべての他のクラスがロードされた後にロードされる最後のプロセスであっても良い。ＡＮＤＲＯＩＤ（登録商標）オペレーティングシステムのためのプレシステム＿サーバのクラスの例示的なリストは、以下の別表Ｉに提供される。例示的なリストは、包括的でなくても良く、例えば、コンピューティングデバイスにおけるオペレーティングシステム／ソフトウェアコンピューティングデバイス／ハードウェアコンティングデバイスの用法／環境などのファクタに基づいて、追加的または代替的なクラスを含ませるまたはリストから除去することができる。任意の適切な閾値ロード時間及びプロセスの閾値数を利用して、本開示の範囲から逸脱することなく、プレシステム＿サーバのクラスリストを生成できることを理解すべきである。
【００２２】
方法２００は、２０８において、スレッドプールを使用してリソースをロードすることを含む。リソースは、アプリケーションまたは他のソフトウェアが、例えば、レイアウト定義、アニメーション命令、ビットマップ、ユーザインターフェース文字列などを利用する追加のファイル及びコンテンツを含むことができる。いくつかの実施例では、初期化中にロードすべきすべてのリソースは、２０８においてロードすることができる。他の実施例では、リソース（例えば、プレシステム＿サーバのステージにロードされたリソースのサブセット、及びポストシステム＿サーバのステージにロードされたリソースのサブセット）は、前述のようなクラスと同様のステージにおいてロードすることができる。方法は、２１０に進み、システム＿サーバをロードするためにシステム＿サーバプロセスを分岐する。分岐は、既存のプロセスをコピーして、既存のプロセスのコピーの間にロードすべき新規のプロセスをオーバーレイすることを含むことができる。システム＿サーバプロセスは、リクエストに応じて他のアプリケーションを分岐することができる。従って、方法２００は、２１２に進み、プロセス間通信ソケットを待機して、（例えば、アプリケーションを立ち上げるためのリクエストに基づく）アプリケーションを分岐するためのコマンドを受信する。アプリケーションを分岐するためのそのようなコマンドを受信すると、システム＿サーバプロセスは、それ自体のコピーを作り出し、コピーにおいてリクエストされたアプリケーションをオーバーレイしてリクエストされたアプリケーションをロードする。
【００２３】
２１４に示すように、システム＿サーバプロセスの分岐後、ポストシステム＿サーバのクラスリストからのクラスをロードすることができる。ポストシステム＿サーバのクラスリストは、プレシステム＿サーバのクラスリストに関して前述したロード時間閾値及び／またはプロセス閾値に基づいて生成することができる。例えば、ポストシステム＿サーバのクラスリストは、初期化手順の一部としてロードすべきであるが、前述したロード時間閾値（例えば、１つの非限定的な実施例では１２５０μｓ）を超えたロード時間を有するクラスを含み、プロセスの閾値数（例えば、１つの非限定的な実施例では１０のプロセス）よりも多いプロセスに利用され得る。ＡＮＤＲＯＩＤ（登録商標）オペレーティングシステムのためのポストシステム＿サーバのクラスの例示的なリストは、以下の別表ＩＩに提供される。例示的なリストは、包括的でなくても良く、例えば、コンピューティングデバイスにおけるオペレーティングシステム／ソフトウェアコンピューティングデバイス／ハードウェアコンティングデバイスの用法／環境などのファクタに基づいて、追加的または代替的なクラスを含ませるまたはリストから除去することができる。任意の適切な閾値ロード時間及びプロセスの閾値数を利用して、本開示の範囲から逸脱することなく、プレシステム＿サーバのクラスリストを生成できることを理解すべきである。いくつかの実施例では、追加のローディングステージを利用することができる。例えば、プレシステム＿サーバのクラスリスト及び／またはポストシステム＿サーバのクラスリストは、初期化ルーチン中に種々のステージにおいてロードするための追加のリストに分けることができる。
【００２４】
図３は、車両３０１の内側に構成及び／または統合された車載コンピューティングシステム３００のブロック図を示す。車載コンピューティングシステム３００は、図１の車載コンピューティングシステム１０９の実施例であっても良く、かつ／またはいくつかの実施形態における図２の方法２００などの本明細書に記述する方法の１つ以上を実行することができる。いくつかの実施例では、車載コンピューティングシステムは、情報ベースのメディアコンテンツ（エンターテインメントコンテンツ、ナビゲーションサービスなどを含むオーディオ及び／またはビジュアルメディアコンテンツ）を、操作者の車内体験を向上するために車両ユーザに提供するように構成された車両インフォテインメントシステムであっても良い。車両インフォテインメントシステムは、様々な車両システム、サブシステム、ハードウェアコンポーネントならびに運転者及び／または搭乗者の車内体験を向上するために車両３０１に統合されたまたは統合可能なソフトウェアアプリケーション及びシステムを含むことができる。
【００２５】
車載コンピューティングシステム３００は、オペレーティングシステムプロセッサ３１４及びインターフェースプロセッサ３２０を含む１つ以上のプロセッサを含むことができる。オペレーティングシステムプロセッサ３１４は、車載コンピューティングシステム上のオペレーティングシステムを実行し、入力／出力、表示、再生及び車載コンピューティングシステムの他の動作を制御することができる。インターフェースプロセッサ３２０は、車両間システム通信モジュール３２２を介して車両制御システム３３０と相互作用することができる。
【００２６】
車両間システム通信モジュール３２２は、例えば、車両制御システム３３０を経由して、データを他の車両システム３３１及び車両制御要素３６１に出力し、その一方で、他の車両コンポーネント及びシステム３３１、３６１から入力されたデータを受信することもできる。データを出力するときに、車両間システム通信モジュール３２２は、バスを介して車両の任意の状態、車両周囲環境に対応する信号、または車両に接続された任意の他の情報源の出力を提供することができる。車両データ出力としては、例えば、アナログ信号（例えば、現在の速度）、個々の情報源によって提供されるデジタル信号（例えば、クロック、温度計、グローバルポジショニングシステム［ＧＰＳ］センサなどの位置センサなど）、車両データネットワーク（例えば、そこを通じてエンジン関連情報を通信できるエンジンのコントローラエリアネットワーク［ＣＡＮ］バス、そこを通じて環境制御関連情報を通信できる環境制御ＣＡＮバス、及びそこを通じて車両におけるマルチメディアコンポーネント間でマルチメディアデータを通信するマルチメディアデータネットワーク）を通じて伝播されるデジタル信号を挙げることができる。例えば、車載コンピューティングシステムは、エンジンＣＡＮバスから、車輪センサによって概算される車両の現在の速度、車両のバッテリ及び／または電力配分システムを通じた車両の電力状態、車両の点火装置の状態などを取り出すことができる。さらに、イーサネット（登録商標）などの他の相互作用手段を、本開示の範囲から逸脱することなく同様に使用することができる。
【００２７】
プロセッサ３１４及び３２０によって実行可能な命令などのデータを不揮発性の形態において記憶する不揮発性ストレージデバイス３０８を、車載コンピューティングシステム３００に含ませることができる。ストレージデバイス３０８は、クラウドベースのサーバに接続する、及び／またはクラウドベースのサーバに送信するための情報を収集するためのアプリケーションを車載コンピューティングシステム３００が実行できるアプリケーションデータを記憶することができる。アプリケーションは、車両システム／センサ、入力デバイス（例えば、ユーザインターフェース３１８）、車載コンピューティングシステムと通信するデバイス（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）リンクを介して接続された携帯デバイス）などによって集められた情報を取り出すことができる。車載コンピューティングシステム３００は、さらに、揮発性メモリ３１６を含むことができる。揮発性メモリ３１６は、ランダムアクセスメモリ（ＲＡＭ）であっても良い。不揮発性ストレージデバイス３０８及び／または揮発性メモリ３１６などの非一時的ストレージデバイスは、プロセッサ（例えば、オペレーティングシステムプロセッサ３１４及び／またはインターフェースプロセッサ３２０）によって実行されたときに、車載コンピューティングシステム３００を制御して、本開示に記述するアクションの１つ以上を実行する命令及び／またはコードを記憶することができる。
【００２８】
例えば、ユーザからの音声コマンドを受信し、車両における周囲ノイズを測定し、車両の音響環境に従い車両のスピーカからの音声を調整するか否かを決定するためのマイクロフォン３０２を、車載コンピューティングシステム３００に含ませることができる。音声処理ユニット３０４が、マイクロフォン３０２から受信した音声コマンドなどの音声コマンドを処理することができる。いくつかの実施形態では、車載コンピューティングシステム３００は、車両のオーディオシステム３３２に含まれるマイクロフォンを使用して、音声コマンドを受信し、周囲車両ノイズをサンプリングすることもできる。
【００２９】
車載コンピューティングシステム３００のセンササブシステム３１０に１つ以上の追加のセンサを含ませることができる。例えば、センササブシステム３１０は、車両の駐車においてユーザを援助するための後方カメラ、及び／または（例えば、顔認識及び／またはユーザジェスチャを使用して）ユーザを識別するための車室カメラなどのカメラを含むことができる。車載コンピューティングシステム３００のセンササブシステム３１０は、様々な車両センサと通信し、それからの入力を受信し、さらに、ユーザ入力を受信することができる。例えば、センササブシステム３１０によって受信される入力としては、変速ギア位置、変速クラッチ位置、アクセルペダル入力、ブレーキ入力、変速セレクタ位置、車両速度、エンジン速度、エンジンを流れる気流、周囲温度、吸気温度など、ならびに環境制御システムセンサ（例えば、伝熱流体温度、不凍温度、ファン回転速度、乗員室温度、所望の乗員室温度、周囲湿度など）、ユーザによって出された音声コマンドを検出する音声センサ、車両のフォブからのコマンドを受信する、選択的に、それの地理的位置／近接度を追跡するフォブセンサなどからの入力を挙げることができる。特定の車両システムセンサが、単独でセンササブシステム３１０と通信できるが、他のセンサも、センササブシステム３１０及び車両制御システム３３０両方と通信する、または車両制御システム３３０を通じてセンササブシステム３１０と間接的に通信することができる。車載コンピューティングシステム３００のナビゲーションサブシステム３１１は、（例えば、ＧＰＳセンサ及び／またはセンササブシステム３１０からの他のセンサを通じた）位置情報、経路案内、交通情報、注視点（ＰＯＩ）識別などのナビゲーション情報を生成及び／または受信し、かつ／または他のナビゲーションサービスを運転者に提供することができる。
【００３０】
車載コンピューティングシステム３００の外部デバイスインターフェース３１２は、車両３０１外部に位置する１つ以上の外部デバイス３４０と連結可能であり、かつ／または通信することができる。外部デバイスは、車両３０１外部に位置するものとして例証するが、例えば、ユーザが車両３０１を運転しながら外部デバイスを動作させているときには、車両３０１内に一時的に収容できることを理解すべきである。言い換えれば、外部デバイス３４０は、車両３０１に不可欠なものではない。外部デバイス３４０は、（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）接続を介して接続された）携帯デバイス３４２、または代替的なＢｌｕｅｔｏｏｔｈ（登録商標）使用可能なデバイス３５２を含むことができる。携帯デバイス３４２としては、有線及び／または無線通信を介して車載コンピューティングシステムと通信できる携帯電話、スマートフォン、ウェアラブルデバイス／センサ、または他の携帯用電子デバイス（複数可）を挙げることができる。他の外部デバイスは、外部サービス３４６を含む。例えば、外部デバイスは、車両から離れて、車両の外部に位置する車外デバイスを含むことができる。なおも他の外部デバイスは、例えば、ソリッドステートドライブ、ペンドライブ、ＵＳＢドライブなどの外部ストレージデバイス３５４を含む。外部デバイス３４０は、本開示の範囲から逸脱することなく、無線でまたはコネクタを介して車載コンピューティングシステム３００と通信することができる。例えば、外部デバイス３４０は、ネットワーク３６０、ユニバーサルシリアルバス（ＵＳＢ）接続、直接的な有線接続、直接的な無線接続及び／または他の通信リンクを介して、外部デバイスインターフェース３１２を介して車載コンピューティングシステム３００と通信することができる。外部デバイスインターフェース３１２は、運転者の接触と関連付けられた携帯デバイスと車載コンピューティングシステムが通信できる通信インターフェースを提供することができる。例えば、外部デバイスインターフェース３１２は、通話を確立し、かつ／またはテキストメッセージ（例えば、ＳＭＳ、ＭＭＳなど）を（例えば、図２のＳＭＳサービス２０２、電話サービス２０４及び／または電子メールサービス２０６を通じて）運転者の接触と関連付けられた携帯デバイスに（例えば、セルラー方式の通信ネットワークを介して）送ることができる。
【００３１】
１つ以上のアプリケーション３４４を、携帯デバイス３４２において動作させることができる。実施例として、携帯デバイスアプリケーション３４４は、ユーザと携帯デバイスとの相互作用に関するユーザデータを集約するように動作することができる。例えば、携帯デバイスアプリケーション３４４は、携帯デバイスにおいてユーザによって聴かれた音楽プレイリスト、（ユーザによって受け取られた通話の頻度及び持続期間を含む）通話ログ、ユーザが頻繁に訪れた位置及び各位置において費やされた時間を含む位置情報などに関するデータを集約することができる。収集されたデータは、アプリケーション３４４によってネットワーク３６０を介して外部デバイスインターフェース３１２に転送することができる。さらに、外部デバイスインターフェース３１２を介して車載コンピューティングシステム３００からの具体的なユーザデータリクエストを携帯デバイス３４２において受信することができる。具体的なデータリクエストは、ユーザが地理的に位置する場所、ユーザの位置における周囲ノイズレベル及び／または音楽ジャンル、ユーザの位置における周囲気象状況（温度、湿度など）などを決定するためのリクエストを含むことができる。携帯デバイスアプリケーション３４４は、制御命令をコンポーネント（例えば、マイクロフォンなど）、またはリクエストされたデータを携帯デバイスにおいて収集できる携帯デバイス３４２の他のアプリケーション（例えば、ナビゲーションアプリケーション）に送ることができる。次に、携帯デバイスアプリケーション３４４は、収集された情報を車載コンピューティングシステム３００に戻して伝達することができる。
【００３２】
同様に、１つ以上のアプリケーション３４８を、外部サービス３４６において動作させることができる。実施例として、外部サービスアプリケーション３４８は、複数のデータソースからのデータを集約及び／または分析するように動作することができる。例えば、外部サービスアプリケーション３４８は、ユーザの１つ以上のソーシャルメディアアカウントからのデータ、車載コンピューティングシステムからのデータ（例えば、センサデータ、ログファイル、ユーザ入力など）、インターネットのクエリからのデータ（例えば、気象データ、ＰＯＩデータ）などを集約することができる。収集されたデータは、別のデバイスに送信する、ならびに／またはアプリケーションによって分析して運転者、車両及び環境の状態を決定し、状態に基づいてアクションを実行する（例えば、他のデバイスにデータをリクエストする／送る）ことができる。
【００３３】
車両制御システム３３０は、種々の車載機能に関わる様々な車両システム３３１の態様を制御するための制御装置を含むことができる。これらは、例えば、オーディオエンターテインメントを車両乗員に提供するための車両オーディオシステム３３２の態様、車両乗員の車室冷房または暖房要求を満たすための環境制御システム３３４の態様、ならびに車両乗員が他者との遠隔通信網を確立するための遠隔通信システム３３６の態様を制御することを含むことができる。
【００３４】
オーディオシステム３３２は、スピーカなどの電磁変換器を含む１つ以上の音響再生デバイスを含むことができる。車両オーディオシステム３３２は、パッシブであっても良いし、例えば、電力増幅器を含むことによってアクティブであっても良い。いくつかの実施例では、車載コンピューティングシステム３００は、音響再生デバイスのための唯一の音源であっても良いし、音声再生システム（例えば、携帯電話などの外部デバイス）と接続された他の音源が存在しても良い。音声再生デバイスとの任意のそのような外部デバイスの接続は、アナログ、デジタルまたはアナログ技術とデジタル技術との任意の組み合わせであっても良い。
【００３５】
環境制御システム３３４は、車両３０１の車室または乗員室内部に快適な環境を提供するように構成できる。環境制御システム３３４は、例えば、空気口、暖房機、空調装置、統合された暖房機と空調装置システムなどの換気を制御できるコンポーネントを含む。暖房及び空調設定とリンクされた他のコンポーネントは、フロントガラスを洗浄することができるフロントガラス除霜及び防曇システム、ならびに吸気口を通じて乗員室に入る外気を洗浄するための換気フィルタを含むことができる。
【００３６】
車両制御システム３３０は、ハンドル制御装置３６２（例えば、ハンドル備え付けのオーディオシステム制御装置、走行制御装置、ワイパー制御装置、ヘッドライト制御装置、方向指示制御装置など）、計器盤制御装置、マイクロフォン（複数可）、アクセル／ブレーキ／クラッチペダル、ギアシフト、運転者または搭乗者のドアに位置付けられたドア／ウィンドウ制御装置、座席制御装置、車室照明制御装置、オーディオシステム制御装置、車室温度制御装置など、エンジン及び／または車両の車室内部の補助要素に関連する様々な車両制御装置３６１（または、車両システム制御要素）の設定を調節するための制御装置も含むことができる。制御信号は、車両のオーディオシステム３３２の１つ以上のスピーカにおける音声出力も制御することができる。例えば、制御信号は、例えば、音量、均等化、音像（例えば、１つ以上の規定された位置から生じるようにユーザに見える音声出力を生成する音声信号の構成）、複数個のスピーカ間の音声分配などの音声出力特性を調節することができる。同様に、制御信号は、環境制御システム３３４の通気口、空調装置及び／または暖房機を制御することができる。例えば、制御信号は、車室の具体的な区域への冷却空気の送達を増大することができる。
【００３７】
車両の外側に位置付けられた制御要素（例えば、安全システムのための制御装置）も、例えば、通信モジュール３２２を介してコンピューティングシステム３００に接続することができる。車両制御システムの制御要素は、ユーザ入力を受信するように車両上に及び／または車両内部に、物理的にかつ取り外せないように位置付けることができる。車載コンピューティングシステム３００からの制御命令の受信に加えて、車両制御システム３３０は、ユーザによって操作された１つ以上の外部デバイス３４０、例えば、携帯デバイス３４２からの入力も受信することができる。これにより、外部デバイス３４０から受信したユーザ入力に基づいて、車両システム３３１及び車両制御装置３６１の態様を制御することができる。
【００３８】
車載コンピューティングシステム３００は、さらに、アンテナ３０６を含むことができる。アンテナ３０６は、単一のアンテナとして示すが、いくつかの実施形態では１つ以上のアンテナを備えることができる。車載コンピューティングシステムは、アンテナ３０６を介して広帯域無線インターネットアクセスを取得し、さらに、例えば、ラジオ、テレビ、気象、交通などの放送信号を受信することができる。車載コンピューティングシステムは、１つ以上のアンテナ３０６を介してＧＰＳ信号などの位置決め信号を受信することができる。車載コンピューティングシステムは、アンテナ（複数可）３０６を通じた無線周波数を介して、または適切な受信デバイスを介した赤外線若しくは他の手段を介して、無線コマンドも受信することができる。いくつかの実施形態では、アンテナ３０６は、オーディオシステム３３２または遠隔通信システム３３６の一部として含ませることができる。さらに、アンテナ３０６は、外部デバイスインターフェース３１２を介してＡＭ／ＦＭラジオ信号を外部デバイス３４０（例えば、携帯デバイス３４２）に提供することができる。
【００３９】
車載コンピューティングシステム３００の１つ以上の要素は、ユーザインターフェース３１８を介してユーザによって制御することができる。ユーザインターフェース３１８は、図１のタッチスクリーン１０８などのタッチスクリーンに提示されたグラフィカルユーザインターフェース、及び／またはユーザ駆動のボタン、スイッチ、ノブ、ダイヤル、スライダなどを含むことができる。例えば、ユーザ駆動の要素としては、ハンドル制御装置、ドア及び／またはウィンドウ制御装置、計器盤制御装置、オーディオシステム設定、環境制御システム設定などを挙げることができる。ユーザは、ユーザインターフェース３１８を介して、車載コンピューティングシステム３００の１つ以上のアプリケーション及び携帯デバイス３４２とも相互作用することができる。ユーザインターフェース３１８におけるユーザの車両設定嗜好の受信に加えて、車載制御システムによって選択された車両設定も、ユーザインターフェース３１８においてユーザに表示することができる。通知及び他のメッセージ（例えば、受信したメッセージ）、ならびにナビゲーション援助を、ユーザインターフェースのディスプレイにおいてユーザに表示することができる。ユーザ嗜好／情報及び／または提示されたメッセージに対する応答を、ユーザインターフェース上のユーザ入力を介して実行することができる。
【００４０】
図４は、オペレーティングシステムにおけるサービスを選択的にロードするための方法４００のフローチャートである。方法４００は、図１の車載コンピューティングデバイス１０９などのコンピューティングデバイスによって実行することができる。方法は、４０２において、システム＿サーバを起動することを含む。例えば、方法４００は、コンピューティングデバイスのオペレーティングシステム及び／または他のソフトウェアを初期化して動作させるために、図２の方法２００の２１０中及び／または後に実行することができる。４０４に示すように、システム＿サーバを利用して、重要サービス（例えば、システムが機能しないまたは不十分に機能することがないような、システムの機能化に重要なサービス）をロードすることができる。例えば、パッケージマネージャ、ウィンドウマネージャ、入力マネージャ及びマウントサービスなどのサービスが、ＡＮＤＲＯＩＤ（登録商標）オペレーティングシステムの機能化に重要であり得るサービスの実施例である。４０４に示すような重要サービスのローディングは、重要サービスのみをロードして、任意の他のサービスをロードしない（例えば、ロードしなくてもシステムが依然として機能できる重要でないサービスをロードしない）ことを含むことができる。（後にロードできる、及び／またはサービスの使用を求めるリクエストに応答してのみロードできる）重要でないサービスの実施例としては、（音声認識のための）ＵＩのスピーチサービス、ＢＬＵＥＴＯＯＴＨ（登録商標）マネージャ、（車両ラジオ制御装置を調節するための）チューナサービスなどを挙げることができる。
【００４１】
方法は、４０６において、ヒューマンマシンインターフェース（ＨＭＩ）を立ち上げることを含む。例えば、ヒューマンマシンインターフェースは、初期化されたコンピューティングデバイス及び／またはオペレーティングシステムとユーザが相互作用できるユーザインターフェース（ＵＩ）及び／またはグラフィカルユーザインターフェース（ＧＵＩ）を含むことができる。４０８に示すように、ＨＭＩを利用して、最後に使用されたアプリケーションを含むアプリケーションを立ち上げることができる。例えば、コンピューティングデバイスは、車載コンピューティングデバイスであっても良く、最後に使用されたアプリケーションは、車両及び／または車載コンピューティングシステムがシャットオフする前にアクティブであった最後のアプリケーション（例えば、ナビゲーションアプリケーション）であっても良い。４１０に示すように、最後に使用されたアプリケーションの立ち上げは、任意の従属サービス（複数可）、アプリケーション（複数可）、リソース（複数可）、クラス（複数可）などの立ち上げ及び／または初期化を含むことができる。例えば、ナビゲーションアプリケーションは、車両を位置決めするためのＧＰＳサービスなどの従属サービスを利用することができる。従って、ナビゲーションは、４１０において、ＧＰＳサービスを立ち上げて、立ち上げたときにナビゲーションアプリケーションの適切な動作を保証することをリクエストすることができる。いくつかの実施形態では、最後に使用されたアプリケーションは、すべての従属サービス（複数可）を立ち上げた後などに立ち上げることができる。他の実施形態では、最後に使用されたアプリケーションは、従属サービス（複数可）などと一緒に（例えば、従属サービスと並行して）立ち上げることができる。方法は、４１２において、リクエストに応答して残りのサービスを立ち上げることを含む。このようにして、効率的な、リクエスト駆動の初期化プロセスを可能にすることがリクエストされたときに、サービス及び関連する従属サービス／アプリケーションを動的に立ち上げることができる。
【００４２】
図５は、コンピューティングデバイスにおけるオペレーティングシステムのサービスを管理する方法５００のためのフローチャートである。例えば、方法５００は、図１の車載コンピューティングシステム１０９によって実行され、車載コンピューティングシステムにおいてロードを試みているアプリケーションによって出されたサービスリクエストをハンドルすることができる。方法は、５０２において、コンピューティングデバイスのサービスマネージャにおいて、サービスを求めるリクエストを受信することを含む。５０４に示すように、リクエストは、サービスを利用するアプリケーションから受信することができる。例えば、図４における方法４００の４１０に関連して記述したように、方法５００を実行して、立ち上げを試みているアプリケーションに関する従属サービスを立ち上げることができる。方法５００は、５０６において、リクエストされたサービスがコンピューティングデバイスにおいて既に実行されているかどうかを決定することを含む。サービスが未だ実行されていない場合には（例えば、５０６における「ＮＯ」）、方法は、５０８に進み、リクエストされたサービスを起動することをシステム＿サービスプロセスに通知し、５１０に進み、サービスの起動を待機する。サービスが起動中（または、サービスが既に実行されている、５０６における「ＹＥＳ」の場合）には、方法は、５１２に進み、サービスのリクエスタ（例えば、サービスをリクエストしたアプリケーション）にサービスハンドルを戻す。サービスハンドルは、サービスが起動中／後である、及び／またはサービスを呼び出すためのアプリケーションによってサービスを利用できることの確認としての機能を果たすことができる。
【００４３】
図６は、ドライバと種々のステージにおいてロードできる関連するハードウェアインスタンスとの間の関係を示すブロック図である。図２に関して前述したような種々のステージ（例えば、プレシステム＿サーバのステージ及びポストシステム＿サーバのステージ）においてロードできるクラスと同様に、ドライバ、及び使用特性に基づいてステージにおける関連するハードウェアインスタンスをロードすることによって、コンピューティングデバイス／オペレーティングシステム初期化を加速させることができる。例えば、第一のドライバ、ドライバ１は、ハードウェアインスタンス６０２の第一のグループをサポートし、第二のドライバ、ドライバ２は、ハードウェアインスタンス６０４の第二のグループをサポートすることができる。各ハードウェアインスタンスは、ハードウェアインスタンス６０２ａ〜ｄ及び６０４ａ〜ｃの各々の内側の数字によって例証されるような特定の初期化のステージにおいて使用されるものとして指定することができる。例えば、（ドライバ１によってサポートされる）ハードウェアインスタンス６０２ｂ、及び（ドライバ２によってサポートされる）ハードウェアインスタンス６０４ａは、これらのハードウェアインスタンスの優先度に基づいて、ステージ１に関連付くことができる。ステージ１のハードウェアインスタンスは、システムにおいて最も重要なハードウェアインスタンスであり得る。言い換えれば、ステージ１のハードウェアインスタンスは、システムの動作に影響を与え得、かつ／またはオペレーティングシステムの初期化中またはその直後に起動されるアプリケーションまたは他のプロセスに利用され得る。例えば、ステージ１のハードウェアインスタンスは、図４の方法４００における４０４に言及した重要サービスをロードするために、かつ／または重要サービスによって利用され得る。
【００４４】
図６に例証するように、各ステージにおいて、影付きのハードウェアインスタンスは、そのステージ中に初期化される、及び／またはそのステージに入るときには既に初期化されているハードウェアインスタンスを表す。例えば、ステージ１において、ステージ１として指定されたすべてのハードウェアインスタンス（例えば、ハードウェアインスタンス６０２ｂ及び６０４ａ）が初期化される。ステージ２では、ステージ１として指定されたハードウェアインスタンスは、既に初期化されていて、ステージ２として指定されたハードウェアインスタンス（例えば、ハードウェアインスタンス６０２ｃ及び６０４ｃ）が、新規に初期化される。ステージ３では、すべてのハードウェアインスタンスが、既に初期化されている（ステージ１及びステージ２のインスタンス）、または新規に初期化される（例えば、ステージ３のハードウェアインスタンス６０２ａ、６０２ｄ及び６０４ｂ）。一部のオペレーティングシステムは、ハードウェアコンポーネントをシステムにおいて利用可能な関連するカーネルを識別するためのデバイスツリーを利用することができる。各ハードウェアインスタンスについての初期化のステージの表示を、ステージに従いハードウェアインスタンスをカーネルが選択的にロードできるデバイスツリーの新規のエントリとして追加することができる。
【００４５】
図７は、初期化されたドライバに関してハードウェアインスタンスを選択的に初期化する方法７００のためのフローチャートである。方法７００は、図１の車載コンピューティングシステム１０９などの車載コンピューティングシステムによって実行され、デバイスについての起動速度を増大することができる。方法７００は、７０２において、オペレーティングシステムによって使用可能なドライバを識別する通知を受信することを含む。７０４に示すように、ドライバの使用は、アプリケーション及び／またはプロセスによってリクエストすることができる。例えば、システム＿サーバプロセス及び／または他の初期化アプリケーション／プロセスが、起動中のフラッシュメモリハードウェアをサポートするドライバの使用をリクエストすることができる。方法は、７０６において、７０２の通知において識別されたドライバを初期化することを含む。前述した実施例に続いて、フラッシュメモリは、コンピューティングデバイスにおける複数個のメモリ管理回路のコントローラ（ＭＭＣコントローラ）のうちの１つによって制御することができる。すべてのＭＭＣコントローラが単一ドライバによってサポートされるので、そのドライバをリクエストし、その後、フラッシュメモリを使用するリクエストに応答してそれを初期化することができる。
【００４６】
方法は、７０８において、ドライバのハードウェア初期化ルーチンを呼び出すことを含む。７１０に示すように、ハードウェア初期化ルーチンは、ドライバによってサポートされる各ハードウェアインスタンスについて、そのハードウェアインスタンスを第一のステージにおいて初期化すべきかどうかを決定することを含む。例えば、図６に関して前述したように、各ハードウェアインスタンスは、ハードウェアインスタンスがシステムによって使用される（それ故に、初期化される）相対的時間を示す特定のステージに関連付けることができる。所与のハードウェアインスタンスが第一のステージに関連しない場合には、次に、方法は、７１２に示すように、そのハードウェアインスタンスについてのエントリを関連するステージリストに追加することを含む（例えば、ハードウェアインスタンスが第二のステージに関連する場合には、ハードウェアインスタンスについてのエントリを第二のステージリストに追加するなど）。反対に、７１４に示すように、所与のハードウェアインスタンスが第一のステージに関連する場合には、方法は、そのハードウェアインスタンスを初期化することを含む。このようにして、ドライバによってサポートされる各ハードウェアインスタンスを評価し、第一のステージにおいて利用されるハードウェアインスタンスのみをロードすることによって、初期化ローディング時間を短縮することができる。
【００４７】
前述した実施例に続いて、すべてのＭＭＣコントローラが同じドライバによってサポートされるので、フラッシュメモリのためのＭＭＣコントローラをサポートするドライバの初期化によって、各ＭＭＣコントローラ（及び、関連するハードウェア）を評価することができる。例えば、別のＭＭＣコントローラが、第三のステージに関連し得る、ＷｉＦｉチップなどのネットワーキングハードウェアを制御することができる（例えば、ＷｉＦｉチップは、初期化プロセスにおいてフラッシュメモリよりもかなり後になるまで、または初期化プロセスが既に完了した後にしか要求／リクエストされない）。従って、ＭＭＣコントローラドライバをロードするときに、（第一のステージに関連する）フラッシュメモリのためのＭＭＣコントローラを初期化し、その一方で、第三のステージに到達したときに初期化すべき（第三のステージに関連する）ＷｉＦｉカードのためのＭＭＣコントローラを第三のステージリストに追加することができる。このようにして、複数のハードウェアインスタンスをサポートするドライバをロードする場合でさえも、リクエストされたハードウェアインスタンスのみをロードすることによって、初期化ロード時間を短縮することができる。
【００４８】
方法は、７１６において、すべてのドライバが完了したかどうかを決定することを含む。例えば、７０６〜７１４に記述したプロセスは、使用がリクエストされたすべてのドライバについて繰り返すことができる。いくつかの実施形態では、システムのすべてのドライバを、ステップ７０６〜７１４を通じて評価することができる。いずれの実施例でも、すべてのドライバ（使用がリクエストされた及び／またはシステムのすべてのドライバ）が完了していない場合には（例えば、７１６における「ＮＯ」）、方法は、７０６に戻り、次のドライバを初期化して、次のそのドライバのためのハードウェア初期化ルーチンを進める。すべてのドライバ（使用がリクエストされた及び／またはシステムのすべてのドライバ）が完了した場合には（例えば、７１６における「ＹＥＳ」）、方法は、７１８に進み、アプリケーション／プロセス（例えば、７０２／７０４においてドライバ／ハードウェアインスタンスの使用をリクエストしたアプリケーション／プロセス）を起動する。方法７００の前のステップは、第一の初期化ステージ中に、オペレーティングシステムのカーネルによって完了することができた。アプリケーションの起動後、システムは、車両、コンピューティングデバイス及び／またはユーザ入力の状態を管理／監視して、ステージ遷移のカーネルに情報を与えることができる。方法は、７２０において、ステージ変更通知（例えば、第一の初期化のステージから第二のステージへの変更）を待機することを含む。例えば、ステージ変更通知は、現在のステージについてのすべてのローディング及び他のタスクの完了に応答して、または新規のアプリケーションロードリクエストに応答して提供することができる。方法は、７２２に示すように、ステージ変更に応答して、通知において識別されたステージに関連するハードウェアインスタンスのリストを取り出すことを含む。例えば、第一のステージにおいては即座に初期化されない各ハードウェアインスタンスの、７１２における関連するステージリストへの追加によって、７２２において言及され得る、各ステージにおけるハードウェアインスタンスのリストの生成及び更新が可能になる。７２４において、取り出したリストにおけるすべてのハードウェアインスタンスを初期化する。
【００４９】
所与のステージにおける各ハードウェアインスタンスの初期化に応答して、方法は、７２６に進み、すべてのステージが完了したか否かを評価する。例えば、システムは、初期化されていない追加のハードウェアインスタンスが追加的なステージリストに存在しているか否かを決定することができる。すべてのステージが完了していない場合には（例えば、７２６における「ＮＯ」）、方法は、７２０に戻り、ステージが次のステージに変更されることを待機する。すべてのステージが完了した場合には（例えば、７２６における「ＹＥＳ」）、方法は、終了する、または戻ってさらなる初期化リクエストを待機する。
【００５０】
ＭＭＣコントローラ及び関連するハードウェア要素（例えば、フラッシュメモリ及びＷｉＦｉチップ）についての前述した実施例に加えて、方法７００の一部として、他のドライバとハードウェア要素との組み合わせを評価及び初期化することができる。追加の、非限定的な実施例として、コンピューティングデバイスは、タッチスクリーンセンサ、ラジオチューニング制御及び電力管理チップのいずれかにその各々が接続された、インター集積回路コントローラ（Ｉ２Ｃコントローラ）の三つのインスタンスを含むことができる。コンピューティングデバイスは、ＢＬＵＥＴＯＯＴＨ（登録商標）チップ、車両インターフェースプロセッシングチップなどに接続するのに使用できるシリアルバスインターフェース（例えば、万能非同期送受信機−ＵＡＲＴ）の四つのインスタンスを含むことができる。そのようなコントローラのインスタンスは、前述したＭＭＣコントローラの実施例と同様に、ブートするステージに基づいて有効にすることができる。他の実施例では、ハードウェア要素（例えば、ＵＳＢインターフェース／チップ、ディスプレイなど）は、関連するステージにおいてロードできる、単一ドライバに関連する単一インスタンスとして存在することができる。例えば、ディスプレイは、１つのハードウェアインスタンス（ディスプレイ）のみをサポートするディスプレイドライバに関連付くことができる。従って、ディスプレイが（例えば）ステージ２に関連する場合には、ディスプレイドライバは、ステージ２までロード／初期化しなくても良い。ドライバを初期化するときに、ドライバによって１つのみのハードウェアインスタンスがサポートされるので、ドライバの初期化に応答してハードウェアインスタンスを初期化することができる。
【００５１】
図８は、コンピューティングデバイスにおいて最後に使用されたアプリケーションをロードするための方法８００のフローチャートである。例えば、方法８００は、図１の車載コンピューティングデバイス１０９などの車載コンピューティングデバイスによって実行することができる。方法８００は、８０２において、コンピューティングデバイスを起動することを含む。方法、８０４において、ナビゲーションアプリケーションが、コンピューティングデバイスにおいて最後に使用されたアプリケーションであったことを決定することを含む。例えば、ナビゲーションアプリケーションは、コンピューティングデバイスの最後のシャットダウン事象において実行すべき最後のアプリケーションであり得た、かつ／またはコンピューティングデバイスのシャットダウン事象よりも前にユーザ入力を受信する及び／若しくはアクションを実行するための最後のアプリケーションであり得る。方法は、８０６において、ナビゲーションアプリケーションによって使用されるサービスを求めるリクエストを受信することを含む。８０８に示すように、コンピューティングデバイスにおいて未だ実行されていないリクエストからの任意のサービスをロードすることができる。８１０において、各々のリクエストされたサービスについてのサービスハンドルをナビゲーションアプリケーションに戻す。方法は、８１２において、ＧＰＳセンサのためのドライバ（複数可）のユーザを求めるリクエストを受信することを含む。例えば、ナビゲーションアプリケーションは、ＧＰＳセンサを利用して動作させ、それ故に、アプリケーションは、ロードすべき、ＧＰＳセンサのためのドライバをリクエストし、この要素にアクセスすることができる。
【００５２】
方法は、８１４において、ＧＰＳセンサをサポートする任意のドライバに関連するハードウェア初期化ルーチンを呼び出すことを含む。８１６において、ＧＰＳセンサを初期化し、８１８において、現在の（または、前の）初期化のステージに関連し、ドライバによってサポートされる任意の残りのハードウェアインスタンスをロードする。例えば、初期化ルーチンがステージ１にある場合には、８１８において、ＧＰＳセンサをサポートするドライバは、ステージ１に関連する（例えば、ステージ１中に初期化／使用されるものとして指定された）他のハードウェアインスタンスもサポートし、そのようなハードウェアインスタンスをロードする。方法は、８２０において、ドライバによってサポートされるが、現在のまたは前の初期化のステージに関連しないハードウェアインスタンスについてのエントリを関連するステージリストに追加することを含む。８２２において、ＧＰＳセンサ及び従属サービスの初期化時に、ＨＭＩ通じてナビゲーションアプリケーションを立ち上げることができる。
【００５３】
前述したシステム及び方法は、コンピューティングデバイスのオペレーティングシステムの初期化中のクラスの選択的なロード方法も提供する。この方法は、仮想マシンを初期化することと、第一のクラスリストから選択されたクラスをロードすることと、コンピューティングデバイスのリソースをロードすることと、オペレーティングシステムのサービスを初期化してサービスマネージャを用いてそのサービスを登録するように構成されたサービスローディングプロセスをロードすることと、及びサービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードすることと、を含む。方法の第一の実施例において、第一のクラスリストにおける各クラスは、追加的にまたは代替的に、ロード時間閾値よりも短いロード時間を有し、プロセス閾値よりも多い数のプロセスに利用され得る。方法の第二の実施例は、選択的に、第一の実施例を含み、さらに、第二のクラスリストにおける各クラスが、ロード時間閾値よりも長いロード時間を有し、プロセス閾値よりも多い数のプロセスに利用されることを含む。方法の第三の実施例は、選択的に、第一及び第二の実施例の１つ以上を含み、さらに、アプリケーションを分岐するためのコマンドを受信するためのソケットを待機し、そしてリクエストされたアプリケーションを分岐するためのコマンドの受信に応答して、リクエストされたアプリケーションをロードするためにリクエストされたアプリケーションを分岐することを含む。方法の第四の実施例は、選択的に、第一〜第三の実施例の１つ以上を含み、さらに、サービスローディングプロセスのローディングが、さらに、ヒューマンマシンインターフェースを立ち上げる前にサービスローディングプロセスによって重要サービスのみをロードすることを含む、ことを含む。方法の第五の実施例は、選択的に、第一〜第四の実施例の１つ以上を含み、さらに、ヒューマンマシンインターフェースを立ち上げることと、及びヒューマンマシンインターフェースを介して最後に使用されたアプリケーションを立ち上げることと、を含む。方法の第六の実施例は、選択的に、第一〜第五の実施例の１つ以上を含み、さらに、アプリケーションを立ち上げるためのリクエストに応答してアプリケーションを立ち上げることを含む。方法の第七の実施例は、選択的に、第一〜第六の実施例の１つ以上を含み、さらに、コンピューティングデバイスのサービスマネージャにおいて、リクエストされたサービスについてのアプリケーションからのリクエストを受信することと、リクエストされたサービスがコンピューティングデバイスにおいて既に実行されているかどうかを決定することと、リクエストされたサービスが未だ実行されていない場合に、リクエストされたサービスを起動することと、及びリクエストされたサービスが実行されている場合に、リクエストされたサービスに関連するサービスハンドルをアプリケーションに戻すことと、を含む。方法の第八の実施例は、選択的に、第一〜第七の実施例の１つ以上を含み、さらに、使用すべきドライバの通知を受信することと、ドライバを初期化することと、及びドライバによってサポートされるハードウェアインスタンスを選択的に初期化することと、を含む。方法の第九の実施例は、選択的に、第一〜第八の実施例の１つ以上を含み、さらに、ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することが、ドライバによってサポートされる各ハードウェアインスタンスに関連する初期化のステージを決定することと、及び第一の初期化のステージに関連する各ハードウェアインスタンスについて、そのハードウェアインスタンスを初期化することとを含む、ことを含む。方法の第十の実施例は、選択的に、第一〜第九の実施例の１つ以上を含み、さらに、ドライバによってサポートされるハードウェアインスタンスを選択的に初期化することが、さらに、第一の初期化のステージに関連しない各ハードウェアインスタンスについて、ハードウェアインスタンスに関連するステージにマッチする関連するステージリストに、そのハードウェアインスタンスについてのエントリを追加することを含む、ことを含む。方法の第十一の実施例は、選択的に、第一〜第十の実施例の１つ以上を含み、さらに、第一の初期化ステージ後の各初期化ステージにおいて、その初期化ステージに関連するステージリストを取り出すことと、及びその初期化ステージに関連するステージリストに含まれる各ハードウェアインスタンスを初期化することと、を含む。
【００５４】
前述したシステム及び方法は、プロセッサと、仮想マシンを初期化するための、プロセッサによって実行可能な命令を記憶するストレージデバイスと、を備えたコンピューティングデバイスも提供し、そしてこの命令は、第一のクラスリストから選択されたクラスをロードすることと、コンピューティングデバイスのリソースをロードすることと、オペレーティングシステムのサービスを初期化してサービスマネージャを用いてそのサービスを登録するように構成されたサービスローディングプロセスをロードすることと、及びサービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスをロードすることと、を含む。コンピューティングデバイスの第一の実施例において、仮想マシンは、追加的にまたは代替的に、Ｄａｌｖｉｋ仮想マシンであっても良く、命令は、追加的にまたは代替的に、さらに、第一のクラスリストから選択されたクラスをロードするためのＺｙｇｏｔｅプロセスを呼び出すように実行可能であっても良い。コンピューティングデバイスの第二の実施例は、選択的に、第一の実施例を含み、さらに、コンピューティングデバイスが、車両内に統合された車載コンピューティングデバイスを備える、ことを含む。コンピューティングデバイスの第三の実施例は、選択的に、第一及び第二の実施例の１つ以上を含み、さらに、サービスローディングプロセスが、プロセス間通信ソケットを介した、新規のアプリケーションを求めるコマンドの検出に応答して、新規のアプリケーションをロードするように構成されることを含む。コンピューティングデバイスの第四の実施例は、選択的に、第一〜第三の実施例の１つ以上を含み、さらに、第一のクラスリストにおける各クラスが、ロード時間閾値よりも短いロード時間を有し、プロセス閾値よりも多い数のプロセスに利用され、かつ第二のクラスリストにおける各クラスが、ロード時間閾値よりも長いロード時間を有し、プロセス閾値よりも多い数のプロセスに利用されることを含む。
【００５５】
前述したシステム及び方法は、１つ以上のプロセッシングコアを含むプロセッサと、車載コンピューティングデバイスのオペレーティングシステムを初期化するための命令を記憶するストレージデバイスと、を備えた車載コンピューティングデバイスも提供し、この命令は、仮想マシンを初期化し、プロセッサスレッドプールにおけるスレッドの数がプロセッサに含まれるプロセッサコアの数に基づくプロセッサスレッドプールを使用して第一のクラスリストの各クラスをロードし、プロセッサスレッドプールを使用して車載コンピューティングデバイスのリソースをロードし、オペレーティングシステムのサービスを初期化してサービスマネージャを用いてそのサービスを登録するように構成されたサービスローディングプロセスをロードし、そしてプロセッサスレッドプールを使用して、サービスローディングプロセスのロード後に、第二のクラスリストから選択されたクラスのみをロードするように、プロセッサによって実行可能である。車載コンピューティングデバイスの第一の実施例において、第一のクラスリストの各クラスのローディングは、追加的にまたは代替的に、プロセッサスレッドプールにおけるスレッドの数に２を乗じた数に等しい数の、第一のリストからのクラスを同時にロードすることを含むことができる。車載コンピューティングデバイスの第二の実施例は、選択的に、第一の実施例を含み、さらに、命令が、さらに、使用すべきドライバの通知を受信し、ドライバを初期化し、そしてドライバによってサポートされるハードウェアインスタンスを選択的に初期化するように実行可能であることを含む。車載コンピューティングデバイスの第三の実施例は、選択的に、第一及び第二の実施例の１つ以上を含み、さらに、第一のクラスリストの各クラスをロードする命令が、第一のクラスのクラスのみをロードし、かつ第二のクラスのクラスは全くロードしない命令を含み、第二のクラスリストからのクラスをロードする命令が、第二のクラスリストからのクラスのみをロードし、かつ第一のクラスリストのクラスは全くロードしない命令を含む、ことを含む。
【００５６】
実施形態の記述は、例証及び説明を目的として提示した。実施形態についての適切な変更及び変化を、前述に照らして実行する、または方法の実践から得ることができる。例えば、別の様に注記されていない限り、記述した方法の１つ以上は、図１に関連して記述した車載コンピューティングシステム１０９などの適切なデバイス及び／またはデバイスの組み合わせによって実行することができる。方法は、例えば、ストレージデバイス、メモリ、ハードウェアネットワークインターフェース／アンテナ、スイッチ、アクチュエータ、クロック回路などの１つ以上の追加のハードウェア要素と組み合わされた１つ以上の論理デバイス（例えば、プロセッサ）を用いて、記憶した命令を遂行することによって実行することができる。記述した方法及び関連するアクションは、本出願に記述した順序に加えて、様々な順序、並行及び／または同時でも実行することができる。記述したシステムは、事実上例示であり、追加の要素を含む、かつ／または要素を除外することができる。例えば、多くの例証となる実施例を、ＡＮＤＲＯＩＤ（登録商標）オペレーティングシステム及び車載コンピューティングデバイスに関連して記述したが、前述の方法及びシステムを、任意の適切なハードウェア（例えば、携帯用コンピューティングデバイス、スマートフォン、タブレット、ラップトップ、デスクトップコンピューティングデバイス、サーバのコンピューティングシステムなど）及び／またはオペレーティングシステムに含ませることができる及び／またはそれらによって利用できることを理解すべきである。本開示の主題は、開示した様々なシステム及び構成、ならびに他の特徴、機能及び／または特性のすべての新規のかつ自明でない組み合わせ及びサブコンビネーションを含む。
【００５７】
本出願に使用されるような、単数形及び「ａ」または「ａｎ」という単語に続いて列挙される要素またはステップは、そのような除外が記載されていない限り、前述の要素またはステップの複数形を除外しないように理解すべきである。さらに、本開示の「ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ」または「ｏｎｅ  ｅｘａｍｐｌｅ」との言及は、列挙した特徴も組み込む追加の実施形態の存在を除外するように解釈されることは意図しない。「ｆｉｒｓｔ」、「ｓｅｃｏｎｄ」及び「ｔｈｉｒｄ」などの用語は、単にラベルとして使用され、それらの対象に数値的要件または特定の位置秩序を課すことは意図しない。以下の特許請求の範囲は、特に、新規のかつ自明でないものとみなされる前述の開示からの主題を指し示す。
【図１】
0006564845.tif 000002
【図２】
0006564845.tif 000003
【図３】
0006564845.tif 000004
【図４】
0006564845.tif 000005
【図５】
0006564845.tif 000006
【図６】
0006564845.tif 000007
【図７】
0006564845.tif 000008
【図８】
0006564845.tif 000009