(57)【要約】【課題】リアルタイムタスクが複数のＯＳに分散して存在する場合に、処理のリアルタイム性を効率的に担保する。【解決手段】実施形態の情報処理装置は、１以上のコアを有するプロセッサを備える情報処理装置である。実施形態の情報処理装置は、受付部と切替部とを備える。受付部は、割込みを、コア毎に受け付ける。切替部は、割込みが入力される第１のＯＳが、割込みが発生したコアで優先される優先ＯＳであり、かつ、割込みが発生したコアで実行中の第２のＯＳが、優先ＯＳでない場合、第２のＯＳを、第１のＯＳに切り替える。【選択図】図１
2018045638.tif 000002
【特許請求の範囲】
【請求項１】
１以上のコアを有するプロセッサを備える情報処理装置であって、
割込みを、前記コア毎に受け付ける受付部と、
前記割込みが入力される第１のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が、前記割込みが発生した前記コアで優先される優先ＯＳであり、かつ、前記割込みが発生したコアで実行中の第２のＯＳが、前記優先ＯＳでない場合、前記第２のＯＳを、前記第１のＯＳに切り替える切替部と、
を備える情報処理装置。
【請求項２】
前記受付部は、前記第２のＯＳを前記第１のＯＳに切り替えた場合、または、前記第１のＯＳと前記第２のＯＳとが一致していた場合、前記第１のＯＳに前記割込みを入力し、前記第１のＯＳと前記第２のＯＳとが一致せず、かつ、前記第２のＯＳを前記第１のＯＳに切り替えなかった場合、前記割込みを保留する、
請求項１に記載の情報処理装置。
【請求項３】
前記切替部は、実行中の前記第２のＯＳから、前記第２のＯＳを前記第１のＯＳに切り替える要求が、前記受付部により受け付けられたとき、前記第２のＯＳを前記第１のＯＳに切り替え、
前記受付部は、前記第１のＯＳに入力される割込みが保留されているか否かを判定し、前記第１のＯＳに入力される割込みが保留されている場合、前記第１のＯＳに前記割込みを入力する、
請求項２に記載の情報処理装置。
【請求項４】
前記コアで実行されているＯＳが前記優先ＯＳであり、かつ、非リアルタイムタスクよりも処理の優先度が高いリアルタイムタスクが実行可能状態である場合、前記リアルタイムタスクを選択し、前記コアで実行されているＯＳが前記優先ＯＳであり、かつ、前記リアルタイムタスクが実行可能状態でない場合、前記非リアルタイムタスクを選択する選択部と、
前記選択部により選択された前記リアルタイムタスク、または、前記選択部により選択された前記非リアルタイムタスクを処理する処理部と、
を更に備える請求項１に記載の情報処理装置。
【請求項５】
前記選択部は、前記コアで実行されているＯＳが前記優先ＯＳでなく、かつ、前記非リアルタイムタスクがある場合、前記非リアルタイムタスクを選択する、
請求項４に記載の情報処理装置。
【請求項６】
前記受付部は、前記コアで実行されているＯＳが前記優先ＯＳでなく、かつ、前記非リアルタイムタスクがない場合、前記コアで実行されるＯＳを切り替える要求を受け付ける、
請求項４に記載の情報処理装置。
【請求項７】
割込みの通知先を設定する割込み設定部を更に備え、
前記切替部は、切り替え先のＯＳが優先ＯＳである場合、切り替え先のＯＳに入力される割込みを、前記切り替え先のＯＳに入力する設定要求を、前記割込み設定部に入力し、前記切り替え先のＯＳに入力されない割込みを保留する設定要求を、前記割込み設定部に入力する、
請求項１に記載の情報処理装置。
【請求項８】
前記切替部は、切り替え先のＯＳが優先ＯＳでない場合、切り替え先のＯＳに入力される割込みを、前記切り替え先のＯＳに入力する設定要求を、前記割込み設定部に入力し、優先ＯＳに入力される割込みを前記受付部に入力する設定要求を、前記割込み設定部に入力し、前記切り替え先のＯＳ及び前記優先ＯＳ以外のＯＳに入力される割込みを保留する設定要求を、前記割込み設定部に入力する、
請求項７に記載の情報処理装置。
【請求項９】
指定されたコアで割込みを発生させるコア間割込み発生部と、
ＯＳ間の通信を要求するＯＳ間通信要求を、前記リアルタイムタスクから受け付けた場合、通信先のＯＳが前記優先ＯＳとして設定されたコアが指定されたコア間割込み要求を、前記コア間割込み発生部に入力し、前記ＯＳ間通信要求を、前記非リアルタイムタスクから受け付けた場合、通信先のＯＳが前記優先ＯＳとして設定されていないコアが指定されたコア間割込み要求を、前記コア間割込み発生部に入力する通信部と、
を更に備える請求項４に記載の情報処理装置。
【請求項１０】
前記情報処理装置に記憶された改ざんの検証対象のデータの第１のハッシュ値を計算し、前記第１のハッシュ値と、改ざんされていない前記検証対象のデータの第２のハッシュ値と、を比較することにより、前記検証対象のデータの完全性を検証する検証部、
を更に備える請求項１に記載の情報処理装置。
【請求項１１】
前記情報処理装置に記憶された保護対象のデータの書き換えを禁止する保護部、
を更に備える請求項１に記載の情報処理装置。
【請求項１２】
１以上のコアを有するプロセッサを備える情報処理装置の情報処理方法であって、
割込みを、前記コア毎に受け付けるステップと、
前記割込みが入力される第１のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が、前記割込みが発生した前記コアで優先される優先ＯＳであり、かつ、前記割込みが発生したコアで実行中の第２のＯＳが、前記優先ＯＳでない場合、前記第２のＯＳを、前記第１のＯＳに切り替えるステップと、
を含む情報処理方法。
【請求項１３】
１以上のコアを有するプロセッサを備える情報処理装置を、
割込みを、前記コア毎に受け付ける受付部と、
前記割込みが入力される第１のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が、前記割込みが発生した前記コアで優先される優先ＯＳであり、かつ、前記割込みが発生したコアで実行中の第２のＯＳが、前記優先ＯＳでない場合、前記第２のＯＳを、前記第１のＯＳに切り替える切替部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
単一の計算機上で複数のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を実行させるための仮想化技術が従来から知られている。例えば複数のＯＳの実行を制御するソフトウェアとしてハイパーバイザ（仮想マシンモニタ）が広く利用されている。また、処理のリアルタイム性が要求される自動車のエンジン制御及びＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）機器などでは、リアルタイムタスクの実行制御に特化したリアルタイムＯＳが広く利用されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１７６１３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら従来の技術では、リアルタイムタスクが複数のＯＳに分散して存在する場合に、処理のリアルタイム性を効率的に担保することが難しかった。
【課題を解決するための手段】
【０００５】
実施形態の情報処理装置は、１以上のコアを有するプロセッサを備える情報処理装置である。実施形態の情報処理装置は、受付部と切替部とを備える。受付部は、割込みを、前記コア毎に受け付ける。切替部は、前記割込みが入力される第１のＯＳが、前記割込みが発生した前記コアで優先される優先ＯＳであり、かつ、前記割込みが発生したコアで実行中の第２のＯＳが、前記優先ＯＳでない場合、前記第２のＯＳを、前記第１のＯＳに切り替える。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態の情報処理装置のシステム構成の例を示す図。
【図２】第１実施形態の情報処理装置の機能構成の例を示す図。
【図３Ａ】第１実施形態の割込み入力先ＯＳ情報の例を示す図。
【図３Ｂ】第１実施形態の優先ＯＳ情報の例を示す図。
【図４】第１実施形態の割込みの発生例を示すシーケンス図。
【図５】第１実施形態のタスク情報の例を示す図。
【図６】第１実施形態のタスク起動時の処理の例を示すフローチャート。
【図７Ａ】第１実施形態の割込み発生時の処理の例を示すフローチャート。
【図７Ｂ】図７Ａのフローチャートに従って処理された割込みの例を示す図。
【図８】第１実施形態のタスクの選択処理の例を示すフローチャート。
【図９】第１実施形態の変形例の情報処理装置の機能構成の例を示す図。
【図１０】第２実施形態の情報処理装置の機能構成の例を示す図。
【図１１Ａ】第２実施形態のＯＳ間通信要求の処理の例を示すフローチャート。
【図１１Ｂ】図１１Ａのフローチャートに従って処理されたＯＳ間通信要求の例を示す図。
【図１２】第３実施形態の情報処理装置の機能構成の例を示す図。
【図１３】第３実施形態の変形例の情報処理装置の機能構成の例を示す図。
【図１４】第１〜第３実施形態の情報処理装置のハードウェア構成の例を示す図。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、情報処理装置、情報処理方法及びプログラムの実施形態を詳細に説明する。
【０００８】
（第１実施形態）
第１実施形態の情報処理装置１００は、複数のコアを有するプロセッサを備える。プロセッサは、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。第１実施形態の説明では、簡単のため、コアが２つの場合について説明する。なおコアが１つの場合、及び、コアが３つ以上の場合でも同様である。
【０００９】
はじめに第１実施形態の情報処理装置１００のシステム構成の例について説明する。
【００１０】
［情報処理装置のシステム構成］
図１は第１実施形態の情報処理装置１００のシステム構成の例を示す図である。第１実施形態の情報処理装置１００では、ハードウェア３０上で動作する仮想マシンモニタ２０が、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１及びＯＳ２を並行して動作させる。以下、ＯＳ１及びＯＳ２を区別しない場合は、単にＯＳという。仮想マシンモニタ２０は、ハードウェア３０からのハードウェア割込み、ＯＳ１からのソフトウェア割込み、及び、ＯＳ２からのソフトウェア割込みに応じて、コア上で実行されるＯＳを切り替える。
【００１１】
次に第１実施形態の情報処理装置１００の機能構成の例について説明する。
【００１２】
［情報処理装置の機能構成］
図２は第１実施形態の情報処理装置１００の機能構成の例を示す図である。第１実施形態の情報処理装置１００の各機能は、ＯＳ１、ＯＳ２、仮想マシンモニタ２０及びハードウェア３０により実現される。なお図２では、ＯＳ２により実現される機能は、ＯＳ１により実現される機能と同じなので、ＯＳ２は省略している。
【００１３】
ＯＳ１は、受付部１１、選択部１２、処理部１３、設定部１４、検出部１５、要求部１６及びタスク情報記憶部１０１を備える。ＯＳ１の各機能は、例えばＣＰＵがプログラムを実行することにより実現される。
【００１４】
仮想マシンモニタ２０は、受付部２１、判定部２２、切替部２３、設定部２４、判定条件記憶部２０１及びコンテキスト記憶部２０２を備える。仮想マシンモニタ２０の各機能は、例えばＣＰＵがプログラムを実行することにより実現される。
【００１５】
ハードウェア３０は、割込み通知部３１を備える。割込み通知部３１は、例えばＣＰＵにより実現される。
【００１６】
割込み通知部３１は、割込みの発生元から、割込みを受け付けると、当該割込みを受付部２１に通知する。なお割込み通知部３１は、割込みをコア毎に受け付ける。
【００１７】
受付部２１は、割込み通知部３１から割込みを受け付けると、当該割込みに応じてＯＳを切り替えるか否かを判定する判定要求を判定部２２に入力する。
【００１８】
判定部２２は、受付部２１から判定要求を受け付けると、判定条件記憶部２０１の判定条件を参照して、ＯＳを切り替えるか否かを判定する。判定条件は、割込み入力先ＯＳ情報及び優先ＯＳ情報を含む。
【００１９】
＜割込み入力先ＯＳ情報＞
図３Ａは第１実施形態の割込み入力先ＯＳ情報の例を示す図である。第１実施形態の割込み入力先ＯＳ情報は、割込みフィールド及び入力先ＯＳフィールドを有するテーブルである。割込みフィールドには、割込みの種類が記憶される。入力先ＯＳフィールドには、割込みの入力先のＯＳの種類が記憶される。図３Ａの例は、割込みＡが入力されるＯＳがＯＳ１であり、割込みＢが入力されるＯＳがＯＳ２である場合を示す。
【００２０】
＜優先ＯＳ情報＞
図３Ｂは第１実施形態の優先ＯＳ情報の例を示す図である。第１実施形態の優先ＯＳ情報は、コアフィールド及び優先ＯＳフィールドを有するテーブルである。コアフィールドには、ＣＰＵのコアの種類が記憶される。図３Ｂの例では、コアの種類がＣＰＵコア番号により表されている。優先ＯＳフィールドには、コアで優先されるＯＳの種類が記憶される。図３Ｂの例は、コア１で優先されるＯＳがＯＳ２であり、コア２で優先されるＯＳがＯＳ１である場合を示す。
【００２１】
図２に戻り、具体的には、判定部２２は、割込みが入力されるＯＳが、割込みが発生したコアで優先される優先ＯＳであり、かつ、当該コアで実行中のＯＳが、当該コアの優先ＯＳでない場合、ＯＳを切り替える決定をする。
【００２２】
＜ＯＳを切り替える場合＞
受付部２１は、ＯＳを切り替える場合、ＯＳの切り替え要求を切替部２３に入力する。
【００２３】
切替部２３は、コアで動作させるＯＳの切り替え（ディスパッチ）を行う。具体的には、切替部２３は、ＯＳをディスパッチするときに、現在実行中のＯＳのレジスタ情報等のコンテキストをコンテキスト記憶部２０２に記憶する。そして切替部２３は、切り替え先のＯＳのコンテキストをコンテキスト記憶部２０２から読み出す（復帰させる）。
【００２４】
切替部２３は、受付部２１から、ＯＳの切り替え要求を受け付けると、上述のコンテキストの記憶と復帰とを行うとともに、切り替え後のＯＳのプログラムを実行する。これにより切替部２３はＯＳを切り替える。
【００２５】
＜ＯＳを切り替えない場合＞
受付部２１は、割込みが実行中のＯＳ向けである理由により、ＯＳを切り替えない場合、当該割込みを、実行中のＯＳの受付部１１に入力する。また受付部２１は、割込みが発生したコアで優先されないＯＳに入力される割込みである理由により、ＯＳを切り替えない場合、当該割込みを保留（ペンディング）し、実行中のＯＳは、処理を継続する。
【００２６】
＜実行中のＯＳから切り替え要求を受け付けた場合＞
また、受付部２１は、実行中のＯＳの要求部１６から、切り替え要求を受け付けた場合、切り替え先のＯＳに入力される割込みが保留されているか否かを判定する。切り替え先のＯＳに入力される割込みが保留されている場合、受付部２１は、ＯＳの切り替え要求を切替部２３に入力する。切り替え先のＯＳに入力される割込みが保留されていない場合、切り替え先のＯＳが切り替え前に実行していた場所から実行を再開する。
【００２７】
次に割込みの発生例と各コアで実行されるＯＳの例について説明する。
【００２８】
＜割込みの発生例と各コアで実行されるＯＳの例＞
図４は第１実施形態の割込みの発生例を示すシーケンス図である。図４のシーケンス図に示すように、当初、ＣＰＵコア番号１の第１コアでＯＳ１が実行され、ＣＰＵコア番号２の第２コアでＯＳ２が実行されているとする。
【００２９】
はじめに、割込み通知部３１が、第１コアに対する割込みＡを受付部２１に通知する（ステップＳ１）。次に、受付部２１は、割込みＡがＯＳ１向け割込みであり、かつ、第１コアでＯＳ１が既に実行中であるので、割込みＡをＯＳ１の受付部１１に入力する（ステップＳ２）。
【００３０】
次に、割込み通知部３１が、第２コアに対する割込みＡを受付部２１に通知する（ステップＳ３）。次に、切替部２３が、割込みＡが入力されるＯＳ１が、割込みＡが発生した第２コアで優先される優先ＯＳであり、かつ、第２コアで実行中のＯＳ２が、第２コアの優先ＯＳでないので、ＯＳ２をＯＳ１に切り替える（ステップＳ４）。次に、受付部２１が、割込みＡをＯＳ１の受付部１１に入力する（ステップＳ５）。
【００３１】
次に、割込み通知部３１が、第１コアに対する割込みＢを受付部２１に通知する（ステップＳ６）。次に、切替部２３が、割込みＢが入力されるＯＳ２が、割込みＢが発生した第１コアで優先される優先ＯＳであり、かつ、第１コアで実行中のＯＳ１が、第１コアの優先ＯＳでないので、ＯＳ１をＯＳ２に切り替える（ステップＳ７）。次に、受付部２１が、割込みＢをＯＳ２の受付部１１に入力する（ステップＳ８）。
【００３２】
次に、割込み通知部３１が、第２コアに対する割込みＢを受付部２１に通知する（ステップＳ９）。次に、受付部２１は、割込みＢが入力されるＯＳ２が、割込みＢが発生した第２コアで優先される優先ＯＳでなく、かつ、第２コアで実行中のＯＳ１が、第２コアの優先ＯＳであるので、割込みＢを保留する（ステップＳ１０）。
【００３３】
次に、割込み通知部３１が、第１コアに対する割込みＡを受付部２１に通知する（ステップＳ１１）。次に、受付部２１は、割込みＡが入力されるＯＳ１が、割込みＡが発生した第１コアで優先される優先ＯＳでなく、かつ、第１コアで実行中のＯＳ２が、第１コアの優先ＯＳであるので、割込みＡを保留する（ステップＳ１２）。
【００３４】
次に、割込み通知部３１が、第２コアに対する割込みＡを受付部２１に通知する（ステップＳ１３）。次に、受付部２１は、割込みＡがＯＳ１向け割込みであり、かつ、第２コアでＯＳ１が既に実行中であるので、割込みＡをＯＳ１の受付部１１に入力する（ステップＳ１４）。
【００３５】
次に、ステップＳ１２の処理により保留されていた割込みＡが、例えば第１コアで動作するＯＳ２で実行されるタスクがなくなった場合などの契機で、ＯＳ１が第１コアで再度実行された際に、ＯＳ１の受付部１１に入力される（ステップＳ１５）。同様に、ステップＳ１０の処理により保留されていた割込みＢが、例えば第２コアで動作するＯＳ１で実行されるタスクがなくなった場合などの契機で、ＯＳ２が第２コアで再度実行された際に、ＯＳ２の受付部１１に入力される（ステップＳ１６）。
【００３６】
図２に戻り、設定部２４は、上述の割込み入力先ＯＳ情報（図３Ａ参照）、及び、上述の優先ＯＳ情報（図３Ｂ参照）を設定する。設定部２４は、例えば情報処理装置１００の起動時に、受付部２１により、リセット割込みが受け付けられた契機で動作してもよい。また例えば、設定部２４は、受付部２１により、ＯＳ側から明示的に設定要求が受け付けられた契機で動作してもよい。
【００３７】
ＯＳ１の受付部１１は、仮想マシンモニタ２０から、割込みを受け付けると、当該割込みを受け付けたこと示す通知を選択部１２に入力する。
【００３８】
選択部１２は、受付部１１から通知を受け付けると、タスク情報記憶部１０１に記憶されているタスク情報を参照する。そして選択部１２は、処理部１３で次に処理させるタスクを選択する。すなわち選択部１２は、タスクの処理順序を決定するスケジューラである。
【００３９】
＜タスク情報の例＞
図５は第１実施形態のタスク情報の例を示す図である。第１実施形態のタスク情報は、タスク名、種類、割当（アフィニティ）、及び、状態を含む。タスク名はタスクの名称である。種類はタスクの種類である。割当は、タスクを割り当てるコアを示す。状態はタスクの状態を示す。
【００４０】
図５のタスク情報は、ＯＳ１のタスク情報の例を示す。なおＯＳ１が優先して実行されるコアは第２コアである（図３Ｂ参照）。
【００４１】
図５の例では、例えばタスクＡの種類はリアルタイムタスクである。リアルタイムタスクは、非リアルタイムタスクよりも処理の優先度が高いタスクである。またタスクＡの割当は第２コアである。またタスクＡの状態は実行可能である。
【００４２】
また例えば、タスクＢの種類はリアルタイムタスクである。またタスクＢの割当は第２
コアである。またタスクＢの状態はＩ／Ｏ待ちである。
【００４３】
また例えば、タスクＣの種類は非リアルタイムタスクである。非リアルタイムタスクは、リアルタイムタスクよりも処理の優先度が低いタスクである。またタスクＣの割当は、第１コアまたは第２コアである。またタスクＣの状態は実行である。すなわちタスクＣが現在、実行中のタスクであることを示す。
【００４４】
図２に戻り、具体的には、選択部１２は、例えば後述の図８のフローチャートにより示されるアルゴリズムにより、タスクを選択する。そして選択部１２は、選択されたタスクを処理部１３に入力する。これによりタスクが処理部１３により処理される。なお選択部１２は、ＥＤＦ（Ｅａｒｌｉｅｓｔ  Ｄｅａｄｌｉｎｅ  Ｆｉｒｓｔ）スケジューリングのような一般に知られたリアルタイムスケジューリングを併用してもよい。
【００４５】
また選択部１２は、タスク情報の設定要求を設定部１４に入力する。
【００４６】
＜タスク情報の設定＞
設定部１４は、選択部１２から設定要求を受け付けると、上述のタスク情報を設定する。
【００４７】
タスクの種類は、例えばタスクの起動時に静的に設定されていてもよい。また例えば、タスクの種類は、選択部１２が、処理部１３から、タスクの種類を示す通知を受け付けた契機で設定されてもよい。
【００４８】
設定部１４は、リアルタイムタスクの割当については、当該リアルタイムタスクを実行するＯＳが、優先ＯＳとして設定されているコアに割り付ける。一方、設定部１４は、非リアルタイムタスクの割当については、動作させるコアを限定しなくてもよいし、当該非リアルタイムタスクを実行するＯＳが、優先ＯＳとして設定されていないコアに割り付けてもよい。一般に、タスクを実行するコアを固定する機能は、アフィニティ機能として多くのＯＳに備わっており、例えば当該アフィニティ機能を利用することにより、設定部１４を実現することができる。
【００４９】
タスクの状態は、設定部１４が選択部１２から随時、タスクの状態の設定要求を受け付けることにより、例えばＩ／Ｏ待ち状態→実行可能状態→実行状態のように設定される。
【００５０】
また選択部１２は、実行可能状態のタスクがないアイドル状態の場合、実行可能状態のタスクがないことを検出部１５に通知する。
【００５１】
検出部１５は、選択部１２から通知を受け付けると、ＯＳの切り替え要求を要求部１６に入力する。要求部１６は、検出部１５から切り替え要求を受け付けると、例えばソフトウェア割り込み等を利用して、当該切り替え要求を仮想マシンモニタ２０の受付部２１に入力する。検出部１５及び要求部１６の機能により、アイドル状態の場合に、ＯＳを切り替えることができるので、効率的にＣＰＵコアを利用することができる。
【００５２】
次に第１実施形態の情報処理方法について説明する。
【００５３】
＜タスク起動時の処理＞
図６は第１実施形態のタスク起動時の処理の例を示すフローチャートである。はじめに、選択部１２が、起動されたタスクがリアルタイムタスクか否かを判定する（ステップＳ２１）。
【００５４】
起動されたタスクがリアルタイムタスクである場合（ステップＳ２１、Ｙｅｓ）、設定部１４が、当該タスクを自ＯＳが優先されるコアに割り当てる（ステップＳ２２）。
【００５５】
起動されたタスクがリアルタイムタスクでない場合（ステップＳ２１、Ｎｏ）、すなわち起動されたタスクが非リアルタイムタスクである場合、設定部１４は、当該タスクを任意のコアに割り当てる（ステップＳ２３）。なおステップＳ２３の処理は、設定部１４が、非リアルタイムタスクを自ＯＳが優先されないコアに割り当てる処理に変更してもよい。
【００５６】
＜割込み発生時の処理＞
図７Ａは第１実施形態の割込み発生時の処理の例を示すフローチャートである。はじめに、受付部２１が、割込み通知部３１から割込みを受け付けることにより、当該割込みをキャッチする（ステップＳ３１）。
【００５７】
次に、判定部２２が、ステップＳ３１の処理により受け付けた割込みの入力先ＯＳが、当該割込みが発生したコアの優先ＯＳであるか否かを判定する（ステップＳ３２）。具体的には、判定部２２は、割込み入力先ＯＳ情報（図３Ａ参照）から、割込みの入力先ＯＳを特定する。そして判定部２２は、優先ＯＳ情報（図３Ｂ参照）から、割込みの入力先ＯＳが、当該割込みが発生したコアの優先ＯＳであるか否かを判定する。
【００５８】
入力先ＯＳが優先ＯＳである場合（ステップＳ３２、Ｙｅｓ）、判定部２２は、当該入力先ＯＳが実行中であるか否かを判定する（ステップＳ３３）。入力先ＯＳが実行中である場合（ステップＳ３３、Ｙｅｓ）、受付部２１が、ステップＳ３１の処理により受け付けた割込みを、実行中のＯＳの受付部１１に入力する（ステップＳ３５）。
【００５９】
入力先ＯＳが実行中でない場合（ステップＳ３３、Ｎｏ）、切替部２３が、現在実行中のＯＳを、ステップＳ３１の処理により受け付けた割込みの入力先ＯＳに切り替える（ステップＳ３４）。次に、受付部２１が、ステップＳ３１の処理により受け付けた割込みを、切り替え後のＯＳの受付部１１に入力する（ステップＳ３５）。
【００６０】
一方、入力先ＯＳが優先ＯＳでない場合（ステップＳ３２、Ｎｏ）、判定部２２は、当該入力先ＯＳが実行中であるか否かを判定する（ステップＳ３６）。入力先ＯＳが実行中である場合（ステップＳ３６、Ｙｅｓ）、受付部２１が、ステップＳ３１の処理により受け付けた割込みを、実行中のＯＳの受付部１１に入力する（ステップＳ３５）。
【００６１】
入力先ＯＳが実行中でない場合（ステップＳ３６、Ｎｏ）、受付部２１は、ステップＳ３１の処理により受け付けた割込みを保留し、現在、実行されているＯＳが処理を継続する（ステップＳ３７）。
【００６２】
上述のステップＳ３５の処理により割込みがＯＳに入力された後、当該ＯＳの選択部１２が実行される。なお選択部１２の処理は、図８のフローチャートを参照して後述する。
【００６３】
＜割込みの処理例＞
図７Ｂは、図７Ａのフローチャートに従って処理された割込みの例を示す図である。
【００６４】
例えば、割込みＡが発生したコアのＣＰＵコア番号が１であり、かつ、割込みＡの発生直前に実行していたＯＳがＯＳ１の場合、ＯＳの切り替えが行われずに、割込みＡがＯＳ１に入力される。一方、割込みＡが発生したコアのＣＰＵコア番号が１であり、かつ、割込みＡの発生直前に実行していたＯＳがＯＳ２の場合、ＯＳの切り替えが行われずに、ＯＳ１に対する割込みＡの入力が保留される。
【００６５】
また例えば、割込みＢが発生したコアのＣＰＵコア番号が１であり、かつ、割込みＢの発生直前に実行していたＯＳがＯＳ１の場合、ＯＳ１がＯＳ２に切り替えられた後、割込みＢがＯＳ２に入力される。一方、割込みＢが発生したコアのＣＰＵコア番号が１であり、かつ、割込みＢの発生直前に実行していたＯＳがＯＳ２の場合、ＯＳの切り替えが行われずに、割込みＢがＯＳ２に入力される。
【００６６】
＜タスクの選択処理＞
図８は第１実施形態のタスクの選択処理の例を示すフローチャートである。選択部１２の処理は、例えば受付部１１により割込みが受け付けられた場合に実行される。また例えば、選択部１２の処理は、処理部１３から明示的に選択部１２の動作要求を受け付けた場合に実行される。
【００６７】
はじめに、選択部１２は、選択部１２が実行されるコアが、当該選択部１２を備える自ＯＳの実行が優先されるコアであるか否かを判定する（ステップＳ４１）。
【００６８】
自ＯＳの実行が優先されるコアである場合（ステップＳ４１、Ｙｅｓ）、選択部１２は、リアルタイムタスクが実行可能状態であるか否かを判定する（ステップＳ４２）。リアルタイムタスクが実行可能状態である場合（ステップＳ４２、Ｙｅｓ）、選択部１２は、当該リアルタイムタスクを選択する（ステップＳ４３）。次に、選択部１２は、ステップＳ４３の処理により選択されたリアルタイムタスクに切り替える（ステップＳ４４）。
【００６９】
一方、自ＯＳの実行が優先されるコアでない場合（ステップＳ４１、Ｎｏ）、または、リアルタイムタスクが実行可能状態でない場合（ステップＳ４２、Ｎｏ）、選択部１２は、非リアルタイムタスクが実行可能状態であるか否かを判定する（ステップＳ４５）。
【００７０】
非リアルタイムタスクが実行可能状態である場合（ステップＳ４５、Ｙｅｓ）、選択部１２は、当該非リアルタイムタスクを選択する（ステップＳ４６）。次に、選択部１２は、ステップＳ４６の処理により選択された非リアルタイムタスクに切り替える（ステップＳ４４）。
【００７１】
非リアルタイムタスクが実行可能状態でない場合（ステップＳ４５、Ｎｏ）、すなわち検出部１５により自ＯＳで実行されるタスクがないアイドル状態であることが検出された場合、要求部１６が、ソフトウェア割込み等を利用して、ＯＳの切り替え要求を受付部２１に入力する（ステップＳ４７）。
【００７２】
次に、切替部２３が、切り替え先のＯＳに入力するためにペンディングされた割込みがあるか否かを判定する（ステップＳ４８）。
【００７３】
ペンディングされた割込みがない場合（ステップＳ４８、Ｎｏ）、切替部２３が、ＯＳを切り替え、切り替え先のＯＳが、切り替え前に実行していた場所から実行を再開する（ステップＳ４９）。
【００７４】
ペンディングされた割込みがある場合（ステップＳ４８、Ｙｅｓ）、切替部２３が、ＯＳを切り替える（ステップＳ５０）。次に、受付部２１が、切り替え後のＯＳの受付部１１に、割込みを入力する（ステップＳ５１）。次に、切り替え後のＯＳの選択部１２が、タスクの選択処理を実行する（ステップＳ５２）。
【００７５】
以上説明したように、第１実施形態の情報処理装置１００によれば、優先度の高いコアに各ＯＳのリアルタイムタスクを割り付けることができ、各ＯＳにリアルタイムタスクが混在する場合においても、ハイパーバイザが各ＯＳが持つタスクのアフィニティ情報を参照することなく、リアルタイム性の担保が可能になる。また第１実施形態の情報処理装置１００では、コア毎にＯＳの優先度と割込みの入力先ＯＳとを設定しておくのみでよい。割込み入力先ＯＳの設定はリアルタイムハイパーバイザを利用するか否かにかかわらず、ハイパーバイザを利用するためには必要な設定であるため、実質コア毎に優先するＯＳを決定することのみが追加の作業となる。このように、第１実施形態の情報処理装置１００によれば、既存システムからの変更や適用の手間も少なくて済む。
【００７６】
（第１実施形態の変形例）
次に第１実施形態の変形例について説明する。第１実施形態の変形例の説明では、第１実施形態と同様の説明については省略し、第１実施形態と異なる箇所について説明する。第１実施形態の変形例の情報処理装置１００のシステム構成の説明は、第１実施形態の情報処理装置１００のシステム構成（図１参照）と同じなので省略する。
【００７７】
［情報処理装置の機能構成］
図９は第１実施形態の変形例の情報処理装置１００の機能構成の例を示す図である。第１実施形態の変形例の情報処理装置１００の各機能は、ＯＳ１、ＯＳ２、仮想マシンモニタ２０及びハードウェア３０により実現される。なお図９では、ＯＳ２により実現される機能は、ＯＳ１により実現される機能と同じなので、ＯＳ２は省略している。
【００７８】
ＯＳ１は、受付部１１、選択部１２、処理部１３、設定部１４、検出部１５、要求部１６及びタスク情報記憶部１０１を備える。ＯＳ１の各機能は、例えばＣＰＵがプログラムを実行することにより実現される。
【００７９】
仮想マシンモニタ２０は、受付部２１、判定部２２、切替部２３、設定部２４、判定条件記憶部２０１及びコンテキスト記憶部２０２を備える。仮想マシンモニタ２０の各機能は、例えばＣＰＵがプログラムを実行することにより実現される。
【００８０】
ハードウェア３０は、割込み通知部３１及び割込み設定部３２を備える。割込み通知部３１及び割込み設定部３２は、例えばＣＰＵにより実現される。
【００８１】
すなわち第１実施形態の変形例では、情報処理装置１００に割込み設定部３２が追加されている点が、第１実施形態とは異なる。
【００８２】
第１実施形態では、全ての割込みが、受付部２１を経由してＯＳ１に入力されていたが、変形例では、一部の割込みが、ハードウェア３０の割込み通知部３１により、直接、ＯＳ１の受付部１１に入力される。これにより仮想マシンモニタ２０への遷移が不要になるため、情報処理装置１００の動作の高速化が可能になる。近年のＣＰＵでは、ＣＰＵの割込みコントローラが、仮想マシンモニタ２０、及び、ＯＳ１双方への割り込み入力をサポートしていることが多い。仮想マシンモニタ２０、及び、ＯＳ１双方への割り込み入力をサポートしているＣＰＵを利用する場合には本変形例の構成が有用である。
【００８３】
本変形例では、切替部２３が、ＯＳを切り替えるときに、割込み入力の設定要求を割込み設定部３２に入力する。割込み設定部３２は、切替部２３から割込み入力の設定要求を受け付けると、当該設定要求に基づいて割込み入力の設定を変更する。割込み通知部３１は、ＯＳが切り替えられた後、割込み設定部３２により行われた割込み入力の設定に従って割込みの入力先を変更する。
【００８４】
＜切り替え先のＯＳが優先ＯＳである場合＞
切替部２３は、切り替え先のＯＳが優先ＯＳである場合、切り替え先のＯＳに入力される割込みをＯＳの受付部１１に直接、入力する設定要求を、割込み設定部３２に入力する。また切替部２３は、切り替え先のＯＳに入力されない割込みをペンディングする設定要求を、割込み設定部３２に入力する。
【００８５】
＜切り替え先のＯＳが優先ＯＳでない場合＞
一方、切替部２３は、切り替え先のＯＳが優先ＯＳでない場合、切り替え先のＯＳに入力される割込みをＯＳの受付部１１に直接、入力する設定要求を、割込み設定部３２に入力する。また切替部２３は、優先ＯＳに入力される割込みを受付部２１に入力する設定要求を、割込み設定部３２に入力する。また切替部２３は、それ以外のＯＳ（３つ以上のＯＳが動作する場合）に入力される割込みをペンディングする設定要求を、割込み設定部３２に入力する。
【００８６】
ここで、情報処理装置１００が、上述の図３Ａの割込み入力先ＯＳ情報と、上述の図３Ｂの優先ＯＳ情報とを有する場合について、具体的に説明する。
【００８７】
＜割込みを受け付けるコアが第１コアの場合＞
ＣＰＵコア番号が１の第１コアでは、ＯＳ２が優先ＯＳである。そのため、切替部２３は、切り替え後のＯＳがＯＳ１の場合、割込みＡをＯＳ１の受付部１１に入力する設定要求と、割込みＢを受付部２１に入力する設定要求と、を割込み設定部３２に入力する。また切替部２３は、切り替え後のＯＳがＯＳ２の場合、割込みＡをペンディングする設定要求と、割込みＢをＯＳ２の受付部１１に直接、入力する設定要求と、を割込み設定部３２に入力する。
【００８８】
＜割込みを受け付けるコアが第２コアの場合＞
ＣＰＵコア番号が２の第２コアでは、ＯＳ１が優先ＯＳである。そのため、切替部２３は、切り替え後のＯＳがＯＳ１の場合、割込みＡをＯＳ１の受付部１１に入力する設定要求と、割込みＢをペンディングする設定要求と、を割込み設定部３２に入力する。また切替部２３は、切り替え後のＯＳがＯＳ２の場合、割込みＡを受付部２１に入力する設定要求と、割込みＢをＯＳ２の受付部１１に直接、入力する設定要求と、を割込み設定部３２に入力する。
【００８９】
割込み通知部３１は、割込み設定部３２の設定に従い、割込み要求があった場合に割込みを通知する。割込み通知部３１は、割込みがペンディングに設定されている場合には何もせず、ペンディングに設定されていない場合には設定に従って、受付部２１またはＯＳの受付部１１に割込みを入力する。ペンディングされている割込みは、ペンディングが解除された段階、すなわち優先ＯＳでないＯＳへの切り替え時に、当該ＯＳの受付部１１に入力される。
【００９０】
以上説明したように、第１実施形態の変形例によれば、一部の割込みがＯＳに直接入力されるようになる。したがって仮想マシンモニタ２０への遷移は、ＯＳ切替が必要な場合に限られ、無駄な仮想マシンモニタ２０への遷移が減る。そのため、第１実施形態の変形例の情報処理装置１００は、第１実施形態の情報処理装置１００よりも高速に動作することが可能になる。
【００９１】
（第２実施形態）
次に第２実施形態について説明する。第２実施形態の説明では、第１実施形態と同様の説明については省略し、第１実施形態と異なる箇所について説明する。第２実施形態の情報処理装置１００のシステム構成の説明は、第１実施形態の情報処理装置１００のシステム構成（図１参照）と同じなので省略する。
【００９２】
第１実施形態の情報処理装置１００では、ＯＳ間を跨いで通信を行うことが想定されていなかった。例えばセキュリティ強度が高いセキュアＯＳと、当該セキュアＯＳよりもセキュリティ強度が低い一般ＯＳと、を同居させるユースケースがある。例えば多くの処理を一般ＯＳで行い、暗号化処理等のセキュリティ関連の処理をセキュアＯＳで行う場合、一般ＯＳは、セキュリティ関連の処理をセキュアＯＳに依頼し、その処理結果を利用する。このような場合には、ＯＳ間を跨ぐ通信が必要となる。コアを跨がなければ第１実施形態の情報処理装置１００の構成（図２参照）で、共有メモリ等の技術を使って通信が可能である。しかし、コアを跨いで通信を行う場合には、第１実施形態の情報処理装置１００の構成ではコア間で通信を行う仕組みがなく、呼出し先ＯＳが実行されていない場合には、次に呼出し先ＯＳが実行されるまで待つ必要がある。これでは効率的に通信を行うことができず、リアルタイム処理の場合にはリアルタイム性が落ちる欠点がある。第２実施形態では、ＯＳ間を跨いで通信を行う場合の構成について説明する。
【００９３】
［情報処理装置の機能構成］
図１０は第２実施形態の情報処理装置１００の機能構成の例を示す図である。第２実施形態の情報処理装置１００の各機能は、ＯＳ１、ＯＳ２、仮想マシンモニタ２０及びハードウェア３０により実現される。なお図１０では、ＯＳ２により実現される機能は、ＯＳ１により実現される機能と同じなので、ＯＳ２は省略している。
【００９４】
ＯＳ１は、受付部１１、選択部１２、処理部１３、設定部１４、検出部１５、要求部１６、通信部１７及びタスク情報記憶部１０１を備える。すなわち第２実施形態では、第１実施形態の構成に、通信部１７が追加されている。ＯＳ１の各機能は、例えばＣＰＵがプログラムを実行することにより実現される。
【００９５】
仮想マシンモニタ２０は、受付部２１、判定部２２、切替部２３、設定部２４、判定条件記憶部２０１及びコンテキスト記憶部２０２を備える。仮想マシンモニタ２０の各機能は、例えばＣＰＵがプログラムを実行することにより実現される。
【００９６】
ハードウェア３０は、割込み通知部３１及びコア間割込み発生部３３を備える。割込み通知部３１及びコア間割込み発生部３３は、例えばＣＰＵにより実現される。すなわち第２実施形態では、第１実施形態の構成に、コア間割込み発生部３３が追加されている。
【００９７】
通信部１７は、処理部１３から、ＯＳ間の通信を要求するＯＳ間通信要求を受け付けた場合、コア間割込みの発生を要求するコア間割込み要求を、コア間割込み発生部３３に入力する。コア間割込み要求では、割り込みを発生させるコアが指定される。通信部１７は、例えばリアルタイムタスクからＯＳ間通信要求を受け付けた場合、リアルタイム性が要求されるため、呼び出し先ＯＳの実行が優先されるコアを、コア間割込み要求で指定する。
【００９８】
第２実施形態の情報処理装置１００が、例えば図３Ｂに示す優先ＯＳ情報を有する場合について説明する。ＯＳ２の通信部１７は、例えば第１コアで動作するＯＳ２のリアルタイムタスクからＯＳ１へのＯＳ間通信要求を受け付けた場合、ＯＳ１の動作が優先される第２コアが指定されたコア間割込み要求を、コア間割込み発生部３３に入力する。
【００９９】
一方、ＯＳ２の通信部１７は、例えば第１コアで動作するＯＳ２の非リアルタイムタスクからＯＳ１へのＯＳ間通信要求を受け付けた場合、ＯＳ１の動作が優先されない第１コアが指定されたコア間割込み要求を、コア間割込み発生部３３に入力する。また例えば、ＯＳ２の通信部１７は、第２コアで動作するＯＳ２の非リアルタイムタスクからＯＳ１へのＯＳ間通信要求を受け付けた場合、ＯＳ１の動作が優先されない第１コアが指定されたコア間割込み要求を、コア間割込み発生部３３に入力する。
【０１００】
コア間割込み発生部３３は、通信部１７からコア間割込み要求を受け付けると、当該コア間割込み要求で指定されたコアの割り込みを発生させる。割込み通知部３１は、コア間割込み発生部３３が発生させた割込みを、受付部２１に入力する。
【０１０１】
図１１Ａは第２実施形態のＯＳ間通信要求の処理の例を示すフローチャートである。はじめに、通信部１７が、要求元のタスクがリアルタイムタスクであるか否かを判定する（ステップＳ６１）。要求元のタスクがリアルタイムタスクである場合（ステップＳ６１、Ｙｅｓ）、通信部１７は、呼び出し先のＯＳの実行が優先されるコアを、コア間割込み要求で指定する（ステップＳ６２）。要求元のタスクがリアルタイムタスクでない場合（ステップＳ６１、Ｎｏ）、通信部１７は、呼び出し先のＯＳの実行が優先されないコアを、コア間割込み要求で指定する（ステップＳ６３）。
【０１０２】
次に、通信部１７が、コア間割込み要求をコア間割込み発生部３３に入力する（ステップＳ６４）。
【０１０３】
割込み先のコアが自コアである場合（ステップＳ６５、Ｙｅｓ）、コア間割込み発生部３３が、自コアの割込みを発生させる（ステップＳ６６）。ステップＳ６６の処理により発生させた割込みは、割込み通知部３１により、自コアの割込みとして、受付部２１に入力される。
【０１０４】
一方、割込み先のコアが自コアでない場合（ステップＳ６５、Ｎｏ）、自コアの選択部１２は、処理を継続し、コア間割込み発生部３３は、コア間割込み要求で指定されたコアの割込みを発生させる（ステップＳ６７）。ステップＳ６７の処理により発生させた割込みは、割込み通知部３１により、コア間割込み要求で指定されたコアの割込みとして、受付部２１に入力される。
【０１０５】
＜ＯＳ間通信要求の処理例＞
図１１Ｂは、図１１Ａのフローチャートに従って処理されたＯＳ間通信要求の例を示す図である。
【０１０６】
例えば、第１コアで動作するＯＳ１の通信部１７が、ＯＳ１の非リアルタイムタスクからＯＳ２に対するＯＳ間通信要求を受け付けた場合、ＯＳ２が優先に実行されない第２コアを、コア間割込み要求で指定する。
【０１０７】
一方、第２コアで動作するＯＳ１の通信部１７が、ＯＳ１のリアルタイムタスクからＯＳ２に対するＯＳ間通信要求を受け付けた場合、ＯＳ２が優先に実行される第１コアを、コア間割込み要求で指定する。
【０１０８】
また例えば、第１コアで動作するＯＳ２の通信部１７が、ＯＳ２の非リアルタイムタスクからＯＳ１に対するＯＳ間通信要求を受け付けた場合、ＯＳ２が優先に実行されない自コアを、コア間割込み要求で指定する。
【０１０９】
なお、受付部２１が割込みを受け付けた後の処理の説明は、第１実施形態の説明（図７Ａ参照）と同様なので省略する。
【０１１０】
以上説明したように、第２実施形態の情報処理装置１００によれば、リアルタイム性を保ちながら、ＯＳ間を跨いだ通信が可能となる。そのため第２実施形態の情報処理装置１００によれば、ＯＳ間を跨ぐリアルタイムアプリケーション等のアプリケーションの柔軟な設計が可能となる。
【０１１１】
（第３実施形態）
次に第３実施形態について説明する。第３実施形態の説明では、第１実施形態と同様の説明については省略し、第１実施形態と異なる箇所について説明する。第３実施形態の情報処理装置１００のシステム構成の説明は、第１実施形態の情報処理装置１００のシステム構成（図１参照）と同じなので省略する。
【０１１２】
第１実施形態の情報処理装置１００では、ＯＳ及び仮想マシンモニタの完全性が保障されない。そのため、例えばＯＳがマルウェア等に侵入された場合には、ＯＳの各機能の処理が書き換えられてしまう可能性がある。各機能の処理が書き換えられてしまったＯＳは、他のＯＳまで影響を及ぼすことはないが、自ＯＳのリアルタイムタスクの動作が阻害される可能性があるため、重大な影響が出る可能性がある。
【０１１３】
［情報処理装置の機能構成］
図１２は第３実施形態の情報処理装置１００の機能構成の例を示す図である。第３実施形態の情報処理装置１００の各機能は、ＯＳ１、ＯＳ２、仮想マシンモニタ２０及びハードウェア３０により実現される。なお図１２では、ＯＳ２により実現される機能は、ＯＳ１により実現される機能と同じなので、ＯＳ２は省略している。
【０１１４】
ＯＳ１は、受付部１１、選択部１２、処理部１３、設定部１４、検出部１５、要求部１６及びタスク情報記憶部１０１を備える。ＯＳ１の各機能は、例えばＣＰＵがプログラムを実行することにより実現される。
【０１１５】
仮想マシンモニタ２０は、受付部２１、判定部２２、切替部２３、設定部２４、検証部２５、判定条件記憶部２０１、コンテキスト記憶部２０２及びハッシュ値記憶部２０３を備える。すなわち第３実施形態では、第１実施形態の構成に、検証部２５及びハッシュ値記憶部２０３が追加されている。仮想マシンモニタ２０の各機能は、例えばＣＰＵがプログラムを実行することにより実現される。
【０１１６】
ハードウェア３０は、割込み通知部３１を備える。割込み通知部３１は、例えばＣＰＵにより実現される。
【０１１７】
検証部２５は、例えば選択部１２、設定部１４及び要求部１６等の重要な機能ブロックを実現するプログラムを、改ざんの検証対象のデータとして、当該改ざんの検証対象のデータの完全性を検証する。具体的には、検証部２５は、あらかじめ各機能ブロックのハッシュ値（第２のハッシュ値）をハッシュ値記憶部２０３に記憶しておく。そして検証部２５は、検証アルゴリズムを使用して、検証が行われるタイミングで計算されたハッシュ値（第１のハッシュ値）と、あらかじめ記憶されていたハッシュ値（第２のハッシュ値）とを比較することにより、改ざんの検出対象のデータの完全性を検証する。なお検証アルゴリズムは任意でよい。検証アルゴリズムは、例えばＳＨＡ１などのハッシュベースの良く知られた検証アルゴリズムである。
【０１１８】
また、重要な機能ブロック（例えば選択部１２、設定部１４及び要求部１６）の検証が行われるタイミングについては、例えば切替部２３が、ＯＳを切り替える際に、切り替え先のＯＳの当該重要な機能ブロックの検証を要求する。また例えば、重要な機能ブロックの検証が行われるタイミングは、検証部２５が、ＯＳの起動時に、当該重要な機能ブロックを一度だけ検証してもよい。
【０１１９】
第３実施形態の情報処理装置１００によれば、例えば選択部１２、設定部１４及び要求部１６等の重要な機能ブロックの完全性を検証することができる。
【０１２０】
（第３実施形態の変形例）
次に第３実施形態の変形例について説明する。第３実施形態の変形例の説明では、第３実施形態と同様の説明については省略し、第３実施形態と異なる箇所について説明する。第３実施形態の変形例の情報処理装置１００のシステム構成の説明は、第１実施形態の情報処理装置１００のシステム構成（図１参照）と同じなので省略する。
【０１２１】
上述の第３実施形態の情報処理装置１００の構成では、改ざんを検出できるが、改ざん自体を防ぐことはできない。ＯＳのデータの改ざんの例として、例えば優先ＯＳ情報（図３Ｂ参照）が、改ざんされると、他のＯＳの動作も阻害される可能性があるため、当該優先ＯＳ情報は厳重に保護される必要がある。
【０１２２】
［情報処理装置の機能構成］
図１３は第３実施形態の変形例の情報処理装置１００の機能構成の例を示す図である。第３実施形態の変形例の情報処理装置１００の各機能は、ＯＳ１、ＯＳ２、仮想マシンモニタ２０及びハードウェア３０により実現される。なお図１３では、ＯＳ２により実現される機能は、ＯＳ１により実現される機能と同じなので、ＯＳ２は省略している。
【０１２３】
ＯＳ１は、受付部１１、選択部１２、処理部１３、設定部１４、検出部１５、要求部１６及びタスク情報記憶部１０１を備える。ＯＳ１の各機能は、例えばＣＰＵがプログラムを実行することにより実現される。
【０１２４】
仮想マシンモニタ２０は、受付部２１、判定部２２、切替部２３、設定部２４、保護設定部２６、判定条件記憶部２０１及びコンテキスト記憶部２０２を備える。仮想マシンモニタ２０の各機能は、例えばＣＰＵがプログラムを実行することにより実現される。
【０１２５】
ハードウェア３０は、割込み通知部３１、保護部３４及び記憶装置３０１を備える。割込み通知部３１及び保護部３４は、例えばＣＰＵにより実現される。
【０１２６】
すなわち第３実施形態の変形例では、第３実施形態の情報処理装置１００の検証部１５の代わりに、保護設定部２６及び保護部３４を備える。
【０１２７】
保護設定部２６は、記憶装置３０１に記憶されるデータのうち、保護対象のデータを、保護部３４を介して、書き換え不可に設定する。保護対象のデータは、例えば選択部１２、設定部１４及び要求部１６を実現するプログラム、仮想マシンモニタ２０の各機能ブロックを実現するプログラム、並びに、判定条件記憶部２０１及びコンテキスト記憶部２０２である。
【０１２８】
保護部３４は、例えば多段ページング機能、及び、ＭＰＵ（Ｍｅｍｏｒｙ  Ｐｒｏｔｅｃｔｉｏｎ  Ｕｎｉｔ）などにより実現できる。多段ページング機能は、例えばＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）などである。
【０１２９】
以上説明したように、第３実施形態の変形例の情報処理装置１００によれば、機能ブロックを実現するプログラム、及び、当該機能ブロックから参照されるデータの改ざん自体を防ぐことができる。これにより第３実施形態の変形例の情報処理装置１００によれば、例えばリアルタイムタスクの実行の妨害などを阻止できるようになる。
【０１３０】
最後に第１〜第３実施形態の情報処理装置１００のハードウェア構成の例について説明する。
【０１３１】
［ハードウェア構成の例］
図１４は第１〜第３実施形態の情報処理装置１００のハードウェア構成の例を示す図である。第１〜第３実施形態の情報処理装置１００は、制御装置４０１、主記憶装置４０２、補助記憶装置４０３、表示装置４０４、入力装置４０５及び通信装置４０６を備える。制御装置４０１、主記憶装置４０２、補助記憶装置４０３、表示装置４０４、入力装置４０５及び通信装置４０６は、バス４１０を介して接続されている。
【０１３２】
第１〜第３実施形態の情報処理装置１００は、例えば車載情報機器、及び、産業制御機器などの組込みシステムに利用される。なお第１〜第３実施形態の情報処理装置１００は、パーソナルコンピュータ及びスマートデバイスなどでもよい。
【０１３３】
制御装置４０１は補助記憶装置４０３から主記憶装置４０２に読み出されたプログラムを実行する。主記憶装置４０２はＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、及び、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリである。補助記憶装置４０３はメモリカード、及び、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等である。
【０１３４】
表示装置４０４は情報を表示する。表示装置４０４は、例えば液晶ディスプレイである。入力装置４０５は、情報の入力を受け付ける。入力装置４０５は、例えばキーボード及びマウス等である。なお表示装置４０４及び入力装置４０５は、表示機能と入力機能とを兼ねる液晶タッチパネル等でもよい。また第１〜第３実施形態の情報処理装置１００が、組込みシステムに利用される場合、表示装置４０４及び入力装置４０５はなくてもよい。
【０１３５】
通信装置４０６は他の装置と通信する。
【０１３６】
第１〜第３実施形態の情報処理装置１００で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、メモリカード、ＣＤ−Ｒ、及び、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記憶媒体に記憶されてコンピュータ・プログラム・プロダクトとして提供される。
【０１３７】
また第１〜第３実施形態の情報処理装置１００で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また第１〜第３実施形態の情報処理装置１００が実行するプログラムを、ダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
【０１３８】
また第１〜第３実施形態の情報処理装置１００で実行されるプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１３９】
第１〜第３実施形態の情報処理装置１００で実行されるプログラムは、第１〜第３実施形態の情報処理装置１００の機能構成のうち、プログラムにより実現可能な機能を含むモジュール構成となっている。
【０１４０】
プログラムにより実現される機能は、制御装置４０１が補助記憶装置４０３等の記憶媒体からプログラムを読み出して実行することにより、プログラムにより実現される機能が主記憶装置４０２にロードされる。すなわちプログラムにより実現される機能は、主記憶装置４０２上に生成される。
【０１４１】
なお第１〜第３実施形態の情報処理装置１００の機能の一部を、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のハードウェアにより実現してもよい。例えば、切替部２３は、ＣＰＵ及び割込みコントローラ等のハードウェア機能により実現してもよいし、ＣＰＵ上で動作するソフトウェア機能により実現してもよい。
【０１４２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１４３】
１  ＯＳ
２  ＯＳ
１１  受付部
１２  選択部
１３  処理部
１４  設定部
１５  検出部
１６  要求部
１７  通信部
２０  仮想マシンモニタ
２１  受付部
２２  判定部
２３  切替部
２４  設定部
２５  検証部
２６  保護設定部
３０  ハードウェア
３１  割込み通知部
３２  割込み設定部
３３  コア間割込み発生部
３４  保護部
１００  情報処理装置
１０１  タスク情報記憶部
２０１  判定条件記憶部
２０２  コンテキスト記憶部
２０３  ハッシュ値記憶部
３０１  記憶装置
【図１】
2018045638.tif 000003
【図２】
2018045638.tif 000004
【図３Ａ】
2018045638.tif 000005
【図３Ｂ】
2018045638.tif 000006
【図４】
2018045638.tif 000007
【図５】
2018045638.tif 000008
【図６】
2018045638.tif 000009
【図７Ａ】
2018045638.tif 000010
【図７Ｂ】
2018045638.tif 000011
【図８】
2018045638.tif 000012
【図９】
2018045638.tif 000013
【図１０】
2018045638.tif 000014
【図１１Ａ】
2018045638.tif 000015
【図１１Ｂ】
2018045638.tif 000016
【図１２】
2018045638.tif 000017
【図１３】
2018045638.tif 000018
【図１４】
2018045638.tif 000019