(57)【要約】  下位特権モードと上位特権モードとの２つの特権モードのみを備えるプロセッサを備え、デジタル著作物等を保護するためのセキュリティ機能と、システムの信頼性を確保したオペレーティングシステムの切り替え処理機能とを共存させる仮想計算機システムである。  この仮想計算機システムは、第１プロセッサと第２プロセッサとを備え、第１プロセッサの上位特権モードでハイパバイザを動作させる。第２プロセッサのオペレーティングシステムの実行は、第１プロセッサで動作するハイパバイザと第２プロセッサの下位特権モードで動作するプログラムとが共同して行う。これにより、ハイパバイザを第２プロセッサの上位特権モードで実行させる必要がなくなるので、第２プロセッサの上位特権モードでセキュリティ機能を実現するためのプログラムを実行させることができるようになる。
2012086106.tif 000002
【特許請求の範囲】
【請求項１】
メモリと当該メモリに接続された第１プロセッサ及び第２プロセッサとを備える仮想計算機システムであって、
前記第１プロセッサと前記第２プロセッサとは、それぞれ、下位特権モードと、当該下位特権モードよりも上位の上位特権モードとを備え、
前記メモリは、
プロセッサの実行状態に関する実行状態情報を保存する実行状態保存領域を有し、
前記仮想計算機システムは、
プロセッサ上で前記下位特権モードで実行されるオペレーティングシステムと、
前記第１プロセッサ上で前記上位特権モードで実行されるハイパバイザであり、前記第１プロセッサに、オペレーティングシステムの切替実行制御処理を、前記実行状態保存領域への実行状態情報の退避及び復元により実行させ、前記実行状態保存領域に退避されている実行状態情報を用いて前記第２プロセッサへ復元通知を行うためのハイパバイザと、
前記第２プロセッサ上で前記下位特権モードで実行される復元プログラムであり、前記復元通知を受けた前記第２プロセッサに、前記実行状態保存領域に格納された実行状態情報を前記第２プロセッサの実行状態情報として復元させるための復元プログラムとを備える
ことを特徴とする仮想計算機システム。
【請求項２】
前記実行状態保存領域は、
前記第１プロセッサ及び前記第２プロセッサから前記下位特権モードではアクセス不能であり、前記第１プロセッサから前記上位特権モードでアクセス可能である第１実行状態保存領域と、
前記第２プロセッサから前記下位特権モードでアクセス可能である第２実行状態保存領域とを有し、
前記ハイパバイザは、プロセッサに実行させる前記実行状態情報の退避及び復元に前記第１実行状態保存領域を用いて実行させ、実行停止中のオペレーティングシステムを前記第２プロセッサで実行させるためのプロセッサ変更条件が成立する場合に、当該実行停止中のオペレーティングシステムに対して前記第１実行状態保存領域に退避されている実行状態情報を前記第２実行状態保存領域に設定し、
前記復元プログラムは、前記第２実行状態保存領域に格納された実行状態情報を前記第２のプロセッサの実行状態情報として復元させる
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項３】
前記ハイパバイザは、前記第１プロセッサの実行対象命令群の中に、前記第２プロセッサの前記上位特権モードで実行される必要のある処理を呼び出す部分が含まれている場合に、前記第１プロセッサで実行中のオペレーティングシステムを停止させる実行停止部を含み、
前記プロセッサ変更条件は、前記実行停止部によって、前記第１プロセッサで実行中のオペレーティングシステムが停止させられたことである
ことを特徴とする請求項２記載の仮想計算機システム。
【請求項４】
前記オペレーティングシステムは複数であって、
前記複数のオペレーティングシステムのそれぞれは、前記第２プロセッサで実行中の自オペレーティングシステムを停止させるためのＯＳ停止条件が成立する場合に、前記第２プロセッサに、前記第２プロセッサの実行状態情報を前記第２実行状態保存領域に退避させた上で待機状態へ移行させるための待機状態設定部を含む
ことを特徴とする請求項３記載の仮想計算機システム。
【請求項５】
前記仮想計算機システムは、さらに、割込みコントローラを備え、
前記複数のオペレーティングシステムのそれぞれは、前記ＯＳ停止条件が成立する場合において、さらに自オペレーティングシステムを前記第１プロセッサで実行させるためのＯＳ再開条件が成立するときに、前記第２プロセッサに、前記割込みコントローラを介して前記第１プロセッサへ複写通知割込みを通知させるための割込み通知部を含み、
前記ハイパバイザは、前記第１プロセッサに前記複写通知割込みが通知された場合に、前記第１プロセッサに、前記第２実行状態保存領域に退避されている実行状態情報を前記第１実行状態保存領域に設定させる設定部を含む
ことを特徴とする請求項４記載の仮想計算機システム。
【請求項６】
前記第２実行状態保存領域は、前記複数のオペレーティングシステムのそれぞれに対応するＯＳ対応実行状態保存領域をそれぞれ含み、
前記ハイパバイザは、前記プロセッサ変更条件が成立する場合に行う、前記第２実行状態保存領域への実行状態情報の設定を、設定対象となる実行状態情報に対応するオペレーティングシステムに対応するＯＳ対応実行状態保存領域への設定により行い、
前記待機状態設定部は、前記ＯＳ停止条件が成立する場合に行う、前記第２実行状態保存領域への実行状態情報の設定を、設定対象となる実行状態情報に対応するオペレーティングシステムに対応するＯＳ対応実行状態保存領域への設定により行い、
前記設定部は、前記複写通知割込みが通知された場合に行う、前記第１実行状態保存領域への実行状態情報の設定を、設定対象となる実行状態情報に対応するオペレーティングシステムに対応するＯＳ対応実行状態保存領域に退避されている実行状態情報への設定により行う
ことを特徴とする請求項５記載の仮想計算機システム。
【請求項７】
前記第２プロセッサは、待機状態において前記復元通知割込みが通知されると、待機状態を解除して、前記復元プログラムを実行する
ことを特徴とする請求項５記載の仮想計算機システム。
【請求項８】
前記メモリは、プロセッサから前記下位特権モードでアクセス可能であるアドレス保存領域を有し、
前記ハイパバイザは、前記第１プロセッサに、第１実行状態保存領域に退避されている実行状態情報を前記第２実行状態保存領域に設定させる場合に、前記第１プロセッサに、前記復元プログラムの実行開始アドレスを前記アドレス保存領域に記憶させるためのアドレス設定部を有し、
前記第２プロセッサは、前記復元プログラムの実行を、前記アドレス保存領域に設定されているアドレスを参照して行う
ことを特徴とする請求項５記載の仮想計算機システム。
【請求項９】
前記復元プログラムは、前記仮想計算機システムによって実行されるオペレーティングシステムの一部として実装され、
前記メモリにおいて前記復元プログラムが格納される領域は、前記オペレーティングシステムが格納される領域に含まれる
ことを特徴とする請求項５記載の仮想計算機システム。
【請求項１０】
前記実行状態領域に保存する実行状態情報はレジスタ値である
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項１１】
メモリと当該メモリに接続された第１プロセッサ及び第２プロセッサとを備える仮想計算機システムであって、前記第１プロセッサと前記第２プロセッサとは、それぞれ、下位特権モードと、当該下位特権モードよりも上位の上位特権モードとを備え、前記メモリは、プロセッサの実行状態に関する実行状態情報を保存する実行状態保存領域を備える仮想計算機システムを制御する仮想計算機システム制御方法であって、
前記第１プロセッサ上で前記上位特権モードで、前記第１プロセッサに、オペレーティングシステムの切替実行制御処理を、前記実行状態保存領域への実行状態情報の退避及び復元により実行させ、前記実行状態保存領域に退避されている実行状態情報を用いて前記第２プロセッサへ復元通知を行うハイパバイザステップと、
前記第２プロセッサ上で前記下位特権モードで、前記復元通知を受けた前記第２プロセッサに、前記実行状態保存領域に格納された実行状態情報を前記第２プロセッサの実行状態情報として復元させる復元ステップと
を含むことを特徴とする仮想計算機システム制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを備える仮想計算機システムに関し、特に、複数の特権モードを有する複数のプロセッサ上でのプログラムの実行制御技術に関する。
【背景技術】
【０００２】
従来、仮想計算機システムとして、プロセッサ上で複数のオペレーティングシステムを時分割で切り替えて実行するものが知られている。【０００３】
このような仮想計算機システムには、オペレーティングシステムの切り替え実行制御処理をプロセッサに実行させるためのハイパバイザが含まれている。【０００４】
このハイパバイザは、特権モードで実行されるオペレーティングシステムの切り替え実行制御処理を、システムの信頼性を確保して行うために、オペレーティングシステムが実行される特権モードよりも、さらに上位の特権モードで実行される必要がある。【０００５】
例えば、特許文献１に示される仮想計算機システムでは、仮想計算機システムを構成するプロセッサが、特権モードとして、スーパバイザモードと、スーパバイザモードよりもさらに上位のハイパバイザモードとを備えている。そして、オペレーティングシステムはスーパバイザモードで実行され、ハイパバイザはハイパバイザモードで実行される。【０００６】
ところで、秘匿すべき情報を取り扱う仮想計算機システムにおいては、セキュリティ保護の観点から、その秘匿すべき情報は、信頼できる特定のプログラム（以下、「セキュアプログラム」という。）以外のプログラムによってアクセスされないように保護されていることが望まれる。【０００７】
このような仮想計算機システムには、スーパバイザモードとハイパバイザモードとは別に、セキュアプログラムを実行するための特権モードが必要となる。【０００８】
例えば、特許文献２に示される仮想計算機システムでは、仮想計算機システムを構成するプロセッサが、ハイパバイザモードよりもさらに上位の特権モードであるセキュアモードを備えている。そして、セキュアプログラムは、そのセキュアモードで実行される。【０００９】
図１６は、特許文献２における仮想計算機システムを構成するプロセッサの動作モードを示す動作モード図である。【００１０】
同図に示されるように、この仮想計算機を構成するプロセッサは、ユーザモード１６４０に加えて３つの特権モード、すなわち、スーパバイザモード１６３０とハイパバイザモード１６２０とセキュアモード１６１０とを備える。そして、アプリケーションプログラムはユーザモード１６４０で実行され、オペレーティングシステムはスーパバイザモード１６３０で実行され、ハイパバイザはハイパバイザモード１６２０で実行され、セキュアプログラムは、セキュアモード１６１０で実行される。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開昭５０−２３１４６号公報
【特許文献２】特表２００４−５３７７８６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、ユーザモードに加えて３つ以上の特権モードを備えるプロセッサは、一般に高機能プロセッサである場合が多く、２つの特権モードのみを備えるプロセッサと比べて、消費電力量が多く、価格が高い場合が多い。【００１３】
そこで、本発明は係る問題に鑑みてなされたものであり、構成するプロセッサが特権モードを２つしか備えていないものであっても、システムの信頼性を確保したオペレーティングシステムの切り替え処理機能と、セキュアプログラムを利用したセキュリティ保護機能とを共存させることができる仮想計算機システムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記課題を解決するために本発明に係る仮想計算機システムは、メモリと当該メモリに接続された第１プロセッサ及び第２プロセッサとを備える仮想計算機システムであって、前記第１プロセッサと前記第２プロセッサとは、それぞれ、下位特権モードと、当該下位特権モードよりも上位の上位特権モードとを備え、前記メモリは、プロセッサの実行状態に関する実行状態情報を保存する実行状態保存領域を有し、前記仮想計算機システムは、プロセッサ上で前記下位特権モードで実行されるオペレーティングシステムと、前記第１プロセッサ上で前記上位特権モードで実行されるハイパバイザであり、前記第１プロセッサに、オペレーティングシステムの切替実行制御処理を、前記実行状態保存領域への実行状態情報の退避及び復元により実行させ、前記実行状態保存領域に退避されている実行状態情報を用いて前記第２プロセッサへ復元通知を行うためのハイパバイザと、前記第２プロセッサ上で前記下位特権モードで実行される復元プログラムであり、前記復元通知を受けた前記第２プロセッサに、前記実行状態保存領域に格納された実行状態情報を前記第２プロセッサの実行状態情報として復元させるための復元プログラムとを備えることを特徴とする。
【発明の効果】
【００１５】
上述の構成を備える本発明に係る仮想計算機システムによると、第２プロセッサにおいて、上位特権モードでハイパバイザを実行していなくても、第１プロセッサにおいて切り替え処理対象となっているオペレーティングシステムを、第２プロセッサに移行して実行することができるようになる。【００１６】
これにより、第２プロセッサの上位特権モードがセキュアプログラムを実行するためのセキュアモードとして利用可能となる。【００１７】
従って、仮想計算機を構成する第１プロセッサと第２プロセッサとが特権モードを２つしか備えていなくても、システムの信頼性を確保したオペレーティングシステムの切り替え処理機能と、セキュアプログラムを利用したセキュリティ保護機能とを共存させることができることとなる。
【図面の簡単な説明】
【００１８】
【図１】仮想計算機システム１００の主要なハードウエア構成を示すブロック図
【図２】第１プロセッサ１０１と第２プロセッサ１０２とが備える動作モードを示す動作モード図
【図３】マルチプロセッサＬＳＩ１１０上で動作するプログラムモジュールを示すブロック図
【図４】ハイパバイザ呼出処理のうち第２プロセッサ１０２が行う処理のフローチャート
【図５】ハイパバイザ呼出処理のうち第１プロセッサ１０１が行う処理のフローチャート
【図６】ハイパバイザ呼出終了処理のうち第１プロセッサ１０１が行う処理のフローチャート
【図７】ハイパバイザ呼出終了処理のうち第２プロセッサ１０２が行う処理のフローチャート
【図８】マルチプロセッサＬＳＩ１１０上で動作するプログラムモジュールを示すブロック図
【図９】未定義割込処理のうち第２プロセッサ１０２が行う処理のフローチャート
【図１０】未定義割込処理のうち第１プロセッサ１０１が行う処理のフローチャート
【図１１】変形ハイパバイザ呼出処理のうち第２プロセッサ１０２が行う処理のフローチャート
【図１２】変形ハイパバイザ呼出処理のうち第１プロセッサ１０１が行う処理のフローチャート
【図１３】マルチプロセッサＬＳＩ１１０上で動作するプログラムモジュールを示すブロック図
【図１４】セキュア機能呼出処理のうちの第１プロセッサ１０１が行う処理のフローチャート
【図１５】セキュア機能呼出処理のうちの第２プロセッサ１０２が行う処理のフローチャート
【図１６】従来のプロセッサが備える動作モードを示す動作モード図
【図１７】変形例における仮想計算機システム１７００の概略構成
【発明を実施するための形態】
【００１９】
＜実施の形態１＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、第１プロセッサと第２プロセッサとを備え、これらのプロセッサを用いて複数のオペレーティングシステムを実行する仮想計算機システムについて説明する。
【００２０】
この仮想計算機システムは、第１プロセッサと第２プロセッサとが、それぞれ、スーパバイザモードと、スーパバイザモードより上位のハイパバイザ／セキュアモードとの２つの特権モードを備えている。
【００２１】
第１プロセッサのハイパバイザ／セキュアモードは、スーパバイザモードで実行されるオペレーティングシステムの切り替え処理をプロセッサに実行させるハイパバイザを実行するために利用される。このため、セキュア機能を実現するためのセキュアプログラムは、第１プロセッサのハイパバイザ／セキュアモードでは実行されない。
【００２２】
これに対して、第２プロセッサのハイパバイザ／セキュアモードは、ハイパバイザを実行するために利用されることがなく、セキュアプログラムを実行させるために利用される。このため、ハイパバイザは、第２プロセッサのハイパバイザ／セキュアモードでは実行されない。
【００２３】
また、この仮想計算機システムは、仮想計算機システムを利用するユーザから秘匿されるべき暗号キーを用いて暗号化されたデジタル著作物を復号する機能を有している。
【００２４】
以下、本実施の形態１に係る仮想計算機システムの構成について図面を参照しながら説明する。
【００２５】
＜ハードウエア構成＞
図１は、仮想計算機システム１００の主要なハードウエア構成を示すブロック図である。
【００２６】
同図に示す通り、仮想計算機システム１００は、ハードウエアとしてはコンピュータ装置であり、マルチプロセッサＬＳＩ（Large Scale Integration）１１０とハードディスク装置１２８と出力装置１２７と入力装置１２６とから構成される。
【００２７】
マルチプロセッサＬＳＩ１１０は、第１プロセッサ１０１と第２プロセッサ１０２と割込コントローラ１０３とＲＯＭ（Read Only Memory）１０４とＲＡＭ（Random Access Memory）１０５と第１インターフェース１０６と第２インターフェース１０７と第３インターフェース１０８とタイマ１０９と内部バス１２０とを集積した集積回路であって、入力装置１２６と出力装置１２７とハードディスク装置１２８とに接続する。
【００２８】
第１プロセッサ１０１と第２プロセッサ１０２とは、それぞれ互いに同一種類のプロセッサであって、それぞれ内部バス１２０と割込コントローラ１０３とに接続され、ＲＯＭ１０４又はＲＡＭ１０５に記憶されているプログラムを実行することで、ＲＯＭ１０４、ＲＡＭ１０５、タイマ１０９、入力装置１２６、出力装置１２７、ハードディスク装置１２８を制御して、様々な機能を実現する。
【００２９】
図２は、第１プロセッサ１０１と第２プロセッサ１０２とが備える動作モードを示す動作モード図である。
【００３０】
同図に示されるように、第１プロセッサ１０１と第２プロセッサ１０２とは、アプリケーションプログラムを実行するユーザモード２３０と、下位の特権モード（以下、「スーパバイザモード」という。）２２０と、スーパバイザモード２２０より上位の特権モード（以下、「ハイパバイザ／セキュアモード」という。）２１０とを備える。
【００３１】
第１プロセッサ１０１は、アプリケーションプログラム（図中のタスクＡ２３１、タスクＫ２３２、タスクＬ２３３等）をユーザモード２３０で実行し、オペレーティングシステム（図中の第１ＯＳ２２１、第２ＯＳ２２２）をスーパバイザモード２２０で実行し、ハイパバイザ２１１をハイパバイザ／セキュアモード２１０で実行する。
【００３２】
第２プロセッサ１０２は、アプリケーションプログラム（図中のタスクＭ２３４、タスクＮ２３５、タスクＺ２３６等）をユーザモード２３０で実行し、オペレーティングシステム（図中の第３ＯＳ２２３、第４ＯＳ２２４）をスーパバイザモード２２０で実行し、セキュアプログラム２１２をハイパバイザ／セキュアモード２１０で実行する。
【００３３】
ここで、セキュアプログラム２１２は、ＲＯＭ１０４に記憶されている暗号キーを用いて行う復号に係る処理コードからなるプログラムである。
【００３４】
第１プロセッサ１０１は、ハイパバイザ／セキュアモード２１０では、ハイパバイザ２１１を格納するメモリ領域にアクセスすることができるが、セキュアプログラム２１２を格納するメモリ領域にアクセスすることができなくなるように設定されている。
【００３５】
これに対して、第２プロセッサ１０２は、ハイパバイザ／セキュアモード２１０では、セキュアプログラム２１２を格納するメモリ領域にアクセスすることができるが、ハイパバイザ２１１を格納するメモリ領域にアクセスすることができなくなるように設定されている。
【００３６】
また、第２プロセッサ１０２は、自プロセッサを待機状態とする命令を実行することで、自プロセッサを待機状態とする機能を有している。
【００３７】
ここで、プロセッサの待機状態とは、割込コントローラ１０３から割込みが通知されるまで、演算を停止し、次の命令を実行しない状態のことである。この待機状態は、プロセッサに、割込コントローラ１０３から割込みが通知されることで解除される。第２プロセッサ１０２は、待機状態が解除されると、再開ポインタ格納領域３４２（後述）に格納されているアドレスを開始アドレスとするプログラムを実行するように設定されている。
【００３８】
再び図１に戻って、仮想計算機システム１００の構成についての説明を続ける。
【００３９】
割込コントローラ１０３は、内部バス１２０と第１プロセッサ１０１と第２プロセッサ１０２とに接続され、内部バス１２０を介して第１プロセッサ１０１に対する割込み要求を受けて第１プロセッサ１０１に割込みを通知する機能と、内部バス１２０を介して第２プロセッサ１０２に対する割込み要求を受けて第２プロセッサ１０２に割込みを通知する機能とを有する。
【００４０】
ＲＯＭ１０４は、内部バス１２０に接続され、第１プロセッサ１０１と第２プロセッサ１０２との動作を規定するプログラムと、第１プロセッサ１０１と第２プロセッサ１０２とが利用するデータとを記憶している。
【００４１】
ＲＯＭ１０４の記憶領域は、第１プロセッサ１０１と第２プロセッサ１０２とによって共有されている。但し、ＲＯＭ１０４には、ハイパバイザ／セキュアモードの第２プロセッサ１０２に限ってアクセスされる領域が設定されており、その領域に仮想計算機システム１００を利用するユーザに対して秘匿されるべきデータ、例えば暗号化されたデジタル著作物を復号するための暗号キーが記憶されている。
【００４２】
ＲＡＭ１０５は、内部バス１２０に接続され、第１プロセッサ１０１と第２プロセッサ１０２との動作を規定するプログラムと、第１プロセッサ１０１と第２プロセッサ１０２とが利用するデータとを記憶する。
【００４３】
ＲＡＭ１０５の記憶領域は、第１プロセッサ１０１と第２プロセッサ１０２とによって共有されている。但し、ＲＡＭ１０５には、ハイパバイザ／セキュアモードの第１プロセッサ１０１に限ってアクセスされる領域と、ハイパバイザ／セキュアモードの第２プロセッサ１０２に限ってアクセスされる領域と、ハイパバイザ／セキュアモード又はスーパバイザモードのプロセッサに限ってアクセスされる領域とが設定されている。
【００４４】
第１インターフェース１０６と第２インターフェース１０７と第３インターフェース１０８とは、それぞれ内部バス１２０に接続され、それぞれ内部バス１２０と入力装置１２６との間の信号のやり取りを仲介する機能、内部バス１２０と出力装置１２７との間の信号のやり取りを仲介する機能、内部バス１２０とハードディスク装置１２８との間の信号のやり取りを仲介する機能を有する。
【００４５】
タイマ１０９は、内部バス１２０に接続され、第１プロセッサ１０１又は第２プロセッサ１０２によって制御される。
【００４６】
内部バス１２０は、第１プロセッサ１０１と第２プロセッサ１０２と割込コントローラ１０３とＲＯＭ１０４とＲＡＭ１０５と第１インターフェース１０６と第２インターフェース１０７と第３インターフェース１０８とタイマ１０９とに接続され、これら接続される回路間の信号を伝達する機能を有する。
【００４７】
入力装置１２６は、キーボード、マウス等で構成され、第１インターフェース１０６に接続され、第１プロセッサ１０１又は第２プロセッサ１０２によって制御され、キーボード、マウス等を通じてユーザからの操作コマンドを受け付け、受け付けた操作コマンドを第１プロセッサ１０１又は第２プロセッサ１０２に送る機能を有する。
【００４８】
出力装置１２７は、ディスプレイ、スピーカー等を内蔵し、第２インターフェース１０７に接続され、第１プロセッサ１０１又は第２プロセッサ１０２によって制御され、内蔵するディスプレイ、スピーカー等を用いて文字列、画像、音声等を表示・出力する機能を有する。
【００４９】
ハードディスク装置１２８は、ハードディスクを内蔵し、第３インターフェース１０８に接続され、第１プロセッサ１０１又は第２プロセッサ１０２によって制御され、内蔵するハードディスクにデータを書き込む機能と、内蔵するハードディスクに書き込まれているデータを読み出す機能とを有する。
【００５０】
このハードディスク装置１２８に内蔵されるハードディスクには、暗号化されたデジタル著作物のデータ、第１プロセッサ１０１又は第２プロセッサ１０２によって実行されるプログラム等が書き込まれている。
【００５１】
上述の仮想計算機システム１００は、第１プロセッサ１０１又は第２プロセッサ１０２が、ＲＯＭ１０４、ＲＡＭ１０５に記憶されているプログラムを実行することによって、様々な機能を実現する。
【００５２】
＜プログラムモジュール構成＞
図３は、ある時刻ｔ０において、マルチプロセッサＬＳＩ１１０上で実行されるべきものとなるプログラムモジュール（以下、単に「モジュール」という。）を示すブロック図である。
【００５３】
同図において、モジュール群３００は、第１プロセッサ１０１と第２プロセッサ１０２とのいずれか一方のプロセッサにおいて実行されるべきものとなっているモジュールの集合であって、モジュール群３００に含まれるモジュールのそれぞれは、対応するプログラムが、ＲＯＭ１０４、ＲＡＭ１０５の記憶領域に格納されている。
【００５４】
第１プロセッサ上のモジュール群３０１は、第１プロセッサ１０１において実行されるべきものとなっているモジュールの集合である。
【００５５】
第２プロセッサ上のモジュール群３０２は、第２プロセッサ１０２において実行されるべきものとなっているモジュールの集合である。
【００５６】
ユーザモードモジュール群３０５は、プロセッサのユーザモードで実行されるモジュールの集合である。
【００５７】
スーパバイザモードモジュール群３０６は、プロセッサのスーパバイザモードで実行されるモジュールの集合である。
【００５８】
ハイパバイザ／セキュアモードモジュール群３０７は、プロセッサのハイパバイザ／セキュアモードで実行されるモジュールの集合である。
【００５９】
仮想計算機システム１００において、アプリケーションプログラムは、スーパバイザモードで実行されるマルチタスク対応オペレーティングシステムによって実行制御され、ユーザモードで実行される。また、オペレーティングシステムは、ハイパバイザ／セキュアモードで実行されるハイパバイザによって実行制御され、スーパバイザモードで実行される。
【００６０】
アプリケーションプログラムは、予め用意されたオペレーティングステム呼び出しルーチンを呼び出すことで、オペレーティングシステムに対して処理を依頼することができる。また、オペレーティングシステムは、予め用意されたハイパバイザ呼び出しルーチンを呼び出すことで、ハイパバイザに対して処理を依頼することができる。
【００６１】
タスクＡ３１１〜タスクＢ３１２とタスクＬ３１３とタスクＮ３１４とは、それぞれ、プロセッサのユーザモードで実行されるモジュールである。
【００６２】
これらのうち、タスクＡ３１１〜タスクＢ３１２とタスクＬ３１３とは、それぞれ、第１プロセッサ１０１において実行されるべきものとなるモジュールであり、タスクＮ３１４は、第２プロセッサ１０２において実行されるべきものとなるモジュールである。
【００６３】
レジスタ保存領域３４３は、プロセッサのスーパバイザモード以上の特権モードで実行されているモジュールに限ってアクセス可能となるように設定された、プロセッサのレジスタの値を記憶するための、ＲＡＭ１０５の記憶領域の一部の領域である。
【００６４】
再開ポインタ格納領域３４２は、プロセッサのスーパバイザモード以上の特権モードで実行されているモジュールに限ってアクセス可能となるように設定された、モジュールの開始アドレスを示すポインタを記憶するための、ＲＡＭ１０５の記憶領域の一部の領域である。
【００６５】
復元モジュール３４１は、第２プロセッサ１０２のスーパバイザモードで実行されるモジュールであって、レジスタ保存領域３４３に記憶されている値を第２プロセッサ１０２のレジスタに復元する機能を有する。
【００６６】
第１ＯＳ３２１と第２ＯＳ３２２と第３ＯＳ３２３とは、それぞれ互いに独立して動作するマルチタスク対応オペレーティングシステムであって、それぞれスーパバイザモードのプロセッサで実行される。
【００６７】
これらのうち第１ＯＳ３２１と第２ＯＳ３２２とは、それぞれ、第１プロセッサ１０１において実行対象となるオペレーティングシステムであり、第３ＯＳ３２３は、第２プロセッサ１０２において実行対象となるオペレーティングシステムである。
【００６８】
第１ＯＳ３２１は、タスクＡ３１１〜タスクＢ３１２の実行制御を行っており、第２ＯＳ３２２は、タスクＬ３１３の実行制御を行っており、第３ＯＳはタスクＮ３１４の実行制御を行っている。
【００６９】
また、第３ＯＳ３２３は、内部に状態退避モジュール３３１と割込通知モジュール３３２と待機処理モジュール３３３とを含んでいる。
【００７０】
状態退避モジュール３３１は、自モジュールを含むＯＳが第２プロセッサ１０２で実行されている場合において、自モジュールを含むＯＳによって実行制御されているタスクからの依頼によってハイパバイザ３５１（後述）の呼び出しルーチンが呼び出されるときに、その呼び出しルーチンの呼び出し直後の命令でそのタスクの実行を停止させ、自モジュールが動作しているプロセッサのレジスタの値を、レジスタ保存領域３４３に退避する機能を有する。
【００７１】
割込通知モジュール３３２は、状態退避モジュール３３１がレジスタの値をレジスタ保存領域３４３に退避させた場合に、割込コントローラ１０３を用いて、第１プロセッサ１０１に対して、割込を通知する機能を有する。
【００７２】
待機処理モジュール３３３は、割込通知モジュール３３２が第１プロセッサ１０１に対して割込を通知した場合に、第２プロセッサ１０２を待機状態にする機能を有する。
【００７３】
ハイパバイザ３５１は、ハイパバイザ／スーパバイザモードの第１プロセッサ１０１において実行されるハイパバイザであって、タイマ１０９を用いて、複数のＯＳを時分割で実行させるための制御をする機能を有する。
【００７４】
このハイパバイザ３５１は、内部にＯＳ切替モジュール３５２とＯＳ管理モジュール３５３とコンテクスト更新モジュール３５４とを含んでいる。
【００７５】
ＯＳ管理モジュール３５３は、内部に第１ＯＳコンテクスト記憶領域３６１と第２ＯＳコンテクスト記憶領域３６２と第３ＯＳコンテクスト記憶領域３６３とを含み、これらの記憶領域に、プロセッサのレジスタ値を記憶する機能と、これらの記憶領域からプロセッサのレジスタ値を読み出す機能とを有する。
【００７６】
第１ＯＳコンテクスト記憶領域３６１は、レジスタ値の記憶対象となるプロセッサが第１ＯＳ３２１を実行している場合における、レジスタ値を記憶するための、ＲＡＭ１０５の記憶領域の一部の領域であって、第１プロセッサのハイパバイザ／セキュアモードで実行されているモジュールに限ってアクセス可能となるように設定されている。
【００７７】
第２ＯＳコンテクスト記憶領域３６２は、レジスタ値の記憶対象となるプロセッサが第２ＯＳ３２２を実行している場合における、レジスタ値を記憶するための、ＲＡＭ１０５の記憶領域の一部の領域であって、第１プロセッサのハイパバイザ／セキュアモードで実行されているモジュールに限ってアクセス可能となるように設定されている。
【００７８】
第３ＯＳコンテクスト記憶領域３６３は、レジスタ値の記憶対象となるプロセッサが第３ＯＳ３２３を実行している場合における、レジスタ値を記憶するための、ＲＡＭ１０５の記憶領域の一部の領域であって、第１プロセッサのハイパバイザ／セキュアモードで実行されているモジュールに限ってアクセス可能となるように設定されている。
【００７９】
ＯＳ切替モジュール３５２は、実行制御対象となるオペレーティングシステムを記憶する機能と、タイマ１０９を用いて時間を計測することで、最大タイムスライス時間が所定時間Ｔ１（例えば、１０ｍｓ）となるように、第１プロセッサ１０１で動作しているタスク、オペレーティングシステムの動作を停止して、ＯＳ管理モジュール３５３を用いて、対応するＯＳコンテクスト記憶領域に第１プロセッサ１０１のレジスタの値を退避させ、ＯＳ管理モジュール３５３を用いて、他の実行制御対象ＯＳに対応するレジスタ値を読み出し、読み出したレジスタ値を第１プロセッサ１０１のレジスタに復元する機能（時分割実行制御機能）とを有する。
【００８０】
さらに、ＯＳ切替モジュール３５２は、第１プロセッサ１０１で第３ＯＳ３２３が実行されている場合において、第３ＯＳ３２３によって実行制御されているタスクから第３ＯＳ３２３に対して呼び出しを依頼されたハイパバイザ呼び出しルーチンが終了すると、第１プロセッサ１０１で動作している第３ＯＳ３２３とタスクとの実行を停止して、ＯＳ管理モジュール３５３を用いて、第１プロセッサ１０１のレジスタの値を第３ＯＳコンテクスト記憶領域３６３に退避させ、ハイパバイザ呼び出しルーチンが終了した旨を、コンテクスト更新モジュール３５４に通知する機能を有する。
【００８１】
コンテクスト更新モジュール３５４は、第１プロセッサ１０１にハイパバイザ呼出割込（後述）が通知された場合に、レジスタ保存領域３４３に退避されているプロセッサのレジスタ値を読み出して、読み出したレジスタ値を、ＯＳ管理モジュール３５３を用いて、第３ＯＳコンテクスト記憶領域３６３に記憶させ、第３ＯＳ３２３が実行制御対象ＯＳに追加される旨の信号をＯＳ切替モジュール３５２に通知する機能と、ＯＳ切替モジュール３５２からハイパバイザ呼び出しルーチンが終了した旨を通知された場合に、ＯＳ管理モジュール３５３を用いて、第３ＯＳコンテクスト記憶領域３６３に記憶されているレジスタ値を読み出して、読み出したレジスタ値をレジスタ保存領域３４３に記憶させ、再開ポインタ格納領域３４２に復元モジュール３４１の開始アドレスを書き込み、割込コントローラ１０３を用いて、第２プロセッサ１０２に対してハイパバイザ呼出終了割込（後述）を通知し、第３ＯＳ３２３が実行対象ＯＳから除外される旨の信号をＯＳ切替モジュール３５２に通知する機能とを有する。
【００８２】
セキュアモジュール３７０は、ハイパバイザ／スーパバイザモードの第２プロセッサ１０２で実行されるモジュールであって、ＲＯＭ１０４に記憶されている暗号キーを用いて行う復号に係る処理を行う機能を有する。
【００８３】
以上のように構成される仮想計算機システム１００の行う動作について、以下図面を参照しながら説明する。
【００８４】
＜動作＞
ここでは、仮想計算機システム１００の行う動作のうち、特徴的な動作である、ハイパバイザ呼出処理と、ハイパバイザ呼出終了処理とについて説明する。
【００８５】
＜ハイパバイザ呼出処理＞
ハイパバイザ呼出処理は、第２プロセッサ１０２で実行中のオペレーティングシステム（ここでは第３ＯＳ３２３）によって実行制御されているタスク（ここではタスクＮ３１４）から第３ＯＳ３２３に対してハイパバイザ３５１の呼び出しルーチンの呼び出しが依頼された場合に、第２プロセッサ１０２での第３ＯＳ３２３の実行を停止させ、代わりに、第１プロセッサ１０１で第３ＯＳ３２３を実行させるという処理である。
【００８６】
このハイパバイザ呼出処理は、第１プロセッサ１０１と第２プロセッサ１０２とによって共同して実行される。
【００８７】
図４は、ハイパバイザ呼出処理のうち第２プロセッサ１０２が行う処理のフローチャートであり、図５は、ハイパバイザ呼出処理のうち第１プロセッサ１０１が行う処理のフローチャートである。
【００８８】
ハイパバイザ呼出処理は、タスクＮ３１４から第３ＯＳ３２３に対してハイパバイザ３５１の呼び出しルーチンの呼び出しが依頼されることで開始される。
【００８９】
ハイパバイザ３５１の呼び出しルーチンが呼び出されると、状態退避モジュール３３１は、その呼び出しルーチンの呼び出し直後の命令でそのタスクの実行を停止させ、第２プロセッサのレジスタの値をレジスタ保存領域３４３に退避する（図４：ステップＳ４００）。
【００９０】
状態退避モジュール３３１がレジスタの値をレジスタ保存領域３４３に退避させると、割込通知モジュール３３２は、割込コントローラ１０３を用いて、第１プロセッサ１０１に対してハイパバイザ呼出割込を通知する（ステップＳ４１０）。
【００９１】
このハイパバイザ呼出割込とは、第２プロセッサ１０２においてハイパバイザ３５１の呼び出しルーチンが呼び出された旨を第１プロセッサ１０１に通知させるための割込みである。
【００９２】
割込通知モジュール３３２が第１プロセッサ１０１に対してハイパバイザ呼出割込を通知すると、待機処理モジュール３３３は、第２プロセッサ１０２を待機状態とする（ステップＳ４２０）。
【００９３】
ステップＳ４２０の処理が終わると、第２プロセッサ１０２は、ハイパバイザ呼出処理のうちの第２プロセッサ１０２が行う処理を終了する。
【００９４】
第１プロセッサ１０１にハイパバイザ呼出割込が通知されると（図５：ステップＳ５００）、コンテクスト更新モジュール３５４は、レジスタ保存領域３４３に退避されているプロセッサのレジスタ値を読み出して、読み出したレジスタ値を、ＯＳ管理モジュール３５３を用いて、第３ＯＳコンテクスト記憶領域３６３に記憶させ（ステップＳ５１０）、第３ＯＳ３２３が実行制御対象ＯＳに追加される旨の信号をＯＳ切替モジュール３５２に通知する。
【００９５】
コンテクスト更新モジュール３５４から、第３ＯＳ３２３が実行制御対象ＯＳに追加される旨の信号を通知されると、ＯＳ切替モジュール３５２は、第３ＯＳ３２３を実行対象ＯＳに追加する（ステップＳ５２０）。
【００９６】
ステップＳ５２０の処理が終わると、第１プロセッサ１０１は、ハイパバイザ呼出処理のうちの第１プロセッサ１０１が行う処理を終了し、ハイパバイザ呼出処理が終了する。
【００９７】
上述のハイパバイザ呼出処理が実行されることで、第２プロセッサ１０２上で動作していた第３ＯＳ３２３が、第１プロセッサ１０１上で動作するようになる。よって、第３ＯＳ３２３は、ハイパバイザ３５１の呼び出しルーチンを実行することができるようになる。
【００９８】
＜ハイパバイザ呼出終了処理＞
ハイパバイザ呼出終了処理は、ハイパバイザ呼出処理によって第１プロセッサ１０１の実行対象になったオペレーティングシステム（ここでは第３ＯＳ３２３）が第１プロセッサ１０１によって実行されている場合において、ハイパバイザ３５１の呼び出しルーチンの処理が終了したときに開始される。このハイパバイザ呼出終了処理は、第１プロセッサ１０１で実行中の第３ＯＳ３２３を停止させて、停止させた第３ＯＳ３２３を第２プロセッサ１０２に実行させる処理であって、第１プロセッサと第２プロセッサとによって共同で実行される処理である。
【００９９】
図６は、ハイパバイザ呼出終了処理のうち第１プロセッサ１０１が行う処理のフローチャートであり、図７は、ハイパバイザ呼出終了処理のうち第２プロセッサ１０２が行う処理のフローチャートである。
【０１００】
ハイパバイザ呼出処理によって第１プロセッサ１０１の実行対象になった第３ＯＳ３２３が第１プロセッサ１０１によって実行されている場合において、ハイパバイザ３５１の呼び出しルーチンの処理が終了すると、ＯＳ切替モジュール３５２は、第１プロセッサ１０１で動作しているタスクと第３ＯＳ３２３との動作を停止して、ＯＳ管理モジュール３５３に、第１プロセッサ１０１のレジスタの値を第３ＯＳコンテクスト記憶領域３６３に退避させ、ハイパバイザ呼び出しルーチンが終了した旨を、コンテクスト更新モジュール３５４に通知する。
【０１０１】
コンテクスト更新モジュール３５４は、ハイパバイザ呼び出しルーチンが終了した旨を通知されると、ＯＳ管理モジュール３５３を用いて、第３ＯＳコンテクスト記憶領域３６３に記憶されているレジスタ値を読み出して、読み出したレジスタ値をレジスタ保存領域３４３に記憶させ（ステップＳ６００）、再開ポインタ格納領域に３４２に復元モジュール３４１の開始アドレスを書き込み（ステップＳ６１０）、割込コントローラ１０３を用いて、第２プロセッサ１０２に対してハイパバイザ呼出終了割込を通知し（ステップＳ６２０）、第３ＯＳ３２３が実行対象ＯＳから除外される旨の信号をＯＳ切替モジュール３５２に通知する。
【０１０２】
このハイパバイザ呼出終了割込とは、第１プロセッサ１０１においてハイパバイザ呼出割込に対応する処理が終了した旨を第２プロセッサ１０２に通知するための割込みである。
【０１０３】
ＯＳ切替モジュール３５２は、第３ＯＳ３２３が実行対象ＯＳから除外される旨の信号が通知されると、第３ＯＳ３２３を実行対象ＯＳから除外する（ステップＳ６３０）。
【０１０４】
ステップＳ６３０の処理が終わると、第１プロセッサ１０１は、ハイパバイザ呼出終了処理のうちの第１プロセッサ１０１が行う処理を終了する。
【０１０５】
第２プロセッサ１０２にハイパバイザ呼出終了割込が通知されると（図７：ステップＳ７００）、第２プロセッサ１０２は、自プロセッサの待機状態を解除し（ステップＳ７１０）、再開ポインタ格納領域３４２を参照して、再開ポインタ格納領域３４２に格納されているアドレスを開始アドレスとする復元モジュール３４１を実行する（ステップＳ７２０）。
【０１０６】
復元モジュール３４１は、第２プロセッサ１０２に実行されることで、レジスタ保存領域３４３に記憶されている値を第２プロセッサ１０２のレジスタに復元する（ステップＳ７３０）。
【０１０７】
ステップＳ７３０の処理が終わると、第２プロセッサ１０２は、ハイパバイザ呼出終了処理のうちの第２プロセッサ１０２が行う処理を終了し、ハイパバイザ呼出終了処理が終了する。
【０１０８】
上述のハイパバイザ呼出終了処理が実行されることで、ハイパバイザ呼出処理によって第１プロセッサ１０１上で動作するようになった第３ＯＳ３２３がハイパバイザ３５１の呼び出しルーチンの処理が終了すると、再び第２プロセッサ１０２上で動作するようになる。
【０１０９】
＜まとめ＞
上述の仮想計算機システム１００によれば、ハイパバイザ３５１を実行していない第２プロセッサ１０２でハイパバイザ３５１の呼び出しルーチンが呼び出されても、ハイパバイザ３５１を実行している第１プロセッサ１０１で、そのハイパバイザ呼び出しルーチンが実行されることとなる。
【０１１０】
従って、第２プロセッサ１０２は、ハイパバイザ／セキュアモード２１０でハイパバイザ３５１を実行させる必要がなく、ハイパバイザ／セキュアモード２１０でセキュアモジュール３７０を実行させることができるようになる。
＜実施の形態２＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態１における仮想計算機システム１００の一部を変形した変形仮想計算機システムについて説明する。
【０１１１】
実施の形態２に係る変形仮想計算機システムは、そのハードウエア構成が実施の形態１に係る仮想計算機システム１００と同一のものであるが、実行されるプログラムの一部が実施の形態１に係る仮想計算機システム１００と異なっている。
【０１１２】
実施の形態１に係る仮想計算機システム１００は、第２プロセッサ１０２の実行対象となるオペレーティングシステムの数が１つとなる場合の例であったが、実施の形態２に係る変形仮想計算機システムでは、第２プロセッサ１０２の実行対象となるオペレーティングシステムの数が複数となる場合の例である。
【０１１３】
以下、本実施の形態２に係る変形仮想計算機システムの構成について、図面を参照しながら、実施の形態１に係る仮想計算機システムの構成との相違点を中心に説明する。
【０１１４】
＜ハードウエア構成＞
仮想計算機システムのハードウエア構成は、実施の形態１の係る仮想計算機システム１００のハードウエア構成と同一のものである。
【０１１５】
ここでは、説明を省略する。
【０１１６】
＜プログラムモジュール構成＞
図８は、ある時刻ｔ０において、マルチプロセッサＬＳＩ１１０上で実行されるべきものとなるモジュールを示すブロック図である。
【０１１７】
変形仮想計算機システムにおけるマルチプロセッサＬＳＩ１１０上で動作するモジュールは、実施の形態１に係る仮想計算機システム１００におけるマルチプロセッサＬＳＩ１１０上で動作するモジュールに対して、第４ＯＳ８２４が追加され、状態退避モジュール３３１が状態退避モジュール８３１に変形され、復元モジュール３４１が第３ＯＳ用復元モジュール８４１と第４ＯＳ用復元モジュール８４２とに変形され、レジスタ保存領域３４３が第３ＯＳ用レジスタ保存領域８４３と第４ＯＳ用レジスタ保存領域８４４とに変形され、コンテクスト更新モジュール３５４がコンテクスト更新モジュール８５４に変形され、ＯＳ管理モジュール３５３がＯＳ管理モジュール８５３に変形され、ＯＳ切替モジュール３５２がＯＳ切替モジュール８５２に変形されている。
【０１１８】
また、コンテクスト更新モジュール３５４がコンテクスト更新モジュール８５４に変形され、ＯＳ管理モジュール３５３がＯＳ管理モジュール８５３に変形され、ＯＳ切替モジュール３５２がＯＳ切替モジュール８５２に変形されたことに伴って、ハイパバイザ３５１がハイパバイザ８５１に変形され、状態退避モジュール３３１が状態退避モジュール８３１に変形されたことに伴って、第３ＯＳ３２３が第３ＯＳ８２３に変形され、第４ＯＳ８２４が追加されたことに伴って、第４ＯＳ８２４によって実行制御されるタスクＸ８１５〜タスクＹ８１６が追加されている。
【０１１９】
第３ＯＳ用レジスタ保存領域８４３は、プロセッサのスーパバイザモード以上の特権モードで実行されているモジュールに限ってアクセス可能となるように設定された、プロセッサのレジスタの値を記憶するための、ＲＡＭ１０５の記憶領域の一部の領域のうち、対象となるプロセッサが第３ＯＳ８２３を実行している際のレジスタの値を記憶するための領域である。
【０１２０】
第４ＯＳ用レジスタ保存領域８４４は、プロセッサのスーパバイザモード以上の特権モードで実行されているモジュールに限ってアクセス可能となるように設定された、プロセッサのレジスタの値を記憶するための、ＲＡＭ１０５の記憶領域の一部の領域のうち、対象となるプロセッサが第４ＯＳ８２４を実行している際のレジスタの値を記憶するための領域である。
【０１２１】
第３ＯＳ用復元モジュール８４１は、第２プロセッサ１０２のスーパバイザモードで実行されるモジュールであって、第３ＯＳ用レジスタ保存領域８４３に記憶されている値を第２プロセッサ１０２のレジスタに復元する機能を有する。
【０１２２】
第４ＯＳ用復元モジュール８４２は、第２プロセッサ１０２のスーパバイザモードで実行されるモジュールであって、第４ＯＳ用レジスタ保存領域８４４に記憶されている値を第２プロセッサ１０２のレジスタに復元する機能を有する。
【０１２３】
第４ＯＳ８２４は、他のオペレーティングシステムに対して独立に動作するマルチタスク対応オペレーティングシステムであって、プロセッサのスーパバイザモードで実行される。
【０１２４】
また、第４ＯＳ８２４は、タスクＸ８１５〜タスクＹ８１６の実行制御を行っており、内部に状態退避モジュール８３６と割込通知モジュール８３７と待機処理モジュール８３８とを含んでいる。
【０１２５】
ここでは、時刻ｔ０において、この第４ＯＳ８２４は実行停止中となっており、第４ＯＳ用レジスタ保存領域８４４に、以前第４ＯＳ８２４が実行停止となった時点における第２プロセッサ１０２のレジスタ値が記憶されているものとする。
【０１２６】
状態退避モジュール８３１は、実施の形態１に係る状態退避モジュール３３１が変形されたものであって、状態退避モジュール３３１の機能に加えて、以下の２つの追加機能を有する。
【０１２７】
追加機能１：自モジュールを含むＯＳが第２プロセッサ１０２で実行されている場合において、自モジュールを含むＯＳ以外のＯＳに対する第２プロセッサ１０２への割込み（以下、「未定義割込み」と呼ぶ。）が通知されると、自モジュールが含まれるＯＳによって実行制御されているタスクの動作を停止させ、自モジュールが動作しているプロセッサのレジスタの値を、自モジュールを含むＯＳに対応するレジスタ保存領域に退避させる機能。
【０１２８】
追加機能２：自モジュールを含むＯＳが第２プロセッサ１０２で実行されている場合において、セキュア機能呼出割込（後述）が通知されると、自モジュールが含まれるＯＳによって実行制御されているタスクの動作を停止させ、自モジュールが動作しているプロセッサのレジスタの値を、自モジュールを含むＯＳに対応するレジスタ保存領域に退避させる機能。
【０１２９】
状態退避モジュール８３６と割込通知モジュール８３７と待機処理モジュール８３８とは、それぞれ、状態退避モジュール８３１と割込通知モジュール３３２と待機処理モジュール３３３と同じ機能を有するモジュールである。
【０１３０】
ＯＳ管理モジュール８５３は、実施の形態１に係るＯＳ管理モジュール３５３が変形されたものであって、第４ＯＳコンテクスト記憶領域８６４が追加されており、ＯＳ管理モジュール３５３の機能に加えて、以下の２つの追加機能を有する。
【０１３１】
ここで、第４ＯＳコンテクスト記憶領域８６４は、レジスタ値の記憶対象となるプロセッサが第４ＯＳ８２４を実行している場合における、レジスタ値を記憶するための、ＲＡＭ１０５の記憶領域の一部の領域であって、第１プロセッサのハイパバイザ／セキュアモードで実行されているモジュールに限ってアクセス可能となるように設定されている。
【０１３２】
追加機能１：第４ＯＳコンテクスト記憶領域８６４に、プロセッサのレジスタ値を記憶する機能。
【０１３３】
追加機能２：第４ＯＳコンテクスト記憶領域８６４からプロセッサのレジスタ値を読み出す機能。
【０１３４】
ＯＳ切替モジュール８５２は、実施の形態１に係るＯＳ切替モジュール３５２が変形されたものであって、ＯＳ切替モジュール３５２の機能に加えて、以下の追加機能を有する。
【０１３５】
追加機能：第１プロセッサで実行されているＯＳによって実行制御されているタスクからそのＯＳに対してセキュアモジュールの呼び出しルーチンの呼び出しが依頼される場合に、その呼び出しルーチンの呼び出し直後の命令でそのタスクとＯＳとの実行を停止させ、ＯＳ管理モジュール８５３に、第１プロセッサ１０１のレジスタの値を対応するＯＳのコンテクスト記憶領域に退避し、セキュアモジュールが呼び出された旨を、コンテクスト更新モジュール８５４に通知する機能。
【０１３６】
コンテクスト更新モジュール８５４は、実施の形態１に係るコンテクスト更新モジュール３５４が変形されたものであって、コンテクスト更新モジュール３５４の機能に加えて、以下の４つの追加機能を有する。
【０１３７】
追加機能１：第１プロセッサ１０１に未定義割込発生割込（後述）が通知された場合に、（１）切替元ＯＳに対応するレジスタ保存領域に退避されているプロセッサのレジスタ値を読み出し、（２）読み出したレジスタ値を、ＯＳ管理モジュール８５３を用いて、切替元ＯＳに対応するコンテクスト記憶領域に記憶させ、（３）ＯＳ管理モジュール８５３を用いて切替先ＯＳに対応するコンテクスト記憶領域に退避されているレジスタ値を読み出し、（４）読み出したレジスタ値を切替先ＯＳに対応するレジスタ保存領域に記憶させ、（５）再開ポインタ格納領域３４２に切替先ＯＳの復元モジュールの開始アドレスを書き込み、（６）割込コントローラ１０３を用いて、第２プロセッサ１０２に対して未定義割込応答割込（後述）を通知する機能。
【０１３８】
追加機能２：第１プロセッサ１０１に変形ハイパバイザ呼出割込（後述）が通知された場合に、（１）切替元ＯＳに対応するレジスタ保存領域に退避されているプロセッサのレジスタ値を読み出し、（２）読み出したレジスタ値を、ＯＳ管理モジュール８５３を用いて、切替元ＯＳに対応するコンテクスト記憶領域に記憶させ、（３）切替元ＯＳが実行制御対象ＯＳに追加される旨の信号をＯＳ切替モジュール８５２に通知し、（４）ＯＳ管理モジュール８５３を用いて切替先ＯＳに対応するコンテクスト記憶領域に退避されているレジスタ値を読み出し、（５）読み出したレジスタ値を切替先ＯＳに対応するレジスタ保存領域に記憶させ、（６）再開ポインタ格納領域３４２に切替先ＯＳの復元モジュールの開始アドレスを書き込み、（７）割込コントローラ１０３を用いて、第２プロセッサ１０２に対して変形ハイパバイザ応答割込（後述）を通知する機能。
【０１３９】
追加機能３：ＯＳ切替モジュール８５２からセキュアモジュールが呼び出された旨を通知された場合に、（１）ＯＳ管理モジュール８５３を用いて、対応するＯＳのコンテクスト記憶領域に記憶されているレジスタ値を読み出して、（２）読み出したレジスタ値を対応するＯＳのレジスタ保存領域に記憶させ、（３）再開ポインタ格納領域３４２に対応するＯＳの復元モジュールの開始アドレスを書き込み、（４）割込コントローラ１０３を用いて、第２プロセッサ１０２に対してセキュア機能呼出割込を通知し、（５）対応するＯＳが実行対象ＯＳから除外される旨の信号をＯＳ切替モジュール８５２に通知するする機能。
【０１４０】
追加機能４：第１プロセッサ１０１にセキュア機能応答割込（後述）が通知された場合に、（１）切替元ＯＳに対応するレジスタ保存領域に退避されているプロセッサのレジスタ値を読み出し、（２）読み出したレジスタ値を、ＯＳ管理モジュール８５３を用いて、切替元ＯＳに対応するコンテクスト記憶領域に記憶させ、（３）割込コントローラ１０３を用いて、第２プロセッサ１０２に対して待機解除割込を通知する機能。
【０１４１】
以上のように構成される変形仮想計算機システムの行う動作について、以下図面を参照しながら説明する。
【０１４２】
＜動作＞
ここでは、仮想計算機システム１００の行う動作のうち、特徴的な動作である、未定義割込処理と変形ハイパバイザ呼出処理とセキュア機能呼出処理とについて説明する。
【０１４３】
＜未定義割込処理＞
未定義割込処理は、第２プロセッサ１０２で実行停止中のオペレーティングシステム（ここでは第４ＯＳ８２４）に対する割込みが通知された場合に、第２プロセッサ１０２で実行中のオペレーティングシステム（ここでは第３ＯＳ８２３）の処理を停止させ、代わりに実行停止中のオペレーティングシステムを第２プロセッサ１０２で実行を再開させるという処理である。
【０１４４】
この未定義割込処理は、第１プロセッサ１０１と第２プロセッサ１０２とによって共同して実行される。
【０１４５】
図９は、未定義割込処理のうち第２プロセッサ１０２が行う処理のフローチャートであり、図１０は、未定義割込処理のうち第１プロセッサ１０１が行う処理のフローチャートである。
【０１４６】
未定義割込処理は、第２プロセッサ１０２で第３ＯＳ８２３が実行されている場合において、第２プロセッサ１０２に対して、実行停止中である第４ＯＳ８２４に対する割込みが通知されることによって開始される。
【０１４７】
第２プロセッサ１０２に対して、第４ＯＳ８２４に対する割込みが通知されると、状態退避モジュール８３１は、第３ＯＳ８２３によって実行されているタスクＮ３１４の動作を停止させ、第２プロセッサ１０２のレジスタ値を第３ＯＳ用レジスタ保存領域８４３に退避させる（図９：ステップＳ９００）。
【０１４８】
状態退避モジュール８３１がレジスタの値を第３ＯＳ用レジスタ保存領域８４３に退避させると、割込通知モジュール３３２は、割込コントローラ１０３を用いて、第１プロセッサ１０１に対して未定義割込発生割込を通知する（ステップＳ９１０）。
【０１４９】
この未定義割込発生割込とは、第２プロセッサ１０２に未定義割込みが通知された旨を第１プロセッサ１０１に通知させるための割込である。
【０１５０】
割込通知モジュール３３２が第１プロセッサ１０１に対して未定義割込発生割込を通知すると、待機処理モジュール３３３は、第２プロセッサ１０２を待機状態とする（ステップＳ９２０）。
【０１５１】
その後、第２プロセッサ１０２は、割込コントローラ１０３から未定義割込応答割込（後述）を通知されるまで、待機状態を継続する（ステップＳ９３０：Ｎｏを繰り返す）。
【０１５２】
第１プロセッサ１０１に未定義割込発生割込が通知されると（図１０：ステップＳ１０００）、コンテクスト更新モジュール８５４は、第３ＯＳ用レジスタ保存領域８４３に退避されているプロセッサのレジスタ値を読み出して、読み出したレジスタ値を、ＯＳ管理モジュール８５３を用いて、第３ＯＳコンテクスト記憶領域３６３に記憶させる（ステップＳ１０１０）。
【０１５３】
ステップＳ１０１０の処理が終わると、コンテクスト更新モジュール８５４は、ＯＳ管理モジュール８５３を用いて、第４ＯＳコンテクスト記憶領域８６４に記憶されているレジスタ値を読み出して、読み出したレジスタ値を、第４ＯＳ用レジスタ保存領域８４４に記憶させ（ステップＳ１０２０）、再開ポインタ格納領域３４２に第４ＯＳ用復元モジュール８４２の開始アドレスを書き込む（ステップＳ１０３０）。
【０１５４】
ステップＳ１０３０の処理が終わると、コンテクスト更新モジュール８５４は、割込コントローラ１０３を用いて、第２プロセッサ１０２に対して未定義割込応答割込を通知する（ステップＳ１０４０）。
【０１５５】
この未定義割込応答割込とは、第１プロセッサ１０１において未定義割込発生割込に対応する処理が終了した旨を第２プロセッサ１０２に通知させるための割込である。
【０１５６】
ステップＳ１０４０の処理が終わると、第１プロセッサ１０１は、未定義割込処理のうちの第１プロセッサ１０１が行う処理を終了する。
【０１５７】
待機状態の第２プロセッサ１０２に未定義割込応答割込が通知されると（図９：ステップＳ９３０：Ｙｅｓ）、第２プロセッサ１０２は、自プロセッサの待機状態を解除し（ステップＳ９４０）、再開ポインタ格納領域３４２を参照して、再開ポインタ格納領域３４２に格納されているアドレスを開始アドレスとする第４ＯＳ用復元モジュール８４２を実行する（ステップＳ９５０）。
【０１５８】
第４ＯＳ用復元モジュール８４２は、第２プロセッサ１０２に実行されることで、第４ＯＳ用レジスタ保存領域８４４に記憶されている値を第２プロセッサ１０２のレジスタに復元する（ステップＳ９６０）。
【０１５９】
ステップＳ９６０の処理が終わると、第２プロセッサ１０２は、未定義割込処理のうちの第２プロセッサ１０２が行う処理を終了し、未定義割込処理が終了する。
【０１６０】
上述の未定義割込処理が実行されることで、実行停止中だった第４ＯＳ８２４は、第２プロセッサ１０２上で実行を再開するようになる。よって、第４ＯＳ８２４は、停止期間中に通知された割込みを処理することができるようになる。
【０１６１】
＜変形ハイパバイザ呼出処理＞
変形ハイパバイザ呼出処理は、第２プロセッサ１０２で実行停止中のオペレーティングシステム（ここでは第４ＯＳ８２４）が存在する場合において、第２プロセッサ１０２で実行中のオペレーティングシステム（ここでは第３ＯＳ８２３）によって実行制御されているタスク（ここではタスクＮ３１４）から実行中のオペレーティングシステムに対してハイパバイザ８５１の呼び出しルーチンの呼び出しが依頼されたときに、第２プロセッサ１０２での実行中のオペレーティングシステムの実行を停止させ、代わりに、第１プロセッサ１０１でその実行中だったオペレーティングシステムを実行させ、さらに、第２プロセッサ１０２で実行停止中のオペレーティングシステムの実行を第２プロセッサ１０２で再開させるという処理である。
【０１６２】
この変形ハイパバイザ呼出処理は、第１プロセッサ１０１と第２プロセッサ１０２とによって共同して実行される。
【０１６３】
図１１は、変形ハイパバイザ呼出処理のうち第２プロセッサ１０２が行う処理のフローチャートであり、図１２は、変形ハイパバイザ呼出処理のうち第１プロセッサ１０１が行う処理のフローチャートである。
【０１６４】
変形ハイパバイザ呼出処理は、第４ＯＳ８２４が第２プロセッサ１０２で実行停止中である場合において、タスクＮ３１４から第３ＯＳ８２３に対してハイパバイザ８５１の呼び出しルーチンの呼び出しが依頼されることで開始される。
【０１６５】
ハイパバイザ８５１の呼び出しルーチンが呼び出されると、状態退避モジュール８３１は、その呼び出しルーチンの呼び出し直後の命令でそのタスクの実行を停止させ、第２プロセッサ１０２のレジスタ値を第３ＯＳ用レジスタ保存領域８４３に退避する（図１１：ステップＳ１１００）。
【０１６６】
状態退避モジュール８３１がレジスタの値を第３ＯＳ用レジスタ保存領域８４３に退避させると、割込通知モジュール３３２は、割込コントローラ１０３を用いて、第１プロセッサ１０１に対して変形ハイパバイザ呼出割込を通知する（ステップＳ１１１０）。
【０１６７】
この変形ハイパバイザ呼出割込とは、第２プロセッサ１０２で実行停止中のオペレーティングシステムが存在する場合において、第２プロセッサ１０２においてハイパバイザ８５１の呼び出しルーチンが呼び出された旨を第１プロセッサ１０１に通知させるための割込みである。
【０１６８】
割込通知モジュール３３２が第１プロセッサ１０１に対して変形ハイパバイザ呼出割込を通知すると、待機処理モジュール３３３は、第２プロセッサ１０２を待機状態とする（ステップＳ１１２０）。
【０１６９】
その後、第２プロセッサ１０２は、割込コントローラ１０３から変形ハイパバイザ呼出終了割込を通知されるまで、待機状態を継続する（ステップＳ１１３０：Ｎｏを繰り返す）。
【０１７０】
第１プロセッサ１０１に変形ハイパバイザ呼出割込が通知されると（図１２：ステップＳ１２００）、コンテクスト更新モジュール８５４は、第３ＯＳ用レジスタ保存領域８４３に退避されているプロセッサのレジスタ値を読み出して、読み出したレジスタ値を、ＯＳ管理モジュール８５３を用いて、第３ＯＳコンテクスト記憶領域３６３に記憶させ（ステップＳ１２１０）、第３ＯＳ８２３が実行制御対象ＯＳに追加される旨の信号をＯＳ切替モジュール８５２に通知する。
【０１７１】
ＯＳ切替モジュール８５２は、第３ＯＳ８２３が実行制御対象ＯＳに追加される旨の信号を通知されると、第３ＯＳ３２３を実行対象ＯＳに追加する（ステップＳ１２２０）。
【０１７２】
ステップＳ１２２０の処理が終わると、コンテクスト更新モジュール８５４は、ＯＳ管理モジュール８５３を用いて、第４ＯＳコンテクスト記憶領域８６４に記憶されているレジスタ値を読み出して、読み出したレジスタ値を、第４ＯＳ用レジスタ保存領域８４４に記憶させ（ステップＳ１２３０）、再開ポインタ格納領域３４２に第４ＯＳ用復元モジュール８４２の開始アドレスを書き込む（ステップＳ１２４０）。
【０１７３】
ステップＳ１２４０の処理が終わると、コンテクスト更新モジュール８５４は、割込コントローラ１０３を用いて、第２プロセッサ１０２に対して変形ハイパバイザ呼出終了割込を通知する（ステップＳ１２５０）。
【０１７４】
この変形ハイパバイザ呼出終了割込とは、第１プロセッサ１０１において変形ハイパバイザ呼出割込に対応する処理が終了した旨を第２プロセッサ１０２に通知させるための割込みである。
【０１７５】
ステップＳ１２５０の処理が終わると、第１プロセッサ１０１は、変形ハイパバイザ呼出処理のうちの第１プロセッサ１０１が行う処理を終了する。
【０１７６】
待機状態の第２プロセッサ１０２に変形ハイパバイザ呼出終了割込が通知されると（図９：ステップＳ１１３０：Ｙｅｓ）、第２プロセッサ１０２は、自プロセッサの待機状態を解除し（ステップＳ１１４０）、再開ポインタ格納領域３４２を参照して、再開ポインタ格納領域３４２に格納されているアドレスを開始アドレスとする第４ＯＳ用復元モジュール８４２を実行する（ステップＳ１１５０）。
【０１７７】
第４ＯＳ用復元モジュール８４２は、第２プロセッサ１０２に実行されることで、第４ＯＳ用レジスタ保存領域８４４に記憶されている値を第２プロセッサ１０２のレジスタに復元する（ステップＳ１１６０）。
【０１７８】
ステップＳ１１６０の処理が終わると、第２プロセッサ１０２は、変形ハイパバイザ呼出処理のうちの第２プロセッサ１０２が行う処理を終了し、変形ハイパバイザ呼出処理が終了する。
【０１７９】
上述の変形ハイパバイザ呼出処理が実行されることで、第２プロセッサ１０２上で動作していた第３ＯＳ８２３が、第１プロセッサ１０１上で動作するようになる。よって、第３ＯＳ８２３は、ハイパバイザ８５１の呼び出しルーチンを実行することができるようになる。
【０１８０】
＜セキュア機能呼出処理＞
図１３は、ある時刻ｔ１において、マルチプロセッサＬＳＩ１１０上で実行されるべきものとなるモジュールを示すブロック図である。
【０１８１】
時刻ｔ０におけるマルチプロセッサＬＳＩ１１０上で実行されるべきものとなるモジュール（図８参照）との相違点は、第４ＯＳ８２４が、第１プロセッサにおける時分割実行対象オペレーティングシステムとなっている点と、第４ＯＳ８２４によって実行制御されているタスクが、タスクＸ８１５のみとなっている点とである。
【０１８２】
セキュア機能呼出処理は、第１プロセッサ１０１で実行中のオペレーティングシステム（ここでは第４ＯＳ８２４）によって実行制御されているタスク（ここではタスクＸ８１５）から実行中のオペレーティングシステムに対してセキュアモジュール３７０の呼び出しルーチンの呼び出しが依頼された場合に、第１プロセッサ１０１で実行中のオペレーティングシステムの実行を停止させ、その停止させたオペレーティングシステムを第２プロセッサ１０２で実行させるという処理である。
【０１８３】
このセキュア機能呼出処理は、第１プロセッサ１０１と第２プロセッサ１０２とによって共同して実行される。
【０１８４】
図１４は、セキュア機能呼出処理のうちの第１プロセッサ１０１が行う処理のフローチャートであり、図１５は、セキュア機能呼出処理のうちの第２プロセッサ１０２が行う処理のフローチャートである。
【０１８５】
セキュア機能呼出処理は、第４ＯＳ８２４が第１プロセッサ１０１で実行中である場合に置いて、タスクＸ８１５から第４ＯＳ８２４に対してセキュアモジュール３７０の呼び出しルーチンの呼び出しが依頼されることで開始される。
【０１８６】
セキュアモジュール３７０の呼び出しルーチンが呼び出されると、ＯＳ切替モジュール８５２は、その呼び出しルーチンの呼び出し直後の命令でタスクＸ８１５と第４ＯＳ８２４との実行を停止させ、ＯＳ管理モジュール８５３に、第１プロセッサ１０１のレジスタの値を第４ＯＳコンテクスト記憶領域８６４に退避し（ステップＳ１４００）、セキュアモジュールが呼び出された旨を、コンテクスト更新モジュール８５４に通知する。
【０１８７】
コンテクスト更新モジュール８５４は、セキュアモジュールが呼び出された旨を通知されると、ＯＳ管理モジュール８５３を用いて、第４ＯＳコンテクスト記憶領域８６４に記憶されているレジスタ値を読み出して、読み出したレジスタ値を第４ＯＳ用レジスタ保存領域８４４に記憶させ（ステップＳ１４１０）、再開ポインタ格納領域３４２に第４ＯＳ用復元モジュール８４２の開始アドレスを書き込み（ステップＳ１４２０）、割込コントローラ１０３を用いて、第２プロセッサ１０２に対してセキュア機能呼出割込を通知（ステップＳ１４３０）する。
【０１８８】
このセキュア機能呼出割込とは、第１プロセッサ１０１においてセキュアモジュールの呼び出しが発生した旨を第２プロセッサ１０２に通知させるための割込である。
【０１８９】
コンテクスト更新モジュール８５４は、第２プロセッサ１０２に対してセキュア機能呼出割込を通知すると、第４ＯＳ８２４が実行対象ＯＳから除外される旨の信号をＯＳ切替モジュール８５２に通知する。
【０１９０】
ＯＳ切替モジュール８５２は、第４ＯＳ８２４が実行対象ＯＳから除外される旨の信号を通知されると、第４ＯＳ８２４を実行対象ＯＳから除外する（ステップＳ１４４０）。
【０１９１】
コンテクスト更新モジュール８５４は、その後セキュア機能応答割込（後述）を通知されるまで待つ（ステップＳ１４５０：Ｎｏを繰り返す。）。
【０１９２】
第２プロセッサ１０２にセキュア機能呼出割込が通知されると（図１５：ステップＳ１５００）、状態退避モジュール８３１は、実行制御しているタスクの動作を停止させ、第２プロセッサ１０２のレジスタの値を、第３ＯＳ用レジスタ保存領域８４３に退避させる（ステップＳ１５１０）。
【０１９３】
状態退避モジュール８３１がレジスタの値を第３ＯＳ用レジスタ保存領域８４３に退避させると、割込通知モジュール３３２は、割込コントローラ１０３を用いて、第１プロセッサ１０１に対してセキュア機能応答割込を通知する（ステップＳ１５２０）。
【０１９４】
このセキュア機能応答割込とは、第２プロセッサ１０２においてセキュア機能呼出割込に対応する処理が終了した旨を第１プロセッサ１０１に通知させるための割込である。
【０１９５】
割込通知モジュール３３２が第１プロセッサ１０１に対してセキュア機能応答割込を通知すると、待機処理モジュール３３３は、第２プロセッサ１０２を待機状態とする（ステップＳ１５３０）。
【０１９６】
その後、第２プロセッサ１０２は、割込コントローラ１０３から待機解除割込（後述）を通知されるまで、待機状態を継続する（ステップＳ１５４０：Ｎｏを繰り返す）。
【０１９７】
第１プロセッサ１０１にセキュア機能応答割込が通知されると（図１４：ステップＳ１４５０：Ｙｅｓ）、コンテクスト更新モジュール８５４は、第３ＯＳ用レジスタ保存領域８４３に退避されているプロセッサのレジスタ値を読み出し、ＯＳ管理モジュール８５３を用いて、読み出したレジスタ値を、第３ＯＳコンテクスト記憶領域３６３に記憶させる（ステップＳ１４６０）。
【０１９８】
コンテクスト更新モジュール８５４は、読み出したレジスタ値を、第３ＯＳコンテクスト記憶領域３６３に記憶させると、割込コントローラ１０３を用いて、第２プロセッサ１０２に対して待機解除割込を通知する（ステップＳ１４７０）。
【０１９９】
この待機解除割込とは、待機状態を解除させる旨を第２プロセッサ１０２に通知させるための割込である。
【０２００】
ステップＳ１４７０の処理が終わると、第１プロセッサ１０１は、セキュア機能呼出処理のうちの第１プロセッサ１０１が行う処理を終了する。
【０２０１】
第２プロセッサ１０２に待機解除割込が通知されると（図１５：ステップＳ１５４０：Ｙｅｓ）、第２プロセッサ１０２は、自プロセッサの待機状態を解除し（ステップＳ１５５０）、再開ポインタ格納領域３４２を参照して、再開ポインタ格納領域３４２に格納されているアドレスを開始アドレスとする第４ＯＳ用復元モジュール８４２を実行する（ステップＳ１５６０）。
【０２０２】
第４ＯＳ用復元モジュール８４２は、第２プロセッサ１０２に実行されることで、第４ＯＳ用レジスタ保存領域８４４に記憶されている値を第２プロセッサ１０２のレジスタに復元する（ステップＳ１５７０）。
【０２０３】
ステップＳ１５７０の処理が終わると、第２プロセッサ１０２は、セキュア機能呼出処理のうちの第２プロセッサ１０２の行う処理を終了し、セキュア機能呼出処理が終了する。
【０２０４】
上述のセキュア機能呼出処理が実行されることで、第１プロセッサ１０１上で動作していた第４ＯＳが、第２プロセッサ１０２上で動作するようになる。よって、第４ＯＳ８２４は、セキュアモジュール３７０を実行することができるようになる。
【０２０５】
変形仮想計算機システムの行う特徴的な動作の例として、上述の未定義割込処理と変形ハイパバイザ呼出処理とセキュア機能呼出処理とについて説明したが、さらに例えば以下のような動作を変形仮想計算機システムに行わせることができる。
【０２０６】
＜第２プロセッサ１０２における時分割処理＞
前述の未定義割込処理は、第２プロセッサ１０２で実行中の第３ＯＳ８２３を実行停止させ、第２プロセッサ１０２で実行停止中の第４ＯＳ８２４を実行させるものであり、第２プロセッサ１０２で実行停止中の第４ＯＳ８２４に対する割込みが通知されることによって開始されるものであった。これに対して、例えば、第３ＯＳ８２３の状態退避モジュール８３１と第４ＯＳ８２４の状態退避モジュール８３６とが、それぞれタイマ１０９を用いて所定時間Ｔ２（例えば、１０ｍｓ）毎に未定義割込処理と同様の処理を開始するようにしておけば、第２プロセッサ１０２上で、所定時間Ｔ２（例えば、１０ｍｓ）周期で、第３ＯＳ８２３と第４ＯＳ８２４とを切替えて実行させることができるようになる。
【０２０７】
＜まとめ＞
上述の変形仮想計算機システムによれば、第２プロセッサ１０２で実行停止中のオペレーティングシステムに対する割込みが発生しても、そのオペレーティングシステムを再開させることで、その割込みに対する処理が実行されることとなる。
【０２０８】
また、この変形仮想計算機システムによれば、セキュアモジュール３７０を実行していない第１プロセッサ１０１でセキュアモジュール３７０の呼び出しルーチンが呼び出されても、セキュアモジュール３７０を実行している第２プロセッサ１０２で、そのセキュアモジュール３７０の呼び出しルーチンが実行されることとなる。
【０２０９】
また、この変形仮想計算機システムによれば、ハイパバイザ８５１を実行していない第２プロセッサ１０２でハイパバイザ８５１の呼び出しルーチンが呼び出されても、ハイパバイザ８５１を実行している第１プロセッサ１０１で、そのハイパバイザ呼び出しルーチンが実行されることとなる。
【０２１０】
従って、第２プロセッサ１０２は、ハイパバイザ／セキュアモード２１０でハイパバイザ８５１を実行させる必要がなく、ハイパバイザ／セキュアモード２１０でセキュアモジュール３７０を実行させることができるようになる。
＜補足＞
以上、本発明に係る仮想計算機システムの一実施形態として、実施の形態１、実施の形態２において、２つの仮想計算機システムの例について説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示した通りの仮想計算機システムに限られないことはもちろんである。
（１）実施の形態１において、仮想計算機システム１００が２つのプロセッサを備える場合の例について説明したが、ハイパバイザを実行する少なくとも１つのプロセッサと、セキュアモジュールを実行する少なくとも１つのプロセッサとを備えていれば、プロセッサの数は、必ずしも２つに限られることはなく、例えば、プロセッサの数は、３、５、１０等であっても構わない。
（２）実施の形態１において、第１プロセッサ１０１においてハイパバイザ３５１による切り換え実行制御処理対象となるオペレーティングシステムの数が２つの場合を例として説明したが、ハイパバイザ３５１による切り換え実行制御処理対象になることができれば、オペレーティングシステムの数は、必ずしも２つに限られる必要はなく、例えば、オペレーティングシステムの数は、３、５、１０等であっても構わない。
【０２１１】
また、実施の形態２において、第２プロセッサ１０２において実行対象となるオペレーティングシステムの数が２つの場合を例として説明したが、第２プロセッサ１０２の実行対象となることができれば、オペレーティングシステムの数は必ずしも２つに限られる必要はなく、例えば、オペレーティングシステムの数は３，５，１０等であっても構わない。
（３）実施の形態１において、第１プロセッサ１０１と第２プロセッサ１０２と割込コントローラ１０３とＲＯＭ１０４とＲＡＭ１０５と第１インターフェース１０６と第２インターフェース１０７と第３インターフェース１０８とタイマ１０９とが、１つのマルチプロセッサＬＳＩ１１０に集積されている場合の例について説明したが、これらの回路が必ずしも１つのＬＳＩに集積されている必要はなく、マルチプロセッサＬＳＩ１１０によって実現される機能を実現することができれば、必ずしも１つのＬＳＩに集積されている必要はなく、例えば、各回路がそれぞれ互いに異なる集積回路に集積されている構成であっても構わない。
【０２１２】
なお、実施の形態１および２においては、オペレーティングシステムの切り替えの際に、プロセッサのレジスタの値を用いて実行状態の退避または復元を行う例を説明したが、レジスタ値以外に、（１）例えば、仮想計算機ごとの暗号キーなど、プロセッサ内ローカルメモリの全体または一部の情報、（２）例えば、命令コード、データがキャッシュに載っていることを想定して動くプログラムがある場合にはキャッシュの一部、（３）ＴＬＢへのロード命令がある場合にはＴＬＢエントリの内容、といったように、プロセッサ内の記憶場所に記憶された情報を実行状態情報として用いてもよい。
（４）実施の形態１において、第１プロセッサ１０１と第２プロセッサ１０２とが、それぞれ２つの特権モードを備える構成の場合を例として説明したが、それぞれ少なくとも２つの特権モードを備えていれば、必ずしも特権モードの数は２つに限られる必要はなく、例えば、第１プロセッサ１０１と第２プロセッサ１０２とのうち、一方が３つの特権モードを備える構成であっても構わない。
（５）実施の形態１において、復元モジュール３４１がオペレーティングシステムの外部に設けられている構成の場合を例として説明したが、第２プロセッサ１０２において待機状態が解除された場合に、復元モジュール３４１が第２プロセッサ１０２によって実行されることができれば、必ずしも復元モジュール３４１は、オペレーティングシステムの外部に設けられている必要はなく、例えば、復元モジュール３４１が第３ＯＳ３２３の内部に設けられている構成であっても構わない。
（６）実施の形態１において、レジスタ保存領域３４３がオペレーティングシステムの外部に設けられている構成の場合を例として説明したが、コンテクスト更新モジュール３５４からアクセスすることができれば、必ずしも、レジスタ保存領域３４３は、オペレーティングシステムの外部に設けられている必要はなく、例えば、レジスタ保存領域３４３が第３ＯＳ３２３の内部に設けられている構成であっても構わない。
（７）実施の形態１において、セキュアプログラムは、ＲＯＭ１０４に記憶されている暗号キーを用いて行う復号に係る処理を行う機能を有するものである場合を例として説明したが、第３者に対して秘匿すべき処理に係る機能を有するものであれば、必ずしも、ＲＯＭ１０４に記憶されている暗号キーを用いて行う復号に係る処理を行う機能に限られる必要はなく、例えば、クレジットカードの暗証番号を管理する処理に係る機能を有するものであっても構わない。
（８）実施の形態１において、仮想計算機システム１００がハードディスク装置１２８を備えている場合の例について説明したが、大容量外部記憶装置を備えていれば、必ずしもハードディスク装置１２８を備えている必要はなく、例えば、大容量フラッシュメモリを備える構成であっても構わない。
（９）以下、さらに本発明の一実施形態に係る仮想計算機システムの構成及びその変形例と各効果について説明する。
【０２１３】
（ａ）本発明の一実施形態に係る仮想計算機システムは、メモリと当該メモリに接続された第１プロセッサ及び第２プロセッサとを備える仮想計算機システムであって、前記第１プロセッサと前記第２プロセッサとは、それぞれ、下位特権モードと、当該下位特権モードよりも上位の上位特権モードとを備え、前記メモリは、プロセッサの実行状態に関する実行状態情報を保存する実行状態保存領域を有し、前記仮想計算機システムは、プロセッサ上で前記下位特権モードで実行されるオペレーティングシステムと、前記第１プロセッサ上で前記上位特権モードで実行されるハイパバイザであり、前記第１プロセッサに、オペレーティングシステムの切替実行制御処理を、前記実行状態保存領域への実行状態情報の退避及び復元により実行させ、前記実行状態保存領域に退避されている実行状態情報を用いて前記第２プロセッサへ復元通知を行うためのハイパバイザと、前記第２プロセッサ上で前記下位特権モードで実行される復元プログラムであり、前記復元通知を受けた前記第２プロセッサに、前記実行状態保存領域に格納された実行状態情報を前記第２プロセッサの実行状態情報として復元させるための復元プログラムとを備えることを特徴とする。
【０２１４】
上述の構成を備える本実施形態に係る仮想計算機システムによると、第２プロセッサにおいて、上位特権モードでハイパバイザを実行していなくても、第１プロセッサにおいて切り替え処理対象となっているオペレーティングシステムを、第２プロセッサに移行して実行することができるようになる。
【０２１５】
これにより、第２プロセッサの上位特権モードがセキュアプログラムを実行するためのセキュアモードとして利用可能となる。
【０２１６】
従って、仮想計算機を構成する第１プロセッサと第２プロセッサとが特権モードを２つしか備えていなくても、システムの信頼性を確保したオペレーティングシステムの切り替え処理機能と、セキュアプログラムを利用したセキュリティ保護機能とを共存させることができることとなる。
【０２１７】
図１７は、上記変形例における仮想計算機システム１７００の概略構成図である。
【０２１８】
同図に示されるように仮想計算機システム１７００は、第１プロセッサ１７０１と第２プロセッサ１７０２とメモリ１７０３とから構成されている。そして、メモリ１７０３は、実行状態保存領域１７１１を有し、オペレーティングシステム１７１２とハイパバイザ１７１３と復元プログラム１７１４とがロードされている。
【０２１９】
第１プロセッサ１７０１は、メモリ１７０３に接続され、下位特権モードと、下位特権モードよりも上位の上位特権モードとを備えている。この第１プロセッサ１７０１は、一例として、実施の形態１における第１プロセッサ１０１（図１参照）として実現される。
【０２２０】
第２プロセッサ１７０２は、メモリ１７０３に接続され、下位特権モードと、下位特権モードよりも上位の上位特権モードとを備えている。この第２プロセッサ１７０２は、一例として、実施の形態１における第２プロセッサ１０２（図１参照）として実現される。
【０２２１】
メモリ１７０３は、第１プロセッサ１７０１と第２プロセッサ１７０２とに接続される。このメモリ１７０３は、一例として、実施の形態１におけるＲＯＭ１０４とＲＡＭ１０５（図１参照）として実現される。
【０２２２】
実行状態保存領域１７１１は、プロセッサの実行状態に関する実行状態情報を保持する領域である。この実行状態保存領域１７１１は、一例として、実施の形態１におけるレジスタ保存領域３４３と第１ＯＳコンテクスト記憶領域３６１と第２ＯＳコンテクスト記憶領域３６２と第３ＯＳコンテクスト記憶領域３６３（図３参照）として実現される。
【０２２３】
オペレーティングシステム１７１２は、下位特権モードで実行されるオペレーティングシステムである。このオペレーティングシステム１７１２は、一例として、実施の形態１における第１ＯＳ３２１、第２ＯＳ３２２、第３ＯＳ３２３（図３参照）等として実現される。
【０２２４】
ハイパバイザ１７１３は、第１プロセッサ１７０１上で上位特権モードで実行されるハイパバイザであり、第１プロセッサ１７０１に、オペレーティングシステムの切替実行制御処理を、実行状態保存領域１７１１への実行状態情報の退避及び復元により実行させ、前記実行状態保存領域１７１１に退避されている実行状態情報を用いて第２プロセッサ１７０２へ復元通知を行うためのハイパバイザである。このハイパバイザ１７１３は、一例として、実施の形態１におけるハイパバイザ３５１（図３参照）として実現される。
【０２２５】
復元プログラム１７１４は、第２プロセッサ１７０２上で下位特権モードで実行されるプログラムであり、復元通知を受けた第２プロセッサ１７０２に、実行状態保存領域１７１１に格納された実行状態情報を第２プロセッサ１７０２の実行状態情報として復元させるためのプログラムである。この復元プログラム１７１４は、一例として、実施の形態１における、復元モジュール３４１として実現される。
【０２２６】
（ｂ）また、前記実行状態保存領域は、前記第１プロセッサ及び前記第２プロセッサから前記下位特権モードではアクセス不能であり、前記第１プロセッサから前記上位特権モードでアクセス可能である第１実行状態保存領域と、前記第２プロセッサから前記下位特権モードでアクセス可能である第２実行状態保存領域とを有し、前記ハイパバイザは、プロセッサに実行させる前記実行状態情報の退避及び復元に、前記第１実行状態保存領域を用いて実行させ、実行停止中のオペレーティングシステムを前記第２プロセッサで実行させるためのプロセッサ変更条件が成立する場合に、当該実行停止中のオペレーティングシステムに対して前記第１実行状態保存領域に退避されている実行状態情報を前記第２実行状態保存領域に設定し、前記復元プログラムは、前記第２実行状態保存領域に格納された実行状態情報を前記第２のプロセッサの実行状態情報として復元させるとしてもよい。
【０２２７】
このような構成にすることで、オペレーティングシステムの切替実行処理で利用される実行状態情報を、下位特権モードのプロセッサからアクセス不能とすることができる。
【０２２８】
（ｃ）また、前記ハイパバイザは、前記第１プロセッサの実行対象命令群の中に、前記第２プロセッサの前記上位特権モードで実行される必要のある処理を呼び出す部分が含まれている場合に、前記第１プロセッサで実行中のオペレーティングシステムを停止させる実行停止部を含み、前記プロセッサ変更条件は、前記実行停止部によって、前記第１プロセッサで実行中のオペレーティングシステムが停止させられたことであるとしてもよい。
【０２２９】
このような構成にすることによって、第１プロセッサの実行対象命令群の中に第２プロセッサの上位特権モードで実行させる必要のある処理が含まれる場合に、その処理を第２プロセッサの実行対象とすることができるようになる。
【０２３０】
（ｄ）また、前記オペレーティングシステムは複数であって、前記複数のオペレーティングシステムのそれぞれは、前記第２プロセッサで実行中の自オペレーティングシステムを停止させるためのＯＳ停止条件が成立する場合に、前記第２プロセッサに、前記第２プロセッサの実行状態情報を前記第２実行状態保存領域に退避させた上で待機状態へ移行させるための待機状態設定部を含むとしてもよい。
【０２３１】
このような構成にすることによって、第２プロセッサで実行中のオペレーティングシステムを停止させる必要がある場合に、そのオペレーティングシステムを停止させることができるようになる。
【０２３２】
（ｅ）また、前記仮想計算機システムは、さらに、割込みコントローラを備え、前記複数のオペレーティングシステムのそれぞれは、前記ＯＳ停止条件が成立する場合において、さらに自オペレーティングシステムを前記第１プロセッサで実行させるためのＯＳ再開条件が成立するときに、前記第２プロセッサに、前記割込みコントローラを介して前記第１プロセッサへ複写通知割込みを通知させるための割込み通知部を含み、前記ハイパバイザは、前記第１プロセッサに前記複写通知割込みが通知された場合に、前記第１プロセッサに、前記第２実行状態保存領域に退避されている実行状態情報を前記第１実行状態保存領域に設定させる設定部を含むとしてもよい。
【０２３３】
このような構成にすることによって、第２プロセッサで実行中のオペレーティングシステムを第１プロセッサで実行させる必要がある場合に、そのオペレーティングシステムを第１プロセッサで実行させることができるようになる。
【０２３４】
（ｆ）また、前記第２実行状態保存領域は、前記複数のオペレーティングシステムのそれぞれに対応するＯＳ対応実行状態保存領域をそれぞれ含み、前記ハイパバイザは、前記プロセッサ変更条件が成立する場合に行う、前記第２実行状態保存領域への実行状態情報の設定を、設定対象となる実行状態情報に対応するオペレーティングシステムに対応するＯＳ対応実行状態保存領域への設定により行い、前記待機状態設定部は、前記ＯＳ停止条件が成立する場合に行う、前記第２実行状態保存領域への実行状態情報の設定を、設定対象となる実行状態情報に対応するオペレーティングシステムに対応するＯＳ対応実行状態保存領域への設定により行い、前記設定部は、前記複写通知割込みが通知された場合に行う、前記第１実行状態保存領域への実行状態情報の設定を、設定対象となる実行状態情報に対応するオペレーティングシステムに対応するＯＳ対応実行状態保存領域に退避されている実行状態情報への設定により行うとしてもよい。
【０２３５】
このような構成にすることによって、複数のオペレーティングシステムのそれぞれに対応するプロセッサのレジスタ値を、互いに独立に設定することができるようになる。
【０２３６】
（ｇ）また、前記第２プロセッサは、待機状態において前記復元通知割込みが通知されると、待機状態を解除して、前記復元プログラムを実行するとしてもよい。
【０２３７】
このような構成にすることによって、第２プロセッサに復元通知割込みが通知されれば、例え第２プロセッサが待機状態であっても、第２プロセッサによって復元プログラムが実行されることとなる。
【０２３８】
（ｈ）また、前記メモリは、プロセッサから前記下位特権モードでアクセス可能であるアドレス保存領域を有し、前記ハイパバイザは、前記第１プロセッサに、第１実行状態保存領域に退避されている実行状態情報を前記第２実行状態保存領域に設定させる場合に、前記第１プロセッサに、前記復元プログラムの実行開始アドレスを前記アドレス保存領域に記憶させるためのアドレス設定部を有し、前記第２プロセッサは、前記復元プログラムの実行を、前記アドレス保存領域に設定されているアドレスを参照して行うとしてもよい。
【０２３９】
このような構成にすることによって、第２プロセッサは、アドレス保存領域に設定されているアドレスを参照して、復元プログラムを実行することができるようになる。
【０２４０】
（ｉ）また、前記復元プログラムは、前記仮想計算機システムによって実行されるオペレーティングシステムの一部として実装され、前記復元プログラム格納領域は、前記オペレーティングシステム格納領域に含まれるとしてもよい。
【０２４１】
このような構成にすることによって、オペレーティングシステム格納領域の一部の領域に復元プログラム格納領域を設定することができるようになる。
【０２４２】
（ｊ）また、前記実行状態領域に保存する実行状態情報はレジスタ値であるとしてもよい。
【０２４３】
このような構成にすることによって、実行状態領域に保存する実行状態情報を、レジスタからレジスタ値を読み出すことで生成することができるようになる。
【産業上の利用可能性】
【０２４４】
本発明は、複数のプロセッサを有する仮想計算機システムに広く利用することができる。
【符号の説明】
【０２４５】
１００  仮想計算機システム
１１０  マルチプロセッサＬＳＩ
１０１  第１プロセッサ
１０２  第２プロセッサ
１０３  割込コントローラ
１０４  ＲＯＭ
１０５  ＲＡＭ
１０９  タイマ
２１０  ハイパバイザ／セキュアモード
２２０  スーパバイザモード
２３０  ユーザモード
３２１  第１ＯＳ
３２２  第２ＯＳ
３２３  第３ＯＳ
３３１  状態退避モジュール
３３２  割込通知モジュール
３３３  待機処理モジュール
３４１  復元モジュール
３４２  再開ポインタ格納領域
３４３  レジスタ保存領域
３５１  ハイパバイザ
３５２  ＯＳ切替モジュール
３５３  ＯＳ管理モジュール
３５４  コンテクスト更新モジュール
３６１  第１ＯＳコンテクスト記憶領域
３６２  第２ＯＳコンテクスト記憶領域
３６３  第３ＯＳコンテクスト記憶領域
３７０  セキュアモジュール
【図１】
2012086106.tif 000003
【図２】
2012086106.tif 000004
【図３】
2012086106.tif 000005
【図４】
2012086106.tif 000006
【図５】
2012086106.tif 000007
【図６】
2012086106.tif 000008
【図７】
2012086106.tif 000009
【図８】
2012086106.tif 000010
【図９】
2012086106.tif 000011
【図１０】
2012086106.tif 000012
【図１１】
2012086106.tif 000013
【図１２】
2012086106.tif 000014
【図１３】
2012086106.tif 000015
【図１４】
2012086106.tif 000016
【図１５】
2012086106.tif 000017
【図１６】
2012086106.tif 000018
【図１７】
2012086106.tif 000019
【国際調査報告】
2012086106.tif 000020
2012086106.tif 000021
2012086106.tif 000022