以下、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
図1は、本発明の実施の形態における仮想計算機表示装置を備えた情報処理装置のブロック図である。この情報処理装置1000は、それ自体としてユーザの使用に供することもできるが、様々な機器に組み込まれてもよい。情報処理装置1000は、代表的にはPC(Personal Computer;パーソナルコンピュータ又はパソコン)等の汎用のコンピュータであるが、PDA(Personal Digital Assistance)又は携帯電話機等の携帯通信端末でもよい。その他、情報処理装置1000としては、テレビ、ハーディスクレコーダー、DVDやブルーレイなどの各種ディスクレコーダーや各種ディスクプレイヤー、カーナビゲーションシステム等を採用してもよい。
情報処理装置1000は、プロセッサ1、メモリ装置2、通信装置34、入力装置40、表示装置45、タイマ回路51、及び割り込みコントローラ55を備えている。プロセッサ1は、代表的には、CPU(Central Processing Unit;中央演算処理装置)や、メディア処理用やグラフィック処理用のプロセッサ、DSP(Digital Signal Processor)等の演算処理装置である。図1に示す各ブロックは、バスライン50を通じて互いに接続されている。また、必要に応じて、バスライン50には、ハードディスク装置25及び読取装置32を接続することが可能である。ハードディスク装置25、読取装置32、入力装置40、及び表示装置45は、それぞれ、インタフェース26,35,41,46を通じてバスライン50に接続される。
プロセッサ1は、単一のプロセッサで構成されても良く、複数のプロセッで構成されてもよい。一例として、情報処理装置1000は、複数のプロセッサ11、12、13、・・・を有するものとする。メモリ装置2は、ROM(Read Only Memory)21及びRAM(Random Access Memory)22を備えている。
ROM21は、プロセッサ1の動作を規定するコンピュータプログラム及びデータを記憶している。コンピュータプログラム及びデータは、ハードディスク装置25に記憶させることもできる。プロセッサ1は、ROM21又はハードディスク装置25が格納するコンピュータプログラム及びデータを、必要に応じてRAM22に書き込みつつ、コンピュータプログラムが規定する処理を実行する。RAM22は、プロセッサ1が処理を実行するのに伴って発生するデータを一時的に記憶する媒体としても機能する。ROM21としては、フラッシュROMのように書き込みが可能で、電源を切っても記憶内容を保持できる不揮発性のメモリや記憶媒体が含まれる。RAM22としては、電源を切ると記憶内容が保持されない揮発性のメモリや記憶媒体が含まれる。
ハードディスク装置25は、内蔵する不図示のハードディスクへ、コンピュータプログラム、又はデータを書き込み及び読み出す装置である。読取装置32は、記録媒体31(例えばCD、DVD、メモリカードなど)に記録されたコンピュータプログラム、又はデータを読み取る装置である。通信装置34は、電話回線、ネットワーク線、無線、赤外線通信等の通信回線33を通じて、外部と自身との間で、コンピュータプログラム、又はデータを交換する装置である。入力装置40は、ユーザの操作によりデータ等を入力する装置であり、例えば、PDAに配列されたキーボード、携帯電話機に配列された入力ボタン、又は着脱自在のマウス、キーボードである。表示装置45は、データ、画像等を画面に表示したり、データ等を音声で出力したりする装置であり、例えばLCD(Liquid Crystal Display;液晶表示器)、ブラウン管、スピーカである。
タイマ回路51は、一定の周期でタイマ割り込み信号を出力する装置である。割り込みコントローラ55は、タイマ回路51、入力装置40、プロセッサ1、ネットワークデバイスとしての通信装置34、ハードディスク装置25、読取装置32等から送られる割り込み要求信号を、プロセッサ1へ中継する装置である。各装置からの割り込み要求には優先度が付けられている。割り込みコントローラ55は、同時に複数の装置から割り込みが発生した場合には、それらの要求を優先度に応じて調停する機能を有している。
以上のように、情報処理装置1000は、コンピュータとして構成されている。上記コンピュータプログラムは、ROM21、ハードディスク装置25、不図示のフレキシブルディスク、CD−ROM等の記録媒体31を通じて供給することも、通信回線33等の伝送媒体を通じて供給することも可能である。例えば、記録媒体31(CD−ROM)に記録されたコンピュータプログラムは、読取装置32を情報処理装置1000へ接続することで、読み出すことができる。また、情報処理装置1000は、読み出したコンピュータプログラムを、RAM22又はハードディスク装置25に格納することができる。
プログラム記録媒体としてのROM21からコンピュータプログラムが供給される場合には、当該ROM21を情報処理装置1000に搭載することにより、プロセッサ1は上記コンピュータプログラムに従った処理を実行可能することができる。通信回線33等の伝送媒体を通じて供給されるコンピュータプログラムは、通信装置34を通じて受信され、例えば、RAM22又はハードディスク装置25に格納される。伝送媒体は、有線の伝送媒体に限られず、無線の伝送媒体であってもよい。また、伝送媒体は通信線路のみでなく、通信線路を中継する中継装置、例えばルータも含む。
仮想計算機表示装置10は、メモリ装置2又はハードディスク装置25に格納され仮想計算機表示プログラムを、メモリ装置2又はハードディスク装置25と、プロセッサ1とが協働して実行することにより実現される。
図2は、本発明の実施の形態1における仮想計算機表示装置10の構成の一例を示す概略図である。本実施の形態では、仮想計算機制御部1001が制御する仮想計算機として、セキュア仮想計算機101(第2の仮想計算機の一例)と非セキュア仮想計算機102(第1の仮想計算機の一例)とが存在することを想定する。
セキュア仮想計算機101は、何らかのユーザプログラムであり、画面に何らかの画像を描画しようとする一つ又は複数のアプリケーション1010を備える。メモリ装置2は、セキュア仮想計算機101及び非セキュア仮想計算機102が共有して使用できる共有メモリ1031と、セキュア仮想計算機101のみが使用できる非共有メモリ1030とを備えている。共有メモリ1031と非共有メモリ1030とは、必ずしもメモリチップ或いはメモリデバイスとして物理的に分離させる必要はない。仮想計算機制御部1001が単一メモリデバイスの特定のメモリ領域に対して、いずれの仮想計算機にアクセス権を付与するか管理することにより、共有メモリ1031と非共有メモリ1030とを区別すればよい。
アプリケーション1010は、画面に描画する画面レイヤのデータを作成するために、表示管理ミドルウェア1011を通じて画面レイヤ用の画面バッファを獲得する。そして、アプリケーション1010は、描画したい画面データを計算し、獲得した画面バッファに描画する。
表示管理ミドルウェア1011は、アプリケーション1010から画面バッファの獲得要求を受け付けると、メモリ装置2の非共有メモリ1030から画面バッファを獲得し、画面バッファのアドレスをアプリケーション1010に渡す。すなわち、表示管理ミドルウェア1011は、セキュア仮想計算機101の画面レイヤ用に、非セキュア仮想計算機102にとってアクセス不可のメモリ領域から画面バッファを獲得する。
また、表示管理ミドルウェア1011は、1つ又は複数のアプリケーション1010の画面レイヤのサイズに関する情報、画面上の配置に関する情報、各画面レイヤの表示順序に関する情報を管理する。そして、表示管理ミドルウェア1011は、管理する画面レイヤの情報を、オペレーティングシステムであるOS1012を通じて表示制御ドライバ1013に通知する。
非セキュア仮想計算機102でもセキュア仮想計算機101と同様に、表示管理ミドルウェア1021が個々のアプリケーション1020が描画する画面レイヤの情報を管理し、表示制御ドライバ1023に通知する。ただし、表示管理ミドルウェア1021が獲得する画面レイヤ用の画面バッファは、メモリ装置2の共有メモリ1031から獲得される。すなわち、非セキュア仮想計算機102の画面レイヤ用の画面バッファは、セキュア仮想計算機101がアクセス可能なメモリ領域から獲得される。
表示制御ドライバ1013及び表示制御ドライバ1023は、仮想計算機制御部1001を通じて連携し、表示合成エンジン1002を使用し、又はソフトウェア内の処理により、セキュア仮想計算機101の画面レイヤと非セキュア仮想計算機102の画面レイヤとを合成する。そして、表示制御ドライバ1013及び表示制御ドライバ1023は、最終的に出力する画面データを表示装置45に表示できるように制御する。
仮想計算機制御部1001は、セキュア仮想計算機101及び非セキュア仮想計算機102を制御するものであり、プロセッサ1の実行権をどの仮想計算機に渡して実行させるかスケジューリングする。また、実デバイスからの割り込み要求を受けて、その割り込みの要因を解析し、どの仮想計算機にその割り込みを配送するか決定する。
仮想計算機制御部1001は、一般にはバーチャルマシンモニタ(VMM)、又はハイパバイザ(Hyper visor)と呼ばれるものである。
次に、図3を参照し、セキュア仮想計算機101の画面レイヤと非セキュア仮想計算機102の画面レイヤとが合成される処理について説明する。図3は、セキュア仮想計算機101の画面レイヤと非セキュア仮想計算機102の画面レイヤとが合成される処理を示す模式図である。
セキュア仮想計算機101は、表示管理ミドルウェア1011を通じて非共有メモリ1030に画面バッファ1201を確保する。そして、セキュア仮想計算機101は、確保した画面バッファ1201に、アプリケーション1010が表示を要求する画面レイヤ1211を描画する。
一方、非セキュア仮想計算機102は、表示管理ミドルウェア1021を通じて共有メモリ1031に画面バッファ1202を確保する。そして、非セキュア仮想計算機102は、確保した画面バッファ1202に、アプリケーション1020が表示を要求する画面レイヤ1212と画面レイヤ1213とを描画する。
セキュア仮想計算機101の画面レイヤ1211と、非セキュア仮想計算機102の画面レイヤ1212,1213とは、1つの表示装置45に表示するために最終的に画面バッファ1203で合成されて表示される。この場合、セキュア仮想計算機101の画面レイヤ1211と、非セキュア仮想計算機102の画面レイヤ1212,1213とは、それぞれ前面(上層)又は背面(下層)であるかを決める表示順序が設定されている。
例えば、図3では、非セキュア仮想計算機102において、画面レイヤ1213が最下層であり、画面レイヤ1212が最上層である。また、セキュア仮想計算機101の画面レイヤ1211は、画面レイヤ1212と画面レイヤ1213との間に入る。そのため、画面バッファ1203において、最終的には下から順番に画面レイヤ1213、1211、1212が重ね合わされる。
ここで、セキュア仮想計算機101及び非セキュア仮想計算機102が、それぞれ管理する画面レイヤを個別に合成する場合を説明する。この場合、セキュア仮想計算機101は、表示管理ミドルウェア1011が管理する画面レイヤ1211を、画面バッファ1201に描画する。
また、非セキュア仮想計算機102は、表示管理ミドルウェア1021が管理する画面レイヤ1212,1213を、画面バッファ1202に描画する。このように、従来では、各仮想計算機の画面レイヤの描画は、各表示制御ドライバにより個別に実施されている。
そして、表示合成エンジン1002は、合成用の画面バッファ1203を確保し、確保した画面バッファ1203に、画面バッファ1201に描画された画面レイヤ1211と、画面バッファ1202に描画された画面レイヤ1212,1213とを描画し、画面レイヤ1211〜1213を合成する。
このように、従来の構成では、セキュア仮想計算機101及び非セキュア仮想計算機102は、表示順序の情報を共有せず、個別に画面レイヤを描画していた。そのため、セキュア仮想計算機101は、画面レイヤ1211の上に非セキュア仮想計算機102の画面レイヤ1212が存在し、画面レイヤ1211の下に非セキュア仮想計算機102の画面レイヤ1213が存在することを知ることができなかった。また、非セキュア仮想計算機102は、画面レイヤ1212と画面レイヤ1213との間に、セキュア仮想計算機101の画面レイヤ1211が存在することを知ることができなかった。
また、表示合成エンジン1002も、最終的に合成すべき画面レイヤの表示順序を知らない。そのため、表示合成エンジン1002は、画面レイヤ1211〜1213を正しく合成することができなかった。したがって、従来の構成では、例えば仮想計算機毎に表示順序を設定し、その表示順序にしたがって画面レイヤが合成されていた。例えば、セキュア仮想計算機101の表示順序が非セキュア仮想計算機102の表示順序よりも上に設定されていたとすると、画面レイヤ1212,1213の上に画面レイヤ1211が描画されるというように、画面レイヤ1211を画面レイヤ1212と画面レイヤ1213との間に描画することができなかった。
そこで、本実施の形態では、非セキュア仮想計算機102は、セキュア仮想計算機101で画面レイヤ1211の発生を検出すると、画面レイヤ1211を非セキュア仮想計算機102側で管理するためのダミーレイヤ1214を生成し、かつ、ダミーレイヤ1214の表示順序、表示位置、及び表示サイズ等を管理する画面レイヤ管理情報にダミーレイヤ1214を登録する。
そして、セキュア仮想計算機101は、ダミーレイヤ1214を画面レイヤ1211で置き替えて、画面レイヤ管理情報に示される表示順序にしたがって、画面レイヤ1211〜1213を合成する。これにより、画面レイヤ1212と画面レイヤ1213との間に画面レイヤ1211を位置させることができる。
また、本実施の形態では、非セキュア仮想計算機102において画面レイヤの生成及び消失が頻発することを想定している。すなわち、セキュア仮想計算機101のアプリケーション1010が起動せず、非セキュア仮想計算機102のアプリケーション1020による画面レイヤの発生が頻発するような状況を想定している。
この場合、セキュア仮想計算機101のみで全ての画面レイヤを合成する構成を採用すると、非セキュア仮想計算機102で画面レイヤを発生及び消失する都度、非セキュア仮想計算機102は、仮想計算機制御部1001を通じてセキュア仮想計算機101に画面レイヤの発生及び消失を通知する必要がある。
つまり、セキュア仮想計算機101のみで全ての画面レイヤを合成する構成を採用すると、動作しているのは非セキュア仮想計算機102のアプリケーション1020だけであるにも関わらず、仮想計算機間で情報の送受が発生し、描画性能が劣化してしまう。
そこで、本実施の形態では、セキュア仮想計算機101の画面レイヤが0個の場合、非セキュア仮想計算機102側で表示制御を行い、画面レイヤを合成する。一方、セキュア仮想計算機101の画面レイヤが少なくとも1つ発生すると表示制御をセキュア仮想計算機101に切り替える。
こうすることで、非セキュア仮想計算機102のアプリケーション1020のみが動作して非セキュア仮想計算機102の画面レイヤの発生及び消失が頻発しても、画面レイヤの合成が非セキュア仮想計算機102のみで行われるため、非セキュア仮想計算機102からセキュア仮想計算機101に仮想計算機制御部1001を通じて画面レイヤの発生及び消失を通知する必要がなくなり、描画性能の劣化を防止することができる。
また、本実施の形態では、非セキュア仮想計算機102は、ダミーレイヤが生成されていないときのみ表示制御を行い、ダミーレイヤが1個でも生成すると、表示制御をセキュア仮想計算機101に切り替える。
そのため、非セキュア仮想計算機102は、共有メモリ1031のみにアクセスして画面レイヤの画面データを読み出して画面合成を行うことが可能となり、非セキュア仮想計算機102が非共有メモリ1030にアクセスすることを防止することができる。
なお、非セキュア仮想計算機102において画面レイヤの生成及び消失が頻発する場合として、例えば、スマートフォン等の携帯端末において、非セキュア仮想計算機102がアンドロイド(登録商標)等のオープンプラットフォームのOSやミドルウェアで構成され、セキュア仮想計算機が非オープンプラットフォームのOSやミドルウェアで構成されるような場合が想定される。
図4は、本発明の実施の形態1における仮想計算機表示装置10の詳細な構成を示すブロック図である。なお、図4において、ダミーレイヤ生成終了部1301、ダミーレイヤ登録通知部1312、表示レイヤ管理部1311、ダミーレイヤ削除通知部1313は例えば表示管理ミドルウェア1021及びOS1022により構成される。また、表示レイヤ管理部1332は、例えば、表示管理ミドルウェア1011及びOS1012により構成される。
ダミーレイヤ生成終了部1301(ダミーレイヤ生成部の一例)は、セキュア仮想計算機101の画面レイヤが発生した場合、発生した画面レイヤを非セキュア仮想計算機102で管理するためのダミーレイヤを生成する。
ここで、ダミーレイヤ生成終了部1301は、セキュア仮想計算機101及び非セキュア仮想計算機102において画面レイヤの発生及び終了の有無を監視している。具体的には、ダミーレイヤ生成終了部1301は、アプリケーション1010から画面レイヤの発生通知を受け付けた場合、セキュア仮想計算機101の画面レイヤが発生したと判断し、発生した画面レイヤを描画するために必要となる画面情報を含むデータをダミーレイヤとして生成し、ダミーレイヤの生成通知をダミーレイヤ登録通知部1312に出力する。
また、ダミーレイヤ生成終了部1301は、アプリケーション1020から画面レイヤの発生通知を受け付けると、非セキュア仮想計算機102の画面レイヤが発生したと判断し、画面レイヤの発生通知をダミーレイヤ登録通知部1312に出力する。
また、ダミーレイヤ生成終了部1301は、アプリケーション1010からある画面レイヤの終了通知を受け付けた場合、セキュア仮想計算機101の該当する画面レイヤが終了したと判断し、該当する画面レイヤに対応するダミーレイヤの削除依頼をダミーレイヤ削除通知部1313に出力する。
また、ダミーレイヤ生成終了部1301は、アプリケーション1020からある画面レイヤの終了通知を受け付けた場合、非セキュア仮想計算機102の該当する画面レイヤが終了したと判断し、該当する画面レイヤの削除依頼を、ダミーレイヤ削除通知部1313出力する。
ダミーレイヤ登録通知部1312は、ダミーレイヤ生成終了部1301からダミーレイヤの生成通知を受け付けると、ダミーレイヤを画面レイヤ管理情報1441(図5参照)に登録するように表示レイヤ管理部1311に依頼し、ダミーレイヤを画面レイヤ管理情報1441に登録させる。また、ダミーレイヤ登録通知部1312は、表示メモリ獲得解放部1323にダミーレイヤに対応する画面レイヤの画面データを描画するための画面バッファの獲得要求を出力する。
そして、ダミーレイヤ登録通知部1312は、表示メモリ獲得解放部1323から獲得された画面バッファのアドレスが通知されると、そのアドレスを画面レイヤ管理情報1441に登録するように表示レイヤ管理部1311に依頼する。この場合、画面バッファは非共有メモリ1030に確保される。
なお、表示メモリ獲得解放部1323により獲得された画面バッファのアドレスはメモリ管理部1343によってセキュア仮想計算機101の表示レイヤ管理部1332にも通知される。これにより、セキュア仮想計算機101はダミーレイヤに対応する画面レイヤを描画する画面バッファを認識し、その画面バッファにダミーレイヤに対応する画面レイヤの画面データを描画する。これにより、セキュア側で画面レイヤが発生する都度、発生した画面レイヤがセキュア仮想計算機101により非共有メモリ1030に描画される。
また、ダミーレイヤ登録通知部1312は、画面レイヤ管理情報1441にダミーレイヤが登録されると、表示ドライバ切り替え部1322にダミーレイヤの生成通知を出力する。
また、ダミーレイヤ登録通知部1312は、ダミーレイヤ生成終了部1301から出力された画面レイヤの発生通知を受け付けると、発生した画面レイヤを画面レイヤ管理情報1441に登録するように表示レイヤ管理部1311に依頼し、発生した画面レイヤを画面レイヤ管理情報1441に登録させる。また、ダミーレイヤ登録通知部1312は、発生した画面レイヤの画面データを描画するための画面バッファを表示メモリ獲得解放部1323に獲得させる。
そして、ダミーレイヤ登録通知部1312は、表示メモリ獲得解放部1323から獲得された画面バッファのアドレスが通知されると、そのアドレスを画面レイヤ管理情報1441に登録するように表示レイヤ管理部1311に依頼する。この場合、画面バッファは共有メモリ1031に確保される。
そして、非セキュア仮想計算機102は、獲得された画面バッファに画面レイヤの画面データを描画する。これにより、非セキュア側で画面レイヤが発生する都度、発生した画面レイヤが、非セキュア仮想計算機102により共有メモリ1031に描画される。そして、ダミーレイヤ登録通知部1312は、表示レイヤ管理部1311に画面レイヤが登録されると、表示ドライバ切り替え部1322に非セキュア仮想計算機102で画面レイヤが発生したことを通知する。
ダミーレイヤ削除通知部1313は、ダミーレイヤ生成終了部1301から出力されたダミーレイヤの削除依頼を受け付けると、該当するダミーレイヤを画面レイヤ管理情報1441から削除するように表示レイヤ管理部1311に依頼し、該当するダミーレイヤを画面レイヤ管理情報1441から削除させる。そして、ダミーレイヤ削除通知部1313は、ダミーレイヤに対応する画面レイヤの画面データを描画するために確保された画面バッファを解放するための解放要求を表示メモリ獲得解放部1323に出力する。そして、ダミーレイヤ削除通知部1313は、画面レイヤ管理情報1441からダミーレイヤが削除されると、ダミーレイヤの削除通知を表示ドライバ切り替え部1322に出力する。
また、ダミーレイヤ削除通知部1313は、ダミーレイヤ生成終了部1301から出力されたある画面レイヤの削除依頼を受け付けると、該当する画面レイヤを画面レイヤ管理情報1441から削除するように表示レイヤ管理部1311に依頼し、該当する画面レイヤを画面レイヤ管理情報1441から削除させる。そして、ダミーレイヤ削除通知部1313は、該当する画面レイヤの画面データを描画するために確保された画面バッファを解放するための解放要求を表示メモリ獲得解放部1323に出力する。そして、ダミーレイヤ削除通知部1313は、画面レイヤ管理情報1441から画面レイヤが削除されると、非セキュア仮想計算機102の画面レイヤが削除されたことを表示ドライバ切り替え部1322に通知する。
表示メモリ獲得解放部1323は、ダミーレイヤ登録通知部1312から画面バッファの獲得要求を受けると、メモリ管理部1343から画面バッファを獲得し、獲得した画面バッファのアドレスをダミーレイヤ登録通知部1312に渡す。
ここで、表示メモリ獲得解放部1323は、ダミーレイヤ登録通知部1312からダミーレイヤに対応する画面レイヤを描画するための画面バッファの獲得要求が出力されると、非共有メモリ1030から画面バッファを獲得するようにメモリ管理部1343に依頼する。
一方、表示メモリ獲得解放部1323は、ダミーレイヤ登録通知部1312から非セキュア仮想計算機102の画面レイヤを描画するための画面バッファの獲得要求が出力されると、非共有メモリ1030から画面バッファを獲得するようにメモリ管理部1343に依頼する。
また、表示メモリ獲得解放部1323は、ダミーレイヤ削除通知部1313から画面バッファの解放要求を受けると、獲得していた画面バッファを解放するようにメモリ管理部1343に依頼する。
メモリ管理部1343は、表示メモリ獲得解放部1323からの画面バッファの獲得が依頼されると、メモリ装置2から画面バッファを獲得し、獲得した画面バッファのアドレスを表示メモリ獲得解放部1323に渡す。また、メモリ管理部1343は、表示メモリ獲得解放部1323から画面バッファの解放が依頼されると、獲得した画面バッファをメモリ装置2に返却する。なお、メモリ管理部1343は、非共有メモリ1030及び共有メモリ1031の両方から画面バッファの獲得及び解放を行うことができる。
表示レイヤ管理部1311は、図5に示す画面レイヤ管理情報1441を管理する。つまり、表示レイヤ管理部1311は、非セキュア仮想計算機102で発生する全ての画面レイヤを管理し、かつ、セキュア仮想計算機101で発生する画面レイヤはダミーレイヤとして管理する。また、表示レイヤ管理部1311は、管理する画面レイヤ及びダミーレイヤの表示位置が変化したり、サイズが拡大又は縮小したりして、画面レイヤ及びダミーレイヤの表示態様が変更されると、その変更が反映されるように画面レイヤ管理情報1441を更新する。
なお、非セキュア仮想計算機102の画面レイヤの表示態様の変更は、アプリケーション1020から通知され、表示レイヤ管理部1311は、その通知をダミーレイヤ生成終了部1301及びダミーレイヤ登録通知部1312を介して取得する。また、ダミーレイヤの表示態様の変更は、アプリケーション1010から通知され、表示レイヤ管理部1311は、その通知をダミーレイヤ生成終了部1301及びダミーレイヤ登録通知部1312を介して取得する。
表示ドライバ切り替え部1322は、ダミーレイヤが生成されていない場合、セキュア仮想計算機101に表示制御を切り替え、ダミーレイヤが少なくとも1つ生成された場合、セキュア仮想計算機101に表示制御を切り替える。
具体的には、表示ドライバ切り替え部1322は、ダミーレイヤ登録通知部1312からダミーレイヤの発生通知を受け付けると、ダミーレイヤの発生数を1カウントアップさせ、ダミーレイヤ登録通知部1312からダミーレイヤの削除通知を受け付けるとダミーレイヤの発生数を1カウントダウンする。
そして、表示ドライバ切り替え部1322は、ダミーレイヤの発生数が0個から1個に増えると、表示制御をセキュア仮想計算機101の表示制御ドライバ1013に切り替える切り替え依頼をドライバ切り替え通知部1341及び画面データ合成部1321に出力し、画面データ合成部1321に表示制御を停止させる。これにより、表示制御が非セキュア仮想計算機102からセキュア仮想計算機101に切り替えられる。そして、表示ドライバ切り替え部1322は、表示装置45等から発生される描画割り込みの配送先を、非セキュア仮想計算機102からセキュア仮想計算機101に切り替える切り替え依頼を割り込み配送制御部1342に出力する。
一方、表示ドライバ切り替え部1322は、ダミーレイヤの発生数が0個になると、表示制御を非セキュア仮想計算機102に切り替える切り替え依頼を画面データ合成部1321及びドライバ切り替え通知部1341に出力し、セキュア仮想計算機101の表示制御を停止させる。これにより、表示制御がセキュア仮想計算機101の表示制御ドライバ1013から非セキュア仮想計算機102の表示制御ドライバ1023に切り替えられる。また、表示ドライバ切り替え部1322は、描画割り込みの配送先を、セキュア仮想計算機101から非セキュア仮想計算機102に切り替える切り替え依頼を割り込み配送制御部1342に出力する。
画面データ合成部1321(第1の画面データ合成部の一例)は、表示ドライバ切り替え部1322から表示制御を非セキュア仮想計算機に切り替える切り替え依頼を受け付けた場合、画面レイヤ管理情報1441に基づき、共有メモリ1031に保持された各画面レイヤの画面データを用いて、非セキュア仮想計算機102の画面レイヤを合成し、合成結果を表示装置45に表示させる。
ここで、表示合成エンジン1002が画面レイヤ管理情報1441に示された画面レイヤの表示順序や各画面レイヤの表示位置及びサイズを用いた処理が可能であれば、画面データ合成部1321は、これらの情報を表示合成エンジン1002に通知して、表示合成エンジン1002に画面レイヤを合成させてもよい。この場合、表示合成エンジン1002は、画面データ合成部1321から通知された情報にしたがって、共有メモリ1031から各画面レイヤの画面データを読み出し、画面レイヤを合成し、合成結果を表示装置45に表示させればよい。
また、画面データ合成部1321は、表示ドライバ切り替え部1322から表示制御を非セキュア仮想計算機102に切り替える切り替え依頼を受け付けると、動作モードを合成開始モードに設定する。一方、画面データ合成部1321は、表示ドライバ切り替え部1322から、表示制御をセキュア仮想計算機101に切り替える切り替え依頼を受け付けると動作モードを合成停止モードに設定する。
つまり、画面データ合成部1321は、ダミーレイヤの発生数が0個の場合、動作モードを合成開始モードに設定し、ダミーレイヤの発生数が1個以上の場合、動作モードを合成停止モードに設定する。合成開始モードでは、画面データ合成部1321は、表示装置45から描画割り込みが発生する都度、画面レイヤの合成処理を行う。一方、合成停止モードでは、画面データ合成部1321は、表示装置45から描画割り込みが発生しても、画面レイヤの合成処理を行わない。
割り込み配送制御部1342は、表示ドライバ切り替え部1322によりセキュア仮想計算機101に表示制御が切り替えられた場合、描画割り込みが発生すると、その描画割り込みをセキュア仮想計算機101に配送して画面データ合成部1331に画面レイヤを合成させる。
一方、割り込み配送制御部1342は、表示ドライバ切り替え部1322により非セキュア仮想計算機102に表示制御が切り替えられた場合、描画割り込みが発生するとその描画割り込みを非セキュア仮想計算機102に配送し、画面データ合成部1321に画面レイヤを合成させる。
具体的には、割り込み配送制御部1342は、表示ドライバ切り替え部1322から表示制御を非セキュア仮想計算機102からセキュア仮想計算機101に切り替える切りか依頼を受け付けると、描画割り込みの配送先をセキュア仮想計算機101に設定する。この場合、描画割り込みは、画面データ合成部1331に配送される。
一方、割り込み配送制御部1342は、表示ドライバ切り替え部1322から表示制御をセキュア仮想計算機101から非セキュア仮想計算機102に切り替える切り替え依頼を受け付けると、描画割り込みの配送先を非セキュア仮想計算機102に設定する。この場合、描画割り込みは、画面データ合成部1321に配送される。
ここで、描画割り込みとしては、例えば、表示装置45の垂直同期信号(VSYNC)に基づく割り込みや表示合成エンジン1002用の画面バッファへの転送完了割り込みなどが挙げられる。なお、垂直同期信号は、表示装置45のフレーム周期にしたがって発生し、例えば、1/60s毎に発生する。そのため、描画割り込みは例えば1/60s毎に発生する。
ドライバ切り替え通知部1341は、表示ドライバ切り替え部1322により表示制御を非セキュア仮想計算機102からセキュア仮想計算機101に切り替える切り替え依頼を受け付けた場合、セキュア仮想計算機101の画面データ合成部1331に画面レイヤを合成するように指示する。
一方、ドライバ切り替え通知部1341は、表示ドライバ切り替え部1322により表示制御をセキュア仮想計算機101から非セキュア仮想計算機102に切り替える切り替え依頼を受け付けた場合、画面データ合成部1331に画面レイヤの合成を停止するように指示する。
画面データ合成部1331は、ドライバ切り替え通知部1341によりセキュア仮想計算機101で画面レイヤを合成するように指示された場合、画面レイヤ管理情報1441を参照し、非共有メモリ1030及び共有メモリ1031に保持された画面データを読み出し、セキュア仮想計算機101及び非セキュア仮想計算機102の画面レイヤを合成し、合成結果を表示装置45に表示させる。
なお、セキュア仮想計算機101は、セキュア仮想計算機101で発生した画面レイヤのみを管理する画面レイヤ管理情報を保持している。したがって、画面データ合成部1331は、セキュア側の画面レイヤ管理情報と画面レイヤ管理情報1441とを用いて画面レイヤを合成してもよい。
例えば、画面レイヤ管理情報1441において、ダミーレイヤについては、表示順序のみの情報が記述されているような場合を想定する。この場合、ダミーレイヤの表示位置やサイズ等が分からないため、画面データ合成部1331は、画面レイヤ管理情報1441のみでは画面レイヤを合成することができない。このような場合、画面データ合成部1331は、画面レイヤ管理情報1441と、セキュア側の画面レイヤ管理情報とを用いて画面レイヤを合成すればよいのである。
ここで、セキュア側の画面レイヤ管理情報としては、例えば、図5に示す画面レイヤ管理情報においてダミーレイヤのレコードのみを抜き出したデータ構造を持っている。つまり、セキュア側の画面レイヤ管理情報は、セキュア側で発生した各画面レイヤの表示順序、表示位置、サイズ、及び画面バッファポインタ等が含まれている。
したがって、画面データ合成部1331は、まず、画面レイヤ管理情報1441を参照し、ダミーレイヤについては、セキュア側の画面レイヤ管理情報に記載された画面レイヤの情報を参照して画面レイヤを描画すればよい。
例えば、画面レイヤ管理情報1441において、2つの非セキュア側の画面レイヤと2つのダミーレイヤとが管理され、セキュア側の画面レイヤ管理情報において、2つのセキュア側の画面レイヤが管理されていたとする。そして、画面レイヤ管理情報1441において、非セキュア側の画面レイヤは表示順序が第1層及び第3層であり、ダミーレイヤは表示順序が第2層及び第4層であったとする。
この場合、画面データ合成部1331は、画面レイヤ管理情報1441の第2層のダミーレイヤをセキュア側の画面レイヤ管理情報の第1層の画面レイヤで置き替え、画面レイヤ管理情報1441の第4層のダミーレイヤをセキュア側の画面レイヤ管理情報の第2層の画面レイヤで置き替えて、画面レイヤを合成すればよい。
なお、画面データ合成部1331は、画面データ合成部1321と同様、表示合成エンジン1002に画面レイヤを合成させても良い。
表示レイヤ管理部1332は、アプリケーション1010から画面レイヤの発生通知を受け付けるとセキュア側で画面レイヤが発生したとして、その画面レイヤをセキュア側の画面レイヤ管理情報に登録する。一方、表示レイヤ管理部1332は、アプリケーション1010からある画面レイヤの終了通知を受け付けると該当する画面レイヤをセキュア側の画面レイヤ管理情報から削除する。
ここで、セキュア側の画面レイヤ管理情報は、例えば図5に示す画面レイヤ管理情報1441からダミーレイヤ情報を取り除いたデータ構造を持っている。なお、セキュア側の画面レイヤ管理情報においてメモリバッファポインタは、ダミーレイヤの生成時にダミーレイヤ登録通知部1312により確保された画面バッファのアドレスが採用されている。
図5(B)は、表示レイヤ管理部1311が管理する画面レイヤ管理情報1441の一例を示した図である。図5(A)は図5(B)に示す画面レイヤ管理情報1441において、ダミーレイヤと非セキュア側の画面レイヤとの関係を示した図である。
図5(B)に示すように画面レイヤ管理情報1441は、1つの画面レイヤに対して1つのレコードが割り当てられた2次元のテーブル形式のデータ構造を持っている。そして、画面レイヤ管理情報1441は、表示順序フィールド1451、座標フィールド1452、サイズフィールド1453、メモリバッファポインタフィールド1454、及びダミーレイヤ情報フィールド1455を備えている。
表示順序フィールド1451は、画面レイヤの表示順序を格納する。座標フィールド1452は、画面レイヤを表示画面に配置する際の座標(x,y)を格納する。なお、座標は、画面レイヤの例えば左上の頂点の座標が採用される。
サイズフィールド1453は、画面レイヤのサイズを格納する。本実施の形態では画面レイヤは四角形の形状を持つため、サイズは画面レイヤの横幅を示すwidthと、高さを示すheihgtとによって規定される。
メモリバッファポインタフィールド1454は、画面レイヤの画面データが格納先を示す画面バッファのアドレスを格納する。ダミーレイヤ情報フィールド1455は、画面レイヤがダミーレイヤであるかどうかを示すダミーレイヤ情報を格納する。図5(B)の例では、ダミーレイヤはダミーレイヤ情報として“○”の記号が付され、それ以外の画面レイヤ、つまり、非セキュア側の画面レイヤはダミーレイヤ情報として“×”の記号が付されている。
図5(A)に示す枠1431内の図は、表示装置45の表示画面1401に3つの画面レイヤを合成する処理を示している。図5(A)の例では、表示画面1401に3つの画面レイヤ1411、1412、1421が合成されている。この例では、画面レイヤは上から1411、1421、1412の順序で重ね合わされる。したがって、画面レイヤ管理情報1441の表示順序1、2、3のレコードには、画面レイヤ1411、1421、1412が登録されている。もちろん、表示順序の番号で管理するのではなく、ポインタのリストによる管理を行っても良い。
図5(B)の例で、表示順序が1番目の画面レイヤは、画面ウィンドウ上の座標(10,100)の位置にあり、高さ120×幅130のサイズを持ち、画面データを格納するメモリバッファは0x41000000番地に存在し、ダミーレイヤではないことが示されている。
また、表示順序が2番目の画面レイヤは、ダミーレイヤ情報フィールド1455に“○”が格納されており、ダミーレイヤである。この場合、ダミーレイヤに対する座標、サイズ、及びメモリバッファポインタは必須の内容ではない。つまり、画面データ合成部1331が画面レイヤ管理情報1441のみならず、セキュア側の画面レイヤ管理情報を用いて画面レイヤを合成する形態を採用する場合、画面レイヤ管理情報1441においてダミーレイヤのレコードにおいて、座標、サイズ、及びメモリバッファを省略してもよい。
なお、図5(B)の例では、ダミーレイヤ情報として、“○”、“×”の記号でダミーレイヤを識別したが、ダミーレイヤの有無を識別できるものであれば、どのような情報を用いても良い。そして、図5(B)の例では、ダミーレイヤが存在するため、非セキュア仮想計算機102の画面データ合成部1321ではなく、セキュア仮想計算機101の画面データ合成部1331が画面レイヤ管理情報1441に基づき、画面データ合成部1331が画面レイヤを合成する。
図6は、ダミーレイヤを画面レイヤ管理情報1441に登録する際の処理を示すフローチャートである。まず、ダミーレイヤ生成終了部1301は、アプリケーション1010から画面レイヤの発生通知を受け付けると、セキュア側の画面レイヤが発生したと判断してダミーレイヤを生成し、ダミーレイヤの生成通知をダミーレイヤ登録通知部1312に出力する(S1501)。
次に、ダミーレイヤ登録通知部1312は、表示ドライバ切り替え部1322にダミーレイヤの生成通知を出力する(S1502)。次に、ダミーレイヤ登録通知部1312は、表示レイヤ管理部1311にダミーレイヤの生成通知を出力する(S1503)。次に、表示レイヤ管理部1311は、ダミーレイヤの表示順序を決定し、ダミーレイヤを画面レイヤ管理情報1441に登録する(S1504)。
本実施の形態では、画面レイヤの表示順序は例えば、最新の画面レイヤが最上層に位置するように設定されるものとする。したがって、表示レイヤ管理部1311は、生成されたダミーレイヤの表示順序を1番目に設定する。この場合、表示レイヤ管理部1311は、登録済みの他の画面レイヤについては表示順序を各々1つ下層に下げ2番目移行に設定する。つまり、本実施の形態では、画面レイヤの表示順序は生成順に設定されるものとする。
なお、表示レイヤ管理部1311は、非セキュア側の画面レイヤも管理しているため、非セキュア側の画面レイヤが発生すれば、その画面レイヤの表示順序が最上層になる。
図7は、登録済みのダミーレイヤを画面レイヤ管理情報1441から削除する際の処理を示すフローチャートである。
まず、ダミーレイヤ生成終了部1301は、アプリケーション1010から、ある画面レイヤの終了通知を受け付けると、当該画面レイヤに対応するダミーレイヤの削除依頼をダミーレイヤ削除通知部1313に出力する(S1601)。次に、ダミーレイヤ削除通知部1313は、ダミーレイヤの削除通知を表示ドライバ切り替え部1322に出力する(S1602)。
次に、ダミーレイヤ削除通知部1313は、表示レイヤ管理部1311に該当するダミーレイヤを画面レイヤ管理情報1441から削除するように依頼する(S1603)。次に、表示レイヤ管理部1311は、該当するダミーレイヤを画面レイヤ管理情報1441から削除する(S1604)。
例えば、ダミーレイヤ生成終了部1301は、ダミーレイヤ削除通知部1313に削除依頼を出力する際、この削除依頼に削除対象となるダミーレイヤの識別情報を含ませる。そして、その識別情報をダミーレイヤ削除通知部1313が表示レイヤ管理部1311に通知し、表示レイヤ管理部1311がその識別情報により指定されたダミーレイヤを画面レイヤ管理情報1441から削除すればよい。
図8は、表示ドライバ切り替え部1322が、ダミーレイヤ登録通知部1312からダミーレイヤの生成通知を受け付けた際の処理を示すフローチャートである。表示ドライバ切り替え部1322は、ダミーレイヤ登録通知部1312からダミーレイヤ生成通知を受け付ける(S1701)。
次に、表示ドライバ切り替え部1322は、内部で管理しているダミーレイヤの発生数が0であるか否かを確認する(S1702)。そして、表示ドライバ切り替え部1322は、ダミーレイヤの発生数が0でない場合(S1702でNo)、ダミーレイヤの発生数を1増加させ(S1706)、処理を終了する。一方、表示ドライバ切り替え部1322は、ダミーレイヤの発生数が0の場合(S1702でYes)、画面データ合成部1321に、セキュア仮想計算機101に表示制御を切り替える切り替え依頼を出力する(S1703)。
次に、表示ドライバ切り替え部1322は、ドライバ切り替え通知部1341に、セキュア仮想計算機101に表示制御を切り替える切り替え依頼を出力する(S1704)。次に、表示ドライバ切り替え部1322は、描画割り込みの配送先を、セキュア仮想計算機101に切り替える切り替え依頼を割り込み配送制御部1342に出力する(S1705)。次に、表示ドライバ切り替え部1322は、ダミーレイヤの発生数を1増加させ(S1706)、処理を終了する。
このように、表示ドライバ切り替え部1322によってダミーレイヤの発生数が管理され、少なくとも1個のダミーレイヤが発生すると、表示ドライバ切り替え部1322によって表示制御が非セキュア仮想計算機102からセキュア仮想計算機101に切り替えられる。
図9は、表示ドライバ切り替え部1322が、ダミーレイヤ削除通知部1313からダミーレイヤの削除通知を受け付けた際の処理を示すフローチャートである。まず、表示ドライバ切り替え部1322は、ダミーレイヤ削除通知部1313からダミーレイヤ削除通知を受け付ける(S1801)。次に、表示ドライバ切り替え部1322は、管理しているダミーレイヤの発生数が、1であるか否かを確認する(S1802)。そして、表示ドライバ切り替え部1322は、ダミーレイヤの発生数が1でない場合(S1802でNo)、ダミーレイヤの発生数を1減少させ(S1806)、処理を終了する。一方、表示ドライバ切り替え部1322は、ダミーレイヤの発生数が1の場合(S1802でYes)、表示制御を非セキュア仮想計算機102に切り替える切り替え依頼をドライバ切り替え通知部1341に出力する(S1803)。次に、表示ドライバ切り替え部1322は、画面データ合成部1321に、表示制御を非セキュア仮想計算機102に切り替える切り替え依頼を出力する(S1804)。次に、表示ドライバ切り替え部1322は、描画割り込みの配送先を、非セキュア仮想計算機102に切り替える切り替え依頼を割り込み配送制御部1342に出力する(S1805)。次に、表示ドライバ切り替え部1322は、ダミーレイヤの発生数を1減少させ(S1806)、処理を終了する。
これにより、ダミーレイヤの発生数が1個以上であれば、表示制御がセキュア仮想計算機101側で行われ、ダミーレイヤの発生数が1個から0個になれば、表示制御がセキュア仮想計算機101から非セキュア仮想計算機102に切り替えられる。
図10は、ドライバ切り替え通知部1341が、表示ドライバ切り替え部1322から表示制御の切り替え依頼を受け付け付けて、表示制御をセキュア仮想計算機101に切り替える際の処理を示すフローチャートである。まず、ドライバ切り替え通知部1341は、表示ドライバ切り替え部1322から表示制御の切り替え依頼を受け付ける(S1901)。次に、ドライバ切り替え通知部1341は、受け付けた切り替え依頼が、表示制御をセキュア仮想計算機101に切り替える切り替え依頼であるか否を判定する(S1902)。ここで、切り替え依頼は、表示制御を非セキュア仮想計算機102からセキュア仮想計算機101に切り替える場合の符号列と、表示制御をセキュア仮想計算機101から非セキュア仮想計算機102に切り替える場合の符号列とが予め定義されている。したがって、ドライバ切り替え通知部1341は、切り替え依頼の符号列が両符号列のうちどちらの符号列に該当するか否かに従って、S1902の判定を行えばよい。
次に、ドライバ切り替え通知部1341は、切り替え依頼が、表示制御をセキュア仮想計算機101に切り替える切り替え依頼である場合(S1902でYes)、表示レイヤ管理部1311から画面データ合成部1321を介して画面レイヤ管理情報1441を取得し、画面データ合成部1331に出力する(S1903)。
次に、ドライバ切り替え通知部1341は、表示制御をセキュア仮想計算機101に切り替える切り替え依頼をセキュア仮想計算機101の画面データ合成部1331に出力する(S1904)。
次に、ドライバ切り替え通知部1341は、セキュア仮想計算機101の画面データ合成部1331に画面レイヤの合成処理を開始するように指示する(S1905)。
一方、ドライバ切り替え通知部1341は、切り替え依頼が表示制御を非セキュア仮想計算機102に切り替える切り替え依頼である場合(S1902でNo)、表示制御を非セキュア仮想計算機102に切り替える切り替え依頼をセキュア仮想計算機101の画面データ合成部1331に出力する(S1906)。
次に、ドライバ切り替え通知部1341は、セキュア仮想計算機101の画面データ合成部1331に画面レイヤの合成を停止するように指示し(S1907)、処理を終了する。
図11は、割り込み配送制御部1342が描画割り込みを受け付けて、各仮想計算機に描画割り込みを配送する際の処理を示すフローチャートである。まず、割り込み配送制御部1342は、表示装置45から描画割り込みを受け付ける(S2001)。次に、割り込み配送制御部1342は、現在の割り込みの配送先がセキュア仮想計算機101に設定されているか否かを判定する(S2002)。この場合、割り込み配送制御部1342は、図9のS1805の処理により表示ドライバ切り替え部1322から割り込みの配送先を非セキュア仮想計算機102に切り替える切り替え依頼を受け付けた場合は、割り込みの配送先が非セキュア仮想計算機102に設定されていると判定する。一方、割り込み配送制御部1342は、図8のS1705の処理により表示ドライバ切り替え部1322から割り込みの配送先をセキュア仮想計算機101に切り替える切り替え依頼を受け付けた場合は、割り込みの配送先がセキュア仮想計算機101に設定されていると判定すればよい。
そして、割り込み配送制御部1342は、割り込みの配送先がセキュア仮想計算機101に設定されている場合(S2002でYes)、S2001で受け付けた描画割り込みのセキュア仮想計算機101における割り込み番号を求める(S2003)。
ここで、割り込み配送制御部1342は、割り込みの種類毎に、非セキュア仮想計算機102で管理する割り込み番号とセキュア仮想計算機101で管理する割り込み番号とが対応付けられた割り込みベクタテーブルを予め保持している。したがって、割り込み配送制御部1342は、この割り込みベクタテーブルを参照して、セキュア仮想計算機101の描画割り込みの割り込み番号を求めればよい。
次に、割り込み配送制御部1342は、求めた割り込み番号を、セキュア仮想計算機101の画面データ合成部1331に通知する(S2004)。次に、画面データ合成部1331は、通知された割り込み番号に従って描画割り込み用の処理プログラムを読み出して描画割り込みの処理を行う(S2005)。この描画割り込みの処理により、画面データ合成部1331は、非セキュア側の画面レイヤとセキュア側の画面レイヤとを合成する。
一方、割り込みの配送先がセキュア仮想計算機101ではなく非セキュア仮想計算機102であった場合(S2002でNo)、割り込み配送制御部1342は、S2002で受け付けた描画割り込みの非セキュア仮想計算機102における割り込み番号を求める(S2006)。次に、割り込み配送制御部1342は、求めた割り込み番号を非セキュア仮想計算機102の画面データ合成部1321に通知する(S2007)。
次に、非セキュア仮想計算機102の画面データ合成部1321は、通知された割り込み番号にしたがって描画割り込み用の処理プログラムを読み出して描画割り込みの処理を行う(S2008)。この場合、画面データ合成部1321は、非セキュア側の画面レイヤを合成する処理を行う。
本フローチャートでは、描画割り込みとしては、1フレーム周期が経過する毎に表示装置45によって発生される垂直同期信号に基づく割り込み(VSYNC割り込み)を想定している。したがって、図11に示すフローチャートは、フレーム周期が経過する毎に実行される。つまり、割り込み配送制御部1342は、VSYNC割り込みが発生する都度、現在の描画割り込みの配送先がセキュア側であるか非セキュア側であるかを判定し、セキュア側であれば画面データ合成部1331に描画割り込みを配送し、非セキュア側であれば画面データ合成部1321に描画割り込みを配送する。これにより、フレーム周期が経過する毎に表示装置45に表示される画面が更新される。
図12は、画面データ合成部1321が、表示ドライバ切り替え部1322から表示制御の切り替え依頼を受け付けた際の処理を示すフローチャートである。まず、画面データ合成部1321は、表示ドライバ切り替え部1322から表示制御の切り替え依頼を受け付ける(S2101)。次に、画面データ合成部1321は、受け付けた切り替え依頼が、表示制御を非セキュア仮想計算機102からセキュア仮想計算機101に切り替える切り替え依頼であるか否かを判定する(S2102)。ここで、切り替え依頼は、表示制御を非セキュア仮想計算機102からセキュア仮想計算機101に切り替える場合の符号列と、表示制御をセキュア仮想計算機101から非セキュア仮想計算機102に切り替える場合の符号列とが予め定義されている。したがって、画面データ合成部1321は、切り替え依頼の符号列が両符号列のうちどちらの符号列に該当するか否かに従って、S2102の判定を行えばよい。
そして、画面データ合成部1321は、セキュア仮想計算機101への切り替え依頼であると判定した場合(S2102でYes)、画面合成を停止し、合成停止モードに設定する(S2103)。次に、画面データ合成部1321は、表示レイヤ管理部1311から画面レイヤ管理情報1441を取得し、ドライバ切り替え通知部1341に出力する(S2104)。
一方、画面データ合成部1321は、切り替え依頼が、セキュア仮想計算機101への切り替え依頼でないと判定した場合(S2102でNo)、画面合成を再開し、合成開始モードに設定する(S2105)。
このように、画面データ合成部1321は、セキュア仮想計算機101に表示制御を切り替える切り替え依頼を受け付けると、合成停止モードに設定して画面レイヤ管理情報1441をドライバ切り替え通知部1341を介して画面データ合成部1331に出力し、画面データ合成部1331に画面合成を行わせる。一方、画面データ合成部1321は、非セキュア仮想計算機102に表示制御を切り替える切り替え依頼を受け付けた場合、合成開始モードに設定し、画面合成を行う。
図13は、画面データ合成部1321が、割り込み配送制御部1342から描画割り込みを受け付けて画面レイヤを合成する際の処理を示すフローチャートである。まず、画面データ合成部1321は、割り込み配送制御部1342から描画割り込みを受ける(S2201)。
次に、画面データ合成部1321は、自己の状態が合成開始モードであるか否かを判定する(S2202)。ここで、画面データ合成部1321は、自己の状態が合成開始モードであるか否かを示すフラグを管理し、そのフラグに基づいて判定すればよい。例えば、フラグに1が設定され、フラグが立っている場合、画面データ合成部1321は合成開始モードであると判定し、フラグに0が設定され、フラグが倒れている場合、画面データ合成部1321は、合成停止モードであると判定すればよい。
そして、画面データ合成部1321は、自己の状態が合成開始モードである場合(S2202でYes)、表示レイヤ管理部1311から画面レイヤ管理情報1441を取得し、画面レイヤを合成する(S2203)。この場合、画面データ合成部1321は、共有メモリ1031に保持された非セキュア仮想計算機102の画面レイヤの画面データを読み出し、画面レイヤ管理情報1441に規定された表示順序にしたがって画面レイヤを合成すればよい。
一方、画面データ合成部1321は、自己の状態が合成停止モードである場合(S2202でNo)、何もせず終了する。
このように、画面データ合成部1321は、描画割り込みを受け付けた際、自己の状態が合成開始モードであれば画面レイヤを合成し、自己の状態が合成停止モードであれば、画面レイヤを合成しない。
なお、図13では、画面データ合成部1321は、描画割り込みをトリガーとして動作する例を示したが、描画割り込みとは非同期で動作してもよい。具体的には、描画割り込みの発生を待たずに、描画要求が発生した時点に画面合成を行ってもよい。描画要求が発生する時点としては、例えば、非セキュア仮想計算機102において新たな画面レイヤが発生した場合、既にある画面レイヤの表示位置が変更された場合、既にある画面レイヤのサイズが変更された場合等が該当する。また、画面データ合成部1321は、描画割り込みが発生した時点に加えて描画要求が発生した時点において画面レイヤを合成してもよい。
図14は、セキュア仮想計算機101の画面データ合成部1331が、ドライバ切り替え通知部1341から表示制御の切り替え依頼を受け付けた際の処理を示すフローチャートである。まず、画面データ合成部1331は、ドライバ切り替え通知部1341から表示制御の切り替え依頼を受け付ける(S2301)。次に、画面データ合成部1331は、受け付けた切り替え依頼が非セキュア仮想計算機102に表示制御を切り替える切り替え依頼であるか否かを判定する(S2302)。ここで、切り替え依頼は、表示制御を非セキュア仮想計算機102からセキュア仮想計算機101に切り替える場合の符号列と、表示制御をセキュア仮想計算機101から非セキュア仮想計算機102に切り替える場合の符号列とが予め定義されている。したがって、画面データ合成部1331は、切り替え依頼の符号列が両符号列のうちどちらの符号列に該当するか否かに従って、S2302の判定を行えばよい。
そして、画面データ合成部1331は、切り替え依頼が表示制御を非セキュア仮想計算機102に切り替える切り替え依頼である場合(S2302でYes)、画面合成を停止し、自己の状態を合成停止モードに設定する(S2303)。
一方、画面データ合成部1331は、切り替え依頼が表示制御をセキュア仮想計算機101に切り替える切り替え依頼である場合(S2302でNo)、画面合成を停止し、合成停止モードに設定する(S2304)。
図15は、画面データ合成部1331が、割り込み配送制御部1342から描画割り込みを受け付けた際の処理を示すフローチャートである。まず、画面データ合成部1331は、割り込み配送制御部1342から表示装置45からの描画割り込みを受け付ける(S2401)。
次に、画面データ合成部1331は、自己の状態が合成開始モードであるか否かを判定する(S2402)。この場合、画面データ合成部1331は、自己の状態が合成開始モードであるか否かを示す情報をフラグとして管理し、そのフラグに基づいて自己の状態が合成開始モードであるか否かを判定すればよい。
そして、画面データ合成部1331は、合成開始モードである場合(S2402でYes)、ドライバ切り替え通知部1341から画面レイヤ管理情報1441を取得する(S2403)。
次に、画面データ合成部1331は、取得した画面レイヤ管理情報1441により管理されている各ダミーレイヤをセキュア仮想計算機101の画面レイヤで対応付ける(S2404)。この場合、画面データ合成部1331は、表示レイヤ管理部1332からセキュア仮想計算機101の画面レイヤ管理情報を取得し、取得した画面レイヤ管理情報に規定される各画面レイヤの表示順序と、画面レイヤ管理情報1441に規定された各ダミーレイヤの表示順序とを照らし合わせ、各ダミーレイヤに対応するセキュア仮想計算機101の画面レイヤを特定すればよい。
次に、画面データ合成部1331は、非セキュア仮想計算機102の画面レイヤとセキュア仮想計算機101の画面レイヤとを合成する(S2405)。
この場合、画面データ合成部1331は、S2404でダミーレイヤに対応づけたセキュア仮想計算機101の画面レイヤの画面データを非共有メモリ1030から読み出し、かつ、非セキュア仮想計算機102の画面レイヤの画面データを共有メモリ1031から読み出し、読み出した画面データを画面レイヤ管理情報1441に規定された表示順序にしたがって合成する(S2405)。
なお、図15では、画面データ合成部1331は、表示装置45からの描画割り込みをトリガーとして画面レイヤを合成する例を示したが、描画割り込みとは非同期的に動作してもよい。具体的には、描画割り込みを待たずに、描画要求が発生する時点に、画面データを合成するようにしてもよい。描画要求が発生する時点としては、セキュア仮想計算機101及び非セキュア仮想計算機102において新たな画面レイヤが発生した場合、既にある画面レイヤの表示位置が変更された場合、既にある画面レイヤのサイズが変更された場合等が該当する。また、画面データ合成部1331は、描画割り込みが発生した時点に加えて描画要求が発生した時点において画面レイヤを合成してもよい。
以上の動作により、仮想計算機表示装置10は、セキュア仮想計算機101の画面レイヤに非セキュア仮想計算機102がアクセスすることを防止し、かつ、セキュア仮想計算機101と非セキュア仮想計算機102との切り替え処理を軽減しながら、セキュア仮想計算機101及び非セキュア仮想計算機102が出力する異なる画面レイヤを表示順序に従って合成することが可能になる。
(実施の形態2)
実施の形態1の仮想計算機表示装置10において、セキュア仮想計算機101の画面が表示装置45に表示されている状態で、セキュア仮想計算機101の画面に何らかの変更が加えられた場合、セキュア仮想計算機101の画面データ合成部1331は、再度画面レイヤを合成し、画面を作成しなければならない。画面に対する何らかの変更とは、典型的には、ウィンドウサイズを拡大及び縮小させたり、表示している画面を更新したり、画面レイヤにぼかしや暗くする効果を付けたり、画面レイヤを回転させたりすることが考えられる。
このような場合、画面データ合成部1331は、セキュア仮想計算機101の画面更新が発生する度に、非セキュア仮想計算機102の画面レイヤを含め、毎回全ての画面レイヤを合成することになる。
これでは、画面データ合成部1331の処理負担及び処理時間が大きくなってしまう。そこで、画面データ合成部1321で非セキュア仮想計算機102の画面レイヤを予め合成させておき、その合成結果を利用して画面データ合成部1331にセキュア仮想計算機101の残りの画面レイヤを合成させることが好ましい。
しかしながら、画面データが透過度(α値)の情報を持っており、半透過の画面を描画する場合、非セキュア仮想計算機102は共有メモリ1031へのアクセスが禁止されているため、セキュア仮想計算機101の画面レイヤのα値を知ることができない。
そのため、例えば非セキュア側の画面レイヤとセキュア側の画面レイヤとが交互積層されるような場合、画面データ合成部1321側で非セキュア側の全ての画面レイヤを予め合成させてしまうと、画面データ合成部1331は、各画面レイヤが持つα値に従って半透過の画面を再現することができなくなってしまう。
そこで、実施の形態2では、画面データ合成部1331が各画面レイヤの持つα値に従って半透過の画像を再現することができるように画面データ合成部1321側で予め合成できる画面レイヤを特定し、特定した画面レイヤを画面データ合成部1321側で予め合成させ、その合成結果を利用して画面データ合成部1331に残りの画面レイヤを合成させる。
これにより、セキュア仮想計算機101の画面レイヤが更新された場合の画面データ合成部1331の処理負担を軽減することができる。
図16は、本発明の実施の形態2による仮想計算機表示装置10の詳細な構成を示すブロック図である。図16において、図4と同じ構成要素については同じ符号を用い、説明を省略する。
実施の形態2の仮想計算機表示装置10では、実施の形態1に対して上層下層判定部2551及び下層画面合成部2552を更に備えている。
図17は、画面データ合成部2521が表示ドライバ切り替え部1322から表示ドライバの切り替え依頼を受け付けた際の処理を示すフローチャートである。まず、画面データ合成部2521は、表示ドライバ切り替え部1322から表示制御の切り替え依頼を受け付ける(S2601)。次に、画面データ合成部2521は、この切り替え依頼が表示制御をセキュア仮想計算機101に切り替える切り替え依頼であるか否かを判定する(S2602)。この判定処理は実施の形態1と同様である。
そして、画面データ合成部1321は、表示制御をセキュア仮想計算機101に切り替える切り替え依頼である場合(S2602でYes)、画面合成を停止し、自己の状態を合成停止モードに設定する(S2603)。次に、画面データ合成部2521は、表示レイヤ管理部1311から画面レイヤ管理情報1441を取得し、上層下層判定部2551に出力する(S2604)。
一方、画面データ合成部2521は、表示制御をセキュア仮想計算機101に切り替える切り替え依頼でない場合(S2602でNo)、画面合成を再開し、自己の状態を合成開始モードに設定する(S2605)。
図18は、上層下層判定部2551が、画面データ合成部2521から画面レイヤ管理情報を取得し、予め合成可能な画面レイヤを特定する際の処理を示すフローチャートである。
まず、上層下層判定部2551は、取得した画面レイヤ管理情報のうち、最下層の画面レイヤから順番に注目画面レイヤを特定する(S2701)。次に、上層下層判定部2551は、注目画面レイヤがダミーレイヤであるか否かを判定する(S2702)。そして、上層下層判定部2551は、注目画面レイヤがダミーレイヤではない場合(S2702でNo)、注目画面レイヤを予め合成可能な画面レイヤとし、注目画面レイヤの情報を下層画面合成部2552に通知し(S2703)、S2701に戻る。以上の処理により、ダミーレイヤの下層に配置された画面レイヤが予め合成可能な画面レイヤとして特定される。
ここで、画面レイヤの情報としては、例えば図5に示す表示順序、座標、及びサイズメモリバッファポインタが含まれる。
一方、上層下層判定部2551は、注目画面レイヤがダミーレイヤである場合(S2702でYes)、画面レイヤ管理情報1441を参照し、次の画面レイヤを注目画面レイヤとして特定する(S2704)。ここで、次の画面レイヤとは、注目画面レイヤよりも表示順序が1つ上の層の画面レイヤを指す。
次に、上層下層判定部2551は、次の画面レイヤが取得できたか、すなわち、未特定の画面レイヤが残っているか否かを確認する(S2705)。
そして、上層下層判定部2551は、次の画面レイヤが特定できなかった場合(S2705でNo)、つまり、画面レイヤ管理情報1441により管理されている画面レイヤのうち最上層の画面レイヤが注目画面レイヤとして特定済みである場合、画面レイヤ管理情報1441を下層画面合成部2552に通知し(S2709)、処理を終了する。
一方、上層下層判定部2551は、次の画面レイヤを特定できた場合(S2705でYes)、注目画面レイヤが、ダミーレイヤとダミーレイヤに重なる非セキュア仮想計算機102の他の画面レイヤとの和集合領域と重なるか否かを判定する(S2706)。
図20は、和集合領域の説明図であり、(A)は鳥瞰図であり、(B)は上面視からの図である。図20(A)の例では、最下層に非セキュア側の画面レイヤ2011が配置され、その上にダミーレイヤ2001が配置され、その上に注目画面レイヤ2012が配置されている。
この場合、和集合領域2000は、図20(B)に示すように画面レイヤ2011とダミーレイヤ2001との和からなる領域となる。したがって、注目画面レイヤ2012の4つの頂点P1〜P4のうち少なくとも1つが和集合領域2000に包含される場合、注目画面レイヤ2012は和集合領域2000に重なると判定される。一方、注目画面レイヤ2012の全ての頂点P1〜P4が和集合領域2000に包含されない場合、注目画面レイヤ2012は和集合領域2000に重ならないと判定される。
図18に戻り、上層下層判定部2551は、注目画面レイヤが和集合領域と重ならない場合(S2706でNo)、注目画面レイヤを合成可能な画面レイヤとし、注目画面レイヤの情報を下層画面合成部2552に通知し(S2707)、S2704に戻る。
一方、上層下層判定部2551は、注目画面レイヤが、和集合領域と重なる場合(S2706でYes)、注目画面レイヤと和集合領域との和を新たな和集合領域とし、和集合領域を更新し(S2708)、S2704に戻る。更新後の和集合領域がS2706の次の判定に用いられる。
図19は、下層画面合成部2552が、非セキュア仮想計算機102で合成可能な画面を予め合成する処理を示すフローチャートである。下層画面合成部2552は、上層下層判定部2551により予め合成可能と判定された画面レイヤの情報を取得する(S2801)。
下層画面合成部2552は、取得した画面レイヤの情報に従って予め合成可能な画面レイヤを合成する(S2802)。この場合、下層画面合成部2552は、表示合成エンジン1002に画面レイヤを合成させてもよい。
次に、下層画面合成部2552は、合成した後の画面レイヤを一つの画面レイヤとし、この一つの画面レイヤに対する情報を生成する(S2803)。この場合、画面レイヤの情報としては、例えば図5に示すような座標、サイズ、及びメモリバッファポインタが含まれる。
次に、下層画面合成部2552は、S2803で生成した画面レイヤの情報と、画面レイヤ管理情報1441に規定された画面レイヤのうち画面合成が未完了の画面レイヤの情報とを、ドライバ切り替え通知部1341に出力する(S2804)。
なお、図17、図18及び図19のフローチャートにおいて、画面レイヤ管理情報1441を画面データ合成部2521、上層下層判定部2551及び下層画面合成部2552間で受け渡す構成を採用したが、何らかの仕組みで共有させるようにしてもよい。例えば、共有メモリ1031に上層下層判定部2551及び下層画面合成部2552がアクセス可能な領域を設定し、その領域に画面レイヤ管理情報1441を格納し、上層下層判定部2551及び下層画面合成部2552が画面レイヤ管理情報1441にアクセスするようにしてもよい。
図21は、下層画面合成部2552が予め合成する画面レイヤを示した図である。図21の例では、最下層から順番に非セキュア側の画面レイヤ2111,2112が積層され、その上にダミーレイヤ2101が積層され、その上に非セキュア側の画面レイヤ2113,2114が積層されている。
ここで、画面レイヤ2111,2112はダミーレイヤ2101と重なっているが、ダミーレイヤ2101の下層に位置しているため、予め合成可能な画面レイヤとして特定される。
また、画面レイヤ2113,2114はダミーレイヤ2101よりも上層に位置しているが、ダミーレイヤ2101及びダミーレイヤ2101に重なる画面レイヤ2111,2112と重なっていないため、予め合成可能な画面レイヤとして特定される。
そして、下層画面合成部2552は、画面レイヤ2111,2112,2113,2114を一つの画面レイヤとして予め合成し、合成後の画面レイヤの画面データを共有メモリ1031に書き込む。そして、下層画面合成部2552は、予め合成した画面レイヤの情報をドライバ切り替え通知部1341に通知する。
一方、画面データ合成部1331は、ドライバ切り替え通知部1341から予め合成された画面レイヤの情報を取得し、取得した画面レイヤの情報から予め合成された画面レイヤの画面データを共有メモリ1031から読み出す。そして、画面データ合成部1331は、予め合成された画面レイヤを最下層とし、セキュア仮想計算機101の画面レイヤ管理情報を用いて、予め合成された画面レイヤにセキュア側の画面レイヤを合成する。
したがって、各画面レイヤが透過度を持つ場合であっても、画面データ合成部1331は、各画面レイヤの透過度に従った半透過の画面を再現することができる。
このように、実施の形態2では、画面データ合成部1331が画面の合成を開始する前に、セキュア仮想計算機101の画面レイヤの更新に依存しない画面レイヤの合成を予め完了させることができる。そのため、実施の形態1の効果が得られることに加え、セキュア仮想計算機101の画面データ合成部1331の処理負荷及び処理時間を最小限にすることができる。
なお、本発明の実施の形態1を示す図4の各機能ブロック及び本発明の実施の形態2を示す図16の各機能ブロックは、典型的にはプロセッサと外部メモリとの協同で処理されるプログラムとして実現される。しかしながら、これらの機能ブロックは、集積回路であるLSIで構成してもよい。また、これらの機能ブロックは個別に1チップ化されても良いし、一部又は全てを含むように1チップ化されても良い。ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。
本発明はプロセッサとメモリ装置を備えた情報処理システムであれば、あらゆる電子機器、情報機器、AV機器、通信機器、及び家電機器にも適用可能であり、例えば、PC(パーソナルコンピュータ)、携帯電話、スマートフォンやPDA等の携帯情報端末、テレビ、ハーディスクレコーダー、DVDやブルーレイ等の各種ディスクレコーダーや各種ディスクプレイヤー、及びカーナビゲーションシステム等にも応用できることは、容易に想像できる。
なお、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
上述の仮想計算機表示装置の技術的特徴は下記のようにまとめることができる。
(1)上述の仮想計算機表示装置は、第1の仮想計算機と、第2の仮想計算機と、前記第1、第2の仮想計算機を制御する仮想計算機制御部と、前記第1の仮想計算機の画面レイヤの画面データを保持する第1メモリと、前記第2仮想計算機の画面レイヤの画面データを保持する第2メモリとを備え、前記第1、第2の仮想計算機の画面レイヤを合成し、表示デバイスに表示する仮想計算機表示装置であって、前記第1の仮想計算機は、前記第2の仮想計算機の画面レイヤが発生した場合、発生した画面レイヤを前記第1の仮想計算機で管理するためのダミーレイヤを生成するダミーレイヤ生成部と、前記第1の仮想計算機の画面レイヤと前記ダミーレイヤとの少なくとも表示順序を含む画面レイヤ管理情報を管理する表示レイヤ管理部と、前記ダミーレイヤが生成されていない場合、前記第1の仮想計算機に表示制御を切り替え、前記ダミーレイヤが少なくとも1つ生成された場合、前記第2の仮想計算機に表示制御を切り替える表示ドライバ切り替え部と、前記表示ドライバ切り替え部により前記第1の仮想計算機に表示制御が切り替えられた場合、前記画面レイヤ管理情報に基づき、前記第1メモリに保持された画面データを用いて、第1の仮想計算機の画面レイヤを合成する第1の画面データ合成部とを備え、前記仮想計算機制御部は、前記表示ドライバ切り替え部により前記第2の仮想計算機に表示制御が切り替えられた場合、前記第2の仮想計算機に画面レイヤを合成するように指示するドライバ切り替え通知部を備え、前記第2の仮想計算機は、前記ドライバ切り替え通知部により前記第2の仮想計算機に画面レイヤを合成するように指示された場合、前記画面レイヤ管理情報に基づき、前記第1、第2メモリに保持された画面データを用いて、第1、第2の仮想計算機の画面レイヤを合成する第2の画面データ合成部とを備える。
この構成によれば、ダミーレイヤが0個、つまり、第2の仮想計算機の画面レイヤが発生していない場合、第1の仮想計算機により表示制御が行われ、全ての画面レイヤが第1の仮想計算機によって合成される。
そのため、第1の仮想計算機の画面レイヤの発生及び消失が頻発しても、第2の仮想計算機の画面レイヤが発生していなければ、画面レイヤの合成が第1の仮想計算機のみで行われるため、第1の仮想計算機から第2の仮想計算機に仮想計算機制御部を通じて画面レイヤの発生及び消失を通知する必要がなくなり、描画性能の劣化を防止することができる。
また、第1の仮想計算機は、ダミーレイヤが生成されていないときのみ表示制御を行い、ダミーレイヤが1個でも生成されると、表示制御を第2の仮想計算機に切り替える。
そのため、第1のセキュア仮想計算機は、第1メモリのみにアクセスして画面レイヤの画面データを読み出して画面合成を行うことが可能となる。その結果、第1の仮想計算機が第2メモリにアクセスすることを防止することができる。
一方、ダミーレイヤが1個でも生成されると、表示制御が第1の仮想計算機から第2の仮想計算機に切り替えられる。そして、第2の仮想計算機は、画面レイヤ管理情報を参照し、ダミーレイヤを第2の仮想計算機の画面レイヤで置き替えて、画面レイヤ管理情報に示される表示順序にしたがって、画面レイヤを合成する。これにより、第1、第2の画面レイヤを正しい表示順序で積層させることができる。
(2)前記ダミーレイヤ生成部は、前記第2の仮想計算機の画面レイヤが消失した場合、消失した画面レイヤに対応するダミーレイヤが削除されるように、前記表示レイヤ管理部に前記画面レイヤ管理情報を更新させることが好ましい。
この構成によれば、第2の仮想計算機の画面レイヤが消失した場合、その消失に連動させて消失した画面レイヤに対応するダミーレイヤを画面レイヤ管理情報から削除することができる。これにより、表示レイヤ管理部は、ダミーレイヤの消失を正確に管理することができる。
(3)前記表示デバイスは、描画割り込みを発生し、前記表示ドライバ切り替え部により前記第2の仮想計算機に表示制御が切り替えられた場合、前記描画割り込みを前記第2の仮想計算機に配送して前記第2の画面データ合成部に画面レイヤを合成させ、前記表示ドライバ切り替え部により前記第1の仮想計算機に表示制御が切り替えられた場合、前記描画割り込みを前記第1の仮想計算機に配送し、前記第1の画面データ合成部に画面レイヤを合成させる割り込み配送制御部を更に備えることが好ましい。
この構成によれば、第2の仮想計算機に表示制御が切り替えられた場合、描画割り込みが第2の仮想計算機に配送され、第1の仮想計算機に表示制御が切り替えられた場合、描画割り込みが第1の仮想計算機に配送される。そのため、描画割り込みをトリガーとして、画面合成を行わせる構成において、ダミーレイヤが1個でもあれば第2の仮想計算機に画面レイヤの合成を行わせ、ダミーレイヤが0個であれば第1の仮想計算機に画面レイヤの合成を行わせることができる。
(4)前記ダミーレイヤ生成部は、前記ダミーレイヤの生成及び削除を前記表示ドライバ切り替え部に通知し、前記表示ドライバ切り替え部は、前記ダミーレイヤ生成部によりダミーレイヤの生成が通知された場合、前記ダミーレイヤの発生数を1増加させ、前記ダミーレイヤ生成部によりダミーレイヤの削除が通知された場合、前記ダミーレイヤの発生数を1減少させることでダミーレイヤの発生数を管理することが好ましい。
この構成によれば、表示ドライバ切り替え部は、ダミーレイヤの生成及び削除に連動してダミーレイヤの発生数を管理することができる。そのため、表示ドライバ切り替え部は表示制御の切り替えを確実に行うことができる。
(5)前記画面レイヤ管理情報は、各画面レイヤが前記ダミーレイヤであるか否かを示すダミーレイヤ情報を含むことが好ましい。
この構成によれば、画面レイヤ管理情報においてどの画面レイヤがダミーレイヤであるかを正確に管理することができる。
(6)前記第2の画面データ合成部は、前記画面レイヤ管理情報から前記ダミーレイヤを特定し、特定したダミーレイヤを対応する画面レイヤの画面データで置き替えることで画面レイヤを合成することが好ましい。
この構成によれば、第1の仮想計算機は、第2の仮想計算機の画面レイヤをダミーレイヤとして管理するだけで、第2の画面データ合成部に画面レイヤを合成させることができる。そのため、第1の仮想計算機が第2メモリにアクセスする必要を無くすことができる。
(7)前記画面レイヤ管理情報は、各画面レイヤのサイズ及び各画面レイヤの画面データの格納アドレスを含むことが好ましい。
この構成によれば、第1、第2の画面データ合成部は、画面レイヤ管理情報から各画面レイヤのサイズ及び各画面レイヤの画面データの格納アドレスを認識することができる。
(8)前記第1の画面データ合成部は、前記表示ドライバ切り替え部により前記第2の仮想計算機に表示制御が切り替えられた場合、前記画面レイヤ管理情報に基づき、表示順序が前記ダミーレイヤより下層の前記第1の仮想計算機の画面レイヤを予め合成可能な画面レイヤとして特定し、特定した画面レイヤを合成し、前記第2の画面データ合成部は、前記第1の画面データ合成部により予め合成された画面レイヤと残りの画面レイヤとを、前記画面レイヤ管理情報に基づいて合成することが好ましい。
この構成によれば、ダミーレイヤより下層に位置する非セキュア仮想計算機の画面レイヤが予め第1の画面データ合成部により合成され、残りの画面レイヤが第2の画面データ合成部により合成される。これにより、画面データが透過度の情報を持っている場合であっても、第2の画面データ生成部は、透過度に従った半透明の画面を描画することができ、かつ、第2の画面データ生成部の処理負担及び処理時間を軽減させることができる。
(9)前記第1の画面データ生成部は、前記ダミーレイヤと前記ダミーレイヤに重なる前記第1の仮想計算機の画面レイヤとの和集合領域を求め、前記表示順序が前記ダミーレイヤの上層の前記第1の仮想計算機の画面レイヤであっても、前記和集合領域に重ならない画面レイヤを予め合成可能な画面レイヤとして更に特定し、特定した画面レイヤを合成することが好ましい。
この構成によれば、第1の仮想計算機の画面レイヤがダミーレイヤの上層に位置する場合であっても、和集合領域に重ならなければ予め合成可能な画面レイヤとして特定され、第1の画面データ合成部により予め合成される。そのため、予め合成可能な画面レイヤが増大し、第2の画面データ合成部の処理時間及び処理負荷をより軽減することができる。
(10)前記第1メモリは、前記第1、第2の仮想計算機がアクセス可能な共有メモリであり、前記第2メモリは、前記第2の仮想計算機のみがアクセス可能な非共有メモリであることが好ましい。
この構成によれば、第1メモリを第1、第2の仮想計算機がアクセス可能な共有メモリとし、第2メモリを第2の仮想計算機のみがアクセス可能な非共有メモリとした場合であっても、(1)で示す効果を得ることができる。