JP2010191791A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2010191791A
JP2010191791A JP2009036726A JP2009036726A JP2010191791A JP 2010191791 A JP2010191791 A JP 2010191791A JP 2009036726 A JP2009036726 A JP 2009036726A JP 2009036726 A JP2009036726 A JP 2009036726A JP 2010191791 A JP2010191791 A JP 2010191791A
Authority
JP
Japan
Prior art keywords
virtual machine
input
notification destination
unit
setting
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009036726A
Other languages
English (en)
Other versions
JP5066112B2 (ja
Inventor
Hisatoshi Eguchi
悠利 江口
Masaru Ota
賢 太田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Docomo Inc
Original Assignee
NTT Docomo Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NTT Docomo Inc filed Critical NTT Docomo Inc
Priority to JP2009036726A priority Critical patent/JP5066112B2/ja
Publication of JP2010191791A publication Critical patent/JP2010191791A/ja
Application granted granted Critical
Publication of JP5066112B2 publication Critical patent/JP5066112B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】複数の仮想マシンによる入力デバイスの共用を実現しつつ、重要データやコンテンツを取り扱う仮想マシンに係る入出力を、悪意あるネイティブコードのアプリケーションから確実に秘匿する。
【解決手段】本発明に係る情報処理装置10は、自由に追加及び削除が可能な第1プログラムを実行する第1仮想マシン41と、キーパッド31を管理する第2仮想マシン42とを含む。第2仮想マシン42は、キーパッド31からの入力を検知する検知部200と、割り当て情報を格納する記憶部201と、割り当て情報を用いて入力の通知先となる仮想マシンを決定する決定部202と、決定部202によって通知先に決定された仮想マシンに入力を通知する通知部203とを備える。
【選択図】図3

Description

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

Claims (12)

  1. 自由に追加及び削除が可能な第1プログラムを実行する第1仮想マシンと、入力デバイスを管理する第2仮想マシンとを含み、プログラムによって構築された仮想的な処理環境である複数の仮想マシンを備える情報処理装置であって、
    前記入力デバイスからの入力を検知する検知部と、
    前記入力の通知先となる仮想マシンの決定に用いられる割り当て情報を格納する格納部と、
    前記検知部によって前記入力が検知された場合、前記割り当て情報を用いて、前記通知先となる仮想マシンを決定する決定部と、
    前記決定部によって前記通知先に決定された前記仮想マシンに対して前記入力を通知する通知部と
    を備える情報処理装置。
  2. 前記割り当て情報の設定を要求する設定要求部と、
    前記設定要求部からの要求に基づいて、前記通知先が設定された前記割り当て情報を前記格納部に格納する設定部と
    をさらに備える請求項1に記載の情報処理装置。
  3. 前記割り当て情報は、前記入力の発生のみを通知する仮想マシンを含み、
    前記決定部は、前記検知部によって前記入力が検知された場合、前記割り当て情報を用いて、前記入力の発生のみを通知する仮想マシンをさらに決定し、
    前記通知部は、前記通知先に決定された前記仮想マシンに対して、前記入力の発生のみを通知する請求項1または2に記載の情報処理装置。
  4. 前記通知部は、前記入力が発生した時刻から所定時間遅らせて前記入力の発生のみを通知する請求項3に記載の情報処理装置。
  5. 前記設定部は、前記通知先となる仮想マシンが未設定である入力に対して、前記設定要求部による要求を行った仮想マシンを前記通知先として前記割り当て情報に設定するか、または前記設定要求部による要求を行った仮想マシンを前記通知先とする入力の通知を解除する請求項2乃至4の何れか一項に記載の情報処理装置。
  6. 前記第2仮想マシンは、前記第1仮想マシンによって実行される前記第1プログラムと連携して動作する第2プログラムを実行し、
    前記設定部は、前記第2プログラムが前記第2仮想マシンによって実行されているときのみ、前記第1仮想マシンが前記通知先となる入力を前記第2仮想マシンに通知するように設定するか、または前記第2仮想マシンが前記通知先となる入力を前記第1仮想マシンに通知するように設定する請求項2乃至4の何れか一項に記載の情報処理装置。
  7. 前記第1仮想マシンによって実行される前記第1プログラムと連携して動作する第3プログラムを実行する第3仮想マシンを含み、
    前記設定部は、前記第3プログラムが前記第3仮想マシンによって実行されているときのみ、前記第1仮想マシンが前記通知先となる入力を前記第3仮想マシンに通知するように設定するか、または前記第3仮想マシンが前記通知先となる入力を前記第1仮想マシンに通知するように設定する請求項2乃至6の何れか一項に記載の情報処理装置。
  8. 前記第1仮想マシンによって実行される前記第1プログラムに対して前記割り当て情報が1つ以上設定され、
    前記設定要求部は、前記第1プログラムに割り当てられた前記割り当て情報の何れかを指定することによって、前記割り当て情報の設定を要求する請求項2乃至7の何れか一項に記載の情報処理装置。
  9. 前記設定要求部は、前記第1仮想マシンによって実行される前記第1プログラムを指定することによって、前記割り当て情報の設定を要求する請求項8に記載の情報処理装置。
  10. 前記決定部は、前記割り当て情報に前記入力デバイスからの入力の通知先が設定されていない場合、予め規定された仮想マシンを前記通知先に決定する請求項1乃至9の何れか一項に記載の情報処理装置。
  11. 前記設定部は、前記入力デバイスからの入力の通知先となる仮想マシンを前記割り当て情報に設定する請求項2乃至10の何れか一項に記載の情報処理装置。
  12. 前記設定部は、前記仮想マシン毎に通知可能な入力を前記割り当て情報に設定する請求項2乃至10の何れか一項に記載の情報処理装置。
JP2009036726A 2009-02-19 2009-02-19 情報処理装置 Expired - Fee Related JP5066112B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009036726A JP5066112B2 (ja) 2009-02-19 2009-02-19 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009036726A JP5066112B2 (ja) 2009-02-19 2009-02-19 情報処理装置

Publications (2)

Publication Number Publication Date
JP2010191791A true JP2010191791A (ja) 2010-09-02
JP5066112B2 JP5066112B2 (ja) 2012-11-07

Family

ID=42817754

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009036726A Expired - Fee Related JP5066112B2 (ja) 2009-02-19 2009-02-19 情報処理装置

Country Status (1)

Country Link
JP (1) JP5066112B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2019244279A1 (ja) * 2018-06-20 2020-12-17 三菱電機株式会社 ユーザインタフェース装置、ユーザインタフェース設計装置、ユーザインタフェース装置の制御方法、およびユーザインタフェース装置の画面設計方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330806A (ja) * 1999-05-21 2000-11-30 Hitachi Ltd 計算機システム
JP2005129034A (ja) * 2003-10-24 2005-05-19 Microsoft Corp 高い保証の実行環境を備えたシステムにおける信頼できるエージェントへの安全な入出力の提供
WO2008013738A2 (en) * 2006-07-25 2008-01-31 Hewlett-Packard Development Company, L.P. Virtual user authentication system and method
JP2008052713A (ja) * 2006-07-25 2008-03-06 Ntt Docomo Inc ペリフェラル切替装置及びペリフェラル切替制御装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330806A (ja) * 1999-05-21 2000-11-30 Hitachi Ltd 計算機システム
JP2005129034A (ja) * 2003-10-24 2005-05-19 Microsoft Corp 高い保証の実行環境を備えたシステムにおける信頼できるエージェントへの安全な入出力の提供
WO2008013738A2 (en) * 2006-07-25 2008-01-31 Hewlett-Packard Development Company, L.P. Virtual user authentication system and method
JP2008052713A (ja) * 2006-07-25 2008-03-06 Ntt Docomo Inc ペリフェラル切替装置及びペリフェラル切替制御装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2019244279A1 (ja) * 2018-06-20 2020-12-17 三菱電機株式会社 ユーザインタフェース装置、ユーザインタフェース設計装置、ユーザインタフェース装置の制御方法、およびユーザインタフェース装置の画面設計方法

Also Published As

Publication number Publication date
JP5066112B2 (ja) 2012-11-07

Similar Documents

Publication Publication Date Title
US20200142570A1 (en) Bound Based Contextual Zoom
US11722860B2 (en) Messaging system interacting with dynamic extension app
EP2729897B1 (en) Secure input via a touchscreen
JP4782042B2 (ja) 電子計算機及びソフトウェアによるユーザインタフェースの実現方法
US9092627B2 (en) Apparatus and method for providing security information in virtual environment
KR102327782B1 (ko) 전자 장치 및 커널 데이터 접근 방법
WO2016090902A1 (zh) 一种操作系统热切换的方法、装置及移动终端
US20180365527A1 (en) Method and device for controlling expression classification identifier, and a storage medium
EP3255578B1 (en) Interface display method of terminal and terminal
KR102095912B1 (ko) 보안 기능 운용 방법 및 이를 지원하는 전자 장치
WO2022042701A1 (zh) 权限设置方法、装置及电子设备
JP2015517158A (ja) コンピュータ・システムのハードウエア資源を仮想化する方法とシステムと実行可能なピース・オブ・コード
WO2013159632A1 (zh) 实现安全防护的方法、防火墙、终端及可读存储介质
JP2016110204A (ja) 要求送信方法、情報処理装置、及びプログラム
US10310696B1 (en) Supporting a consistent user interface within a virtualized environment
US9558051B1 (en) Inter-process communication router within a virtualized environment
KR101223981B1 (ko) 안전한 애플리케이션 실행을 위한 가상화 장치, 서버 및 방법
JP5066112B2 (ja) 情報処理装置
JP5741136B2 (ja) 制御プログラム、携帯端末および仮想計算機の制御プログラム
WO2022068720A1 (zh) 图标显示控制方法、装置及电子设备
JP6532851B2 (ja) 通信装置、dns処理方法、およびプログラム
US11487559B2 (en) Dynamically switching between pointer modes
JP6768439B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP6043615B2 (ja) 機能利用制御装置、機能利用制御方法、機能利用制御プログラム
JP4072381B2 (ja) グラフィカル・ユーザ・インタフェースの構築方法及びプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110419

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110617

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120409

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120731

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120810

R150 Certificate of patent or registration of utility model

Ref document number: 5066112

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees