(57)【要約】【課題】複数の仮想マシンによる入力デバイスの共用を実現しつつ、重要データやコンテンツを取り扱う仮想マシンに係る入出力を、悪意あるネイティブコードのアプリケーションから確実に秘匿する。【解決手段】本発明に係る情報処理装置10は、自由に追加及び削除が可能な第１プログラムを実行する第１仮想マシン41と、キーパッド31を管理する第２仮想マシン42とを含む。第２仮想マシン42は、キーパッド31からの入力を検知する検知部200と、割り当て情報を格納する記憶部201と、割り当て情報を用いて入力の通知先となる仮想マシンを決定する決定部202と、決定部202によって通知先に決定された仮想マシンに入力を通知する通知部203とを備える。【選択図】図３
2010191791.tif 000002
【特許請求の範囲】
【請求項１】
自由に追加及び削除が可能な第１プログラムを実行する第１仮想マシンと、入力デバイスを管理する第２仮想マシンとを含み、プログラムによって構築された仮想的な処理環境である複数の仮想マシンを備える情報処理装置であって、
前記入力デバイスからの入力を検知する検知部と、
前記入力の通知先となる仮想マシンの決定に用いられる割り当て情報を格納する格納部と、
前記検知部によって前記入力が検知された場合、前記割り当て情報を用いて、前記通知先となる仮想マシンを決定する決定部と、
前記決定部によって前記通知先に決定された前記仮想マシンに対して前記入力を通知する通知部と
を備える情報処理装置。
【請求項２】
前記割り当て情報の設定を要求する設定要求部と、
前記設定要求部からの要求に基づいて、前記通知先が設定された前記割り当て情報を前記格納部に格納する設定部と
をさらに備える請求項１に記載の情報処理装置。
【請求項３】
前記割り当て情報は、前記入力の発生のみを通知する仮想マシンを含み、
前記決定部は、前記検知部によって前記入力が検知された場合、前記割り当て情報を用いて、前記入力の発生のみを通知する仮想マシンをさらに決定し、
前記通知部は、前記通知先に決定された前記仮想マシンに対して、前記入力の発生のみを通知する請求項１または２に記載の情報処理装置。
【請求項４】
前記通知部は、前記入力が発生した時刻から所定時間遅らせて前記入力の発生のみを通知する請求項３に記載の情報処理装置。
【請求項５】
前記設定部は、前記通知先となる仮想マシンが未設定である入力に対して、前記設定要求部による要求を行った仮想マシンを前記通知先として前記割り当て情報に設定するか、または前記設定要求部による要求を行った仮想マシンを前記通知先とする入力の通知を解除する請求項２乃至４の何れか一項に記載の情報処理装置。
【請求項６】
前記第２仮想マシンは、前記第１仮想マシンによって実行される前記第１プログラムと連携して動作する第２プログラムを実行し、
前記設定部は、前記第２プログラムが前記第２仮想マシンによって実行されているときのみ、前記第１仮想マシンが前記通知先となる入力を前記第２仮想マシンに通知するように設定するか、または前記第２仮想マシンが前記通知先となる入力を前記第１仮想マシンに通知するように設定する請求項２乃至４の何れか一項に記載の情報処理装置。
【請求項７】
前記第１仮想マシンによって実行される前記第１プログラムと連携して動作する第３プログラムを実行する第３仮想マシンを含み、
前記設定部は、前記第３プログラムが前記第３仮想マシンによって実行されているときのみ、前記第１仮想マシンが前記通知先となる入力を前記第３仮想マシンに通知するように設定するか、または前記第３仮想マシンが前記通知先となる入力を前記第１仮想マシンに通知するように設定する請求項２乃至６の何れか一項に記載の情報処理装置。
【請求項８】
前記第１仮想マシンによって実行される前記第１プログラムに対して前記割り当て情報が１つ以上設定され、
前記設定要求部は、前記第１プログラムに割り当てられた前記割り当て情報の何れかを指定することによって、前記割り当て情報の設定を要求する請求項２乃至７の何れか一項に記載の情報処理装置。
【請求項９】
前記設定要求部は、前記第１仮想マシンによって実行される前記第１プログラムを指定することによって、前記割り当て情報の設定を要求する請求項８に記載の情報処理装置。
【請求項１０】
前記決定部は、前記割り当て情報に前記入力デバイスからの入力の通知先が設定されていない場合、予め規定された仮想マシンを前記通知先に決定する請求項１乃至９の何れか一項に記載の情報処理装置。
【請求項１１】
前記設定部は、前記入力デバイスからの入力の通知先となる仮想マシンを前記割り当て情報に設定する請求項２乃至１０の何れか一項に記載の情報処理装置。
【請求項１２】
前記設定部は、前記仮想マシン毎に通知可能な入力を前記割り当て情報に設定する請求項２乃至１０の何れか一項に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自由に追加及び削除が可能なプログラムを実行する第１仮想マシンと、入力デバイスを管理する第２仮想マシンとを含み、プログラムによって構築された仮想的な処理環境である複数の仮想マシンを備える情報処理装置に関する。
【背景技術】
【０００２】
携帯電話端末の性能が向上するにつれて、Linux、Symbian OSなどの高機能OSが携帯電話端末に搭載されるようになり、メール、Web閲覧、カメラ、テレビなど多くの機能が利用可能になっている。また、近年では、スマートフォンと呼ばれるＰＣとの親和性が高く、カスタマイズ性に強みを持つ携帯電話端末（以下、端末と適宜省略する）も注目されている。
【０００３】
スマートフォンは、ＰＣと同じようにＣＰＵが直接実行可能なネイティブコードのアプリケーションを追加することができるため、高速に処理を実行できる特徴を持つ。ところが、ＰＣと同様にウイルスなど悪意のあるアプリケーションが実行されてしまうと、端末内部の重要データやコンテンツの消去、改ざん、漏洩や、端末内部のOSやアプリケーショのクラッシュなどが発生し、端末に対して甚大な被害を引き起こすことが脅威となる。
【０００４】
そこで、このような脅威に鑑みて、プログラムによって仮想的なＣＰＵ、メモリ、周辺デバイスなどを有する仮想マシンを構築することによって、1つの物理的な端末の中で複数の仮想マシンを動作させる方法が提案されている（例えば、特許文献１）。このような方法によれば、ネイティブコードのアプリケーションを実行する仮想マシン（以下、第１仮想マシン）と、重要データやコンテンツを取り扱う仮想マシン（以下、第２仮想マシン）とに分離された構成を同一端末上において構築できるため、上述したような被害を抑制できる。
【０００５】
また、一般的にキーパッドなどの入力デバイスやディスプレイなどの出力デバイスは、端末に一式しか設けられないため、同一端末上に第１仮想マシン及び第２仮想マシンを構築した場合でも、両仮想マシンによって入力デバイスや出力デバイスを共用せざるを得ない。このため、例えば、キーパッドから入力された内容と、当該内容を通知する仮想マシンとを対応付ける仕組みが必要となる。そこで、このような仕組みを提供する仮想マシンを第１仮想マシンや第２仮想マシンと別個に構築する方法も検討されている。但し、この場合でも、第１仮想マシン及び第２仮想マシンは、処理結果を同時に出力デバイスに出力できないし、同一の入力内容を第１仮想マシン及び第２仮想マシンに対応付けることはできない。
【０００６】
このような問題の解決策として、X Window System（例えば、非特許文献１）などで用いられるホスト端末とリモート端末のモデルを導入する方法が考えられる。この場合、入力デバイスと出力デバイスとを備えるホスト端末において入出力が一括管理される。このため、リモート端末に対して入力デバイスからの入力を行う場合には、一旦ホスト端末で入力内容を受け取り、リモート端末に入力内容が転送される。また、リモート端末が出力デバイス（例えば、ディスプレイ）にデータを出力する場合には、リモート端末はホスト端末に対して出力を依頼する。
【０００７】
すなわち、このようなモデルを導入した場合、ホスト端末とリモート端末とは同時に出力デバイスへの出力が可能であるため、ホスト端末とリモート端末とにおけるアプリケーションの実行タイミングに制限を課す必要もない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許第6,453,392号明細書
【非特許文献】
【０００９】
【非特許文献１】Robert W. Scheifler, James Gettys, Al Mento, Donna Converse, “X Window System: Core and Extension Protocols: X Version 11, Releases 6 and 6.1,”, Elsevier Science & Technology、１９９７年２月
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述したホスト端末とリモート端末のモデルを複数の仮想マシンが構築される端末に適用すると、リモート端末に相当する仮想マシンは、アプリケーションを動作させるためのOS及びライブラリの最小限のシステムで構成できる。反面、当該仮想マシンに対してはアプリケーションを自由に追加削除するなどのカスタマイズには適さなくなる。また、重要データやコンテンツなどは、あらかじめ決められたアプリケーションによる実行が多くなると考えられる。
【００１１】
つまり、重要データやコンテンツを取り扱う第２仮想マシンをリモート端末相当とし、ネイティブコードのアプリケーションを実行する第１仮想マシンをホスト端末相当として取り扱うことによって、端末におけるリソース使用量を最小限に抑えられると考えられる。ところが、第１仮想マシンが入力デバイスを管理する構成とすると、第１仮想マシンはアプリケーションを自由にカスタマイズできるという特性により、ウイルスのような悪意あるアプリケーションが入力デバイスからの入力を監視したり、実際に入力された内容とは別の内容に入れ替えたりすることが発生し得る。つまり、第２仮想マシンによって実行されるアプリケーションに対して通知されるパスワードの漏洩や、オンラインショッピングなどで不正な購入決定などがされる危険性がある。
【００１２】
このような危険性を解消するには、第２仮想マシンへの入力及び第２仮想マシンからの出力を、第１仮想マシンによって実行されるアプリケーションから秘匿する必要がある。
【００１３】
そこで、本発明は、このような状況に鑑みてなされたものであり、複数の仮想マシンが構築される場合において、当該複数の仮想マシンによる入力デバイスの共用及び出力デバイスの同時使用を実現しつつ、重要データやコンテンツを取り扱う仮想マシンに係る入出力を、悪意あるネイティブコードのアプリケーションから確実に秘匿できる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した問題を解決するため、本発明は、次のような特徴を有している。まず、本発明の第１の特徴は、自由に追加及び削除が可能な第１プログラムを実行する第１仮想マシン（第１仮想マシン41）と、入力デバイス（例えばキーパッド31）を管理する第２仮想マシン（第２仮想マシン42）とを含み、プログラムによって構築された仮想的な処理環境である複数の仮想マシン（第１仮想マシン41、第２仮想マシン42）を備える情報処理装置（情報処理装置10）であって、前記入力デバイスからの入力を検知する検知部（検知部200）と、前記入力の通知先となる仮想マシンの決定に用いられる割り当て情報を格納する格納部（記憶部201）と、前記検知部によって前記入力が検知された場合、前記割り当て情報を用いて、前記通知先となる仮想マシンを決定する決定部（決定部202）と、前記決定部によって前記通知先に決定された前記仮想マシンに対して前記入力を通知する通知部（通知部203）とを備えることを要旨とする。
【００１５】
このような構成によれば、プログラムの実行を主目的とする第１仮想マシンと入力デバイスの管理を主目的とする第２仮想マシンの２つの仮想マシンを動作させる情報処理装置において、入力デバイスからの入力の通知先を決めるための割り当て情報を用いて、どの仮想マシンに対して入力を通知するかを決定して通知する。すなわち、入力デバイスを特定の仮想マシンが占有せずに、複数の仮想マシンの何れかに入力を適切に通知可能である。このため、第１仮想マシンにおいて意図せずに悪意のあるプログラムを実行したとしても、入力デバイスからの入力を盗聴したり、異なる入力に入れ替えたりといった操作は困難になる。したがって、利用者は安全に入力デバイスを使いながら正当なプログラムを利用することができる。したがって、複数の仮想マシンが構築される場合において、当該複数の仮想マシンによる入力デバイスの共用を実現しつつ、重要データやコンテンツを取り扱う仮想マシン（第２仮想マシン）に係る入力を、悪意あるネイティブコードのアプリケーション（自由に追加及び削除が可能なプログラム）から確実に秘匿可能な情報処理装置を提供できる。さらに、割り当て情報の設定を変更可能とすることによって、通知先を動的に変更することができる。
【００１６】
本発明の第２の特徴は、本発明の第１の特徴に係り、前記割り当て情報の設定を要求する設定要求部（設定要求部100または設定要求部205）と、前記設定要求部からの要求に基づいて、前記通知先が設定された前記割り当て情報を前記格納部に格納する設定部（設定部204）とをさらに備えることを要旨とする。
【００１７】
本発明の第３の特徴は、本発明の第１または第２の特徴に係り、前記割り当て情報は、前記入力の発生のみを通知する仮想マシンを含み、前記決定部は、前記検知部によって前記入力が検知された場合、前記割り当て情報を用いて、前記入力の発生のみを通知する仮想マシンをさらに決定し、前記通知部は、前記通知先に決定された前記仮想マシンに対して、前記入力の発生のみを通知することを要旨とする。
【００１８】
本発明の第４の特徴は、本発明の第３の特徴に係り、前記通知部は、前記入力が発生した時刻から所定時間遅らせて前記入力の発生のみを通知することを要旨とする。
【００１９】
本発明の第５の特徴は、本発明の第２乃至第４の何れか一つの特徴に係り、前記設定部は、前記通知先となる仮想マシンが未設定である入力に対して、前記設定要求部による要求を行った仮想マシンを前記通知先として前記割り当て情報に設定するか、または前記設定要求部による要求を行った仮想マシンを前記通知先とする入力の通知を解除することを要旨とする。
【００２０】
本発明の第６の特徴は、本発明の第２乃至第４の何れか一つの特徴に係り、前記第２仮想マシンは、前記第１仮想マシンによって実行される前記第１プログラムと連携して動作する第２プログラムを実行し、前記設定部は、前記第２プログラムが前記第２仮想マシンによって実行されているときのみ、前記第１仮想マシンが前記通知先となる入力を前記第２仮想マシンに通知するように設定するか、または前記第２仮想マシンが前記通知先となる入力を前記第１仮想マシンに通知するように設定することを要旨とする。
【００２１】
本発明の第７の特徴は、本発明の第２乃至第６の何れか一つの特徴に係り、前記第１仮想マシンによって実行される前記第１プログラムと連携して動作する第３プログラムを実行する第３仮想マシン（第３仮想マシン43）を含み、前記設定部は、前記第３プログラムが前記第３仮想マシンによって実行されているときのみ、前記第１仮想マシンが前記通知先となる入力を前記第３仮想マシンに通知するように設定するか、または前記第３仮想マシンが前記通知先となる入力を前記第１仮想マシンに通知するように設定することを要旨とする。
【００２２】
本発明の第８の特徴は、本発明の第２乃至第７の何れか一つの特徴に係り、前記第１仮想マシンによって実行される前記第１プログラムに対して前記割り当て情報が１つ以上設定され、前記設定要求部は、前記第１プログラムに割り当てられた前記割り当て情報の何れかを指定することによって、前記割り当て情報の設定を要求することを要旨とする。
【００２３】
本発明の第９の特徴は、本発明の第８の特徴に係り、前記設定要求部は、前記第１仮想マシンによって実行される前記第１プログラムを指定することによって、前記割り当て情報の設定を要求することを要旨とする。
【００２４】
本発明の第１０の特徴は、本発明の第１乃至第９の何れか一つの特徴に係り、前記決定部は、前記割り当て情報に前記入力デバイスからの入力の通知先が設定されていない場合、予め規定された仮想マシンを前記通知先に決定することを要旨とする。
【００２５】
本発明の第１１の特徴は、本発明の第２乃至第１０の何れか一つの特徴に係り、前記設定部は、前記入力デバイスからの入力の通知先となる仮想マシンを前記割り当て情報に設定することを要旨とする。
【００２６】
本発明の第１２の特徴は、本発明の第２乃至第１０の何れか一つの特徴に係り、前記設定部は、前記仮想マシン毎に通知可能な入力を前記割り当て情報に設定することを要旨とする。
【発明の効果】
【００２７】
本発明の特徴によれば、複数の仮想マシンが構築される場合において、当該複数の仮想マシンによる入力デバイスの共用及び出力デバイスの同時使用を実現しつつ、重要データやコンテンツを取り扱う仮想マシンに係る入出力を、悪意あるネイティブコードのアプリケーションから確実に秘匿できる情報処理装置を提供することができる。
【図面の簡単な説明】
【００２８】
【図１】第１実施形態に係る情報処理装置の概略ハードウェア構成図である。
【図２】第１実施形態に係る情報処理装置の概略ソフトウェア構成図である。
【図３】第１実施形態に係る情報処理装置の詳細構成を示す機能ブロック図である。
【図４】割り当て情報の構成例を示す図である。
【図５】割り当て情報の構成例を示す図である。
【図６】第１実施形態に係る情報処理装置の動作を説明するためのフローチャートである（その１）。
【図７】第１実施形態に係る情報処理装置の動作を説明するためのフローチャートである（その２）。
【図８】第１実施形態の追加制御例１を説明するためのフローチャートである。
【図９】第１実施形態の追加制御例２を説明するためのフローチャートである。
【図１０】第１実施形態の追加制御例３を説明するための図である。
【図１１】第１実施形態の追加制御例４を説明するためのフローチャートである。
【図１２】第１実施形態の追加制御例５を説明するための図である。
【図１３】第１実施形態の追加制御例５を説明するためのフローチャートである。
【図１４】第１実施形態の追加制御例５を説明するためのフローチャートである。
【図１５】第１実施形態の追加制御例６を説明するためのフローチャートである。
【図１６】第２実施形態に係る情報処理装置の機能ブロック図である。
【図１７】第２実施形態に係る情報処理装置の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００２９】
次に、本発明の実施形態に係る情報処理装置について説明する。なお、以下の図面の記載において、同一または類似の部分には、同一または類似の符号を付している。ただし、図面は模式的なものであり、各寸法の比率などは現実のものとは異なることに留意すべきである。
【００３０】
［第１実施形態］
第１実施形態では、（１）情報処理装置の概略構成、（２）情報処理装置の詳細構成、（３）情報処理装置の動作、（４）作用・効果について説明する。
【００３１】
（１）情報処理装置の概略構成
まず、情報処理装置の概略構成について、（１．１）情報処理装置の概略ハードウェア構成、（１．２）情報処理装置の概略ソフトウェア構成の順に説明する。
【００３２】
（１．１）情報処理装置の概略ハードウェア構成
図１は、第１実施形態に係る情報処理装置10の概略ハードウェア構成図である。情報処理装置10は、例えばＰＣまたは携帯電話端末などである。図１に示すように、情報処理装置10は、ＣＰＵ20、メモリ21、記憶装置30、キーパッド31、およびディスプレイ32を含む。
【００３３】
メモリ21には、記憶装置30からロードされたプログラムやデータが格納される。ＣＰＵ20は、メモリ21にロードされたプログラム、例えば、OS、アプリケーションプログラム、および仮想化ソフトウェアであるＶＭＭ（Virtual Machine Monitor）などを実行する。
【００３４】
記憶装置30には、メモリ21上にロードされてＣＰＵ20により実行されるプログラムやデータが保存されている。記憶装置30としては、ＰＣではハードディスクドライブ、携帯電話端末ではフラッシュメモリが用いられる。
【００３５】
キーパッド31は、ＣＰＵ20で実行されるプログラムに応じた入力を行うための入力デバイスである。情報処理装置10の利用者は、キーパッド31を操作することにより、メニュ選択や文字入力などを行い、プログラムに応じたデータを入力する。また、キー単体の押し下げ、コントロールキーなどとの同時押しによって、多数の入力が実現される。なお、入力デバイスとしてはキーパッド31に限らず、タッチパネルまたはマウスなどが使用できる。第１実施形態では、キーパッド31を入力デバイスとして用いる場合について主に説明する。
【００３６】
ディスプレイ32は、ＣＰＵ20で実行されたプログラムの処理結果を出力する出力デバイスである。情報処理装置10の利用者は、ディスプレイ32に出力された内容を確認して、メールやＷｅｂなどのプログラムが受け付けるキーを押し下げる。
【００３７】
（１．２）情報処理装置の概略ソフトウェア構成
図２は、情報処理装置10の概略ソフトウェア構成図である。図２に示すように、ＣＰＵ20において実行されるプログラムとして、ＶＭＭ40、第１仮想マシン41および第２仮想マシン42がメモリ21に記憶されている。
【００３８】
ＶＭＭ40は、ＣＰＵ20上で、複数の仮想的な装置である仮想マシンを構築するプログラムである。すなわち、ＣＰＵ20は、ＶＭＭ40を用いて構築された仮想マシンにおいて、OSやアプリケーションプログラムを実行する。仮想マシンの内部には、実際の情報処理装置と同じようにＣＰＵとメモリが仮想的に存在する。
【００３９】
第１実施形態では、第１仮想マシン41および第２仮想マシン42の２つの仮想マシンがＶＭＭ40によって構築される。第１仮想マシン41および第２仮想マシン42のそれぞれは、OSおよびアプリケーションプログラムの実行に用いられる。
【００４０】
通常、ＶＭＭ40は、ＣＰＵとメモリ以外のデバイスに関しては、仮想マシン内部に仮想的に作り出すことはない。したがって、記憶装置30、キーパッド31およびディスプレイ32などのデバイスを複数のＯＳが共有して使用可能とするために、ＶＭＭ40上で動作する仮想マシンの1つにおいて上記のデバイス群を集中管理する方法が採られる。図２の構成では、第２仮想マシン42が上記のデバイス群を集中管理する。
【００４１】
第１仮想マシン41は、アプリケーションプログラムの実行を主目的としている。具体的には、第１仮想マシン41は、OS、入力デバイスおよび画面表示以外のドライバ、ウインドウシステム、日本語変換ソフト、アプリケーションプログラムなどを実行する。第１仮想マシン41ではウインドウシステムが動作するため、アプリケーションプログラムのウインドウなど、ほとんどの描画処理は第１仮想マシン41で処理される。
【００４２】
第１仮想マシン41には、利用者により後からアプリケーションプログラムが追加される。このため、悪意のあるアプリケーション（例えばウイルスやスパイウェアなど）による情報漏洩や誤動作などのリスクがつきまとう。このため、重要な処理やデータは第１仮想マシン41では実行されない。第１仮想マシン41で実行されるプログラムが入力デバイスおよび出力デバイスを用いたデータ入出力を行うには、第２仮想マシン42を経由する必要がある。
【００４３】
第２仮想マシン42は、キーパッド31およびディスプレイ32の管理を主目的としており、ＯＳ、入力デバイスのドライバ、およびアプリケーションプログラムに加え、キーパッド31およびディスプレイ32を管理するためのデバイスドライバを実行する。第１仮想マシン41では情報漏洩や誤動作などのリスクがあるため、大事な処理は、データを守るために第２仮想マシン42上で実行することにより、リスクを低減できる。
【００４４】
（２）情報処理装置の詳細構成
次に、情報処理装置10の詳細構成について説明する。図３は、情報処理装置10の詳細構成を示す機能ブロック図である。
【００４５】
図３に示すように、情報処理装置10は、ＶＭＭ40を用いることによって第１仮想マシン41および第２仮想マシン42を構築する。第１仮想マシン41および第２仮想マシン42のそれぞれにおいて、アプリケーションプログラムが実行される。なお、第１仮想マシン41のプログラムおよび第２仮想マシン42のプログラムが連携して動作してもよい。
【００４６】
第２仮想マシン42は、キーパッド31を管理しており、キーパッド31を用いた入力を受け取る。第１仮想マシン41は、設定要求部100を含む。第２仮想マシン42は、検知部200、記憶部201、決定部202、通知部203、設定部204および設定要求部205を含む。
【００４７】
検知部200は、情報処理装置10の利用者がキーパッド31を押し下げることにより発生する入力を検知する。検知部200は、利用者がどのキーを押し下げたのかを判別する。
【００４８】
記憶部201は、決定部202によって使用される情報であって、キーパッド31からの入力を通知する仮想マシンを設定した割り当て情報を格納する。割り当て情報は、キーパッド31からの入力をどの仮想マシンに通知するかを予め対応付けたテーブルである。なお、記憶部201としては、情報処理装置10に内蔵されたメモリ、フラッシュメモリ、またはリムーバブルデバイス（例えばSDカード）などが利用できる。
【００４９】
割り当て情報の構成方法としては図４および図５の２つが考えられる。図４は、キーパッド31からの入力とその通知先の組で示されている。キーパッド31では複数のキー入力が可能であり、それぞれの入力に対して通知先の仮想マシンが設定される。例えば、あるキーは第１仮想マシン41へ、別のキーは第２仮想マシン42へと通知するよう定義されている。
【００５０】
例えば、第１仮想マシン41においてウインドウシステムが実行され、第２仮想マシン42ではウインドウシステムに出力するアプリケーションが実行される場合、キーパッド31のほとんどのキーは第２仮想マシン42へ通知されるが、一部のキーはウインドウシステム用に第１仮想マシン41へ通知するといった構成もある。
【００５１】
なお、割り当て情報には、仮想マシン毎に通知可能な入力が設定されてもよい。この場合、各仮想マシンに対して通知可能な入力が設定されたテーブルが構成される。入力が発生したときには、各仮想マシンに設定されたテーブルを順次参照し、入力の通知先に設定されていれば、その仮想マシンに対して通知を行う。
【００５２】
図５は、それぞれの仮想マシンに対して通知すべき入力が設定されている。通知方法には、キー入力内容をそのまま通知する方法と、キー入力の発生のみを通知する方法（後述）の２つがある。そのため、図４および図５の各テーブルに通知方法も設定される。
【００５３】
なお、入力デバイスがキーパッド31ではなくタッチパネルである場合、ウインドウメニューを表示する区域へのタッチは第１仮想マシン41へ、その他の区域は第２仮想マシン42へと通知するように定義することが考えられる。
【００５４】
決定部202は、検知部200にて入力が検知されると、記憶部201の前記割り当て情報を用いて、前記入力をどの仮想マシンに通知するのかを決定する。第１実施形態では、決定部202は、第１仮想マシン41または第２仮想マシン42のどちらに入力を通知するかを決定する。
【００５５】
通知部203は、決定部202により通知先として決定された仮想マシンに入力を通知する。通知先の仮想マシンが第２仮想マシン42自身の場合、そのまま第２仮想マシン42内部の適切なプログラムに入力が通知される。そうではない場合、何らかの手段により別の仮想マシン、具体的には第１仮想マシン41に入力を通知する必要がある。多くのＶＭＭでは異なる仮想マシン同士が通信することによりデータをやり取りする仕組みとしてドメイン間通信機能を持っている。よって、通知部203は、ドメイン間通信を用いて、入力を第１仮想マシン41に通知する。
【００５６】
なお、第１仮想マシン41および第２仮想マシン42以外の仮想マシンも実行される場合、決定部202は、情報処理装置10内で実行される仮想マシンの中でどの仮想マシンに入力を通知するのかを決定することになる。ここで決定された仮想マシンに対して前記入力が通知部にて通知される。前記入力を通知された仮想マシンでは、仮想マシン上で実行されるプログラムのうち、入力を処理すべきプログラムに対して適切に通知される。
【００５７】
設定部204は、割り当て情報の新規作成や更新の設定を行う。具体的には、設定部204は、設定要求部100または設定要求部205からの要求を受けると、要求に沿った割り当て情報を記憶部201に格納する。この要求に設定すべき割り当て情報が含まれている場合には、割り当て情報をそのまま記憶部201に格納する。一部の入力（クリアキーや決定キーなど）についての通知先を更新する場合には、設定部204は、現在の割り当て情報中の該当部分を更新してもよいし、足りない部分を補った形で新規の割り当て情報を生成して記憶部201に格納してよい。このように、割り当て情報の設定方法については、ここで述べた方式に限定されない。
【００５８】
設定要求部100および設定要求部205は、前記割り当て情報の設定を設定部204に要求する。上述したように、この要求には、割り当て情報全体、変更部分、または入力の設定を示すコマンドが含まれる。なお、設定要求部205による割り当て情報の呼び出しは任意のタイミングでよい。
【００５９】
設定部204は第２仮想マシン42上で動作するため、設定要求部100および設定要求部205では設定部204への要求の通知方法が異なる。設定要求部205は同一の第２仮想マシン42内で要求するため、直接設定部204に対して要求すればよい。一方、設定要求部100は、設定部204とは異なる第１仮想マシン41に設けられるため、ドメイン間通信機能等を用いて要求を通知する必要がある。
【００６０】
このような変更処理により、例えば、第１仮想マシン41がクライアントアプリケーションを実行し、第２仮想マシン42がサーバアプリケーションを実行する場合、クライアントアプリケーションからサーバアプリケーションにキー入力の通知先を切り替えることができる。
【００６１】
（３）情報処理装置の動作
次に、上記のように構成された情報処理装置10の動作について説明する。図６および図７は、第１実施形態に係る情報処理装置10の動作を説明するためのフローチャートである。
【００６２】
図６および図７に示すように、情報処理装置10は、（３．１）第２仮想マシン42がキーパッド31からの入力を適切な通知先に対して通知する入力通知処理S200と、（３．２）第１仮想マシン41が入力の通知を検知する通知検知処理S100と、（３．３）第１仮想マシン41または第２仮想マシン42が割り当て情報の設定を要求する設定要求処理S300と、（３．４）第２仮想マシン42が前記要求を受けて割り当て情報を設定する設定処理S400とを実行する。以下、各処理について詳細に説明する。
【００６３】
（３．１）入力通知処理：S200
ステップS201において、第２仮想マシン42の検知部200は、情報処理装置10の利用者によるキーパッドの押し下げにより発生した入力を検知し、どのキーが押されたかを判別する。
【００６４】
ステップS202およびS203において、決定部202は、記憶部201に格納された割り当て情報を参照し、前記割り当て情報を用いて入力の通知先とすべき仮想マシンを決定する。情報処理装置10は第１仮想マシン41および第２仮想マシン42の2つを含むため、決定部202では、どちらかに通知するか、もしくはどちらにも通知しないという決定がなされる。
【００６５】
ステップS204において、通知部203は、割り当て情報を参照して、入力の通知先が未設定であるか否かを判定する。通知先が未設定である場合には通知せずに処理を終了し、通知先が設定されている場合には処理をステップS205に移行する。
【００６６】
ステップS205において、通知部203は、入力の通知先の仮想マシンが自分自身、すなわち第２仮想マシン42であるか否かを判定する。入力の通知先が第２仮想マシン42である場合には処理をステップS207に移行し、入力の通知先が第１仮想マシン41である場合には処理をステップS206に移行する。
【００６７】
ステップS206において、通知部203は、ステップS203で決定された通知先の仮想マシン（第１仮想マシン41）に入力を通知する。ステップS207において、通知部203は、第２仮想マシン42において実行されるプログラムに入力を通知する。
【００６８】
（３．２）通知検知処理：S100
ステップS101において、第１仮想マシン41は、通知部203からの通知を検知する。このステップは、第２仮想マシン42を仮想的なキーパッドデバイスとして扱うようなデバイスドライバにて処理される。
【００６９】
ステップS102において、ステップS101で検知された入力が第１仮想マシン41内部の適切なプログラムに渡されて、処理を終了する。
【００７０】
（３．３）設定要求処理：S300
ステップS301において、設定要求部100または設定要求部205は、割り当て情報の設定を要求する。割り当て情報の設定は新規と更新の2種類がある。この設定要求が行われるのは、仮想マシンで実行されるプログラムが入力の通知先を変更したい場合、もしくは実行されるプログラムが切り替わるときに、切り替え後のプログラムが想定している入力の通知設定をOSなどが自動的に設定する場合などである。
【００７１】
（３．４）設定処理：S400
ステップS401において、設定部204は、割り当て情報の設定を要求する設定要求を設定要求部100または設定要求部205から受け取る。この時点で、どの仮想マシンからの設定要求であるかを判別可能である。
【００７２】
ステップS402において、設定部204は、設定要求に応じて、割り当て情報を設定（または更新）する。ここでは割り当て情報全体が設定されてもよいし、一部の割り当て情報のみが設定されてもよい。
【００７３】
（４）作用・効果
このように、第１実施形態では、ＶＭＭ40により複数の仮想マシンが動作する情報処理装置10において、キーパッド31からの入力を集中管理する第２仮想マシン42は、キーパッド31からの入力を検知すると、割り当て情報において通知先として設定された仮想マシンに入力を通知する。すなわち、キーパッド31を1つの仮想マシンが占有するのではなく、複数の仮想マシンで共用可能としつつ、キーパッド31からの入力をどの仮想マシンに通知するかを判断することで、各入力を適切な仮想マシンに通知することができる。
【００７４】
また、利用者により後からプログラムが追加されることが想定された第１仮想マシン41が、キーパッド31からの入力を直接受け取るのではなく、キーパッド31の管理を受け持つ第２仮想マシン42から転送された形で入力を受け取る。これにより、悪意のあるプログラムが第１仮想マシン41で実行されたとしても、第２仮想マシン42からの入力通知に対する盗聴や改竄といった攻撃が困難になる。したがって、プログラムの実行を主目的とする第１仮想マシン41上で悪意あるプログラムを動作させたとしても、キー入力に対する盗聴や改竄を困難にすることで、利用者の操作を安全にすることができる。
【００７５】
さらに、第１実施形態では、第２仮想マシン42がキーパッド31からの入力を第１仮想マシン41に常時通知するのではなく、第２仮想マシン42自身への通知や通知しない場合を考慮して、通知先を動的に変更可能とする。動的に通知先が変更可能であるため、利用者が意図したプログラムにキーパッド31の入力を伝えることができる。したがって、複数の仮想マシンが同時に画面表示可能で、実行される仮想マシンが異なるプログラムを同時に利用可能な状況において、利用者が自分の入力を意図したプログラムに対して適切に通知することができる。
【００７６】
［追加制御例１］
上述した第１実施形態では、第２仮想マシン42がキーパッド31の入力を検知した場合、設定された通知先に通知部203が入力を通知し、通知先に設定されていない仮想マシンに対してはキー入力が一切通知されない。
【００７７】
例えば、第１仮想マシン41ではウインドウシステムが実行され、第２仮想マシン42では前記ウインドウシステムに出力するアプリケーションが実行される場合、一部のキー（メニューキーやアプリケーション終了キーなど）を除いてほとんどのキー入力は第２仮想マシン42に通知され、第１仮想マシン41には通知されない。したがって、利用者がキーを入力しても第１仮想マシン41に入力が通知されない状態が長時間継続することになる。
【００７８】
ところが、多くの場合、電源消費量の削減のため、一定時間のキー入力がないとディスプレイの電源をOFFにするような制御が行われる。具体的には、現在の一般的なOSは、長時間入力がないと画面表示をOFFにし、もっと長時間になるとOSを休止させる機能を持つ。
【００７９】
このため、そのような制御を行う仮想マシンに対して入力を通知しないと、情報処理装置10の利用者がキー入力をしているにもかかわらず、画面がOFFになってしまう。このようなことが発生すると、利用者がキー入力をしているにもかかわらず画面がOFFになり、ユーザの利便性を損なうことになる。
【００８０】
そこで、追加制御例１では、第２仮想マシン42は、何らかのキー入力が発生したことのみを第１仮想マシン41に通知する。キー入力の内容を第１仮想マシン41に通知してしまうと、アプリケーションを第１仮想マシン41に自由に追加できる場合、ウイルスのような悪意のあるアプリケーションによりパスワードの漏洩やアプリケーションの強制終了などが引き起こされる危険性がある。ここではOSが画面OFFなどをしないように入力の発生のみを通知すれば十分である。
【００８１】
図８は、追加制御例１を説明するためのフローチャートである。なお、以下では、第１実施形態に対して追加される部分のみについて説明する。
【００８２】
図８のステップS203において、第２仮想マシン42の決定部202は、前記割り当て情報を用いて、キーパッド31からの入力が発生したことのみを通知する仮想マシンを決定する。
【００８３】
この後、ステップS208において、入力の発生のみを通知する仮想マシンがある場合には、ステップS209に処理を移行して、入力の発生のみを通知する仮想マシンがない場合には処理を終了する。
【００８４】
ステップS209において、通知部203は、ステップS203で決定された通知先となる仮想マシンに入力の発生のみを通知する。何らかのキー入力が発生したことのみを第１仮想マシン41に通知することによって、キーパッド31からの入力が第２仮想マシン42に対してのみ発生していたとしても、入力自体を通知するのではなく、入力が発生したことだけを通知する。
【００８５】
このように、追加制御例１では、キーパッド31からの入力が発生すると、入力の発生のみが指定の仮想マシンに通知される。これにより、第１仮想マシン41上で動作する悪意のあるプログラムから入力の盗聴などがされることなく、定期的にキー入力の発生を第１仮想マシン41に伝えることができ、第１仮想マシン41の動作を継続させることができる。
【００８６】
［追加制御例２］
追加制御例１を実施すると、情報処理装置10内で動作する仮想マシンに対して、入力の発生のみも通知できるが、日本語の文字入力を行う場合、入力のタイミングにより、入力内容を推測される恐れがある。
【００８７】
例えば、情報処理装置10が携帯電話端末である場合、”1”キーを5回連続で押し下げると、“お”行の文字を入力したことが推測される。これ以降の入力でも“あ”〜“お”行のうちどれかを入力したことが推測可能であり、一定量の連続した押し下げから大まかな入力内容を推測される恐れがある。
【００８８】
そこで、追加制御例２では、第２仮想マシン42の通知部203は、入力発生のみを通知する際に、発生時点から規定の時間分だけタイミングを遅らせてから、入力発生を第１仮想マシン41に通知する。実際に入力が発生した時間から時間を遅らせることにより、キー入力タイミングと入力の発生通知にはタイミングにずれが生じる。あるいは、ある決められた時点まで遅らせるようにすれば、4回キー入力しても、発生の通知は一回だけなど数も一致しないようになる。場合によっては、短時間に5回連続で入力が発生しても1回のみ通知する。このため、タイミングによって入力内容を推測することが困難になる。
【００８９】
図９は、追加制御例２を説明するためのフローチャートである。なお、以下では、追加制御例１に対してさらに追加される部分のみについて説明する。
【００９０】
図９のステップS210において、第２仮想マシン42の通知部203は、ステップS209を実行する前に、規定の通知タイミングまで通知せずに処理を保留する。保留が解除されたらステップS209に移行する。
【００９１】
このように、追加制御例２によれば、入力の発生のみを第１仮想マシン41に通知する際に、規定のタイミングだけ遅延させることにより、第１仮想マシン41上で動作する悪意のあるプログラムにおいて入力内容が推測され難くすることができる。
【００９２】
［追加制御例３］
第１実施形態では、設定要求部100または設定要求部205を用いて割り当て情報の設定を要求することで任意の通知先を設定可能である。ところが、あまり自由に設定が可能な場合、第１仮想マシン41のプログラムが第２仮想マシン42に対する通知を勝手に変更したり、横取りしたりすることが可能となるため、他のプログラムが想定外の動作をする可能性がある。
【００９３】
例えば、第１仮想マシン41において悪意のあるアプリケーションが誤って実行されると、悪意あるアプリケーションが、キーパッド31からの入力の通知先を第２仮想マシン42から第１仮想マシン41へ強制的に切り替えることにより、利用者が第２仮想マシン42のアプリケーションを利用できなくなる。
【００９４】
このような妨害を防ぐために、追加制御例３では、通知先を設定する際に、要求を行った仮想マシン以外の仮想マシンに関連する設定を一切行えないように制限する。具体的には、第２仮想マシン42の設定部204は、通知先の仮想マシンが未設定である入力に対して、設定要求部205による設定要求を行った仮想マシンを通知先として割り当て情報に設定する。あるいは、設定部204は、当該設定要求を行った仮想マシンを通知先とする入力について、通知を解除する。
【００９５】
図１０（ａ）は、追加制御例３を説明するためのフローチャートである。なお、以下では、第１実施形態に対してさらに追加される部分のみについて説明する。
【００９６】
図１０（ａ）のステップS403において、第２仮想マシン42の設定部204は、ステップS401を実行した後、通知先の設定を要求した仮想マシンを特定する。ここで設定を要求するのは、第１仮想マシン41および第２仮想マシン42のいずれかである。
【００９７】
ステップS404において、設定部204は、割り当て情報と、設定要求により指定された入力および通知先とに基づいて、設定要求により指定された入力の通知先が現在の割り当て情報において未設定であるか否かを判定する。通知先が未設定である場合にはステップS405に処理を移行し、通知先が設定済みである場合にはS406に処理を移行する。
【００９８】
ステップS405において、設定部204は、通知先の設定を要求した仮想マシンを通知先とするか否かを判定する。通知先の設定を要求した仮想マシンを通知先とする場合にはステップS402に処理を移行し、通知先の設定を要求した仮想マシンを通知先としない場合には処理を終了する。
【００９９】
ステップS406において、設定部204は、現在の割り当て情報において、前記入力の通知先が要求元の仮想マシンと一致するか否かを判定する。一致する場合には、ステップS407に移行する。そうでない場合には処理を終了する。
【０１００】
ステップS407において、設定部204は、要求により前記入力の通知先を未設定にする（解除する）場合には、ステップS402に処理を移行する。そうでない場合には処理を終了する。
【０１０１】
以上の処理をまとめると図１０（ｂ）のようになる。このように、追加制御例３によれば、設定要求の要求元の仮想マシンを特定して、割り当て情報の現在の通知先と設定要求内の通知先を確認することで、要求を行った仮想マシン以外の仮想マシンに関連する設定を一切行えないように制限することができる。これにより、別の仮想マシンに対して生じる悪影響を排除することができる。
【０１０２】
例えば、第１仮想マシン41で実行中の悪意あるアプリケーションが、第２仮想マシン42に通知されるように設定された入力を、第１仮想マシン41に通知することはできなくなる。また、悪意あるアプリケーションが第１仮想マシン41以外の仮想マシンに対して入力の通知を設定できなくなる。これにより、キーパッド31からの入力の通知先を勝手に改変できないため、安全に入力を通知することができる。
【０１０３】
［追加制御例４］
追加制御例３を実施すると、要求元の仮想マシンが自分とは異なる仮想マシンに関する設定を行うことができないように制限される。つまり、情報処理装置10内のいずれかの仮想マシンで実行されるアプリケーションは、自己が動作する仮想マシンに対しての入力通知のみを設定することができる。
【０１０４】
ところが、アプリケーションによっては、別の仮想マシンで実行されるアプリケーションと連携して動作するアプリケーションも存在する。一例として、第１仮想マシン41で実行されるウインドウシステムと、別の仮想マシンで実行されるアプリケーションなどがある。別の例として、Remote Procedure Call (RPC)を用いて別の仮想マシンで動作するサーバに対して、第１仮想マシン41で動作するクライアントがファイルなどのデータをやり取りすることがある。上記の場合には、プログラムが実行される仮想マシンだけでなく、連携先の仮想マシンに対してキーパッド31からの入力を切り替える必要がある。
【０１０５】
要求元とは異なる仮想マシン上で動作するプログラムと連携して動作していた場合には、連携先の仮想マシンを通知先に設定したり、連携先の仮想マシンを通知先とする入力を要求元の仮想マシンに切り替えたりすることにより、プログラムの動作だけでなく、キーパッド31の入力に関しても適切に切り替えながら連携して動作する必要がある。
【０１０６】
そこで、追加制御例４では、連携先の仮想マシンに関する設定は許可されるようにする。具体的には、第２仮想マシン42は、第１仮想マシン41上で実行されるプログラムと連携して動作する第２プログラムを実行し、設定部204は、第２プログラムが第２仮想マシン42上で実行されているときのみ、第１仮想マシン41が通知先である入力を第２仮想マシン42へ通知するように設定するか、第２仮想マシン42が通知先である入力を第１仮想マシン41へ通知するように設定する。
【０１０７】
図１１は、追加制御例４を説明するためのフローチャートである。なお、以下では、第１実施形態に対してさらに追加される部分のみについて説明する。
【０１０８】
ステップS408において、第２仮想マシン42の設定部204は、ステップS401を実行した後、設定要求元の仮想マシンで実行されるプログラムと、第２仮想マシン42上で実行される第２プログラムとの連携状況について確認する。プログラムの連携例としては、ウインドウシステムとアプリケーションプログラムとの連携や、ファイルアクセスサーバとアプリケーションプログラムとの連携などがある。
【０１０９】
ステップS409において、設定部204は、ステップS408の確認の結果、第１仮想マシン41と連携している場合には、ステップS410に処理を移行する。そうではない場合には処理を終了する。
【０１１０】
ステップS410において、設定部204は、前記第２プログラムが現在実行中である場合には、ステップS411に処理を移行し、そうではない場合には処理を終了する。
【０１１１】
ステップS411において、設定部204は、現在の割り当て情報に設定された通知先が第１仮想マシン41または第２仮想マシン42である場合には、ステップS412に処理を移行し、そうでない場合には処理を終了する。
【０１１２】
ステップS412において、設定部204は、要求により設定される通知先が第１仮想マシン41または第２仮想マシン42である場合には、ステップS402に処理を移行し、そうでない場合には処理を終了する。
【０１１３】
以上の手順により、第１仮想マシン41で実行されるプログラムが第２仮想マシン42で実行される第２プログラムと連携して動作する場合には、第２仮想マシン42に関する設定を割り当て情報に反映することができる。これにより、２つのプログラムはデータや実行結果だけを渡して連携するだけでなく、キーパッド31の入力をあるときは第１仮想マシン41に、別のときは第２仮想マシン42に、それぞれ切り替えることで、適切なプログラムに対してその時点で適切なキー入力を通知することができるようになる。
【０１１４】
つまり、異なる仮想マシン上で実行されるアプリケーション同士が連携する場合でも、入力の通知を自分から相手、相手から自分というように変更することにより、情報処理装置10の利用者が入力した時点で最も適切な通知先に通知できる。
【０１１５】
例えば、キーパッド31を管理する第２仮想マシン42において実行されるアプリケーションが、第１仮想マシン41で実行されるアプリケーションと連携して動作する状況で、キーパッド31からの入力を第１仮想マシン41に対して通知したり、第２仮想マシン42に通知したり、切り替えたりできるようになる。これにより、前者の例では、第１仮想マシン41のウインドウのメニュボタンが押されると、上下左右のキー入力が第２仮想マシン42のアプリケーションから、第１仮想マシン41のウインドウシステムのメニュに通知されるように切り替えることができる。これで異なる仮想マシンで動作するアプリケーションを利用する場合、利用者がわざわざ通知先を切り替えるのではなく、アプリケーション自身が適切に入力の通知先を振り分けながら動作することで、利用者の利便性を損なわずに利用可能となる。
【０１１６】
［追加制御例５］
上述した第１実施形態では、第２仮想マシン42の記憶部201内の割り当て情報に通知先を設定しておくと、入力が発生した際に設定通りの通知先に通知される。すなわち、任意の仮想マシン上で実行されるプログラムは入力の通知先を切り替えるたびに、入力の種類と通知先ドメインの2つを通知先の変更が必要な組み合わせの分通知する必要がある。例えば、メニュおよび終話キーの通知先は第１仮想マシン41とするなどである。
【０１１７】
この場合、割り当て情報内の入力数が少ない場合には1つずつ全部を設定してもすぐに設定が反映される。つまり、変更する数が少ないときにはすぐに通知先の変更を反映可能である。
【０１１８】
ところが、キーパッド31は単体のキーに加えて、長押しやMenu＋いずれのキーなど組み合わせを考慮すると入力数が非常に多い。この場合に1つずつ全部設定すると、設定の反映が完了するための時間がかかる。したがって、数が増えれば増えるほど変更が完了するまでに時間がかかるようになる。また、画面遷移を考慮すると、一度使用した組み合わせは再び利用する可能性が非常に高い。
【０１１９】
そこで、追加制御例５では、複数の割り当て情報を設定可能とし、その中から現在有効な割り当て情報を設定しておき、通知先を決定する。具体的には、第１仮想マシン41上で実行されるプログラムに対して前記割り当て情報が1つ以上設定され、設定要求部100または設定要求部205は、プログラムに割り当てられた割り当て情報の1つを指定して要求する。
【０１２０】
さらに、第１実施形態では、あるアプリケーションがアプリケーション内で使用する割り当て情報を切り替えるために、あらかじめ複数の割り当て情報を設定していた。ところが、装置の中では複数のアプリケーションが任意の仮想マシン上で動作している。よって、入力の通知先とすべきアプリケーションが別のアプリケーションに切り換わった場合には、適切に入力が通知されるように通知先の変更を要求する必要がある。これらは、装置を利用しているときに、利用者がウインドウのフォーカスを別のアプリケーションに切り替えた場合や、メールの受信を通知するウインドウが表示された場合などに相当する。このような状況に対応するために、追加制御例５では、設定要求部100または設定要求部205は、第１仮想マシン41上で実行されるプログラムを指定して要求する。
【０１２１】
複数の割り当て情報を用いる構成は図１２に示される。また、追加制御例５の制御フローは図１３および図１４のステップS300で示される。なお、以下では、第１実施形態に対してさらに追加される部分のみについて説明する。
【０１２２】
図１２では、プログラム(A)に3つの割り当て情報が設定され、プログラム(B)に2つの割り当て情報が設定され、合計5つの割り当て情報が設定される。この5つの割り当てのうち、現在はプログラム(A)の割り当て情報(2)が有効になっている。この有効な割り当て情報を用いて通知先の仮想マシンが決定される。
【０１２３】
ステップS302において、情報処理装置10内のいずれかの仮想マシンは、ステップS301を実行する前に、現在実行中のプログラムに設定された割り当て情報の中から次に有効としたい割り当て情報を指定する。この処理では、実行中のプログラムが別の割り当て情報を指定して切り替えることで、キーパッド31の入力の通知先を変更する。このステップS302では、あくまでどの割り当て情報を使うかのみ指定する。
【０１２４】
ステップS303において、情報処理装置10内のいずれかの仮想マシンは、ステップS302を実行する前に、設定要求により有効にしたい割り当て情報を含むプログラムを指定する。つまり、どのプログラムの割り当て情報を有効にしたいのかということを指定する。
【０１２５】
ステップS300では、実行中のアプリケーションが通知先を変更するための処理であったが、実行中のアプリケーション自体が切り換わったために割り当て情報を切り替える必要がある場合には、どのプログラムであるのかを指定する。
【０１２６】
以上の手順により、複数の割り当て情報を記憶部201に設定して、現在有効な割り当て情報を設定することにより、入力の通知先を高速に切り替えることができる。これにより、アプリケーションが設定要求にキーと通知先を1つずつ設定しなくてもよいので、設定要求も簡素化することができる。また、キーと通知先を要求に含めておけば、指定した割り当て情報のキーと通知先の変更も引き続き可能であるため、細かく通知先を変更する要望にも応えることができる。
【０１２７】
また、追加制御例５では、第２仮想マシン42で実行されるアプリケーションと連携して動作する第１仮想マシン41のアプリケーションには、必要とされる切り替え要求の数だけ割り当て情報をあらかじめ作成しておく。例えば、すべてのキーを第１仮想マシン41に通知、メニュと終話キーの通知のみ第１仮想マシン41に、それ以外を第２仮想マシン42に通知、メニュ、終話、上下左右、決定、クリアの各キーのみを第１仮想マシン41に、それ以外を第２仮想マシン42に通知という場合には、3つの割り当て情報がアプリケーションに対して設定される。そして、アプリケーションが入力の通知先を変更する際に、上記3つのうちのどれか1つを指定するだけで、入力の通知先を変更することができるようになる。これにより、切り替え処理を完了させるために必要な時間を短縮することができるようになる。
【０１２８】
さらに、ウインドウのフォーカス切り替えなどにより入力を通知すべきアプリケーションが切り換わったとしても、切り替え先のアプリケーションを指定して要求することにより、入力が切り替え先アプリケーションに通知されるようになる。これにより、アプリケーションの切り換わりでいきなりキー入力ができなくなるという状況は解消される。
【０１２９】
［追加制御例６］
上述した第１実施形態では、割り当て情報を設定する際に、入力と通知先の組を1つずつ設定する必要がある。追加制御5では、記憶部201に複数の割り当て情報を設定しておき、その中の1つを有効にすることで、入力を通知する際に使用される。
【０１３０】
ところが、この場合でも新規に割り当て情報を作成する場合の初期値には、すべての入力とその通知先を1つずつ設定する必要があるため、新規作成した割り当て情報の設定を完了するまでには時間がかかってしまう。すなわち、入力の種類が少ない場合には、一つ一つを設定しても設定の手間や設定完了に要する時間は問題にならないが、キー入力のように多数の入力になると、通知先の設定が膨大になり、正しく動くか検証するための時間も必要となる。
【０１３１】
そこで、追加制御例６では、入力の通知先としてデフォルトの通知先を設定しておき、割り当て情報に設定されていない場合には、デフォルトの通知先を利用する。追加制御例６の制御フローは図１５のステップS200で示される。なお、以下では、前記第１実施形態に対して追加される部分のみについて説明する。
【０１３２】
ステップS211において、情報処理装置10内の第２仮想マシン42は、ステップS204からステップS206に移行する途中において、デフォルトの通知先である仮想マシンを設定する。この後、入力が通知される際にはこのデフォルトの仮想マシンへ通知される。
【０１３３】
以上の手順により、割り当て情報の入力と通知先の組を1つずつすべて設定する必要がなくなるため、設定の手間が軽減される。これにより、新規作成した割り当て情報の設定を早期に完了することができ、割り当て情報のデータの大きさを削減することができる。
【０１３４】
なお、デフォルトの設定は端末を構成する際に決めて常に変化しないように構成してもよいし、端末が起動したときに前記割り当て情報に対して規定の設定を反映してもよい。これにより、入力の通知先を変更する際に、デフォルトの設定とは異なる部分だけを通知することができるため、前記設定要求部の要求内容を簡略化できるし、通知先の変更を反映するために必要な時間を短縮することができる。
【０１３５】
［第２実施形態］
第１実施形態では、第２仮想マシン42は、キーパッド31からの入力を集中管理しながら、第１仮想マシン41上のプログラムと連携する第2プログラムを実行する役目もあった。例えば、第１仮想マシン41で実行されるアプリケーションは、キーパッド31を管理する第２仮想マシン42上で実行されるアプリケーションと連携していた。
【０１３６】
ところが、連携先となる仮想マシンはキーパッド31を管理する第２仮想マシン42だけとは限らない。第２仮想マシン42はキーパッド31の管理のみに特化し、第１仮想マシン41上のプログラムと連携させるプログラムは別の第３仮想マシンで実行する第３プログラムと連携する形態も可能である。
【０１３７】
そこで、第２実施形態では、情報処理装置10にて第３仮想マシンを動作させ、その仮想マシン上で第３プログラムを動作させる場合でも異なる仮想マシン間のプログラム連携を実現する。そして、設定部204は、第３プログラムが第３仮想マシン43上で実行されているときのみ、第１仮想マシン41が通知先である入力を第３仮想マシン43へ通知するように設定するか、第３仮想マシン43が通知先である入力を第１仮想マシン41へ通知するように設定する。
【０１３８】
図１６は、第２実施形態に係る情報処理装置10の機能ブロック図である。図１６に示すように、情報処理装置10では、ＶＭＭ40によって第１仮想マシン41、第２仮想マシン42および第３仮想マシン43が構築されている。
【０１３９】
第１仮想マシン41および第３仮想マシン43は、アプリケーションプログラムの実行を主目的とする。第２仮想マシン42は、キーパッド31を管理し、キーパッド31を用いた入力を受け取る。
【０１４０】
第１仮想マシン41は、設定要求部100を含む。第２仮想マシン42は、検知部200、記憶部201、決定部202、通知部203、および設定部204を含む。第３仮想マシン43は、設定要求部300を含む。図１６のうち第１実施形態と異なる部分は、設定要求部205が設定要求部300に移動していることである。設定要求部300は設定要求部100と同様である。
【０１４１】
次に、上記のように構成された情報処理装置10の動作について説明する。なお、第２実施形態の処理手順は、第１実施形態と追加制御1〜6と同様の手順を利用可能である。第２実施形態では、追加制御4とは手順が異なるのでその手順のみを説明する。第１実施形態と同じ処理については同じ符号で示されている。
【０１４２】
図１７は、第２実施形態に係る情報処理装置10の動作を説明するためのフローチャートである。
【０１４３】
ステップS413において、第２仮想マシン42の設定部204は、ステップS401を実行した後、設定要求元の仮想マシンで実行されるプログラムが、第３仮想マシン43上で実行される第３プログラムと連携状況について確認する。プログラムの連携例としては、ウインドウシステムとアプリケーションプログラムや、ファイルアクセスサーバとアプリケーションプログラムなどがある。
【０１４４】
ステップS414において、設定部204は、ステップS414の確認の結果、第１仮想マシン41と連携している場合には、ステップS415に処理を移行し、そうではない場合には処理を終了する。
【０１４５】
ステップS415において、設定部204は、前記第３プログラムが現在実行中である場合には、ステップS416に処理を移行し、そうではない場合には処理を終了する。
【０１４６】
ステップS416において、設定部204は、現在の割り当て情報に設定された通知先が、第１仮想マシン41または第３仮想マシン43である場合には、ステップS417に処理を移行し、そうでない場合には処理を終了する。
【０１４７】
ステップS417において、設定部204は、要求により設定される通知先が、第１仮想マシン41または第３仮想マシン43である場合には、ステップS402に処理を移行し、そうでない場合には処理を終了する。
【０１４８】
以上の手順により、第１仮想マシン41で実行されるプログラムが第３仮想マシン43で実行される第３プログラムと連携して動作する場合には、第３仮想マシン43に関する設定を割り当て情報に反映することができる。これにより、2つのプログラムはデータや実行結果だけを渡して連携するだけでなく、キーパッド31の入力をあるときは第１仮想マシン41に、別のときは第３仮想マシン43に、それぞれ切り替えることで、適切なプログラムに対してその時点で適切なキー入力を通知することができるようになる。
【０１４９】
また、キーパッド31を管理する第２仮想マシン42とは別の第３仮想マシン43を含むときに、第１仮想マシン41で実行されるアプリケーションが第３仮想マシン43で実行されるアプリケーションと連携して動作する状況において、キーパッド31からの入力を第１仮想マシン41に対して通知したり、第３仮想マシン43に通知したりと切り替えることができるようになる。
【０１５０】
［その他の実施形態］
上述したように、本発明の一実施形態を通じて本発明の内容を開示したが、この開示の一部をなす論述及び図面は、本発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態が明らかとなろう。
【０１５１】
例えば、上述した追加制御例１〜６は、それぞれ個別に実施するだけでなく、互いに組み合わせて実施可能である。さらに、上述した実施形態では、仮想マシンがVMMと呼ばれるソフトウェアによって構成されていたが、ARM（登録商標）社のTrustZone（登録商標）などを用いて構成してもよい。このように、本発明は、ここでは記載していない様々な実施の形態などを含むことは勿論である。したがって、本発明の技術的範囲は、上述の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【符号の説明】
【０１５２】
10…情報処理装置、20…ＣＰＵ、21…メモリ、30…記憶装置、31…キーパッド、32…ディスプレイ、40…ＶＭＭ、41…第１仮想マシン、42…第２仮想マシン、43…第３仮想マシン、100, 205, 300…設定要求部、200…検知部、201…記憶部、202…決定部、203…通知部、204…設定部
【図１】
2010191791.tif 000003
【図２】
2010191791.tif 000004
【図３】
2010191791.tif 000005
【図４】
2010191791.tif 000006
【図５】
2010191791.tif 000007
【図６】
2010191791.tif 000008
【図７】
2010191791.tif 000009
【図８】
2010191791.tif 000010
【図９】
2010191791.tif 000011
【図１０】
2010191791.tif 000012
【図１１】
2010191791.tif 000013
【図１２】
2010191791.tif 000014
【図１３】
2010191791.tif 000015
【図１４】
2010191791.tif 000016
【図１５】
2010191791.tif 000017
【図１６】
2010191791.tif 000018
【図１７】
2010191791.tif 000019