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