(57)【要約】【課題】異なる種類のＣＰＵを用いる場合でもマイグレーションを実現できる。【解決手段】ハイパーバイザは、アプリケーションを実行可能な複数のオペレーティングシステムを実行可能な仮想環境を提供し複数のＣＰＵにより動作するハイパーバイザであって、複数のオペレーティングシステムの稼働状態を監視する監視部と、稼働状態に基づき第１のオペレーティングシステムにおいて実行されている第１のアプリケーションに代えて、第２のオペレーティングシステムにおいて第１のアプリケーションと同様の機能を有する第２のアプリケーションを動作させる移動管理部と、を備え、移動管理部は、第２のオペレーティングシステムを実行しているＣＰＵの種類に基づき第２のアプリケーションを実現するプログラムファイルを選択する。【選択図】図１
2019139453.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションを実行可能な複数のオペレーティングシステムを実行可能な仮想環境を提供し複数のＣＰＵにより動作するハイパーバイザであって、
前記複数のオペレーティングシステムの稼働状態を監視する監視部と、
前記稼働状態に基づき第１の前記オペレーティングシステムにおいて実行されている第１のアプリケーションに代えて、第２の前記オペレーティングシステムにおいて前記第１のアプリケーションと同様の機能を有する第２のアプリケーションを動作させる移動管理部と、を備え、
前記移動管理部は、前記第２のオペレーティングシステムを実行しているＣＰＵの種類に基づき前記第２のアプリケーションを実現するプログラムファイルを選択するハイパーバイザ。
【請求項２】
請求項１に記載のハイパーバイザであって、
実現される機能、ＣＰＵの種類、およびプログラムファイルの対応関係を示すプログラム対応情報を有し、
前記移動管理部は、前記プログラム対応情報を参照して前記第２のアプリケーションを実現するプログラムファイルを選択するハイパーバイザ。
【請求項３】
請求項２に記載のハイパーバイザであって、
前記プログラム対応情報における前記ＣＰＵの種類は、少なくともＣＰＵの命令セット、およびレジスタ構成に基づいて分類されるハイパーバイザ。
【請求項４】
請求項１に記載のハイパーバイザであって、
割り込み要求の番号と前記オペレーティングシステムの対応関係を示す割り込み対応情報を有し、
前記割り込み対応情報に基づき前記オペレーティングシステムに対応する番号の前記割り込み要求を転送し、前記移動管理部が前記第２のアプリケーションを動作させると前記割り込み対応情報における前記第１のオペレーティングシステムを前記第２のオペレーティングシステムに書き換える割り込み転送部をさらに備えるハイパーバイザ。
【請求項５】
請求項１に記載のハイパーバイザであって、
前記移動管理部は、前記第１のオペレーティングシステムの動作が停止している場合、または前記第１のアプリケーションの動作に異常がある場合に、前記第１のオペレーティングシステムにおいて実行されている前記第１のアプリケーションに代えて、前記第２のオペレーティングシステムにおいて前記第２のアプリケーションを動作させるハイパーバイザ。
【請求項６】
アプリケーションを実行可能な複数のオペレーティングシステムを実行可能な仮想環境を提供し複数のＣＰＵにより動作するハイパーバイザであって、
前記複数のオペレーティングシステムの稼働状態を監視する監視部と、
前記稼働状態に基づき第１の前記オペレーティングシステムにおいて実行されている第１のアプリケーションに代えて、第２の前記オペレーティングシステムにおいて前記第１のアプリケーションと同様の機能を有する第２のアプリケーションを動作させる移動管理部と、
割り込み要求の番号と前記オペレーティングシステムの対応関係を示す割り込み対応情報と、
前記割り込み対応情報に基づき前記オペレーティングシステムに対応する番号の前記割り込み要求を転送し、前記移動管理部が前記第２のアプリケーションを動作させると前記割り込み対応情報における前記第１のオペレーティングシステムを前記第２のオペレーティングシステムに書き換える割り込み転送部とを備えるハイパーバイザ。
【請求項７】
アプリケーションを実行可能な複数のオペレーティングシステムを実行可能な仮想環境を提供し複数のＣＰＵにより動作するハイパーバイザを備える演算装置であって、
前記ハイパーバイザは、
前記複数のオペレーティングシステムの稼働状態を監視する監視部と、
前記稼働状態に基づき第１の前記オペレーティングシステムにおいて実行されている第１のアプリケーションに代えて、第２の前記オペレーティングシステムにおいて前記第１のアプリケーションと同様の機能を有する第２のアプリケーションを動作させる移動管理部と、を備え、
前記移動管理部は、前記第２のオペレーティングシステムを実行しているＣＰＵの種類に基づき前記第２のアプリケーションを実現するプログラムファイルを選択する演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハイパーバイザ、および演算装置に関する。
【背景技術】
【０００２】
近年、車両に搭載され演算を行う車載装置の重要性が増している。車載装置における演算処理は高い可用性が要求され、ある装置または装置のある部分に何らかの問題が生じた場合は別な装置または装置の他の部分で同様の処理を行うこと、いわゆるマイグレーションが求められる。その一方で車載装置が扱うデータ量が増加しており、演算能力の向上が要求されている。演算能力の向上は、従来はプロセッサの動作周波数の高速化により達成されていたが、製造プロセスの微細化速度の鈍化や微細化に伴う発熱量の増加の問題により、近年は種類の異なるＣＰＵを組み合わせる構成が選択される傾向にある。特許文献１には、車両に搭載された車載機器を制御するために、第１の電子制御装置と第２の電子制御装置とが連携した処理を行う車両用制御システムであって、前記第１の電子制御装置と前記第２の電子制御装置とは、それぞれ、連携処理を行うための連携処理用アプリケーションプログラムを有するとともに、それら連携処理用アプリケーションプログラムを協調して実行させるためのベーシックソフトウエアとしての役割を果たす、所定の役割分担の下に協調して動作する第１ＯＳプログラムと第２ＯＳプログラムとをそれぞれ有しており、前記第２の電子制御装置が保有する第２ＯＳプログラムは、分担する役割が異なる複数の中から選定されたものであり、前記第１の電子制御装置が保有する第１ＯＳプログラムは、分担する役割を変更可能に構成され、それにより、分担する役割が異なる複数の中のいずれの第２ＯＳプログラムとも協調した動作を行うことが可能であって、前記第１の電子制御装置は、前記第２の電子制御装置から、前記第２ＯＳプログラムが分担する役割についての情報を取得する取得部と、前記取得部により取得した、前記第２ＯＳプログラムが分担する役割を示す情報に基づき、当該第２ＯＳプログラムと協調して動作することができるように、第１ＯＳプログラムの分担する役割を決定する決定部と、を備える車両用制御システムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−１２８３０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載されている発明では、異なる種類のＣＰＵを用いる場合にマイグレーションを実現できない。
【課題を解決するための手段】
【０００５】
本発明の第１の態様によるハイパーバイザは、アプリケーションを実行可能な複数のオペレーティングシステムを実行可能な仮想環境を提供し複数のＣＰＵにより動作するハイパーバイザであって、前記複数のオペレーティングシステムの稼働状態を監視する監視部と、前記稼働状態に基づき第１の前記オペレーティングシステムにおいて実行されている第１のアプリケーションに代えて、第２の前記オペレーティングシステムにおいて前記第１のアプリケーションと同様の機能を有する第２のアプリケーションを動作させる移動管理部と、を備え、前記移動管理部は、前記第２のオペレーティングシステムを実行しているＣＰＵの種類に基づき前記第２のアプリケーションを実現するプログラムファイルを選択する。
本発明の第２の態様によるハイパーバイザは、アプリケーションを実行可能な複数のオペレーティングシステムを実行可能な仮想環境を提供し複数のＣＰＵにより動作するハイパーバイザであって、前記複数のオペレーティングシステムの稼働状態を監視する監視部と、前記稼働状態に基づき第１の前記オペレーティングシステムにおいて実行されている第１のアプリケーションに代えて、第２の前記オペレーティングシステムにおいて前記第１のアプリケーションと同様の機能を有する第２のアプリケーションを動作させる移動管理部と、割り込み要求の番号と前記オペレーティングシステムの対応関係を示す割り込み対応情報と、前記割り込み対応情報に基づき前記オペレーティングシステムに対応する番号の前記割り込み要求を転送し、前記移動管理部が前記第２のアプリケーションを動作させると前記割り込み対応情報における前記第１のオペレーティングシステムを前記第２のオペレーティングシステムに書き換える割り込み転送部とを備える。
本発明の第３の態様による演算装置は、アプリケーションを実行可能な複数のオペレーティングシステムを実行可能な仮想環境を提供し複数のＣＰＵにより動作するハイパーバイザを備える演算装置であって、前記ハイパーバイザは、前記複数のオペレーティングシステムの稼働状態を監視する監視部と、前記稼働状態に基づき第１の前記オペレーティングシステムにおいて実行されている第１のアプリケーションに代えて、第２の前記オペレーティングシステムにおいて前記第１のアプリケーションと同様の機能を有する第２のアプリケーションを動作させる移動管理部と、を備え、前記移動管理部は、前記第２のオペレーティングシステムを実行しているＣＰＵの種類に基づき前記第２のアプリケーションを実現するプログラムファイルを選択する。
【発明の効果】
【０００６】
本発明によれば、異なる種類のＣＰＵを用いる場合でもマイグレーションを実現できる。
【図面の簡単な説明】
【０００７】
【図１】ＥＣＵ１０００の構成図
【図２】図２（ａ）および図２（ｂ）はアプリ対応表１１５０の一例を示す図
【図３】図３（ａ）および図３（ｂ）は割り込み対応表１１４１の一例を示す図
【図４】アプリ移動表１１２１の一例を示す図
【図５】マイクロカーネル抽象化部１１１０の動作を表すフローチャート
【図６】変形例において、ハイパーバイザ１１００を実現するプログラムファイルを記録媒体やデータ信号を通じてＥＣＵ１０００に提供する様子を示す図
【発明を実施するための形態】
【０００８】
―第１の実施の形態―
以下、図１〜図５を参照して、本発明に係るハイパーバイザの第１の実施の形態を説明する。ソフトウエアであるハイパーバイザは様々な演算装置に実装可能であるが、本実施の形態ではハイパーバイザがＥＣＵ、すなわち電子制御装置（Electronic
Control Unit）に備えられる例を説明する。
【０００９】
（ＥＣＵ１０００の構成）
図１は本発明にかかるハイパーバイザ１１００を備えるＥＣＵ１０００の構成図である。ＥＣＵ１０００は、ハードウエア層１００と、ハイパーバイザ１１００と、仮想環境１２００とから構成される。ハードウエア層１００は複数のハードウエアから構成され、ハイパーバイザ１１００の機能はハードウエア層１００に含まれるハードウエアにより実現される。仮想環境１２００はハイパーバイザ１１００によって実現される環境であり、その仮想環境１２００の中でオペレーティングシステム（以下、「ＯＳ」と呼ぶ）およびアプリケーション（以下、「アプリ」と呼ぶ）が動作する。すなわち仮想環境１２００もハードウエア層１００に含まれるハードウエアにより実現される。
【００１０】
（ハードウエア層１００）
ハードウエア層１００は、第１ＣＰＵ１１と、第２ＣＰＵ１２と、第３ＣＰＵ１３と、メモリ２０と、フラッシュメモリ３０とを備える。第１ＣＰＵ１１、第２ＣＰＵ１２、および第３ＣＰＵ１３は中央演算装置であり、それぞれ独立に動作する。第１ＣＰＵ１１、第２ＣＰＵ１２、および第３ＣＰＵ１３は互いにハードウエア構成が異なる。たとえば実行可能な命令セット、レジスタ構成、および動作周波数の少なくとも１つが異なる。なお図１では３つのＣＰＵを示しているが、ＥＣＵ１０００はハードウエア構成が異なるＣＰＵを少なくとも２つ備えればよい。
【００１１】
メモリ２０は揮発性の読み書き可能な記憶領域、いわゆるＲＡＭであり、上述した各ＣＰＵがアクセスする。メモリ２０は、それぞれのＣＰＵのみがアクセス可能な領域と全てのＣＰＵがアクセス可能な領域である共有メモリ２１とを含む。すなわち第１ＣＰＵ１１、第２ＣＰＵ１２、および第３ＣＰＵ１３は、共有メモリ２１を介して相互に情報を授受できる。フラッシュメモリ３０は不揮発性の記憶領域である。フラッシュメモリ３０には、ハイパーバイザ、複数のＯＳおよび複数のアプリを実現するプログラムファイルが格納される。
【００１２】
（仮想環境１２００）
仮想環境１２００では、ＯＳが実行され、それらのＯＳにおいてアプリケーションが実行される。たとえば図１に示すように仮想環境１２００では、第１ＯＳ１２１１と、第２ＯＳ１２１２と、第３ＯＳ１２１３が実行される。第１ＯＳ１２１１は第１ＣＰＵ１１により実行され、第２ＯＳ１２１２は第２ＣＰＵ１２により実行され、第３ＯＳ１２１３は第３ＣＰＵ１３により実行される。それぞれのＯＳではアプリケーションを実行できる。以下では、ＣＰＵとＯＳの組み合わせを「環境」または「実行環境」と呼ぶ。たとえば同一のＯＳを用いる場合であっても実行するＣＰＵが異なる場合は、環境が異なると判断する。
【００１３】
（アプリのプログラムファイル）
本実施の形態ではアプリとは、ある特定の機能を発揮するコンピュータプログラムである。すなわち実現する機能が同一であれば、アプリケーションの実体、すなわちプログラムファイルが異なる場合でも同一のアプリとして扱う。すなわちアプリが同一か否かは、使用する命令コード等を考慮せずに判断する。ただし厳密には、プログラムファイルが異なる場合にはプログラムファイルを読み込んで実行されるアプリは同一ではないとする考え方もある。
【００１４】
ここでアプリケーションの実体、すなわちプログラムファイルについて説明する。プログラムファイルは、「実行可能ファイル」や「バイナリデータ」とも呼ばれる。ただしプログラムファイルは人間が読めるテキストデータでもよい。プログラムファイルがテキストデータの場合は、ＥＣＵ１０００がインタプリタに相当する機能を有する。
【００１５】
プログラムファイルは、原則としてＯＳごと、ＣＰＵごとに用意される。すなわち実行環境が異なる場合は原則として異なるプログラムファイルを用いる必要がある。そのためあるアプリを複数のＣＰＵ、複数のＯＳ上で実現するためには複数のプログラムファイルを用意する必要がある。ただしハードウエアが互換性を有している場合や共通の命令セットしか使用していない場合などは、１つのプログラムファイルを複数の実行環境で使用できる場合もある。
【００１６】
図２（ａ）および図２（ｂ）は、後述するアプリ対応表１１５０の一例を示す図である。ここではまず図２（ａ）を参照してアプリ対応表１１５０を説明する。図２（ａ）の１行目には、画像処理アプリは、タイプＣ１のＣＰＵを用いてオペレーティングシステムＯ１で実行するためにはプログラムファイル「ｂｉｎ０１」を用いることが示されている。すなわち図２では、画像処理アプリを３つのＣＰＵタイプと３つのＯＳの任意の組み合わせで実行するには、ｂｉｎ０１〜ｂｉｎ０８の８個のプログラムファイルが必要であることが示されている。換言するとｂｉｎ０１〜ｂｉｎ０８の８個のプログラムファイルは、同様の機能を有するともいえる。また、タイプＣ２のＣＰＵとＯ２の組み合わせ、およびタイプＣ３のＣＰＵとＯ２の組み合わせでは、同一のプログラムファイル「ｂｉｎ０５」を使用できる旨が記載されている。
【００１７】
なおＣＰＵごとのＣＰＵタイプはあらかじめ定められており、たとえばレジスタ構成や対応する命令セットなどにより決定される。たとえば動作周波数のみが異なる２つのＣＰＵは、レジスタ構成も対応する命令セットも同一なのでＣＰＵタイプは同一となる。
【００１８】
前述のフラッシュメモリ３０には、アプリを様々なＯＳとＣＰＵの組み合わせで実行可能なように、１つのアプリごとに複数のプログラムファイルが格納される。本実施の形態では、特定のアプリを仮想環境１２００において必要に応じて異なるＯＳに移動、すなわちマイグレーションさせ稼働を継続させる。本実施の形態において移動させる対象となるアプリを「管理対象アプリ」と呼ぶ。管理対象アプリは、ＥＣＵ１０００が主目的とする処理や機能を担うアプリである。ＯＳを動作させるためのアプリは管理対象アプリには含まれない。
【００１９】
なお図２（ａ）に示すアプリ対応表１１５０の例ではＣＰＵタイプとＯＳの対応を網羅的に示していた。しかしＥＣＵ１０００においてＣＰＵタイプごとに実行するＯＳが限定されている場合には、図２（ｂ）に示すようにアプリ対応表１１５０には実行するＣＰＵタイプとＯＳの組み合わせだけを記載してもよい。図１に戻って説明を続ける。
【００２０】
（ハイパーバイザ１１００）
ハイパーバイザ１１００は、マイクロカーネル抽象化部１１１０と、ハードウエア依存マイクロカーネル１１７０とを備える。ハイパーバイザ１１００は第１ＣＰＵ１１、第２ＣＰＵ１２、および第３ＣＰＵ１３が協力して実行する。換言するとハイパーバイザ１１００が提供する機能は３つのＣＰＵがそれぞれ動作することにより実現される。
【００２１】
ハードウエア依存マイクロカーネル１１７０は、第１ＣＰＵ１１に対応する第１ハードウエア依存マイクロカーネル（以下、「第１ＨＤＭ」と呼ぶ）１１７１と、第２ＣＰＵ１２に対応する第２ハードウエア依存マイクロカーネル（以下、「第２ＨＤＭ」と呼ぶ）１１７２と、第３ＣＰＵ１３に対応する第３ハードウエア依存マイクロカーネル（以下、「第３ＨＤＭ」と呼ぶ）１１７３とを備える。
【００２２】
第１ＨＤＭ１１７１は、第１ＣＰＵ１１がハイパーバイザ１１００の機能を実現するためにのソフトウエアである。たとえば第１ＨＤＭ１１７１は、ハイパーバイザ１１００が発行する実行命令を第１ＣＰＵ１１が実行可能な命令に書き換える。第２ＨＤＭ１１７２は、第２ＣＰＵ１２がハイパーバイザ１１００の機能を実現するためにのソフトウエアである。第３ＨＤＭ１１７３は、第３ＣＰＵ１３がハイパーバイザ１１００の機能を実現するためのソフトウエアである。
【００２３】
第１ＨＤＭ１１７１、第２ＨＤＭ１１７２、および第３ＨＤＭ１１７３の相互の通信により、ハイパーバイザ１１００は仮想環境１２００を構築する。仮想環境１２００では任意の数のＯＳが実行され、ＯＳ上ではアプリケーションが実行される。すなわちこれらのＯＳおよびアプリケーションは、いずれかのＣＰＵにより実行される。１つのＣＰＵが実行するＯＳおよびアプリケーションの数は任意である。
【００２４】
マイクロカーネル抽象化部１１１０は、アプリ移動管理部１１２０と、監視部１１６０と、割り込み転送部１１４０とを備える。マイクロカーネル抽象化部１１１０は、管理対象アプリが現在どの環境で動作しているかを示す情報を共有メモリ２１に保存する。割り込み転送部１１４０は、ハードウエア依存の割り込み要求信号（Interrupt ReQuest、以下「ＩＲＱ」と呼ぶ）を管理する割り込み対応表１１４１を有する。ＩＲＱは種類を判別するために番号が付されており、たとえばＩＲＱ１〜ＩＲＱ１５が存在する。割り込み対応表１１４１は、たとえばＩＲＱ０〜ＩＲＱ１５のそれぞれについて、仮想環境１２００のいずれのＯＳに転送するかを示すものである。
【００２５】
図３は割り込み対応表１１４１の一例を示す図である。図３（ａ）はある状態における割り込み対応表１１４１の一例を示す図であり、図３（ｂ）は後述する処理により書き換えられた後の割り込み対応表１１４１を示す図である。図３に示すように割り込み対応表１１４１は、０〜１５のＩＲＱ番号と、それぞれのＩＲＱ番号に対応する転送先のＯＳの名称が格納される。なお図３に示す例では全てのＩＲＱにいずれかのＯＳが割り当てられているが、割り当て対象が存在しないＩＲＱ番号があってもよい。
【００２６】
監視部１１６０は、仮想環境１２００において実行されているＯＳおよび動作している管理対象アプリ、さらにはハードウエア層１００の各ＣＰＵを対象として定期的にポーリング、すなわち動作情報の取得を行う。監視部１１６０は、取得した情報をアプリ移動管理部１１２０に出力する。監視部１１６０が取得する情報は、各ＯＳにおけるＣＰＵ負荷、空きメモリ容量、管理対象アプリのメモリ使用量およびＣＰＵ使用率、ハードウエア層１００のＣＰＵが動作しているか否かなどである。
【００２７】
アプリ移動管理部１１２０は、アプリ移動表１１２１およびアプリ対応表１１５０を有する。アプリ移動管理部１１２０は、監視部１１６０からポーリングにより取得した情報を受け取り、管理対象アプリを移動させるか否かを判断する。アプリ移動管理部１１２０は、管理対象アプリを実行しているＯＳが停止している場合や管理対象アプリの動作に異常がある場合に管理対象アプリを移動させると判断する。
【００２８】
アプリ移動管理部１１２０はたとえば、ＯＳを稼働させているＣＰＵが停止している場合にＯＳが停止していると判断する。またアプリ移動管理部１１２０は、管理対象アプリのメモリ使用量が増加し続ける場合、管理対象アプリのＣＰＵ負荷が０％、または１００％が所定時間以上継続する場合に管理対象アプリに異常があると判断する。そしてアプリ移動管理部１１２０はアプリ対応表１１５０を参照して移動先で実行するプログラムファイルを決定し、割り込みを転送した上で移動先で管理対象アプリを動作させる。
【００２９】
（アプリ移動表１１２１）
図４は、アプリ移動表１１２１の一例を示す図である。アプリ移動表１１２１は、たとえば表形式で表され、複数のレコードから構成される。各レコードは、アプリ１１２２、使用ＩＲＱ１１２３、ＣＰＵ名１１２４、ＣＰＵタイプ１１２５、ＯＳ１１２６、移行要件１１２７、ランク１１２８、ＣＰＵ負荷１１２９、および空きメモリ１１３０のフィールドを有する。アプリ移動表１１２１はあらかじめ作成されており、本実施の形態の範囲ではランク１１２８のフィールド以外は書き換えが発生しない。
【００３０】
アプリ１１２２のフィールドには、アプリケーションの名称が記入される。なお図２を参照して説明したように、アプリケーションは実行する環境により異なるプログラムファイルが必要になることが多い。使用ＩＲＱ１１２３のフィールドには、同一レコードのアプリ１１２２のフィールド値で特定されるアプリ（以下、「同一レコードのアプリ」と呼ぶ）が使用するＩＲＱ番号が記入される。
【００３１】
ＣＰＵ名１１２４のフィールドには、同一レコードのアプリを実行するＣＰＵの名称が記入される。ＣＰＵタイプ１１２５のフィールドには、ＣＰＵ名１１２４のフィールドに記入されたＣＰＵのタイプが記入される。ＯＳ１１２６のフィールドには、同一レコードのアプリを実行するＯＳの名称が記入される。移行要件１１２７のフィールドには、同一レコードのアプリをＣＰＵ名１１２４で特定されるＣＰＵがＯＳ１１２６で特定されるＯＳに移動させるために必要な要件が記入される。必要な要件には、少なくとも実行するプログラムファイルの名称が含まれ、追加のリソース、たとえばタイマなどが記入されることもある。
【００３２】
ランク１１２８のフィールドには、同一レコードのアプリを実行する適切さを示す順位が記入される。図４に示す例ではアプリ画像処理アプリは１行目から３行目の３つの組み合わせが示されているので、ランク１１２８には１〜３のいずれかが記入される。ただしその環境が使用できない場合、たとえばＯＳが動作を停止している場合などは使用不可である旨の記号、たとえば「Ｎ／Ａ」がランク１１２８に記入される。ランク１１２８のフィールドはアプリ移動管理部１１２０によって適宜書き換えられる。
【００３３】
ＣＰＵ負荷１１２９のフィールドには、アプリ移動管理部１１２０がランク１１２８を決定する基準の１つであるＣＰＵ負荷、すなわちＣＰＵ使用率が記入される。空きメモリ１１３０のフィールドには、アプリ移動管理部１１２０がランク１１２８を決定する基準の１つである空きメモリ容量が記入される。なお図４に示す例ではアプリ移動管理部１１２０がランク１１２８を決定する基準としてＣＰＵ負荷と空きメモリの２つを記載しているが、アプリ移動管理部１１２０は他の項目を基準としてもよいし、基準の数は２に限定されない。以上がアプリ移動表１１２１の説明である。
【００３４】
（ランク１１２８の更新）
アプリ移動表１１２１のランク１１２８の更新は、アプリ移動管理部１１２０によりたとえば以下のように行われる。アプリ移動管理部１１２０はランク１１２８を更新する前に監視部１１６０からポーリングで得られた情報を取得する。そしてアプリ移動表１１２１の各レコードについて、選択基準となっているＣＰＵ負荷１１２９の値とそのレコードにおける環境のポーリングで得られた値、および空きメモリ１１３０の値とそのレコードにおける環境のポーリングで得られた値を比較して評価値を算出する。
【００３５】
評価値の算出方法は任意であり、ＣＰＵ負荷が低いほど評価値は高くなり、空きメモリ容量が多いほど評価値は高くなる。評価値はたとえば、ＣＰＵ負荷により決定される０〜５０の値と、空きメモリにより決定される０〜５０の値を合算して０〜１００の値として算出される。たとえばポーリングで得られた値が各レコードに記載され値と同一であれば、その項目の評価値は２５であり、基準値から１０％の増減があるたびに評価値を５増減させる。このような算出によりアプリ移動管理部１１２０は評価値を算出する。
【００３６】
そしてアプリ移動管理部１１２０は、管理対象アプリごとに各レコードの評価値を順位付けし、その順位をランク１１２８のフィールドに記入する。ただし管理対象アプリを実行できないと判断する動作環境、たとえばＯＳが応答しない環境のレコードには、評価値にかかわらず実行不可を示す記号、たとえば「Ｎ／Ａ」を記入する。
【００３７】
（フローチャート）
図５はマイクロカーネル抽象化部１１１０の動作を表すフローチャートである。マイクロカーネル抽象化部１１１０はＥＣＵ１０００に電力が供給されると図５に示す動作を開始し、電源がオフにされるまでその動作を継続する。なお図５では動作終了を示すＥＮＤが記載されていないが、ＥＣＵ１０００の電源がオフにされるとマイクロカーネル抽象化部１１１０は動作を終了する。
【００３８】
マイクロカーネル抽象化部１１１０は電源が供給されると、まずＳ２０００ではアプリ移動管理部１１２０とアプリ移動表１１２１を初期化する。ただしアプリ移動表１１２１の初期化とは、全レコードのランク１１２８のフィールドを空白にする処理である。続くＳ２００１ではマイクロカーネル抽象化部１１１０は、監視部１１６０を初期化し、監視部１１６０によりハードウエア依存マイクロカーネル１１７０を用いて各ＣＰＵが利用可能か否かのポーリングが行われる。なお図５には記載していないが利用可能でないＣＰＵが存在すると判断した場合はエラー処理を行う。以下ではＳ２００１では全ＣＰＵが利用可能であったとして説明を続ける。
【００３９】
続くＳ２００３ではマイクロカーネル抽象化部１１１０は全てのＯＳとアプリを初期化する。初期化時に各アプリがいずれの環境で実行されるかはあらかじめ定められている。続くＳ２００４では監視部１１６０がＣＰＵ、ＯＳ、管理対象アプリを対象としてポーリングを行う。Ｓ２００５ではマイクロカーネル抽象化部１１１０は、監視部１１６０がＳ２００４において取得した情報をアプリ移動管理部１１２０に送信する。続くＳ２００６ではアプリ移動管理部１１２０は、アプリ移動表１１２１の全てのランク１１２８を前述の手法により更新するとともに、管理対象アプリの異常を検出する。管理対象アプリの異常の検出には前述のように、管理対象アプリが動作しているＯＳを稼働しているＣＰＵの動作状況、管理対象アプリのメモリ使用量、および管理対象アプリのＣＰＵ負荷などが参照される。
【００４０】
続くＳ２００７ではマイクロカーネル抽象化部１１１０は、Ｓ２００６において管理対象アプリの異常を検出したか否かを判断する。マイクロカーネル抽象化部１１１０は、いずれかの管理対象アプリに異常があると判断する場合はＳ２００９に進み、全ての管理対象アプリに異常がないと判断する場合はＳ２００８に進む。なお以下では、Ｓ２００６において異常が検出された管理対象アプリを「異常が検出されたアプリ」と呼ぶ。Ｓ２００８ではマイクロカーネル抽象化部１１１０は所定時間だけ待機してＳ２００４に戻る。すなわちアプリに異常が検出されない間はマイクロカーネル抽象化部１１１０は、Ｓ２００４〜Ｓ２００８の処理を繰り返す。
【００４１】
Ｓ２００７において肯定判定されると実行されるＳ２００９ではマイクロカーネル抽象化部１１１０は、アプリ移動表１１２１を読み込む。続くＳ２０１０ではマイクロカーネル抽象化部１１１０は、Ｓ２００７において異常が検出された管理対象アプリを実行する他の環境、すなわち代替環境が存在するか否かを判断する。マイクロカーネル抽象化部１１１０は代替環境が存在すると判断する場合はＳ２０１１に進み、代替環境が存在しないと判断する場合はＳ２０１６に進む。具体的にはマイクロカーネル抽象化部１１１０は、アプリ移動表１１２１において異常が検出されたアプリが現在実行されている環境に、ランク１１２８がＮ／Ａではない環境が存在するか否かを判断する。
【００４２】
たとえばアプリ移動表１１２１が図４に示すものであり、画像処理アプリが第１ＣＰＵ１１において実行されており画像処理アプリに異常が検出された場合は、第２ＣＰＵ１２と第３ＣＰＵ１３で実行可能なのでＳ２０１０は肯定判断される。また図４に示す例において距離推定アプリが第１ＣＰＵ１１において実行されており、距離推定アプリに異常が検出されて第３ＣＰＵ１３のランクがＮ／Ａであった場合には、他に距離推定アプリを実行可能な環境が存在しないのでＳ２０１０では否定判断がされる。
【００４３】
Ｓ２０１１ではマイクロカーネル抽象化部１１１０は、異常が検出されたアプリの移動先の環境を決定する。具体的にはマイクロカーネル抽象化部１１１０は、アプリ移動表１１２１を参照し、異常が検出されたアプリについて記載しているレコードであって、現在実行されている環境を除くレコードにおいてランク１１２８が最も小さい値を有する環境を移動先として決定する。たとえばアプリ移動表１１２１が図４に示すものであり、画像処理アプリが第１ＣＰＵ１１において動作しており異常が検出された場合は、ランク１１２８が「２」である第３ＣＰＵ１３の環境が選択される。
【００４４】
続くＳ２０１２ではマイクロカーネル抽象化部１１１０は、Ｓ２０１１において特定された環境における、異常が検出されたアプリのプログラムファイルを特定する。具体的にはマイクロカーネル抽象化部１１１０は、アプリ対応表１１５０を参照し、異常が検出されたアプリの名称、Ｓ２０１１において特定された環境のＣＰＵタイプからプログラムファイルを特定する。ただしアプリ対応表１１５０が図２（ａ）に示すようにＯＳの種類ごとに異なる場合は、さらにＳ２０１１において特定された環境のＯＳも加味してプログラムファイルを特定する。
【００４５】
続くＳ２０１３ではマイクロカーネル抽象化部１１１０は、Ｓ２０１１において決定した移動先のＯＳのメモリ領域に、Ｓ２０１２において特定したプログラムファイルを配置する。続くＳ２０１４ではマイクロカーネル抽象化部１１１０は、Ｓ２０１４において配置したアプリを初期化する。この初期化では必要に応じてタイマなども配置される。たとえばアプリ移動表１１２１が図４に示すものであり、画像処理アプリを第２ＣＰＵ１２で動作させる場合は、プログラムファイルｂｉｎ０５を初期化するとともにタイマＢがｂｉｎ０５に提供される。
【００４６】
続くＳ２０１５では割り込み転送部１１４０は、移動したアプリケーションにあわせてＩＲＱの転送を行う。たとえばアプリ移動表１１２１が図４に示すものであり、画像処理アプリが第１ＣＰＵ１１の環境から第２ＣＰＵ１２の環境に移動した場合は、割り込み転送部１１４０は割り込み対応表１１４１を次のように書き換える。すなわち割り込み転送部１１４０は、割り込み対応表１１４１におけるＩＲＱ１とＩＲＱ４の転送先をＯ１からＯ２に書き換える。Ｓ２０１５の処理が完了するとＳ２００８に進む。
【００４７】
Ｓ２０１０において否定判断されると実行されるＳ２０１６ではマイクロカーネル抽象化部１１１０は、問題が検出された管理対象アプリに動作停止指令を出力してＳ２００８に進む。なおＳ２０１６ではさらにイベントの発生、すなわち管理対象アプリに動作停止指令を出力したことを記録してもよいし、この記録にはＥＣＵ１０００の任意の内部状態、たとえばメモリ２０のダンプ情報を加えてもよい。以上がマイクロカーネル抽象化部１１１０の動作を表すフローチャートの説明である。
【００４８】
上述した第１の実施の形態によれば、次の作用効果が得られる。
（１）ハイパーバイザ１１００は、アプリケーションを実行可能な複数のオペレーティングシステムを実行可能な仮想環境１２００を提供し複数のＣＰＵにより動作する。ハイパーバイザ１１００は、複数のＯＳの稼働状態を監視する監視部１１６０と、稼働状態に基づき第１のＯＳにおいて実行されている第１のプログラムファイルにより実現されるアプリケーションに代えて、第２のＯＳにおいて第１のアプリケーションと同様の機能を有する第２のプログラムファイルにより実現されるアプリケーションを動作させるアプリ移動管理部１１２０と、を備える。アプリ移動管理部１１２０は、第２のＯＳを実行しているＣＰＵの種類に基づき第２のアプリケーションを実現するプログラムファイルを選択する。そのため、異なる種類のＣＰＵを用いる場合でもアプリケーションの移動、すなわちマイグレーションを実現できる。
【００４９】
（２）ハイパーバイザ１１００は、実現される機能、ＣＰＵの種類、およびプログラムファイルの対応関係を示すアプリ対応表１１５０を有する。アプリ移動管理部１１２０は、アプリ対応表１１５０を参照して第２のアプリケーションを実現するプログラムファイルを選択する。そのためハイパーバイザ１１００は、マイグレーション先の環境にあわせた適切なプログラムファイルを選択できる。
【００５０】
（３）アプリ対応表１１５０におけるＣＰＵのタイプは、少なくともＣＰＵの命令セット、およびレジスタ構成に基づいて分類される。ＣＰＵの命令セットおよびレジスタ構成が同一であれば同一のプログラムファイルが使用できる傾向にあるからである。
【００５１】
（４）ハイパーバイザ１１００は、割り込み要求の番号とＯＳの対応関係を示す割り込み対応表１１４１を有する。ハイパーバイザ１１００は、割り込み転送部１１４０を備える。割り込み転送部１１４０は、割り込み対応表１１４１に基づきＯＳに対応するＩＲＱ番号の割り込み要求を転送する。また割り込み転送部１１４０は、アプリ移動管理部１１２０が第２のアプリケーションを動作させると、図３（ａ）から図３（ｂ）へ変化させたように割り込み対応表１１４１における第１のＯＳを第２のＯＳに書き換える。そのためマイグレーションの実行とともにＩＲＱを転送できる。
【００５２】
（５）アプリ移動管理部１１２０は、第１のＯＳの動作が停止している場合、または第１のアプリケーションの動作に異常がある場合に、第１のＯＳにおいて実行されている第１のアプリケーションに代えて、第２のＯＳにおいて第２のアプリケーションを動作させる。そのためＯＳの停止を契機としてマイグレーションを実行できる。
【００５３】
（変形例１）
上述した第１の実施の形態において、アプリ移動表１１２１の移行要件１１２７にプログラムファイルの名称が記載されていなくてもよい。上述した実施の形態では、ハイパーバイザ１１００はアプリ対応表１１５０を有し、アプリ対応表１１５０を参照してプログラムファイルを選択するからである。
【００５４】
（変形例２）
ハイパーバイザ１１００はアプリ対応表１１５０を備えず、アプリ移動表１１２１の移行要件１１２７を参照することで移行先のＯＳで実行するプログラムファイルを特定してもよい。
【００５５】
（変形例３）
ハイパーバイザ１１００を実現するプログラムファイルは、記録媒体やデータ通信を通じてＥＣＵ１０００に提供されてもよい。
【００５６】
図６は、上述したハイパーバイザ１１００を実現するプログラムファイルを、記録媒体やデータ信号を通じてＥＣＵ１０００に提供する様子を示す図である。ＥＣＵ１０００は、車両に搭載されるものであり、各種プログラムを実行可能なプロセッサを有する。ＥＣＵ１０００は、入力装置３００を介してＣＤ−ＲＯＭ３０４を読み込み、ハイパーバイザ１１００を実現するためのプログラムファイルの情報の提供を受ける。このプログラムファイルをＥＣＵ１０００のプロセッサで実行することにより、ハイパーバイザ１１００が実現される。
【００５７】
また、入力装置３００は通信回線３０１との接続機能を有する。コンピュータ３０２は上記のプログラムファイル等の情報を提供するサーバーコンピュータであり、ハードディスク３０３などの記録媒体に情報を格納する。通信回線３０１は、インターネット、パソコン通信などの通信回線、あるいは専用通信回線などである。コンピュータ３０２はハードディスク３０３を使用してプログラムファイル等の情報を読み出し、通信回線３０１を介して入力装置３００に送信する。
【００５８】
すなわち、プログラムをデータ信号として搬送波を介して、通信回線３０１を介して送信する。そして入力装置３００がＥＣＵ１０００に受信した信号を伝達する。このように、ハイパーバイザ１１００を実現させるためのプログラムは、記録媒体やデータ信号（搬送波）などの種々の形態のコンピュータ読み込み可能なコンピュータプログラム製品として供給できる。
【００５９】
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【００６０】
１１００…ハイパーバイザ
１１１０…マイクロカーネル抽象化部
１１２０…アプリ移動管理部
１１２１…アプリ移動表
１１２８…ランク
１１６０…監視部
１１４０…割り込み転送部
１１４１…割り込み対応表
１１５０…アプリ対応表
１２００…仮想環境
【図１】
2019139453.tif 000003
【図２】
2019139453.tif 000004
【図３】
2019139453.tif 000005
【図４】
2019139453.tif 000006
【図５】
2019139453.tif 000007
【図６】
2019139453.tif 000008