(57)【要約】  本発明に係る機器（１１０）は、複数の仮想マシン（１００２、１００３、１００４及び１００５）を搭載し、複数の仮想マシン（１００２、１００３、１００４及び１００５）を管理する仮想化ソフトウェア（１００１）を備える。この仮想化ソフトウェア（１００１）は、プログラムを実行するための仮想マシンを生成するアプリＶＭ生成部（１３００）を備える。第１の仮想マシン（１００２）は、第１のプログラムを、当該第１の仮想マシン（１００２）で動作させるか、当該第１の仮想マシン（１００２）以外の仮想マシンで動作させるかを判定し、アプリＶＭ生成部（１３００）は、第１の仮想マシン（１００２）により、第１のプログラムを他の仮想マシンで動作させると判定された場合に、第１のプログラムを実行するための第２の仮想マシン（１００３）を生成する。
2011114655.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンを搭載し、
前記複数の仮想マシンを管理する仮想マシン管理部を備える情報処理装置であって、
前記仮想マシン管理部は、
プログラムを実行するための仮想マシンを生成するアプリＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）生成部を備え、
前記複数の仮想マシンの一つである第１の仮想マシンは、当該第１の仮想マシンで動作可能な第１のプログラムを、当該第１の仮想マシンで動作させるか、当該第１の仮想マシン以外の他の仮想マシンで動作させるかを判定し、
前記アプリＶＭ生成部は、前記第１の仮想マシンにより、前記第１のプログラムを他の仮想マシンで動作させると判定された場合に、前記第１のプログラムを実行するための第２の仮想マシンを生成する
情報処理装置。
【請求項２】
前記第１の仮想マシンは、前記第１のプログラムが他の機器から取得されたプログラムである場合、前記第１のプログラムを他の仮想マシンで動作させると判定する
請求項１に記載の情報処理装置。
【請求項３】
前記第１の仮想マシンは、前記第１のプログラムが他の機器から取得されたデバイスドライバソフトウェアを含む場合、前記第１のプログラムを他の仮想マシンで動作させると判定する
請求項２に記載の情報処理装置。
【請求項４】
前記情報処理装置は、さらに、
ＶＭ用ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）プログラムを記憶する記憶部を備え、
前記第１の仮想マシンは、さらに、前記第１のプログラムと異なる、当該第１の仮想マシンで動作可能な第２のプログラムを、当該第１の仮想マシンで動作させるか、前記他の仮想マシンで動作させるかを判定し、
前記アプリＶＭ生成部は、前記第１の仮想マシンにより、前記第２のプログラムを前記他の仮想マシンで動作させると判定された場合に、前記第２のプログラムを実行するための第３の仮想マシンを生成し、
前記アプリＶＭ生成部は、前記第２の仮想マシン用のオペレーティングシステムと、前記第３の仮想マシン用のオペレーティングシステムとの両方を、前記ＶＭ用ＯＳプログラムを用いて生成する
請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記第２の仮想マシンは、
当該第２の仮想マシンのオペレーティングシステムで実行できない処理であるＯＳ処理の実行を他の仮想マシンに依頼するＯＳ処理依頼を前記仮想マシン管理部へ送るＯＳ処理依頼部を備え、
前記仮想マシン管理部は、さらに、
前記第２の仮想マシンから前記ＯＳ処理依頼があった時に、他の仮想マシンへ前記ＯＳ処理を依頼するＯＳ処理依頼制御部を備える
請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
前記仮想マシン管理部は、さらに、
前記複数の仮想マシンの親子関係を管理する親子関係管理部とを備え、
前記親子関係管理部は、前記仮想マシンの生成を依頼した前記第１の仮想マシンを親とし、当該依頼に応じて生成した前記第２の仮想マシンを子として親子関係を管理し、
前記ＯＳ処理依頼制御部は、前記第２の仮想マシンから前記ＯＳ処理依頼があった時に、前記第２の仮想マシンの親として管理されている前記第１の仮想マシンへ前記ＯＳ処理を依頼する
請求項５に記載の情報処理装置。
【請求項７】
前記仮想マシン管理部は、さらに、
前記ＯＳ処理依頼により実現する機能ごとに、当該機能の前記ＯＳ処理依頼を他の仮想マシンに依頼可能か否かを判定するポリシー管理部を備え、
前記ＯＳ処理依頼制御部は、前記ＯＳ処理依頼を依頼可能であると前記ポリシー管理部が判定した場合、前記第１の仮想マシンへ前記ＯＳ処理を依頼する
請求項６に記載の情報処理装置。
【請求項８】
前記ＯＳ処理依頼部は、前記第１のプログラムが他の機器から取得されたデバイスドライバソフトウェアを含み、かつ、前記ＯＳ処理を当該デバイスドライバソフトウェアが処理可能な場合、前記ＯＳ処理を前記第２の仮想マシンで処理すると判定し、前記ＯＳ処理を当該デバイスドライバソフトウェアが処理できない場合、前記ＯＳ処理依頼を前記仮想マシン管理部へ送る
請求項５に記載の情報処理装置。
【請求項９】
情報処理装置で動作する仮想マシンを生成する仮想マシン生成方法であって、
当該第１の仮想マシンで動作可能な第１のプログラムを、当該第１の仮想マシンで動作させるか、当該第１の仮想マシン以外の他の仮想マシンで動作させるかを前記第１の仮想マシンが判定するステップと、
前記第１のプログラムを他の仮想マシンで動作させると判定された場合に、前記第１のプログラムを実行するための第２の仮想マシンを生成するステップとを含む
仮想マシン生成方法。
【請求項１０】
請求項９に記載の仮想マシン生成方法をコンピュータに実行させる
プログラム。
【請求項１１】
請求項１０に記載のプログラムを記録した
コンピュータ読み取り可能な記録媒体。
【請求項１２】
ネットワークを利用してプログラムを配信するアプリ配信システムであって、
前記アプリ配信システムは、
請求項１に記載の情報処理装置と、
アプリ配信サーバと
を含み、
前記アプリ配信サーバは、
配信するプログラムを保持するアプリ保持部と、
前記情報処理装置へプログラムを送信するアプリ送信処理部とを備え、
前記第１の仮想マシンは、前記第１のプログラムが前記アプリ送信処理部により送信されたプログラムである場合、前記第１のプログラムを他の仮想マシンで動作させると判定する
アプリ配信システム。
【請求項１３】
複数の仮想マシンを搭載し、
前記複数の仮想マシンを管理する仮想マシン管理部を備える半導体集積回路であって、
前記仮想マシン管理部は、
プログラムを実行するための仮想マシンを生成するアプリＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）生成部を備え、
前記複数の仮想マシンの一つである第１の仮想マシンは、当該第１の仮想マシンで動作可能な第１のプログラムを、当該第１の仮想マシンで動作させるか、当該第１の仮想マシン以外の仮想マシンで動作させるかを判定し、
前記アプリＶＭ生成部は、前記第１の仮想マシンにより、前記第１のプログラムを他の仮想マシンで動作させると判定された場合に、前記第１のプログラムを実行するための第２の仮想マシンを生成する
半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データへの不正アクセスを防止する情報処理装置、仮想マシン生成方法及びアプリ配信システムに関するものである。
【背景技術】
【０００２】
従来のＴＶ及び携帯電話では、ユーザが機器購入後、機能を新たに追加するために、アプリケーションソフトウェア（以下、「アプリ」という）をダウンロードし、利用することが可能であった。この様なアプリは、従来、機器内の各種リソースに対するアクセスが制限されていた。ここで、機器内のリソースとは、例えば、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）などの位置情報、ダイヤル機能、並びに電話帳、ブックマーク及び画像データなどの他アプリが作成したデータなどである。しかし、近年、多種多様なアプリを開発可能にするために、アクセス制限を緩和し、位置情報、ダイヤル機能及び電話帳などのデータへのアクセスを可能にした機器が登場してきている。将来的には、デバイスドライバソフトウェア（以下、「デバドラ」という）をインストール可能にすることで、ユーザが、新たなハードウェアを追加可能にする機器が登場すると考えられる。【０００３】
また、従来では、上記のようなアプリは、特定のアプリ開発会社のみが開発及び配布していた。しかし、近年、一般ユーザもアプリの開発及び配布が可能な仕組みができつつある。この様な仕組みの中では、一般ユーザがアプリを簡単に開発できるようにするために、Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ（以下、「ＰＣ」という）で一般的に利用されている開発ツールがアプリの開発に利用可能であったり、販売されている機器に対してデバッガが接続可能であったりする。【０００４】
一方、ＰＣ及び携帯電話などに格納された個人情報などのデータの漏洩が問題になっている。特にＰＣでは、インターネットなどのオープンなネットワークからダウンロードされる不正なダウンロードソフトウェアによって、ＰＣの記憶装置に格納されている個人情報などのデータが読み取られる。そして、ユーザの意図に反して、読み取られたデータが、ネットワークを介して機器の外部に送付される。また、不正なダウンロードソフトウェアは、メールを利用するなどしてユーザに有益なソフトウェアだと思わせることで、当該不正なソフトウェアをダウンロードさせたり、ＰＣ上で動作するソフトウェアの脆弱性を衝いて当該不正なソフトウェアをダウンロードさせたりする。【０００５】
特に、デバドラは、アプリがメモリ上に展開したデータにもアクセス可能である。そのため、デバドラがインストール可能な機器は、個人情報などの他アプリに公開したくないデータに関しても、デバドラにアクセスされるため、漏洩のリスクが高い。【０００６】
この様に、ＰＣ、ＴＶ及び携帯電話などにおいて、ダウンロードしたアプリ（以下、「ＤＬアプリ」という）及びダウンロードしたデバドラ（以下、「ＤＬデバドラ」という）は、多くのリソースにアクセス可能である。また、一般ユーザがアプリ及びデバドラを開発及び配布可能であることで、機器に格納された個人情報などに対する攻撃の脅威が増加する。具体的には、悪意を持った攻撃者による、攻撃用のアプリ（以下、「不正アプリ」という）及び攻撃用のデバドラ（以下、「不正デバドラ」という）の開発及びインストールが容易になる。これにより、不正アプリ及び不正デバドラが機器内部の情報にアクセス可能となり、情報の漏洩及び改竄が行われる危険性が増加する。【０００７】
従来、ＤＬアプリ及びＤＬデバドラから、携帯電話などにおける電話機能のような機器の本来の機能を保護する方法として、それぞれのソフトウェアを実行する実行環境を分離する方法があった（例えば、非特許文献１参照）。非特許文献１では、実行環境を分離する方法としてノーマルモードとセキュアモードとのような複数のモードを持つＣＰＵを利用して実行環境を分離する方法と、仮想化技術を利用して実行環境を分離する方法とが記載されている。図２７は、非特許文献１に記載された従来の仮想化技術を利用した実行環境分離方法を示す図である。【０００８】
図２７において、仮想マシン３０は、携帯電話等の通信事業者が選定及び開発したオペレーティングシステム（以下、「ＯＳ」という）並びにアプリを実行する。また、仮想マシン４０は、通信事業者以外の企業が従業員向けに提供するスケジュール及びメールのサービスを提供するためのアプリなどを実行する。更に、仮想化ソフトウェア２０は、仮想マシン３０と仮想マシン４０とにハードウェア１０を仮想化した仮想ハードウェアの機能を提供する。また、仮想化ソフトウェア２０は、仮想マシン３０と仮想マシン４０との動作を制御する。【０００９】
図２７の構成は、携帯電話の基本機能である通信機能を提供する仮想マシン３０と、従業員向けのサービスなどを提供する仮想マシン４０とを、ＯＳを含めて分離することが可能である。【００１０】
これにより、例えば仮想マシン４０が、ユーザが自由にアプリ及びデバドラをダウンロードできる機能を有し、仮想マシン４０上で不正アプリ又は不正デバドラが動作した場合においても、仮想マシン３０上で動作する通信事業者のアプリ及びＯＳには当該不正アプリ又は不正デバドラが影響を及ぼさない。【００１１】
また、仮想マシン４０のような機器に付加サービスを提供する仮想マシンを、必要な時に動作させる方法として、ＶＭ生成装置を用いた仮想マシンの動的生成方法がある（例えば、特許文献１参照）。図２８は、特許文献１に記載された従来の仮想マシン生成システムの構成図である。【００１２】
図２８において、ＯＳ７２は仮想マシンの生成をＶＭＭ（バーチャルマシーンマネージャ）６０に依頼する。これにより、ＶＭ生成装置９０は仮想マシン８０を生成する。この時、仮想マシン８０は、ＯＳ７２が仮想マシンの生成を依頼した時点の仮想マシン７０のコピーとなる。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００８−１６５７９５号公報
【特許文献２】特開２００５−０１１３３６号公報
【非特許文献】
【００１４】
【非特許文献１】Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ  ａｎｄ  ＮＴＴ  ＤｏＣｏＭｏ，Ｉｎｃ．著「Ｏｐｅｎ  ａｎｄ  Ｓｅｃｕｒｅ  Ｔｅｒｍｉｎａｌ  Ｉｎｉｔｉａｔｉｖｅ（ＯＳＴＩ）Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖｉｓｉｏｎ  １．００」、２００６年１０月１６日
【非特許文献２】岡本龍明、山本博資、「現代暗号」、産業図書（１９９７年）
【非特許文献３】ＩＴＵ−Ｔ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  Ｘ．５０９  （０８／２００５）：  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  −  Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  −  Ｔｈｅ  Ｄｉｒｅｃｔｏｒｙ：  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｆｒａｍｅｗｏｒｋ，２００５
【非特許文献４】黒澤馨、尾形わかは、「現代暗号の基礎数理」、コロナ社（２００４年）
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかしながら、従来の構成では、ダウンロードしたアプリ及びデバドラが全て同じ仮想マシン内で動作する。そのため、従来の構成は、不正アプリ又は不正デバドラをダウンロードした時に、他のダウンロードしたアプリケーションを保護できないという課題を有していた。【００１６】
本発明は、上記従来の課題を解決するもので、不正アプリ又は不正デバドラによる他のアプリが持つ情報へのアクセスを防止可能とした情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１７】
上記従来の課題を解決するために、本発明の一形態に係る情報処理装置は、複数の仮想マシンを搭載し、前記複数の仮想マシンを管理する仮想マシン管理部を備える情報処理装置であって、前記仮想マシン管理部は、プログラムを実行するための仮想マシンを生成するアプリＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）生成部を備え、前記複数の仮想マシンの一つである第１の仮想マシンは、当該第１の仮想マシンで動作可能な第１のプログラムを、当該第１の仮想マシンで動作させるか、当該第１の仮想マシン以外の他の仮想マシンで動作させるかを判定し、前記アプリＶＭ生成部は、前記第１の仮想マシンにより、前記第１のプログラムを他の仮想マシンで動作させると判定された場合に、前記第１のプログラムを実行するための第２の仮想マシンを生成する。【００１８】
この構成によれば、本発明の一形態に係る情報処理装置は、例えば、悪意を持った攻撃者による攻撃用のアプリ（不正アプリ又は不正デバドラ）の可能性があるアプリに対しては独立した仮想マシンを生成し、当該仮想マシンで当該アプリを個別に実行できる。これにより、当該情報処理装置は、当該アプリから他のアプリが持つ情報へのアクセスを防止することができる。【００１９】
また、前記第１の仮想マシンは、前記第１のプログラムが他の機器から取得されたプログラムである場合、前記第１のプログラムを他の仮想マシンで動作させると判定してもよい。【００２０】
この構成よれば、本発明の一形態に係る情報処理装置は、不正アプリ又は不正デバドラの可能性がある、他の機器から取得されたアプリから、他のアプリが持つ情報へのアクセスを防止することができる。【００２１】
また、前記第１の仮想マシンは、前記第１のプログラムが他の機器から取得されたデバイスドライバソフトウェアを含む場合、前記第１のプログラムを他の仮想マシンで動作させると判定してもよい。【００２２】
この構成よれば、本発明の一形態に係る情報処理装置は、不正デバドラから、他のアプリが持つ情報へのアクセスを防止することができる。【００２３】
また、前記情報処理装置は、さらに、ＶＭ用ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）プログラムを記憶する記憶部を備え、前記第１の仮想マシンは、さらに、前記第１のプログラムと異なる、当該第１の仮想マシンで動作可能な第２のプログラムを、当該第１の仮想マシンで動作させるか、前記他の仮想マシンで動作させるかを判定し、前記アプリＶＭ生成部は、前記第１の仮想マシンにより、前記第２のプログラムを前記他の仮想マシンで動作させると判定された場合に、前記第２のプログラムを実行するための第３の仮想マシンを生成し、前記アプリＶＭ生成部は、前記第２の仮想マシン用のオペレーティングシステムと、前記第３の仮想マシン用のオペレーティングシステムとの両方を、前記ＶＭ用ＯＳプログラムを用いて生成してもよい。【００２４】
この構成よれば、本発明の一形態に係る情報処理装置は、複数の仮想マシンに対して、共通のＯＳを用いることができる。これにより、各仮想マシンに対して異なるＯＳを用いる場合に比べて、記憶部の容量を削減できる。【００２５】
また、前記第２の仮想マシンは、当該第２の仮想マシンのオペレーティングシステムで実行できない処理であるＯＳ処理の実行を他の仮想マシンに依頼するＯＳ処理依頼を前記仮想マシン管理部へ送るＯＳ処理依頼部を備え、前記仮想マシン管理部は、さらに、前記第２の仮想マシンから前記ＯＳ処理依頼があった時に、他の仮想マシンへ前記ＯＳ処理を依頼するＯＳ処理依頼制御部を備えてもよい。【００２６】
この構成よれば、本発明の一形態に係る情報処理装置では、仮想マシンは、自身が実行できない処理を他の仮想マシンに依頼できる。これにより、各仮想マシンのＯＳの機能を削減できるので、各仮想マシンに必要な資源（メモリ等）を削減できる。【００２７】
また、前記仮想マシン管理部は、さらに、前記複数の仮想マシンの親子関係を管理する親子関係管理部とを備え、前記親子関係管理部は、前記仮想マシンの生成を依頼した前記第１の仮想マシンを親とし、当該依頼に応じて生成した前記第２の仮想マシンを子として親子関係を管理し、前記ＯＳ処理依頼制御部は、前記第２の仮想マシンから前記ＯＳ処理依頼があった時に、前記第２の仮想マシンの親として管理されている前記第１の仮想マシンへ前記ＯＳ処理を依頼してもよい。【００２８】
この構成によれば、本発明の一形態に係る情報処理装置は、ＯＳ処理を依頼してきた仮想マシンに対して「親」の関係にある仮想マシンに対してＯＳ処理を依頼できる。【００２９】
また、前記仮想マシン管理部は、さらに、前記ＯＳ処理依頼により実現する機能ごとに、当該機能の前記ＯＳ処理依頼を他の仮想マシンに依頼可能か否かを判定するポリシー管理部を備え、前記ＯＳ処理依頼制御部は、前記ＯＳ処理依頼を依頼可能であると前記ポリシー管理部が判定した場合、前記第１の仮想マシンへ前記ＯＳ処理を依頼してもよい。【００３０】
この構成によれば、本発明の一形態に係る情報処理装置は、不正アプリ又は不正デバドラによる、特定の機能を実現するアプリが持つ情報へのアクセスを防止できる。【００３１】
また、前記ＯＳ処理依頼部は、前記第１のプログラムが他の機器から取得されたデバイスドライバソフトウェアを含み、かつ、前記ＯＳ処理を当該デバイスドライバソフトウェアが処理可能な場合、前記ＯＳ処理を前記第２の仮想マシンで処理すると判定し、前記ＯＳ処理を当該デバイスドライバソフトウェアが処理できない場合、前記ＯＳ処理依頼を前記仮想マシン管理部へ送ってもよい。【００３２】
この構成によれば、本発明の一形態に係る情報処理装置は、各仮想マシンのＯＳの機能を削減できるので、各仮想マシンに必要な資源（メモリ等）を削減できる。【００３３】
なお、本発明は、このような情報処理装置として実現できるだけでなく、情報処理装置に含まれる特徴的な手段をステップとする仮想マシン生成方法として実現したり、そのような特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ等の記録媒体及びインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。【００３４】
さらに、本発明は、このような情報処理装置の機能の一部又は全てを実現する半導体集積回路（ＬＳＩ）として実現したり、このような情報処理装置含むアプリ配信システムとして実現したりできる。
【発明の効果】
【００３５】
以上より、本発明は、不正アプリ及び不正デバドラによる他のアプリが持つ情報へのアクセスを防止可能とした情報処理装置を提供することができる。
【図面の簡単な説明】
【００３６】
【図１】図１は、本発明の実施の形態１に係るアプリ配信システムの全体構成図である。
【図２】図２は、本発明の実施の形態１に係る機器のソフトウェア構成図である。
【図３】図３は、本発明の実施の形態１に係る通常のソフトウェア実行環境の構成図である。
【図４】図４は、本発明の実施の形態１に係る機器のハードウェア構成図である。
【図５】図５は、本発明の実施の形態１に係るアプリ配信サーバの構成図である。
【図６】図６は、本発明の実施の形態１に係る開発環境の構成図である。
【図７】図７は、本発明の実施の形態１に係るパッケージ生成部の構成図である。
【図８】図８は、本発明の実施の形態１に係るダウンロードアプリパッケージの構成図である。
【図９】図９は、本発明の実施の形態１に係るセキュアブートのフローチャートである。
【図１０】図１０は、本発明の実施の形態１に係る仮想マシン起動のフローチャートである。
【図１１】図１１は、本発明の実施の形態１に係る仮想化ソフトウェアの構成図である。
【図１２】図１２は、本発明の実施の形態１に係るアプリ実行専用ＶＭの構成図である。
【図１３】図１３は、本発明の実施の形態１に係る仮想マシン管理テーブルを示す図である。
【図１４】図１４は、本発明の実施の形態１に係る親子関係管理テーブルを示す図である。
【図１５Ａ】図１５Ａは、本発明の実施の形態１に係るポリシーテーブルを示す図である。
【図１５Ｂ】図１５Ｂは、本発明の実施の形態１に係るポリシーテーブルを示す図である。
【図１６】図１６は、本発明の実施の形態１に係る汎用ＯＳの構成図である。
【図１７Ａ】図１７Ａは、本発明の実施の形態１に係るアプリロード部の構成図である。
【図１７Ｂ】図１７Ｂは、本発明の実施の形態１に係るアプリロード部の構成図である。
【図１８Ａ】図１８Ａは、本発明の実施の形態１に係るアプリＶＭＯＳＸの構成図である。
【図１８Ｂ】図１８Ｂは、本発明の実施の形態１に係るアプリＶＭＯＳＹの構成図である。
【図１９Ａ】図１９Ａは、本発明の実施の形態１に係るＯＳ処理依頼部の構成図である。
【図１９Ｂ】図１９Ｂは、本発明の実施の形態１に係るＯＳ処理依頼部の構成図である。
【図２０】図２０は、本発明の実施の形態１に係るアプリＶＭ生成処理のフローチャートである。
【図２１】図２１は、本発明の実施の形態１に係るＯＳ処理依頼のフローチャートである。
【図２２】図２２は、本発明の実施の形態１に係るアプリ実行専用ＶＭ生成装置の構成図である。
【図２３】図２３は、本発明の実施の形態２に係る仮想化ソフトウェアの構成図である。
【図２４】図２４は、本発明の実施の形態２に係る汎用ＯＳの構成図である。
【図２５】図２５は、本発明の実施の形態３に係る仮想化ソフトウェアの構成図である。
【図２６】図２６は、本発明の実施の形態３に係る汎用ＯＳの構成図である。
【図２７】図２７は、従来の仮想化技術を利用し実行環境を分離した携帯電話の構成図である。
【図２８】図２８は、従来の仮想マシン生成システムの構成図である。
【発明を実施するための形態】
【００３７】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００３８】
（実施の形態１）
本発明の実施の形態１に係る情報処理装置は、ＤＬアプリ及びＤＬデバドラの実行時には、当該ＤＬアプリ又はＤＬデバドラ専用の仮想マシンを生成する。これにより、プログラムが不正アプリ又は不正デバドラであったとしても、専用の仮想マシンで動作するため、当該プログラムは、他のプログラムが持つ情報へアクセスできない。このように、本発明の実施の形態１に係る情報処理装置は、不正アプリ又は不正デバドラによる他のアプリが持つ情報へのアクセスを防止できる。
【００３９】
＜アプリ配信システム１００の構成＞
図１は、本発明の実施の形態１に係るアプリ配信システム１００の構成図である。
【００４０】
図１に示すアプリ配信システム１００は、機器１１０と、アプリ配信サーバ１２０と、開発装置１３０と、機器１１１とを含む。
【００４１】
機器１１０は、例えば、ネットワーク通信機能を搭載した携帯電話である。この機器１１０は、アプリ配信サーバ１２０とネットワークを介して接続され、アプリ配信サーバ１２０からアプリをダウンロードする。また、アプリをダウンロードした機器１１０は、アプリをインストールすることで、当該機器１１０に新しい機能を追加する。
【００４２】
アプリ配信サーバ１２０は、機器１１０及び開発装置１３０とネットワークを介して接続される。このアプリ配信サーバ１２０は、開発装置１３０がアップロードしたアプリの管理、及び、機器１１０へのアプリのダウンロード処理を行う。
【００４３】
開発装置１３０は、アプリ配信サーバ１２０とネットワークを介して接続され、機器１１０で動作するアプリの開発を行う装置である。また、開発装置１３０は、機器１１１とＵｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（以下、「ＵＳＢ」という）規格等のインターフェースで接続される。開発者は、開発装置１３０上でアプリを開発し、機器１１１上で想定通りの動作を行うかのテストを実施する。テストによって開発したアプリに不具合が見つかった場合は、開発者は、開発装置１３０を用いてデバッグし、見つかった不具合を解消する。その後、開発したアプリをアプリ配信サーバ１２０へアップロードすることで、機器１１０でアプリが使用可能になる。なお、機器１１０と機器１１１とは、同じ機能を持つ機器であり、一般ユーザによって使用されている（機器１１０）か、開発者によって使用されている（機器１１１）かが、異なるだけである。
【００４４】
また、機器１１０及び１１１は、本発明の情報処理装置に相当する。
【００４５】
＜機器１１０及び１１１のソフトウェア構成＞
図２は、本発明の実施の形態１に係る機器１１０及び１１１のソフトウェア構成図である。
【００４６】
図２に示す機器１１０及び１１１は、通常のソフトウェア実行環境（以下、「通常環境」という）１０００と、安全なソフトウェア実行環境（以下、「保護環境」という）１１００とを含む。機器１１０及び１１１は、通常環境１０００と保護環境１１００とを切り替えて、ソフトウェア（通常環境１０００又は保護環境１１００）を実行する。
【００４７】
保護環境１１００のソフトウェアは、セキュアＯＳ１１０１と、セキュアブート部１１０２とを含む。ここで、「セキュアＯＳ」は、「セキュアオペレーティングシステム」である。
【００４８】
セキュアＯＳ１１０１は、保護環境１１００のソフトウェアを管理する。
【００４９】
セキュアブート部１１０２は、機器１１０及び１１１の電源投入時にセキュアブートを行う。セキュアブートの処理については、フローチャートを用いて後ほど説明する。
【００５０】
なお、通常環境１０００と保護環境１１００とを切り替える方法に関しては、例えば、特許文献２に記されている方式が使用できる。
【００５１】
＜通常環境１０００のソフトウェア構成＞
図３は、本発明の実施の形態１に係る通常環境１０００のソフトウェア構成図である。
【００５２】
図３に示す通常環境１０００のソフトウェアは、仮想化ソフトウェア１００１と、仮想マシン１００２、１００３、１００４及び１００５とを含む。
【００５３】
また、仮想マシン１００２は、仮想ハードウェア１０１０と、汎用ＯＳ１０１１と、ダウンロード制御アプリ１０１２と、アプリＡ１０１３と、アプリＢ１０１４とを含む。また、仮想マシン１００３は、仮想ハードウェア１０２０と、アプリＶＭＯＳＸ１０２１と、ＤＬアプリＸ１０２２とを含む。また、仮想マシン１００４は、仮想ハードウェア１０３０と、アプリＶＭＯＳＹ１０３１と、ＤＬアプリＹ１０３２とを含む。また、仮想マシン１００５は、仮想ハードウェア１０４０と、ＲＴＯＳ１０４１と、通話ソフトウェア１０４２とを含む。ここで、「汎用ＯＳ」は「汎用オペレーティングシステム」であり、「アプリＶＭＯＳ」は「アプリＶＭオペレーティングシステム」であり、「ＤＬアプリ」は「ダウンロードアプリ」であり、「ＲＴＯＳ」は「リアルタイムオペレーティングシステム」である。また、「ＶＭ」は、「仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）」である。
【００５４】
仮想化ソフトウェア１００１は、その上で動作する仮想マシン１００２〜１００５を制御する仮想マシン制御機能と、その仮想マシン１００２〜１００５に対してメモリ及びＣＰＵなどのハードウェアリソースを割り当てるとともに管理するリソース管理機能と、仮想マシン１００２〜１００５からの要求に従ってデバイスへアクセスするデバイスアクセス機能と、仮想マシン１００２〜１００５をスケジューリングするスケジューリング機能とを有する。この仮想化ソフトウェア１００１は、本発明の仮想マシン管理部に相当する。
【００５５】
仮想マシン１００２、１００３、１００４及び１００５は、仮想ハードウェアと、ＯＳと、アプリとを含み、仮想化ソフトウェア１００１によりそれぞれ独立に実行される。また、仮想マシン１００２、１００３、１００４及び１００５は、それぞれ独立しており、これらの仮想マシン間で、直接、データの受け渡し、又は指示のやり取りが行われることはない。言い換えると、これらの仮想マシン間での、データの受け渡し、又は指示のやり取りは、常に仮想化ソフトウェア１００１を介して行われる。
【００５６】
仮想ハードウェア１０１０、１０２０、１０３０及び１０４０は、それぞれの仮想マシンに仮想的にハードウェアの機能を提供する。また、仮想ハードウェア１０１０、１０２０、１０３０及び１０４０は、ＩＰＬ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）及びＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）も含む。なお、仮想ハードウェア１０１０、１０２０、１０３０及び１０４０は、仮想化ソフトウェア１００１の構成によっては、仮想化ソフトウェア１００１、又は、各仮想マシンのＯＳに統合される場合もある。
【００５７】
汎用ＯＳ１０１１は、アプリ（アプリＡ１０１３及びアプリＢ１０１４）をメモリ上にロードして実行する、あるいは、アプリ（アプリＡ１０１３やアプリＢ１０１４）をメモリ上から削除（アンロード）する。
【００５８】
さらに、汎用ＯＳ１０１１は、仮想化ソフトウェア１００１にＤＬアプリ（ＤＬアプリＸ１０２２及びＤＬアプリＹ１０３２）の実行を依頼する。
【００５９】
また、汎用ＯＳ１０１１は、ダウンロード制御アプリ１０１２、アプリＡ１０１３及びアプリＢ１０１４に対して、ネットワーク通信機能を提供する。
【００６０】
ダウンロード制御アプリ１０１２は、機器１１０にインターネットを介して接続されているアプリ配信サーバ１２０と通信し、機器１１０へのアプリのダウンロード処理、及び機器１１０へのインストール処理を行う。
【００６１】
アプリＡ１０１３及びアプリＢ１０１４は、アドレス管理機能、Ｗｅｂブラウズ機能、及び電子メール機能などの機能を有し、ユーザに対してこれらの機能を提供する。
【００６２】
本発明の実施の形態１では、ＤＬアプリは、汎用ＯＳ１０１１上で動作するダウンロード制御アプリ１０１２によりアプリ配信サーバ１２０からダウンロードされ、機器１１０内に保存される。その後、汎用ＯＳ１０１１から仮想化ソフトウェア１００１へＤＬアプリの実行依頼があった時に、仮想化ソフトウェア１００１は、それぞれのＤＬアプリが個別の仮想マシン上で動作するように設定する。これにより、仮想マシン上でＤＬアプリが実行される。
【００６３】
なお、本発明の実施の形態１では、ＤＬアプリＸ１０２２とＤＬアプリＹ１０３２とがアプリ配信サーバ１２０からダウンロードされ、実行される場合を説明するが、本発明はこれに限定されるものではない。また、仮想マシンの数も４つに限定されるわけではない。つまり、汎用ＯＳ１０１１から仮想化ソフトウェア１００１へＤＬアプリの実行依頼があれば、４つ以上の仮想マシンが生成されてもよいし、ＲＴＯＳ１０４１から仮想化ソフトウェア１００１へＤＬアプリの実行依頼があった時に仮想マシンが生成されてもよい。
【００６４】
アプリＶＭＯＳＸ１０２１及びアプリＶＭＯＳＹ１０３１は、ＤＬアプリを動作させる仮想マシンで動作しているＯＳである。アプリＶＭＯＳＸ１０２１は、ＤＬアプリＸ１０２２が動作するために必要な機能を有する。また、アプリＶＭＯＳＹ１０３１は、ＤＬアプリＹ１０３２が動作するために必要な機能を有する。なお、アプリＶＭＯＳＸ１０２１及びアプリＶＭＯＳＹ１０３１の詳細は後述する。
【００６５】
ＤＬアプリＸ１０２２及びＤＬアプリＹ１０３２は、アプリ配信サーバ１２０からダウンロードされたアプリである。このＤＬアプリＸ１０２２及びＤＬアプリＹ１０３２は、アプリＡ１０１３やアプリＢ１０１４と同様に、ユーザに対して様々な機能を提供する。
【００６６】
ＲＴＯＳ１０４１は、機器の基本機能を提供するソフトウェアを動作させるためのＯＳである。
【００６７】
通話ソフトウェア１０４２は、機器１１０及び１１１の基本機能である通話機能をユーザに提供する。
【００６８】
なお、それぞれのＤＬアプリが個別の仮想マシン上で動作するように仮想化ソフトウェア１００１により設定されるとしたが、本発明は、これに限定されるものではない。例えば、アプリ配信サーバ１２０からダウンロードされていないアプリ（アプリＡ１０１３及びアプリＢ１０１４）が個別の仮想マシン上で動作するように設定されてもよいし、一部のＤＬアプリは汎用ＯＳ１０１１上で動作してもよい。
【００６９】
なお、アプリＶＭＯＳＸ１０２１とアプリＶＭＯＳＹ１０３１とは、それぞれ異なる機能を有してもよいし、同じ機能を有してもよい。また、アプリＶＭＯＳＸ１０２１及びアプリＶＭＯＳＹ１０３１は、汎用ＯＳ１０１１と同じ機能を有してもよい。
【００７０】
＜機器１１０及び１１１のハードウェア構成＞
図４は、本発明の実施の形態１に係る機器１１０及び１１１のハードウェア構成図である。
【００７１】
図２及び図３の各構成要素は、図４に示す内部保護メモリ１２０４とメモリ１２２０とに格納された各構成要素に対応する。これらの各構成要素を実現するためのソフトウェアが、ＣＰＵ１２０１上で実行されることにより、各機能が実現される。
【００７２】
図４に示す機器１１０及び１１１は、システムＬＳＩ１２００と、不揮発性記憶装置１２４０と、メモリ１２２０とを含む。システムＬＳＩ１２００は、不揮発性記憶装置１２４０及びメモリ１２２０と外部バスを介して接続されている。
【００７３】
システムＬＳＩ１２００は、ＣＰＵ１２０１と、ＩＰＬ１２０２と、実行環境切替部１２０３と、内部保護メモリ１２０４とを含む。なお、システムＬＳＩ１２００の詳細は後述する。
【００７４】
メモリ１２２０は、仮想化ソフトウェア１００１と、汎用ＯＳ１０１１と、ダウンロード制御アプリ１０１２と、アプリＡ１０１３と、アプリＢ１０１４と、アプリＶＭＯＳＸ１０２１と、ＤＬアプリＸ１０２２と、アプリＶＭＯＳＹ１０３１と、ＤＬアプリＹ１０３２と、ＲＴＯＳ１０４１と、通話ソフトウェア１０４２とを格納する。これらは、図３の各構成要素をメモリ１２２０にロードした様子を示している。
【００７５】
不揮発性記憶装置１２４０は、アプリ実行専用ＶＭ１２４１と、ＤＬアプリＸ１２４２と、ＤＬアプリＹ１２４３とを格納する。
【００７６】
また、図示しないが、不揮発性記憶装置１２４０は、メモリ１２２０及び内部保護メモリ１２０４に格納するソフトウェアを格納する。さらに、不揮発性記憶装置１２４０は、アプリＡ１０１３、アプリＢ１０１４、ＤＬアプリＸ１２４２及びＤＬアプリＹ１２４３以外のアプリを格納していてもよい。
【００７７】
内部保護メモリ１２０４に格納するソフトウェアは、予め定められた鍵で暗号化された状態で不揮発性記憶装置１２４０に格納される。これらのソフトウェアは、機器１１０及び１１１の工場製造時に不揮発性記憶装置１２４０に格納される。また、これらのソフトウェアは、システム起動時又はアプリの起動要求時に、不揮発性記憶装置１２４０から、メモリ１２２０及び内部保護メモリ１２０４へ展開される。
【００７８】
なお、内部保護メモリ１２０４に格納するソフトウェアを暗号化する鍵は、全ての機器で同一の鍵を用いてもよいし、システムＬＳＩ１２００ごとに個別の鍵を用いてもよいし、ソフトウェアごとに個別の鍵を用いてもよい。また、暗号化されたソフトウェアを復号する鍵は、システムＬＳＩ１２００内部に鍵格納部（図示しない）を備え、その中に格納されてもよいし、システムＬＳＩ１２００内部に格納された鍵を用いて暗号化された状態で不揮発性記憶装置１２４０に格納されてもよい。
【００７９】
機器１１０及び１１１は、さらに、図４に図示されていない入出力部などを備えているが、これらは本発明の本質ではないので説明を省略する。また、システムＬＳＩ１２００は、さらに、図４に図示されていない周辺回路などを備えているが、これらは本発明の本質ではないので説明を省略する。
【００８０】
＜システムＬＳＩ１２００の構成＞
以下、本発明の実施の形態１に係るシステムＬＳＩ１２００の各構成要素の詳細について説明する。
【００８１】
ＣＰＵ１２０１は、メモリ１２２０と内部保護メモリ１２０４とに格納されたソフトウェア等に含まれる命令コードを実行することにより、機器１１０及び１１１全体の動作を制御する。また、ＣＰＵ１２０１は、動作モードとして特権モードと非特権モードとの２つのモードを有する。汎用ＯＳ１０１１は特権モードで動作し、ダウンロード制御アプリ１０１２、アプリＡ１０１３及びアプリＢ１０１４は非特権モードで動作する。
【００８２】
ＩＰＬ１２０２は、機器１１０及び１１１の電源が投入された時に一番はじめに起動するソフトウェアである。このＩＰＬ１２０２は、機器１１０及び１１１の電源が投入された時に、内部保護メモリ１２０４に展開したセキュアＯＳ１１０１、及びメモリ１２２０に展開した仮想化ソフトウェア１００１を起動する。このＩＰＬ１２０２は、システムＬＳＩ１２００内に設けられたマスクＲＯＭに格納されている。
【００８３】
実行環境切替部１２０３は、システムＬＳＩ１２００の通常環境１０００と保護環境１１００とを切り替える機能を実現する。実行環境切替部１２０３は、システムＬＳＩ１２００の実行環境が保護環境の時にのみＣＰＵ１２０１等から内部保護メモリ１２０４へアクセス可能になるようアクセス制御する。
【００８４】
内部保護メモリ１２０４は、セキュアＯＳ１１０１と、セキュアブート部１１０２とを格納する。
【００８５】
なお、システムＬＳＩ１２００は、さらに、不揮発性保護メモリ（図示しない）を含んでもよい。この不揮発性保護メモリは、システムＬＳＩ１２００の実行環境が保護環境の時にのみＣＰＵ１２０１等から不揮発性保護メモリへアクセス可能になるように、実行環境切替部１２０３によりアクセス制御される。なお、不揮発性保護メモリは、内部保護メモリ１２０４に格納されるソフトウェア、又は暗号化されたソフトウェアを復号する鍵を格納してもよい。
【００８６】
＜アプリ配信サーバ１２０の構成＞
図５は、本発明の実施の形態１に係るアプリ配信サーバ１２０の構成図である。
【００８７】
図５に示すアプリ配信サーバ１２０は、アプリ保持部２０００と、アプリ受信処理部２００１と、アプリ送信処理部２００２とを含む。
【００８８】
アプリ保持部２０００は、アプリ配信サーバ１２０が管理するアプリを格納する。
【００８９】
アプリ受信処理部２００１は、ネットワークを介して接続された開発装置１３０と通信し、開発装置１３０がアップロードするアプリを受信する。また、アプリ受信処理部２００１は、受信したアプリをアプリ保持部２０００へ送信し、送信したアプリの保持及び管理をアプリ保持部２０００に依頼する。
【００９０】
アプリ送信処理部２００２は、ネットワークを介して接続された機器１１０と通信する。このアプリ送信処理部２００２は、機器１１０が要求したアプリをアプリ保持部２０００から取得し、取得したアプリを機器１１０へ送信する。また、アプリ送信処理部２００２は、アプリ保持部２０００が保持しているアプリのリストを作成し、作成したリストを機器１１０へ送信する。
【００９１】
＜開発装置１３０の構成＞
図６は、本発明の実施の形態１に係る開発装置１３０の構成図である。
【００９２】
図６に示す開発装置１３０は、パッケージ生成部３０００と、設定ファイル生成部３００１と、鍵ペア保持部３００２と、鍵ペア生成部３００３と、デバッグ処理部３００４と、アップロード処理部３００５とを含む。
【００９３】
パッケージ生成部３０００は、開発者が作成したソースコードをコンパイルすることでアプリを生成する。そして、パッケージ生成部３０００は、生成したアプリに、アプリ署名（Ｓｉｇｎａｔｕｒｅ）、設定ファイル、及び公開鍵証明書（Ｃｅｒｔｉｆｉｃａｔｅ）を付加したパッケージファイルを生成する。アプリ署名の方式には、例えば、ＲＳＡ暗号方式を用いた署名方式が利用できる。なお、詳細は後述する。
【００９４】
なお、アプリ署名（デジタル署名）の方式に関しては、ＲＳＡ暗号方式に限定されるものではなく、他の署名方式を用いてもよい。例えば、他の署名方式は、非特許文献２の１７１ページから１８８ページに詳しく説明されている。また、公開鍵証明書に関しては、非特許文献３に詳しく説明されている。
【００９５】
設定ファイル生成部３００１は、アプリに付加する設定ファイルを生成する。設定ファイルには、当該アプリが機器のどのリソースを使用するかを示す情報、当該アプリの開発者に関する情報、及び当該アプリが他のアプリに対してどのようなサービスを提供するかを示す情報などの各種情報が記されている。設定ファイル生成部３００１は、これらの情報を、アプリ開発者が設定する値を元に生成する。
【００９６】
鍵ペア保持部３００２は、パッケージに付加するアプリ署名を生成及び検証するために使用する鍵（公開鍵暗号方式における秘密鍵と公開鍵との鍵対）を保持する。例えば、鍵ペア保持部３００２は、この公開鍵を、非特許文献３（ＩＴＵ−Ｔ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  Ｘ．５０９）で説明されている公開鍵証明書のフォーマットで保持する。
【００９７】
鍵ペア生成部３００３は、公開鍵暗号方式における秘密鍵と公開鍵との鍵対を生成し、生成した鍵対を鍵ペア保持部３００２に保持する。
【００９８】
なお、公開鍵暗号方式に関しては非特許文献２の１０７ページから１３０ページに詳しく説明されている。
【００９９】
デバッグ処理部３００４は、開発装置１３０にＵＳＢ等で接続された機器１１１と通信し、開発者が作成したアプリをデバッグするための処理を行う。デバッグするための処理とは、生成したパッケージを用いたアプリのインストール、インストールしたアプリの実行、ブレークポイントの設定、及びログ出力の取得等の処理がある。
【０１００】
アップロード処理部３００５は、開発装置１３０にネットワークを介して接続されたアプリ配信サーバ１２０と通信し、パッケージ生成部３０００が生成したパッケージをアプリ配信サーバ１２０へアップロードする処理を行う。
【０１０１】
＜パッケージ生成部３０００の構成＞
図７は、本発明の実施の形態１に係るパッケージ生成部３０００の構成図である。
【０１０２】
図７に示すパッケージ生成部３０００は、コンパイラ３１００と、リンカ３１０１と、パッケージ生成ツール３１０２とを含む。
【０１０３】
コンパイラ３１００は、入力されたソースコード３１１０をコンパイルすることでオブジェクトファイルを生成する。
【０１０４】
リンカ３１０１は、コンパイラ３１００が生成したオブジェクトファイルとライブラリとをリンクすることで機器１１０及び１１１が実行可能なファイル（実行ファイル）を生成する。
【０１０５】
パッケージ生成ツール３１０２は、リンカ３１０１が生成した実行ファイルと、設定ファイル生成部３００１が生成する設定ファイル３１３２と、鍵ペア保持部３００２が保持する秘密鍵３１３０及び公開鍵証明書３１３１とを用いてダウンロードパッケージ３１２０を生成する。
【０１０６】
＜ダウンロードパッケージ３１２０の構成＞
図８は、本発明の実施の形態１に係るダウンロードパッケージ３１２０の構成図である。
【０１０７】
図８において、ダウンロードパッケージ３１２０は、アプリ３２００と、デバドラ３２０１と、設定ファイル３２０２と、アプリ署名リスト３２０３と、公開鍵証明書３２０４とを含む。
【０１０８】
アプリ３２００及びデバドラ３２０１は、コンパイラ３１００及びリンカ３１０１が、開発者が作成したソースコード３１１０から生成した実行ファイルである。
【０１０９】
設定ファイル３２０２は、パッケージ生成ツール３１０２に入力される設定ファイル３１３２と同じである。
【０１１０】
アプリ署名リスト３２０３は、アプリ３２００と、デバドラ３２０１と、設定ファイル３２０２とのそれぞれの署名が並んだリストである。パッケージ生成ツール３１０２は、ダウンロードパッケージ３１２０生成時に、入力されたアプリ３２００と、デバドラ３２０１と、設定ファイル３２０２とから、それぞれ署名を生成し、アプリ署名リスト３２０３を生成する。また、アプリ署名リスト３２０３は、署名の生成には、秘密鍵３１３０を使用する。
【０１１１】
公開鍵証明書３２０４は、パッケージ生成ツール３１０２に入力される公開鍵証明書３１３１と同じである。
【０１１２】
なお、ダウンロードパッケージ３１２０は、アプリ３２００と、デバドラ３２０１と、設定ファイル３２０２と、アプリ署名リスト３２０３と、公開鍵証明書３２０４とをそれぞれ１つずつを含むとしたが、本発明はこれに限定されるものではない。例えば、各ファイルは、１つであってもよいし、複数あってもよい。また、これらのファイルの一部がダウンロードパッケージ３１２０に含まれてもよい。また、これらのファイルは、ダウンロードパッケージ３１２０として１つのファイルでダウンロードされてもよいし、それぞれのファイルが個別にダウンロードされてもよいし、複数のファイルに分割されてダウンロードされてもよい。
【０１１３】
なお、アプリ署名リスト３２０３は、アプリ３２００と、デバドラ３２０１と、設定ファイル３２０２とのそれぞれの署名が並んだリスト全体に対する署名を含んでもよい。また、ダウンロードパッケージ３１２０は、アプリ署名リスト３２０３の署名を含んでもよい。
【０１１４】
＜セキュアブート処理＞
機器１１０及び１１１は、仮想化ソフトウェア１００１及び保護環境１１００で動作するソフトウェアが改竄されていないかを、機器起動時に検証する。
【０１１５】
以下、機器１１０及び１１１が電源投入され仮想化ソフトウェア１００１が起動するまでの方法（セキュアブート処理）を、図９のフローチャートを用いて説明する。
【０１１６】
機器１１０及び１１１は、電源が投入されるとシステムＬＳＩ１２００内部にあるＩＰＬ１２０２を起動する。
【０１１７】
ＩＰＬ１２０２は、まず機器１１０及び１１１のハードウェアの初期化処理を行う（Ｓ１０００）。この初期化処理では、メモリ１２２０の動作チェック、実行環境切替部１２０３の初期化、及び周辺回路（図示しない）の初期化などの処理が行われる。その後、セキュアＯＳ１１０１が起動される。
【０１１８】
セキュアＯＳ１１０１は、保護環境１１００の初期化（安全なソフトウェア実行環境の構築）を行うことにより、保護環境１１００でアプリが動作可能な状態にする。その後、セキュアＯＳ１１０１は、セキュアブート部１１０２をロード（Ｓ１００１）し、セキュアブート部１１０２を起動する。
【０１１９】
ここで、セキュアブート部１１０２は、暗号化された状態で不揮発性記憶装置１２４０に格納されている。よって、実行環境切替部１２０３は、システムＬＳＩ１２００に固有の鍵を用いて暗号化されたセキュアブート部１１０２を復号し、復号したセキュアブート部１１０２を内部保護メモリ１２０４へロードする。
【０１２０】
セキュアブート部１１０２は、セキュアＯＳ１１０１と、セキュアブート部１１０２との検証を行う（Ｓ１００２）。検証の方法として、セキュアブート部１１０２は、ソフトウェアのハッシュ値を生成し、生成したハッシュ値と予め計算しておいた参照ハッシュ値との比較を行うことで、セキュアＯＳ１１０１及びセキュアブート部１１０２が改竄されていないかを検証する。また、参照ハッシュ値は、工場出荷前に計算され、セキュアブート部１１０２に埋め込まれる。また、セキュアブート部１１０２は、参照ハッシュ値を埋め込んだ状態で暗号化され、不揮発性記憶装置１２４０に格納される。
【０１２１】
なお、ここでは、ソフトウェアの検証方法にハッシュ値を利用するとしたが、本発明はこれに限定されるものではなく、ハッシュ値の代わりに署名を用いる方法でもよい。この時、セキュアブート部１１０２は、署名の検証に用いる公開鍵を埋め込んだ状態で暗号化され、不揮発性記憶装置１２４０に格納されてもよいし、セキュアブート部１１０２とは別に不揮発性記憶装置１２４０に格納されてもよい。また、セキュアブート部１１０２は、公開鍵を機器外部の別の装置から取得してもよい。
【０１２２】
セキュアブート部１１０２は、ステップＳ１００２でセキュアＯＳ１１０１と、セキュアブート部１１０２とを検証した結果、セキュアＯＳ１１０１と、セキュアブート部１１０２とが改竄されていないと判定した場合には、ステップＳ１００３でＯＫと判定し、ステップＳ１００４へ遷移する。また、セキュアブート部１１０２は、ステップＳ１００２でセキュアＯＳ１１０１と、セキュアブート部１１０２とを検証した結果、セキュアＯＳ１１０１と、セキュアブート部１１０２とのどちらか一方でも改竄されていると判定された場合には、ステップＳ１００３でＮＧと判定し、ステップＳ１００６へ遷移する。
【０１２３】
セキュアブート部１１０２は、ステップＳ１００３でＯＫと判定した場合には、仮想化ソフトウェア１００１の検証を行う（Ｓ１００４）。例えば、セキュアブート部１１０２は、ステップＳ１００２と同様の検証方法を用いる。
【０１２４】
セキュアブート部１１０２は、ステップＳ１００４で仮想化ソフトウェア１００１を検証した結果、仮想化ソフトウェア１００１が改竄されていないと判定した場合には、ステップＳ１００５でＯＫと判定し、処理を終了し、セキュアＯＳ１１０１へ処理を戻す。一方、セキュアブート部１１０２は、ステップＳ１００４で検証した結果、仮想化ソフトウェア１００１が改竄されていると判定した場合には、ステップＳ１００５でＮＧと判定し、ステップＳ１００６へ遷移する。
【０１２５】
セキュアブート部１１０２は、ステップＳ１００３又はステップＳ１００５でＮＧと判定した場合には、セキュアブート失敗フラグを設定する（Ｓ１００６）。セキュアブート失敗フラグは、内部保護メモリ１２０４上の特定の領域に保存されるデータ（図示しない）である。セキュアＯＳ１１０１、及びセキュアＯＳ１１０１上で動作するアプリは、セキュアブート失敗フラグをチェックすることで機器１１０及び１１１の状態を把握し、動作するか否かを決定する。
【０１２６】
セキュアブート部１１０２は、ステップＳ１００６の処理終了後、セキュアＯＳ１１０１へ処理を戻す。
【０１２７】
セキュアＯＳ１１０１は、セキュアブート部１１０２から処理が戻ると、ＩＰＬ１２０２へ処理を戻す。
【０１２８】
ＩＰＬ１２０２は、不揮発性記憶装置１２４０に格納されている仮想化ソフトウェア１００１をメモリ１２２０へロード（Ｓ１００７）し、仮想化ソフトウェア１００１を実行（起動）する。
【０１２９】
なお、セキュアブート処理は、ＴＣＧ（Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ）のＭＰＷＧ（Ｍｏｂｉｌｅ  Ｐｈｏｎｅ  Ｗｏｒｋ  Ｇｒｏｕｐ）で規定するセキュアブートを用いてもよい。
【０１３０】
また、ここでは、保護モードソフトの検証（Ｓ１００２）と仮想化ソフトウェアの検証（Ｓ１００４）とを連続して処理するとしたが、本発明はこれに限定されるものではない。例えば、保護モードソフトの検証（Ｓ１００２）を行った後、一度ＩＰＬ１２０２まで処理を戻し、引き続き、ＩＰＬ１２０２からセキュアＯＳ１１０１を経由して、セキュアブート部１１０２に対して仮想化ソフトウェアの検証（Ｓ１００４）を依頼してもよい。
【０１３１】
また、セキュアブート処理は仮想化ソフトウェア１００１を実行するまでとしたが、本発明はこれに限定されるものではなく、仮想マシン内のＩＰＬ、ＯＳ、及びアプリもセキュアブート処理の対象にしてもよい。また、ＩＰＬ、ＯＳ、及びアプリをセキュアブートの対象にする場合は、それぞれが次に起動するソフトウェアを改竄されていないか検証してから次に起動するソフトウェアを起動（実行）する。
【０１３２】
＜仮想マシンの起動処理＞
仮想化ソフトウェア１００１は、機器起動時に所定の仮想マシンを起動する。更に、実行中の仮想マシンからの要求に応じて、新規に仮想マシンを生成する処理を行う。
【０１３３】
以下、仮想化ソフトウェア１００１起動後に各仮想マシンが起動する処理を、図１０のフローチャートを用いて説明する。
【０１３４】
仮想化ソフトウェア１００１は、セキュアブート処理の最後でＩＰＬ１２０２により起動され、初期化処理（Ｓ１０１０）を実行する。初期化処理後、仮想化ソフトウェア１００１は、仮想マシン１００２を実行するためにメモリなどのハードウェアリソースを確保したうえで、仮想マシン１００２を起動する。
【０１３５】
仮想マシン１００２は、起動されると、まず、初期化処理（Ｓ１０１１）を行う。初期化処理として、仮想マシン１００２は、仮想ハードウェア１０１０内のＩＰＬ１２０２を実行する。また、仮想マシン１００２は、汎用ＯＳ１０１１をメモリにロードし、汎用ＯＳ１０１１を実行する処理を行う。その後、汎用ＯＳ１０１１の起動処理中又は処理後において、仮想マシン１００２から仮想化ソフトウェア１００１への処理依頼、又はハードウェア割り込みが発生することにより、仮想マシン１００２の処理が中断され、仮想化ソフトウェア１００１へ処理が戻る。
【０１３６】
次に、仮想化ソフトウェア１００１は、仮想マシン１００５を実行するためにメモリなどのハードウェアリソースを確保し、仮想マシン１００５を起動する。
【０１３７】
仮想マシン１００５は、起動されると、まず、初期化処理（Ｓ１０１２）を行う。初期化処理として、仮想マシン１００５は、仮想ハードウェア１０４０内のＩＰＬ１２０２を実行する。また、仮想マシン１００５は、ＲＴＯＳ１０４１をメモリにロードし、ＲＴＯＳ１０４１を実行する処理を行う。その後、ＲＴＯＳ１０４１の起動処理中又は処理後において、仮想マシン１００５から仮想化ソフトウェア１００１への処理依頼、又はハードウェア割り込みが発生することにより、仮想マシン１００５の処理が中断され、仮想化ソフトウェア１００１へ処理が戻る。
【０１３８】
その後、仮想化ソフトウェア１００１は、スケジューリング機能に従って、仮想マシンをスケジューリングする。
【０１３９】
スケジューリング機能により、仮想マシン１００２が実行された時、機器を使用するユーザからの要求により、仮想マシン１００２は、アプリを起動する（Ｓ１０１３）。
【０１４０】
アプリ起動時に、仮想マシン１００２は、起動が要求されたアプリを、仮想マシン１００２で動作させるか、他の仮想マシンで動作させるかを判定する。具体的には、仮想マシン１００２は、起動を要求されたアプリがＤＬアプリかどうかを判定する（Ｓ１０１４）。なお、ＤＬアプリとは、ネットワークを介して他の機器からダウンロードされたアプリに限らず、他の機器から取得されたアプリであってもよい。例えば、ＤＬアプリとは、機器１１０に着脱可能な記録媒体を介して、機器１１０が出荷後に取得したアプリであってもよい。また、仮想マシン１００２は、ユーザが起動要求したアプリがＤＬデバドラかどうかの判定を行ってもよい。
【０１４１】
仮想マシン１００２は、ＤＬアプリである時は、「ＯＫ」と判定し、ＤＬアプリではない時には「ＮＧ」と判定する。例えば、仮想マシン１００２は、ＤＬアプリの判定に、起動を要求されたアプリのファイル名に付随する拡張子を利用する。
【０１４２】
仮想マシン１００２は、ステップＳ１０１４で「ＯＫ」と判定した場合には、起動を要求されたアプリを実行するためのＶＭ（アプリＶＭ）の生成を仮想化ソフトウェア１００１に依頼する。
【０１４３】
仮想化ソフトウェア１００１は、ＤＬアプリを実行するための仮想マシン１００３を生成し（Ｓ１０１５）、当該仮想マシン１００３を起動する。生成処理の詳細は、フローチャートを用いて後ほど説明する。
【０１４４】
仮想マシン１００３は、起動されると、初期化処理（Ｓ１０１７）を行い、起動が要求されたアプリを実行する（Ｓ１０１８）。また、ＤＬアプリ実行中（Ｓ１０１８）に、仮想マシン１００３から仮想化ソフトウェア１００１への処理依頼、又はハードウェア割り込みが発生することにより、仮想マシン１００３の処理が中断され、仮想化ソフトウェア１００１へ処理が戻ることもある。その場合、仮想化ソフトウェア１００１のスケジューリング機能により、仮想マシン１００３が再スケジュールされた時に、当該仮想マシン１００３は中断された処理の続きを実行する。アプリが終了すると、仮想マシン１００３は、仮想化ソフトウェア１００１へ仮想マシンの終了を通知する。
【０１４５】
仮想化ソフトウェア１００１は、仮想マシン１００３からの終了通知を受けて、仮想マシン１００２へ、ＶＭの終了を通知する。
【０１４６】
仮想マシン１００２は、ＶＭの終了通知を受けて、ステップＳ１０１３で起動を要求されたアプリが終了したことを認識する。
【０１４７】
一方、仮想マシン１００２は、ステップＳ１０１４で「ＮＧ」と判定した場合には、起動を要求されたアプリを実行する（Ｓ１０１６）。
【０１４８】
上記のように、本発明の実施の形態１に係る機器１１０及び１１１は、当該機器１１０及び１１１の起動時に所定の仮想マシンを起動する。更に、機器１１０及び１１１は、その起動した所定の仮想マシンに対して、ユーザからＤＬアプリの起動が要求された時には、ＤＬアプリ専用の仮想マシン（仮想マシン１００３）を追加で起動し、その仮想マシン内でＤＬアプリを実行する処理を行う。
【０１４９】
なお、仮想マシン１００３の処理中断中に、仮想マシン１００２が別のＤＬアプリを実行するためのＶＭの生成を依頼した時は、仮想化ソフトウェア１００１は、仮想マシン１００３とは別の仮想マシン（仮想マシン１００４等）を生成し、ＤＬアプリがそれぞれ別の仮想マシンで動作するようにする。
【０１５０】
＜仮想化ソフトウェア１００１の構成＞
図１１は、本発明の実施の形態１に係る仮想化ソフトウェア１００１のソフトウェア構成図である。
【０１５１】
図１１において、仮想化ソフトウェア１００１は、アプリＶＭ生成部１３００と、アプリ実行専用ＶＭ取得部１３０１と、ＶＭ管理部１３０２と、ＯＳ処理依頼制御部１３０３と、親子関係管理部１３０４と、ポリシー管理部１３０５とを含む。
【０１５２】
アプリＶＭ生成部１３００は、仮想化ソフトウェア１００１上で動作する仮想マシンから、仮想マシン（アプリＶＭ）の生成依頼を受けて、ＤＬアプリを実行するための仮想マシン（アプリＶＭ）を生成する。ここで、アプリＶＭ生成部１３００は、この仮想マシン（アプリＶＭ）を、アプリ実行専用ＶＭと、仮想マシンから通知されたＤＬアプリとに応じて生成する。また、アプリＶＭ生成部１３００は、ＶＭ管理部１３０２へ、生成した仮想マシンの管理を依頼する。更に、アプリＶＭ生成部１３００は、親子関係管理部１３０４へ、仮想マシンの生成依頼をした仮想マシンを「親」とし、生成した仮想マシンを「子」として、登録する。なお、生成処理の詳細は、フローチャートを用いて後ほど説明する。
【０１５３】
また、ここでは、アプリＶＭ生成部１３００は、アプリ実行専用ＶＭと、仮想マシンから通知されたＤＬアプリとから、ＤＬアプリを実行するための仮想マシンを生成するとしたが、本発明はこれに限定されるものではない。例えば、アプリＶＭ生成部１３００は、アプリ配信サーバ１２０から、アプリとＯＳと仮想ハードウェアとを含んだ状態の仮想マシンをダウンロードし、当該仮想マシンのロード処理とＶＭ管理部１３０２への管理依頼とを行ってもよい。また、アプリＶＭ生成部１３００は、ＤＬアプリ実行時に仮想マシンを生成するのではなく、当該ＤＬアプリをアプリ配信サーバ１２０からダウンロードした時に仮想マシンを生成してもよい。
【０１５４】
アプリ実行専用ＶＭ取得部１３０１は、不揮発性記憶装置１２４０に記憶されているアプリ実行専用ＶＭ１２４１を読み込む。
【０１５５】
図１２は、アプリ実行専用ＶＭ１２４１の構造を示す図である。アプリ実行専用ＶＭ１２４１は、ヘッダ情報１３１０と、ＶＭ本体１３１１と、検証値１３１２とを含む。また、ＶＭ本体１３１１は、ＯＳ１３１５と、仮想ハードウェア１３１６とを含む。また、ヘッダ情報１３１０は、実行するアプリを書き込むアドレス（論理アドレス）と、デバドラを管理している管理構造体のアドレス（論理アドレス）とを含む。検証値１３１２は、ＶＭ本体１３１１をハッシュ関数に入力した時に得られるハッシュ値である。また、ＯＳ１３１５は、本発明のＶＭ用ＯＳに相当し、不揮発性記憶装置１２４０は、本発明の記憶部に相当する。
【０１５６】
なお、検証値１３１２は、ＶＭ本体１３１１の後ろにあるのではなく、ＶＭ本体１３１１の前にあってもよいし、ヘッダ情報１３１０に含まれてもよい。さらに、検証値１３１２は、アプリ実行専用ＶＭ１２４１に含まれるのではなく、アプリ実行専用ＶＭ１２４１とは別に、アプリ実行専用ＶＭ１２４１と関連づけた状態で、不揮発性保護メモリに格納されてもよい。
【０１５７】
なお、ハッシュ関数としては、ＭＤ４、ＭＤ５、ＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）−１、及びＳＨＡ−２などのアルゴリズムが利用可能である。また、検証値１３１２は、ハッシュ値ではなく、デジタル署名、メッセージ認証コード（ＭＡＣ：Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）値、誤り検出符号値、又は誤り訂正符号値でもよい。ＭＡＣ値を計算するアルゴリズムとしては、ＣＢＣ−ＭＡＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）、及びＨＭＡＣ（Ｋｅｙｅｄ−Ｈａｓｈｉｎｇ  ｆｏｒ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）などが利用可能である。また、誤り検出符号値を計算するアルゴリズムとしては、巡回冗長検査（ＣＲＣ：Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）、及びチェックサムなどが利用可能である。また、誤り訂正符号値を計算するアルゴリズムとしては、リード／ソロモン符号、及びターボ符号などが利用可能である。
【０１５８】
なお、ハッシュ関数に関しては非特許文献４の９６ページから１０５ページに、デジタル署名方式に関しては非特許文献２の１７１ページから１８８ページに、メッセージ認証コードに関しては非特許文献４の３０ページから３９ページにそれぞれ詳しく説明されている。
【０１５９】
なお、複数のアプリ実行専用ＶＭ１２４１を不揮発性記憶装置１２４０に記憶し、アプリ実行専用ＶＭ取得部１３０１は、ＤＬアプリによって使用するアプリ実行専用ＶＭ１２４１を変えてもよい。この時、アプリ実行専用ＶＭ１２４１のヘッダ情報１３１０は、アプリ実行専用ＶＭ１２４１が持つ機能を含んでもよいし、ＤＬアプリと紐付ける情報を含んでもよい。
【０１６０】
ＶＭ管理部１３０２は、仮想化ソフトウェア１００１上で動作している仮想マシンを管理する。ＶＭ管理部１３０２は、機器起動時に起動する仮想マシンと、ＤＬアプリを実行するためのＶＭとを一緒に管理する。また、ＶＭ管理部１３０２は、仮想マシンの管理に、図１３に示す仮想マシン管理テーブル１３５０を用いる。この仮想マシン管理テーブル１３５０は、仮想マシンを識別するためのＩＤと、仮想マシンの状態と、仮想マシンが使用しているメモリのアドレス範囲と、仮想マシンを中断する時の状態を保存する中断状態保存先とを含む。
【０１６１】
ＯＳ処理依頼制御部１３０３は、仮想化ソフトウェア１００１上で動作している仮想マシンからのＯＳ処理依頼を受けて、依頼してきた仮想マシンと「親」の関係にある仮想マシンに対してＯＳ処理を依頼する。ＯＳ処理依頼制御部１３０３は、親子関係管理部１３０４から「親」の関係にある仮想マシンの情報を取得する。なお、ＯＳ依頼処理の詳細は、フローチャートを用いて後ほど説明する。
【０１６２】
親子関係管理部１３０４は、アプリＶＭ生成部１３００からの通知に基づいて、仮想マシン間の親子関係を管理する。親子関係管理部１３０４は、親子関係を、親子関係管理テーブル１３６０を用いて管理する。図１４は、親子関係管理テーブル１３６０の構造を示す図である。親子関係管理テーブル１３６０は、「親」の仮想マシンのＩＤ（親仮想マシンＩＤ）と「子」の仮想マシンＩＤ（子仮想マシンＩＤ）とを含む。また、親仮想マシンＩＤと子仮想マシンＩＤとは、仮想マシン管理テーブル１３５０のＩＤに対応する。
【０１６３】
ポリシー管理部１３０５は、ＯＳ処理依頼により実現する機能ごとに、当該機能のＯＳ処理依頼を他の仮想マシンに依頼可能か否かを判定する。具体的には、ポリシー管理部１３０５は、仮想マシンからＯＳ処理依頼があった時に、そのＯＳ処理を実施するかどうかを、ポリシーテーブル１３７０に基づいて決定する。ポリシーテーブル１３７０は、図１５Ａに示すように、機能と、仮想マシンＩＤとを含む。機能の列には、機器が持つ機能が全て列挙され、仮想マシンＩＤの列にその機能を持つ仮想マシンのＩＤが格納される。この時、ＤＬアプリによる使用を禁止する機能に関しては、仮想マシンＩＤとしては、使用禁止を示す特殊なＩＤ（図１５Ａでは「０」）を格納する。
【０１６４】
なお、ポリシーテーブルは図１５Ｂに示す構成でもよい。図１５Ｂに示すポリシーテーブル１３７１は、機能と、各仮想マシンがその機能にアクセス許可されているかどうかを示すシンボルとを含む。図１５Ｂに示す「○」はアクセス許可、「×」はアクセス不許可を示す。
【０１６５】
また、ここでは、ポリシーを仮想マシンごとに決めるとしたが、本発明はこれに限定されるものではなく、ポリシーをＤＬアプリごとに決めてもよい。この場合、仮想マシン管理テーブル１３５０に、ＤＬアプリと仮想マシンとを紐付けするための情報が追加される。
【０１６６】
また、図１５Ａ及び図１５Ｂでは、機能として、ＴＶ視聴、通話及び商用コンテンツ再生を例示しているが、当該機能はこれに限定されるものではない。例えば、ポリシー管理部１３０５は、デバドラへの処理依頼を実施するかどうかを決定するために、デバドラごとに使用を禁止するかどうかを示す情報をポリシーテーブル１３７０又は１３７１に格納してもよい。また、ポリシー管理部１３０５は、メモリ操作関数などのＯＳの内部関数ごとに使用を禁止するかどうかを示す情報をポリシーテーブル１３７０又は１３７１に格納してもよい。さらに、ポリシー管理部１３０５は、これらの情報を組み合わせた情報をポリシーテーブル１３７０又は１３７１に格納してもよい。
【０１６７】
また、仮想マシンからのＯＳ処理依頼のうち、アプリＶＭＯＳ内部で行うべき処理は、本来ＯＳ処理依頼が来ないため、そのような処理依頼があった時にＤＬアプリによる使用を禁止してもよい。アプリＶＭＯＳ内部で行うべき処理としては、ダウンロードしたデバドラをインストールする処理、ダウンロードしたデバドラを実行する処理、及びメモリマップ関係の機能に関する処理などがある。なお、詳細は後述する。
【０１６８】
＜汎用ＯＳ１０１１の構成＞
図１６は、本発明の実施の形態１に係る汎用ＯＳ１０１１の構成図である。
【０１６９】
図１６において、汎用ＯＳ１０１１は、アプリロード部１４００と、アプリＶＭＯＳ処理受付部１４０１と、デバドラＡ１４０２とを含む。
【０１７０】
アプリロード部１４００は、ユーザからのアプリの起動要求を受けて、アプリの起動処理を行う。アプリロード部１４００は、ユーザが起動要求をしたアプリがＤＬアプリかどうかを判断する。アプリロード部１４００は、ユーザが起動要求をしたアプリがＤＬアプリであった場合には、仮想化ソフトウェア１００１へアプリＶＭの生成を依頼する。また、アプリロード部１４００は、ユーザが起動要求をしたアプリがＤＬアプリではなく、通常のアプリであった場合には、汎用ＯＳ１０１１上で動作するアプリとして当該アプリを実行する。
【０１７１】
アプリＶＭＯＳ処理受付部１４０１は、仮想化ソフトウェア１００１からのＯＳ処理の依頼を受けて、依頼されたＯＳ処理を実施し、その結果を仮想化ソフトウェア１００１へ通知する。アプリＶＭＯＳ処理受付部１４０１は、仮想化ソフトウェア１００１から、実施するＯＳ処理の識別子と引数とを受け取り、識別子に応じた処理を行う。また、アプリＶＭＯＳ処理受付部１４０１は、汎用ＯＳ１０１１の初期化処理の中で、仮想化ソフトウェア１００１に対してコールバック関数を登録し、そのコールバック関数を介してＯＳ処理の依頼を受ける。
【０１７２】
なお、アプリＶＭＯＳ処理受付部１４０１は、コールバック関数を介してＯＳ処理の依頼を受けるとしたが、本発明はこれに限定されるものではなく、仮想化ソフトウェア１００１から汎用ＯＳ１０１１に依頼を通知できる機構であればよい。例えば、アプリＶＭＯＳ処理受付部１４０１は、仮想ハードウェアの機能として、ＯＳ処理依頼専用の割り込み処理を介してＯＳ処理の依頼を受けてもよい。また、汎用ＯＳ１０１１のシステムコールにＯＳ処理依頼専用のシステムコールを追加し、アプリＶＭＯＳ処理受付部１４０１は、そのシステムコールを介してＯＳ処理依頼を受け付けてもよい。
【０１７３】
デバドラＡ１４０２は、機器１１０及び１１１に装着されているハードウェアへのアクセスを管理する。このデバドラＡ１４０２は、汎用ＯＳ１０１１内、及び汎用ＯＳ１０１１上で動作するアプリからの要求に応じて動作する。
【０１７４】
＜アプリロード部１４００の構成＞
図１７Ａは、本発明の実施の形態１に係るアプリロード部１４００の構成図である。
【０１７５】
図１７Ａに示すアプリロード部１４００は、アプリ取得部１４１０と、判定部１４１１と、ロード部１４１２と、ＶＭ生成依頼部１４１３とを含む。
【０１７６】
アプリ取得部１４１０は、ユーザが起動要求したアプリを不揮発性記憶装置１２４０から読み込む処理を行う。
【０１７７】
判定部１４１１は、ユーザが起動要求したアプリがＤＬアプリかどうかの判定を行う。判定部１４１１は、ユーザが起動要求したアプリがＤＬアプリではなかった場合には、ロード部１４１２に、アプリのロード及び起動を依頼する。判定部１４１１は、ユーザが起動要求したアプリがＤＬアプリであった場合には、ＶＭ生成依頼部１４１３にＤＬアプリの起動を依頼する。
【０１７８】
ＤＬアプリの判定方法として、例えば、判定部１４１１は、起動を要求されたアプリのファイル名に付随する拡張子が所定の拡張子に一致するかどうか比較することにより判定を行う。ＤＬアプリが利用する拡張子（所定の拡張子）は、システム設計時に決定され、汎用ＯＳ１０１１に事前に埋め込まれ、比較に利用される。
【０１７９】
なお、判定部１４１１は、ＤＬアプリの判定に拡張子を利用するとしたが、これに限定されるものではない。例えば、ＤＬアプリが特定のディレクトリ（フォルダ）に格納され、判定部１４１１は、起動を要求されたアプリのディレクトリ名（フォルダ名）が、ＤＬアプリを格納しているディレクトリ名と一致するかどうか比較してもよい。また、ＤＬアプリのヘッダ情報にＤＬアプリであることを識別するための情報（識別子）が埋め込まれ、判定部１４１１は、その情報があるかどうかをチェックしてもよい。また、判定部１４１１は、ＤＬアプリのダウンロードパッケージ３１２０に含まれる公開鍵証明書３２０４に含まれる情報を用いてＤＬアプリであるかを識別してもよい。この識別方法としては、例えば、主体者（Ｓｕｂｊｅｃｔ）又は発行者（Ｉｓｓｕｅｒ）を識別する情報が特定の企業を示す情報になっているかどうかを比較する方法、又は証明書の識別子（Ｃｅｒｔｉｆｉｃａｔｅ  Ｓｅｒｉａｌ  Ｎｕｍｂｅｒ）が特定の文字列から構成されているかを調べる方法などが考えられる。また、アプリ配信サーバ１２０からダウンロードしたＤＬアプリを管理するＤＬアプリ管理部を設け、判定部１４１１は、ＤＬアプリ管理部が管理するアプリかどうかで、起動要求されたアプリがＤＬアプリであるかどうかを判定してもよい。
【０１８０】
ロード部１４１２は、アプリ取得部１４１０が読み込んだアプリをメモリ１２２０へ書き込み、アプリの起動に必要な処理（例えば、ヘッダの解析、論理アドレスの設定、スタックの設定及びエントリポイントの設定等）を行ったうえで、アプリを実行する。
【０１８１】
ＶＭ生成依頼部１４１３は、判定部１４１１からＤＬアプリの起動依頼を受けて、仮想化ソフトウェア１００１に対して、アプリＶＭの生成を依頼する。また、ＶＭ生成依頼部１４１３は、依頼時に、アプリＶＭで実行するＤＬアプリを仮想化ソフトウェア１００１に通知する。
【０１８２】
なお、図１７Ｂのように、アプリロード部１４００は、判定部１４１１と、ロード部１４１２と、ＶＭ生成依頼部１４１３とのみを含んでもよい。この場合、アプリ取得部１４１０の機能は、判定部１４１１が内包してもよいし、仮想化ソフトウェア１００１のアプリＶＭ生成部１３００とロード部１４１２とが内包してもよい。
【０１８３】
＜アプリＶＭＯＳＸ１０２１及びアプリＶＭＯＳＹ１０３１の構成＞
図１８Ａ及び図１８Ｂは、本発明の実施の形態１に係るアプリＶＭＯＳの構成図である。図１８ＡはアプリＶＭＯＳＸ１０２１の構成を、図１８ＢはアプリＶＭＯＳＹ１０３１の構成を示す図である。
【０１８４】
図１８Ａに示すアプリＶＭＯＳＸ１０２１は、ＯＳ処理依頼部１５００と、デバドラＢ１５０１とを含む。
【０１８５】
ＯＳ処理依頼部１５００は、アプリＶＭＯＳＸ１０２１上で動作するＤＬアプリＸ１０２２からのＯＳ処理依頼を受けて、仮想化ソフトウェア１００１にＯＳ処理依頼を依頼する。この時、デバドラＢ１５０１に対する処理依頼であった場合には、仮想化ソフトウェア１００１へ依頼するのではなく、アプリＶＭＯＳＸ１０２１内から直接デバドラＢ１５０１へ処理を依頼する。
【０１８６】
デバドラＢ１５０１は、アプリＶＭＯＳＸ１０２１内で動作するデバイスドライバで、ＤＬアプリＸ１０２２のみが使用し、他のアプリは使用しない。
【０１８７】
図１８Ｂに示すアプリＶＭＯＳＹ１０３１は、ＯＳ処理依頼部１５００を含む。
【０１８８】
なお、デバドラＢ１５０１は、ＤＬアプリＸ１０２２のみが使用し、他のアプリは使用しないとしたが、本発明はこれに限定されるものではない。例えば、ＤＬアプリＹ１０３２がデバドラＢ１５０１を使用してもよい。この場合、アプリＶＭＯＳＹ１０３１は、さらに、デバドラＢ１５０１を含む。そして、ＤＬアプリＹ１０３２は、アプリＶＭＯＳＹ１０３１に含まれるデバドラＢ１５０１を使用する。
【０１８９】
ＯＳ処理依頼部１５００は、アプリＶＭＯＳＹ１０３１上で動作するＤＬアプリＹ１０３２からのＯＳ処理依頼を受けて、仮想化ソフトウェア１００１にＯＳ処理依頼を依頼する。アプリＶＭＯＳＹ１０３１は、内部にデバドラを持たないため、ＯＳ処理依頼部１５００は、全てのＯＳ処理依頼を仮想化ソフトウェア１００１へ依頼する。
【０１９０】
＜ＯＳ処理依頼部１５００の構成＞
図１９Ａは、本発明の実施の形態１に係るＯＳ処理依頼部１５００の構成図である。
【０１９１】
図１９Ａに示すＯＳ処理依頼部１５００は、ＯＳ処理受付部１５１０と、依頼判定部１５１１と、内部処理部１５１２と、依頼部１５１３とを含む。
【０１９２】
ＯＳ処理受付部１５１０は、ＤＬアプリからのＯＳ処理依頼を受け付ける。
【０１９３】
依頼判定部１５１１は、依頼を受けたＯＳ処理が、アプリＶＭＯＳ内部で行う処理か、仮想化ソフトウェア１００１へ依頼する処理かの判定を行う。依頼判定部１５１１は、依頼を受けたＯＳ処理が内部で行う処理であった場合には、内部処理部１５１２へ処理を依頼する。また、依頼判定部１５１１は、依頼を受けたＯＳ処理が仮想化ソフトウェア１００１へ依頼する処理であった場合には、依頼部１５１３へ処理を依頼する。
【０１９４】
内部処理部１５１２は、ＤＬアプリから依頼された処理を呼び出し、その処理結果をＤＬアプリへ返す。
【０１９５】
依頼部１５１３は、仮想化ソフトウェア１００１へＯＳ処理を依頼する。また、依頼部１５１３は、仮想化ソフトウェア１００１から得られる結果をＤＬアプリへ返す。
【０１９６】
依頼判定部１５１１で、アプリＶＭＯＳ内部で行う処理として判定される処理としては、例えば、ダウンロードしたデバドラをインストールする処理、ダウンロードしたデバドラを実行する処理、及びメモリマップ関係の機能に関する処理などがある。
【０１９７】
なお、ＯＳ処理依頼部１５００は、ＯＳ処理依頼を内部で行う処理かどうかを判定するとしたが、これに限定されるものではない。図１９Ｂに示すＯＳ処理依頼部１５００のように、依頼を受けたＯＳ処理に対してＯＳ処理依頼を内部で行う処理かどうかを判定せずに、全ての処理を仮想化ソフトウェア１００１へ依頼するとしてもよい。
【０１９８】
＜アプリＶＭ生成処理＞
汎用ＯＳ１０１１と仮想化ソフトウェア１００１とは、互いに連携しながらＤＬアプリをアプリＶＭＯＳ上で動作させるために、アプリＶＭの生成処理を行う。
【０１９９】
以下、汎用ＯＳ１０１１から仮想化ソフトウェア１００１へアプリＶＭの生成を依頼した時のアプリＶＭ生成処理を、図２０のフローチャートを用いて説明する。
【０２００】
汎用ＯＳ１０１１は、ユーザからのアプリ実行要求に応じて、アプリの起動処理を行う。まず、汎用ＯＳ１０１１のアプリロード部１４００は、実行要求されたアプリを不揮発性記憶装置１２４０から取得し（Ｓ１１００）、取得したアプリをメモリ１２２０へ書き込む。
【０２０１】
アプリロード部１４００は、取得したアプリがＤＬアプリかどうか判定する（Ｓ１１０１）。アプリロード部１４００は、取得したアプリがＤＬアプリである時は、「ＯＫ」と判定し、取得したアプリがＤＬアプリではない時には「ＮＧ」と判定する。
【０２０２】
アプリロード部１４００は、ステップＳ１１０１で「ＯＫ」と判定した場合には、仮想化ソフトウェア１００１へ実行要求されたアプリを実行するためのＶＭ（アプリＶＭ）の生成を依頼する。この時、アプリロード部１４００は、取得したアプリを一緒に仮想化ソフトウェア１００１へ送る。
【０２０３】
仮想化ソフトウェア１００１のアプリＶＭ生成部１３００は、アプリＶＭの生成依頼を受けて、生成するアプリＶＭ用のメモリ領域をメモリ１２２０上に確保し、不揮発性記憶装置１２４０からアプリ実行専用ＶＭ１２４１を読み込み、確保したメモリ領域へＶＭ本体１３１１を書き込む（Ｓ１１０２）。その後、アプリＶＭ生成部１３００は、正しいＶＭ本体１３１１が書き込まれたか確認するために、書き込んだＶＭ本体１３１１から検証値を生成する。次に、アプリＶＭ生成部１３００は、生成した検証値と、アプリ実行専用ＶＭ１２４１の検証値１３１２とを比較し、一致するかどうかを検証する。アプリＶＭ生成部１３００は、生成した検証値と、アプリ実行専用ＶＭ１２４１の検証値１３１２とが一致しない場合には、アプリＶＭの生成を中止する。
【０２０４】
なお、ここでは、アプリＶＭ生成部１３００は、ＶＭ本体１３１１をメモリに書き込んだ後に検証値１３１２を確認するとしたが、本発明はこれに限定されるものではない。例えば、アプリＶＭ生成部１３００は、不揮発性記憶装置１２４０からアプリ実行専用ＶＭ１２４１を読み込む前に、ＶＭ本体１３１１の検証値を計算し、計算した検証値と検証値１３１２とが一致するかどうかを検証してもよい。
【０２０５】
また、アプリＶＭ生成部１３００は、ＤＬアプリ用の個別の仮想マシンを生成する際に、ＯＳ１３１５を共通で用いる。例えば、ＤＬアプリＸ１０２２を実行する仮想マシン１００３のアプリＶＭＯＳＸ１０２１と、ＤＬアプリＹ１０３２を実行する仮想マシン１００４のアプリＶＭＯＳＹ１０３１との両方を、ＯＳ１３１５を用いて生成する。具体的には、ＤＬアプリＸ１０２２及びＤＬアプリＹ１０３２が共にＤＬデバドラを含まない場合、アプリＶＭＯＳＸ１０２１とアプリＶＭＯＳＹ１０３１とは同一の機能を有する。また、ＤＬアプリＸ１０２２がＤＬデバドラを含む場合、アプリＶＭ生成部１３００は、ＯＳ１３１５に当該ＤＬデバドラの機能を加えることでアプリＶＭＯＳＸ１０２１を生成する。
【０２０６】
ここで、本発明の実施の形態１に係る機器１１０は、上述したように、ＤＬアプリに対して個別の仮想マシンを生成し、当該仮想マシンでＤＬアプリを実行する。そのため、アプリごとにＯＳが必要となるため、この複数のＯＳを格納しておくための不揮発性記憶装置１２４０の容量が増加するという問題が生じる。これに対して、アプリＶＭ生成部１３００は、共通のＯＳ１３１５を用いて、各アプリ用のＯＳを作成する。これにより、不揮発性記憶装置１２４０には、単一のＯＳ１３１５のみを格納しておくだけでよいので、当該不揮発性記憶装置１２４０の容量を削減できる。
【０２０７】
次に、アプリＶＭ生成部１３００は、汎用ＯＳ１０１１から受け取ったアプリを、メモリ１２２０へ書き込む（Ｓ１１０３）。また、アプリＶＭ生成部１３００は、書き込むアドレスとして、アプリ実行専用ＶＭ１２４１のヘッダ情報１３１０に記載されているアドレスを参照する。また、アプリＶＭ生成部１３００は、アプリ実行専用ＶＭ１２４１とアプリとから生成したアプリＶＭをＶＭ管理部１３０２へ登録し、生成したアプリＶＭに当該アプリＶＭ（仮想マシン）を識別するためのＩＤを付与する。
【０２０８】
次に、アプリＶＭ生成部１３００は、ＶＭ生成処理を依頼した汎用ＯＳ１０１１が動作する仮想マシンのＩＤ（ＩＤ１）と、生成したアプリＶＭのＩＤ（ＩＤ２）とを取得する。また、アプリＶＭ生成部１３００は、ＩＤ１を「親」とし、ＩＤ２を「子」とする親子関係を親子関係管理部１３０４に記憶する（Ｓ１１０４）。
【０２０９】
次に、アプリＶＭ生成部１３００は、生成したアプリＶＭの実行をＶＭ管理部１３０２へ依頼する。これにより、ＶＭ管理部１３０２はアプリＶＭを実行する（Ｓ１１０５）。実行されたアプリＶＭ内で、アプリＶＭＯＳが実行され、更にＤＬアプリが実行される。
【０２１０】
一方、アプリロード部１４００は、ステップＳ１１０１で「ＮＧ」と判定した場合には、取得したアプリを汎用ＯＳ１０１１上で動作するアプリとして汎用ＯＳ１０１１に登録し、当該アプリを実行する（Ｓ１１０６）。
【０２１１】
＜ＯＳ処理依頼時の処理＞
アプリＶＭＯＳＸ１０２１及びアプリＶＭＯＳＹ１０３１は、その上で動作するＤＬアプリＸ１０２２又はＤＬアプリＹ１０３２からＯＳ処理の依頼があった場合に、そのＯＳ処理を仮想化ソフトウェア１００１へ依頼する。仮想化ソフトウェア１００１は、ＯＳ処理の依頼を受けて、その処理が行える汎用ＯＳ１０１１へＯＳ処理を依頼する処理を行う。
【０２１２】
以下、ＤＬアプリからのＯＳ処理依頼の処理を、図２１のフローチャートを用いて説明する。以下の説明では、アプリＶＭＯＳＸ１０２１上で動作するＤＬアプリＸ１０２２からのＯＳ処理依頼を汎用ＯＳ１０１１が処理する場合を説明する。ここで、汎用ＯＳ１０１１が動作する仮想マシン１００２の仮想マシンＩＤを「１」とし、アプリＶＭＯＳＸ１０２１及びＤＬアプリＸ１０２２が動作する仮想マシン１００３の仮想マシンＩＤを「３」とする。また、親子関係管理テーブル１３６０には、図１４のように、親仮想マシンＩＤ「１」、子仮想マシンＩＤ「３」の組が登録されているとする。
【０２１３】
図２１において、ＤＬアプリＸ１０２２は、デバイスへのアクセスなどのシステムコールを発行することで、アプリＶＭＯＳＸ１０２１に対してＯＳ処理を依頼する。依頼を受けたアプリＶＭＯＳＸ１０２１は、依頼されたＯＳ処理がアプリＶＭＯＳＸ１０２１内部で行う処理か、他の仮想マシンへ依頼する処理かを判定する（Ｓ１２００）。アプリＶＭＯＳＸ１０２１は、アプリＶＭＯＳＸ１０２１内部で行う処理である場合には「ＹＥＳ」と判定し、内部で行わない処理の場合には「ＮＯ」と判定する。
【０２１４】
具体的には、アプリＶＭＯＳＸ１０２１は、依頼されたＯＳ処理をアプリＶＭＯＳＸ１０２１が実行できるか否かを判定する。例えば、アプリＶＭＯＳＸ１０２１がＤＬデバドラの機能を含んでおり、依頼されたＯＳ処理が当該ＤＬデバドラの処理である場合、アプリＶＭＯＳＸ１０２１は、当該ＯＳ処理を当該アプリＶＭＯＳＸ１０２１が実行できる（アプリＶＭＯＳＸ１０２１内部で行う処理）と判定する。また、アプリＶＭＯＳＸ１０２１は、依頼されたＯＳ処理が当該ＤＬデバドラの処理以外である場合、当該ＯＳ処理を当該アプリＶＭＯＳＸ１０２１が実行できない（他の仮想マシンへ依頼する処理）と判定する。
【０２１５】
アプリＶＭＯＳＸ１０２１は、ステップＳ１２００で「ＮＯ」と判定した場合には、仮想化ソフトウェア１００１へＯＳ処理を依頼する。仮想化ソフトウェア１００１のＯＳ処理依頼制御部１３０３は、ＯＳ処理を依頼した仮想マシンの「親」の関係にあたる仮想マシンがどの仮想マシンかを判定するために、親子関係管理部１３０４に問い合わせ、「親」の仮想マシンの識別子を取得する（Ｓ１２０１）。問い合わせを受けた親子関係管理部１３０４は、親子関係管理テーブル１３６０を参照し、子仮想マシンＩＤの列からＯＳ処理を依頼した仮想マシンのＩＤ（今の場合「３」）を検索する。次に、親子関係管理部１３０４は、検索したＩＤと対で管理されている親仮想マシンＩＤ（今の場合「１」）を取得し、取得した親仮想マシンＩＤをＯＳ処理依頼制御部１３０３へ通知する。
【０２１６】
次に、ＯＳ処理依頼制御部１３０３は、依頼されたＯＳ処理がポリシーに適合しているかのチェックをポリシー管理部１３０５に依頼する。依頼を受けたポリシー管理部１３０５は、ポリシーテーブル１３７０を参照することによりポリシーをチェックする（Ｓ１２０２）。また、ポリシー管理部１３０５は、ポリシーテーブル１３７０から、その機能を提供している仮想マシンＩＤを取得し、その仮想マシンＩＤが使用禁止を示す特殊なＩＤ（図１５Ａの場合、「０」）になっていないかをチェックする。特殊なＩＤになっていた場合には、ポリシー管理部１３０５は、チェック結果として「ＮＧ」を返す。また、ポリシー管理部１３０５は、特殊なＩＤでなかった場合には、チェック結果として「ＯＫ」を返す。
【０２１７】
ＯＳ処理依頼制御部１３０３は、ステップＳ１２０２のポリシーチェックが「ＯＫ」であったかどうかを判定する（Ｓ１２０３）。
【０２１８】
ＯＳ処理依頼制御部１３０３は、ステップＳ１２０３で「ＯＫ」と判定した場合には、「親」の関係にある仮想マシン１００２で動作している汎用ＯＳ１０１１にＯＳ処理を依頼する。
【０２１９】
汎用ＯＳ１０１１は、依頼されたＯＳ処理を実施し（Ｓ１２０４）、その結果を仮想化ソフトウェア１００１へ通知する。仮想化ソフトウェア１００１は、通知された結果を、アプリＶＭＯＳＸ１０２１へ通知する。更に、アプリＶＭＯＳＸ１０２１が、当該結果をＤＬアプリＸ１０２２へ通知する。
【０２２０】
一方、ＯＳ処理依頼制御部１３０３は、ステップＳ１２０３で「ＮＧ」と判定した場合には、結果としてエラーをアプリＶＭＯＳＸ１０２１へ通知する。
【０２２１】
また、アプリＶＭＯＳＸ１０２１は、ステップＳ１２００で「ＹＥＳ」と判定した場合には、アプリＶＭＯＳＸ１０２１の内部でＯＳ処理を実施する（Ｓ１２０５）。次に、アプリＶＭＯＳＸ１０２１は、実施したＯＳ処理の結果を、ＤＬアプリＸ１０２２へ通知する。
【０２２２】
なお、ここでは、ＤＬアプリＸ１０２２がＯＳ処理を依頼し、汎用ＯＳ１０１１がＯＳ処理を実施する場合に関して説明したが、本発明はこれに限定されるものではない。例えば、他のアプリＶＭで動作するアプリがＯＳ処理依頼を行ってもよいし、汎用ＯＳ１０１１以外のＯＳでＯＳ処理を実施してもよい。
【０２２３】
ここで、本発明の実施の形態１に係る機器１１０は、上述したように、ＤＬアプリに対して個別の仮想マシンを生成し、当該仮想マシンでＤＬアプリを実行する。そのため、仮想マシンごとにＯＳを実行する必要があるので、必要となるハードウェア（メモリ等）が増加するという問題が生じる。これに対して、本発明の実施の形態１に係る機器１１０では、ＤＬアプリ用に生成された仮想マシンは、自身のＯＳが処理できないＯＳ処理を他の仮想マシンに依頼する。これにより、ＤＬアプリ用に生成された仮想マシンのＯＳの機能を削減できるので、必要となるハードウェアを削減できる。例えば、当該ＯＳは、ＯＳ処理を依頼する機能と、ＤＬデバドラの機能とのみを実現できればよい。
【０２２４】
＜アプリ実行専用ＶＭ生成装置１６００の構成図＞
図２２は、本発明の実施の形態１に係るアプリ実行専用ＶＭ生成装置１６００の構成図である。
【０２２５】
図２２に示すアプリ実行専用ＶＭ生成装置１６００は、アプリ実行前停止コード挿入部１６０１と、ＶＭ生成部１６０２と、ＶＭ実行部１６０３と、専用ＶＭ生成部１６０４とを含む。また、アプリ実行専用ＶＭ生成装置１６００は、ＶＭソースコード１６１０が入力され、アプリ実行専用ＶＭ１６２０を出力する。このアプリ実行専用ＶＭ１６２０は、機器１１０及び１１１で、不揮発性記憶装置１２４０にアプリ実行専用ＶＭ１２４１として格納される。
【０２２６】
ＶＭソースコード１６１０は、アプリＶＭＯＳのソースコードと、仮想ハードウェアの設定情報とを含む。アプリＶＭＯＳのソースコードは、アプリＶＭＯＳがその上で動作するアプリをメモリ１２２０へロードする処理の直前に、その旨を示す文字列（停止識別子）が挿入されている（例えば、“ＰＲＥ＿ＡＰＰ＿ＥＸＥＣ：”）。
【０２２７】
アプリ実行前停止コード挿入部１６０１は、ＶＭソースコード１６１０に挿入されている停止識別子を検出して、当該停止識別子を、アプリＶＭＯＳから仮想化ソフトウェア１００１への通知命令（ハイパーコール又はハイパーバイザコール：ｈｙｐｅｒｃａｌｌ）に置き換える。
【０２２８】
ＶＭ生成部１６０２は、ＶＭソースコード１６１０をコンパイル処理及びリンク処理することによりＶＭの実行イメージファイルを作成する。
【０２２９】
ＶＭ実行部１６０３は、仮想化ソフトウェア１００１と同等の機能を有し、ＶＭの実行イメージファイルを実行する。実行されたＶＭは、停止識別子の代わりに埋め込まれた通知命令まで処理を行った後、ＶＭ実行部１６０３への通知処理を行う。ＶＭ実行部１６０３は、この通知を受けてＶＭの処理を停止する。
【０２３０】
専用ＶＭ生成部１６０４は、停止したＶＭの状態（メモリ上のデータ及びＣＰＵのレジスタの値等）と、ＶＭの実行イメージファイルとから、アプリ実行専用ＶＭ１６２０のＶＭ本体１３１１を生成する。更に、専用ＶＭ生成部１６０４は、ヘッダ情報１３１０と検証値１３１２とを生成し、それらを組み合わせてアプリ実行専用ＶＭ１６２０を生成する。
【０２３１】
アプリ実行専用ＶＭ１６２０は、アプリＶＭＯＳが起動し、アプリをロードする直前の状態で停止したＶＭイメージファイルを含む。
【０２３２】
なお、ここでは、アプリをメモリ１２２０へロードする処理の直前に停止識別子が挿入されているとしたが、本発明はこれに限定されるものではない。例えば、アプリをメモリ１２２０へロードした処理の直後に停止識別子が挿入されてもよい。
【０２３３】
また、ここでは、アプリ実行前停止コード挿入部１６０１は、停止識別子を通知命令（ハイパーコール）に置き換えるとしたが、本発明はこれに限定されるものではない。例えば、アプリ実行前停止コード挿入部１６０１は、ＶＭソースコード１６１０を解析することで停止すべき場所を自動的に検出し、検出した場所に通知命令を挿入してもよい。また、通知命令は、ハイパーコールでなく、ブレークポイント命令でもよいし、専用の割り込み命令でもよい。
【０２３４】
以上説明したように、本発明の実施の形態１によれば、汎用ＯＳ１０１１は、アプリ実行時に、実行するアプリがＤＬアプリであるかどうかを判断し、ＤＬアプリであった場合に、ＤＬアプリをそれ専用の仮想マシン（アプリＶＭ）で動作させる。このため、ＤＬアプリが、汎用ＯＳ１０１１上で動作する他のアプリ、及び他のＤＬアプリが使用するデータにアクセスすることを防止することができる。
【０２３５】
また、機器１１０は、ＤＬアプリの実行時に動的にアプリＶＭを生成するため、アプリＶＭが、常時、メモリ１２２０を占有することがない。さらに、アプリＶＭＯＳがＯＳ処理を仮想化ソフトウェア１００１へ依頼する構成にすることで、アプリＶＭＯＳのサイズを小さくすることができる。これにより、アプリＶＭ実行時のメモリ１２２０の利用サイズを減らすことができる。このため、本発明の実施の形態１に係るアプリ配信システム１００は、メモリなどのリソースの少ない携帯電話、及びＴＶなどの家電製品においても利用できる。
【０２３６】
さらに、ＤＬアプリの実行用の仮想マシンのアプリＶＭＯＳを共通化することにより、格納しておくＯＳのデータ量を削減できる。
【０２３７】
さらに、アプリＶＭＯＳは、ＯＳ処理を仮想化ソフトウェア１００１へ依頼するか、アプリＶＭＯＳ内部で処理するかを判定する。このため、汎用ＯＳ１０１１が処理するとセキュリティの観点から問題となる処理に関しては、アプリＶＭＯＳ内部で処理することができる。これにより、ＤＬアプリが攻撃用のアプリであったとしても、汎用ＯＳ１０１１への攻撃を防止することができる。また、仮想化ソフトウェア１００１でＯＳ処理依頼を受けた時に、本来アプリＶＭＯＳ内部で行う処理であるかどうかを判断することで、セキュリティの観点から問題となる処理に関しては、アプリＶＭＯＳ内部と仮想化ソフトウェア１００１との２カ所で判断することになる。このため、アプリＶＭＯＳ内部だけで判断する場合と比べて、セキュリティを向上できる。
【０２３８】
このように、本発明の実施の形態１に係るアプリ配信システム１００は、不正アプリ及び不正デバドラによる情報資産の漏洩及び改竄を防止できる。これにより、ユーザは安心して機器を利用することができる。
【０２３９】
（実施の形態２）
本発明の実施の形態２では、本発明の実施の形態１の構成に対して、アプリＶＭのＯＳ処理を汎用ＯＳ１０１１で処理する機能を持たない構成について説明する。
【０２４０】
以下、本発明の実施の形態２に係る仮想化ソフトウェア１００１と汎用ＯＳ１０１１との構成及び生成処理を説明する。なお、本発明の実施の形態１と同じ構成要素、同じ処理については、同じ符号を用い、説明を省略する。
【０２４１】
＜仮想化ソフトウェア１００１の構成＞
図２３は、本発明の実施の形態２に係る仮想化ソフトウェア１００１のソフトウェア構成図である。
【０２４２】
図２３に示す仮想化ソフトウェア１００１は、アプリＶＭ生成部１３００と、アプリ実行専用ＶＭ取得部１３０１と、ＶＭ管理部１３０２とを含む。
【０２４３】
アプリＶＭ生成部１３００は、仮想化ソフトウェア１００１上で動作する仮想マシンから、ＶＭ（アプリＶＭ）の生成依頼を受けて、アプリ実行専用ＶＭと、仮想マシンから通知されたＤＬアプリとから、ＤＬアプリを実行するためのＶＭ（アプリＶＭ）を生成する。また、アプリＶＭ生成部１３００は、ＶＭ管理部１３０２へ、生成した仮想マシンの管理を依頼する。ここで、アプリＶＭ生成部１３００は、本発明の実施の形態１と異なり、親子を認識し、親子関係管理部へ登録する処理は行わない。
【０２４４】
なお、アプリ実行専用ＶＭ取得部１３０１と、ＶＭ管理部１３０２に関しては、本発明の実施の形態１と同じである。
【０２４５】
＜汎用ＯＳ１０１１の構成＞
図２４は、本発明の実施の形態２に係る汎用ＯＳ１０１１の構成図である。
【０２４６】
図２４に示す汎用ＯＳ１０１１は、アプリロード部１４００と、デバドラＡ１４０２とを含む。汎用ＯＳ１０１１は、本発明の実施の形態１と異なり、他の仮想マシンからのＯＳ処理依頼を受け付けないため、ＯＳ処理依頼受け付けに必要な機能を持たない。
【０２４７】
アプリロード部１４００とデバドラＡ１４０２とに関しては、本発明の実施の形態１と同じである。
【０２４８】
また、本発明の実施の形態２では、アプリＶＭＯＳＸ１０２１及びアプリＶＭＯＳＹ１０３１の構成は、汎用ＯＳ１０１１と同じ構成となる。なお、アプリロード部１４００は、汎用ＯＳ１０１１と同じ構成であってもよいし、図１７Ａに示す構成において、判定部１４１１とＶＭ生成依頼部１４１３とを備えず、アプリ取得部１４１０によりアプリ取得後、すぐにロード部１４１２によりアプリＶＭＯＳ上にロードするとしてもよいし、アプリＶＭＯＳ上で動作しているアプリから他アプリを起動できない構成にしてもよい。
【０２４９】
＜アプリＶＭ生成処理＞
本発明の実施の形態２に係るアプリＶＭの生成処理は、本発明の実施の形態１に係るアプリＶＭ生成処理（図２０）と大部分は同じ処理となる。
【０２５０】
しかし、本発明の実施の形態２に係る仮想化ソフトウェア１００１は、アプリＶＭからのＯＳ処理依頼を制御する機能を持たないため、ステップＳ１１０４の親子関係を登録する処理を行わない。そのため、アプリＶＭ生成部１３００は、アプリ実行専用ＶＭとＤＬアプリとからアプリＶＭを生成（Ｓ１１０２とＳ１１０３）し、ＶＭ管理部１３０２へ登録後、生成したアプリＶＭの実行をＶＭ管理部１３０２へ依頼する。依頼を受けたＶＭ管理部１３０２は、アプリＶＭを実行する（Ｓ１１０５）。
【０２５１】
なお、上記以外の処理は、本発明の実施の形態１と同じ処理である。
【０２５２】
以上説明したように、本発明の実施の形態２によれば、汎用ＯＳ１０１１がアプリ実行時に、ＤＬアプリであるかどうかを判断し、ＤＬアプリであった場合に、ＤＬアプリをそれ専用の仮想マシン（アプリＶＭ）で動作させる。このため、本発明の実施の形態２に係るアプリ配信システム１００は、ＤＬアプリが、汎用ＯＳ１０１１上で動作するアプリ、又は他のＤＬアプリが使用するデータにアクセスすることを防止することができる。
【０２５３】
このように、本発明の実施の形態２に係るアプリ配信システム１００は、不正アプリ及び不正デバドラによる情報資産の漏洩及び改竄を防止できる。これにより、ユーザは安心して機器を利用することができる。
【０２５４】
（実施の形態３）
本発明の実施の形態３では、本発明の実施の形態１の構成に対して、仮想マシンを生成する機能を持たない構成について説明する。
【０２５５】
以下、本発明の実施の形態３に係る仮想化ソフトウェア１００１と汎用ＯＳ１０１１との構成及び生成処理を説明する。なお、本発明の実施の形態１と同じ構成要素、同じ処理については、同じ符号を用い、説明を省略する。
【０２５６】
＜仮想化ソフトウェア１００１の構成＞
図２５は、本発明の実施の形態３に係る仮想化ソフトウェア１００１のソフトウェア構成図である。
【０２５７】
図２５に示す仮想化ソフトウェア１００１は、ＶＭ管理部１３０２と、ＯＳ処理依頼制御部１３０３と、親子関係管理部１３０４と、ポリシー管理部１３０５とを含む。
【０２５８】
なお、ＶＭ管理部１３０２と、ＯＳ処理依頼制御部１３０３と、親子関係管理部１３０４と、ポリシー管理部１３０５とに関しては、本発明の実施の形態１と同じである。
【０２５９】
＜汎用ＯＳ１０１１の構成＞
図２６は、本発明の実施の形態３に係る汎用ＯＳ１０１１の構成図である。
【０２６０】
図２６に示す汎用ＯＳ１０１１は、アプリＶＭＯＳ処理受付部１４０１と、デバドラＡ１４０２とを含む。
【０２６１】
なお、アプリＶＭＯＳ処理受付部１４０１とデバドラＡ１４０２とに関しては、本発明の実施の形態１と同じである。
【０２６２】
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
【０２６３】
（１）上記実施の形態におけるＤＬアプリは、アプリ配信サーバ１２０からダウンロードされるとしたが、これに限定されるものではない。例えば、ＤＬアプリは、開発装置又はＵＳＢ接続したＰＣからインストールされたアプリであってもよいし、機器１１０の出荷時に初めからインストールされていてもよい。
【０２６４】
（２）上記実施の形態における機器１１０及び１１１のソフトウェア構成は、ＲＴＯＳ１０４１を含む仮想マシン１００５がなくてもよいし、汎用ＯＳ１０１１を含む仮想マシン１００２、又はＲＴＯＳ１０４１を含む仮想マシン１００５が複数あってもよい。また、ＯＳを含まない仮想マシンがあってよいし、ＯＳ機能を内包したアプリが動作する仮想マシンがあってもよい。さらに、これらの仮想マシンが、アプリＶＭの生成を仮想化ソフトウェア１００１に依頼してもよい。このとき、それぞれの仮想マシンは別々の親として親子関係管理部１３０４へ登録される。
【０２６５】
（３）上記実施の形態におけるアプリＶＭは、ＤＬアプリ実行時にメモリ１２２０にロードされ、実行されるとしたが、これに限定されるものではない。例えば、仮想化ソフトウェア１００１は、ＤＬアプリ実行前にアプリ実行専用ＶＭ１２４１のみをメモリにロードしておき、ＤＬアプリ実行時にＤＬアプリをメモリ１２２０にロードしてもよい。また、仮想化ソフトウェア１００１は、ＤＬアプリ実行前にアプリ実行専用ＶＭ１２４１とＤＬアプリとを事前にメモリ１２２０にロードしてもよい。
【０２６６】
（４）上記実施の形態におけるアプリ実行専用ＶＭ１２４１は、アプリ実行専用ＶＭ生成装置１６００を用いて、アプリＶＭＯＳが起動し、アプリをロードする直前の状態で停止したＶＭイメージファイルを含むとしたが、これに限定されるものではない。例えば、アプリ実行専用ＶＭ１２４１は、アプリＶＭＯＳが起動する前の状態のＶＭイメージファイルを含んでもよい。このとき、ＤＬアプリごとにアプリＶＭＯＳを起動するとしてもよいし、アプリをロードする直前の状態で停止するアプリＶＭを事前に起動しておき、ＤＬアプリ実行時に、アプリをロードする直前の状態で停止したアプリＶＭのコピーを作成し、そのコピーしたアプリＶＭでＤＬアプリを実行してもよい。
【０２６７】
（５）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、及びマウスなどから構成されるコンピュータシステムである。前記ＲＡＭ又はハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【０２６８】
（６）上記の各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ及びＲＡＭなどを含むコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０２６９】
また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全てを含むように１チップ化されてもよい。
【０２７０】
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０２７１】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
【０２７２】
（７）上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしてもよい。前記ＩＣカード又は前記モジュールは、マイクロプロセッサ、ＲＯＭ及びＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカード又は前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカード又は前記モジュールは、その機能を達成する。このＩＣカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
【０２７３】
（８）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０２７４】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、又は半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０２７５】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、又はデータ放送等を経由して伝送するものとしてもよい。
【０２７６】
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０２７７】
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０２７８】
（９）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０２７９】
本発明は、ダウンロードしたアプリ及びデバドラを用いる情報処理装置に適用できる。また、本発明は、当該情報処理装置を搭載した携帯電話、及びＴＶなどの家電製品に有用である。
【符号の説明】
【０２８０】
１０  ハードウェア
２０、１００１  仮想化ソフトウェア
３０、４０、７０、８０、１００２、１００３、１００４、１００５  仮想マシン
６０  ＶＭＭ
７２、１３１５  ＯＳ
９０  ＶＭ生成装置
１００  アプリ配信システム
１１０、１１１  機器
１２０  アプリ配信サーバ
１３０  開発装置
１０００  通常のソフトウェア実行環境（通常環境）
１０１０、１０２０、１０３０、１０４０、１３１６  仮想ハードウェア
１０１１  汎用ＯＳ
１０１２  ダウンロード制御アプリ
１０１３  アプリＡ
１０１４  アプリＢ
１０２１  アプリＶＭＯＳＸ
１０２２、１２４２  ＤＬアプリＸ
１０３１  アプリＶＭＯＳＹ
１０３２、１２４３  ＤＬアプリＹ
１０４１  ＲＴＯＳ
１０４２  通話ソフトウェア
１１００  安全なソフトウェア実行環境（保護環境）
１１０１  セキュアＯＳ
１１０２  セキュアブート部
１２００  システムＬＳＩ
１２０１  ＣＰＵ
１２０２  ＩＰＬ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）
１２０３  実行環境切替部
１２０４  内部保護メモリ
１２２０  メモリ
１２４０  不揮発性記憶装置
１２４１、１６２０  アプリ実行専用ＶＭ
１３００  アプリＶＭ生成部
１３０１  アプリ実行専用ＶＭ取得部
１３０２  ＶＭ管理部
１３０３  ＯＳ処理依頼制御部
１３０４  親子関係管理部
１３０５  ポリシー管理部
１３１０  ヘッダ情報
１３１１  ＶＭ本体
１３１２  検証値
１３５０  仮想マシン管理テーブル
１３６０  親子関係管理テーブル
１３７０、１３７１  ポリシーテーブル
１４００  アプリロード部
１４０１  アプリＶＭＯＳ処理受付部
１４０２  デバドラＡ
１４１０  アプリ取得部
１４１１  判定部
１４１２  ロード部
１４１３  ＶＭ生成依頼部
１５００  ＯＳ処理依頼部
１５０１  デバドラＢ
１５１０  ＯＳ処理受付部
１５１１  依頼判定部
１５１２  内部処理部
１５１３  依頼部
１６００  アプリ実行専用ＶＭ生成装置
１６０１  アプリ実行前停止コード挿入部
１６０２  ＶＭ生成部
１６０３  ＶＭ実行部
１６０４  専用ＶＭ生成部
１６１０  ＶＭソースコード
２０００  アプリ保持部
２００１  アプリ受信処理部
２００２  アプリ送信処理部
３０００  パッケージ生成部
３００１  設定ファイル生成部
３００２  鍵ペア保持部
３００３  鍵ペア生成部
３００４  デバッグ処理部
３００５  アップロード処理部
３１００  コンパイラ
３１０１  リンカ
３１０２  パッケージ生成ツール
３１１０  ソースコード
３１２０  ダウンロードパッケージ
３１３０  秘密鍵
３１３１、３２０４  公開鍵証明書
３１３２、３２０２  設定ファイル
３２００  アプリ
３２０１  デバドラ
３２０３  アプリ署名リスト
【図１】
2011114655.tif 000003
【図２】
2011114655.tif 000004
【図３】
2011114655.tif 000005
【図４】
2011114655.tif 000006
【図５】
2011114655.tif 000007
【図６】
2011114655.tif 000008
【図７】
2011114655.tif 000009
【図８】
2011114655.tif 000010
【図９】
2011114655.tif 000011
【図１０】
2011114655.tif 000012
【図１１】
2011114655.tif 000013
【図１２】
2011114655.tif 000014
【図１３】
2011114655.tif 000015
【図１４】
2011114655.tif 000016
【図１５Ａ】
2011114655.tif 000017
【図１５Ｂ】
2011114655.tif 000018
【図１６】
2011114655.tif 000019
【図１７Ａ】
2011114655.tif 000020
【図１７Ｂ】
2011114655.tif 000021
【図１８Ａ】
2011114655.tif 000022
【図１８Ｂ】
2011114655.tif 000023
【図１９Ａ】
2011114655.tif 000024
【図１９Ｂ】
2011114655.tif 000025
【図２０】
2011114655.tif 000026
【図２１】
2011114655.tif 000027
【図２２】
2011114655.tif 000028
【図２３】
2011114655.tif 000029
【図２４】
2011114655.tif 000030
【図２５】
2011114655.tif 000031
【図２６】
2011114655.tif 000032
【図２７】
2011114655.tif 000033
【図２８】
2011114655.tif 000034
【手続補正書】
【提出日】平成23年12月28日(2011.12.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の仮想マシンを搭載し、
前記複数の仮想マシンを管理する仮想マシン管理部を備える情報処理装置であって、
前記仮想マシン管理部は、
プログラムを実行するための仮想マシンを生成するアプリＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）生成部を備え、
前記複数の仮想マシンの一つである第１の仮想マシンは、当該第１の仮想マシンで動作可能な第１のプログラムを、当該第１の仮想マシンで動作させるか、当該第１の仮想マシン以外の他の仮想マシンで動作させるかを判定し、
前記アプリＶＭ生成部は、前記第１の仮想マシンにより、前記第１のプログラムを他の仮想マシンで動作させると判定された場合に、前記第１のプログラムを実行するための第２の仮想マシンを生成し、
前記第１の仮想マシンは、前記第１のプログラムが他の機器から取得されたプログラムである場合、前記第１のプログラムを他の仮想マシンで動作させると判定し、
前記第２の仮想マシンは、
当該第２の仮想マシンのオペレーティングシステムで実行できない処理であるＯＳ処理の実行を他の仮想マシンに依頼するＯＳ処理依頼を前記仮想マシン管理部へ送るＯＳ処理依頼部を備え、
前記仮想マシン管理部は、さらに、
前記第２の仮想マシンから前記ＯＳ処理依頼があった時に、他の仮想マシンへ前記ＯＳ処理を依頼するＯＳ処理依頼制御部と、
前記ＯＳ処理依頼により実現する機能ごとに、当該機能の前記ＯＳ処理依頼を他の仮想マシンに依頼可能か否かを判定するポリシー管理部とを備え、
前記ＯＳ処理依頼制御部は、前記ＯＳ処理依頼を依頼可能であると前記ポリシー管理部が判定した場合、前記第１の仮想マシンへ前記ＯＳ処理を依頼する
情報処理装置。
【請求項２】
（削除）
【請求項３】
前記第１の仮想マシンは、前記第１のプログラムが他の機器から取得されたデバイスドライバソフトウェアを含む場合、前記第１のプログラムを他の仮想マシンで動作させると判定する
請求項１に記載の情報処理装置。
【請求項４】
前記情報処理装置は、さらに、
ＶＭ用ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）プログラムを記憶する記憶部を備え、
前記第１の仮想マシンは、さらに、前記第１のプログラムと異なる、当該第１の仮想マシンで動作可能な第２のプログラムを、当該第１の仮想マシンで動作させるか、前記他の仮想マシンで動作させるかを判定し、
前記アプリＶＭ生成部は、前記第１の仮想マシンにより、前記第２のプログラムを前記他の仮想マシンで動作させると判定された場合に、前記第２のプログラムを実行するための第３の仮想マシンを生成し、
前記アプリＶＭ生成部は、前記第２の仮想マシン用のオペレーティングシステムと、前記第３の仮想マシン用のオペレーティングシステムとの両方を、前記ＶＭ用ＯＳプログラムを用いて生成する
請求項１又は３に記載の情報処理装置。
【請求項５】
（削除）
【請求項６】
前記仮想マシン管理部は、さらに、
前記複数の仮想マシンの親子関係を管理する親子関係管理部とを備え、
前記親子関係管理部は、前記仮想マシンの生成を依頼した前記第１の仮想マシンを親とし、当該依頼に応じて生成した前記第２の仮想マシンを子として親子関係を管理し、
前記ＯＳ処理依頼制御部は、前記第２の仮想マシンから前記ＯＳ処理依頼があった時に、前記第２の仮想マシンの親として管理されている前記第１の仮想マシンへ前記ＯＳ処理を依頼する
請求項１に記載の情報処理装置。
【請求項７】
（削除）
【請求項８】
前記ＯＳ処理依頼部は、前記第１のプログラムが他の機器から取得されたデバイスドライバソフトウェアを含み、かつ、前記ＯＳ処理を当該デバイスドライバソフトウェアが処理可能な場合、前記ＯＳ処理を前記第２の仮想マシンで処理すると判定し、前記ＯＳ処理を当該デバイスドライバソフトウェアが処理できない場合、前記ＯＳ処理依頼を前記仮想マシン管理部へ送る
請求項１に記載の情報処理装置。
【請求項９】
情報処理装置で動作する仮想マシンを生成する仮想マシン生成方法であって、
当該第１の仮想マシンで動作可能な第１のプログラムを、当該第１の仮想マシンで動作させるか、当該第１の仮想マシン以外の他の仮想マシンで動作させるかを前記第１の仮想マシンが判定するステップと、
前記第１のプログラムを他の仮想マシンで動作させると判定された場合に、前記第１のプログラムを実行するための第２の仮想マシンを生成するステップとを含み、
前記第１のプログラムが他の機器から取得されたプログラムである場合、前記第１のプログラムを他の仮想マシンで動作させると判定し、
前記第２の仮想マシンが、当該第２の仮想マシンのオペレーティングシステムで実行できない処理であるＯＳ処理の実行を他の仮想マシンに依頼するＯＳ処理依頼を出力し、
前記ＯＳ処理依頼により実現する機能ごとに、当該機能の前記ＯＳ処理依頼を他の仮想マシンに依頼可能か否かを判定し、
前記ＯＳ処理依頼を依頼可能であると判定した場合、前記第１の仮想マシンへ前記ＯＳ処理を依頼する
仮想マシン生成方法。
【請求項１０】
請求項９に記載の仮想マシン生成方法をコンピュータに実行させる
プログラム。
【請求項１１】
請求項１０に記載のプログラムを記録した
コンピュータ読み取り可能な記録媒体。
【請求項１２】
ネットワークを利用してプログラムを配信するアプリ配信システムであって、
前記アプリ配信システムは、
請求項１に記載の情報処理装置と、
アプリ配信サーバと
を含み、
前記アプリ配信サーバは、
配信するプログラムを保持するアプリ保持部と、
前記情報処理装置へプログラムを送信するアプリ送信処理部とを備え、
前記第１の仮想マシンは、前記第１のプログラムが前記アプリ送信処理部により送信されたプログラムである場合、前記第１のプログラムを他の仮想マシンで動作させると判定する
アプリ配信システム。
【請求項１３】
複数の仮想マシンを搭載し、
前記複数の仮想マシンを管理する仮想マシン管理部を備える半導体集積回路であって、
前記仮想マシン管理部は、
プログラムを実行するための仮想マシンを生成するアプリＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）生成部を備え、
前記複数の仮想マシンの一つである第１の仮想マシンは、当該第１の仮想マシンで動作可能な第１のプログラムを、当該第１の仮想マシンで動作させるか、当該第１の仮想マシン以外の仮想マシンで動作させるかを判定し、
前記アプリＶＭ生成部は、前記第１の仮想マシンにより、前記第１のプログラムを他の仮想マシンで動作させると判定された場合に、前記第１のプログラムを実行するための第２の仮想マシンを生成し、
前記第１の仮想マシンは、前記第１のプログラムが他の機器から取得されたプログラムである場合、前記第１のプログラムを他の仮想マシンで動作させると判定し、
前記第２の仮想マシンは、
当該第２の仮想マシンのオペレーティングシステムで実行できない処理であるＯＳ処理の実行を他の仮想マシンに依頼するＯＳ処理依頼を前記仮想マシン管理部へ送るＯＳ処理依頼部を備え、
前記仮想マシン管理部は、さらに、
前記第２の仮想マシンから前記ＯＳ処理依頼があった時に、他の仮想マシンへ前記ＯＳ処理を依頼するＯＳ処理依頼制御部と、
前記ＯＳ処理依頼により実現する機能ごとに、当該機能の前記ＯＳ処理依頼を他の仮想マシンに依頼可能か否かを判定するポリシー管理部とを備え、
前記ＯＳ処理依頼制御部は、前記ＯＳ処理依頼を依頼可能であると前記ポリシー管理部が判定した場合、前記第１の仮想マシンへ前記ＯＳ処理を依頼する
半導体集積回路。
【請求項１４】
前記ＯＳ処理依頼制御部は、コールバック関数、専用の割り込み、又はシステムコールを利用して、他の仮想マシンへ前記ＯＳ処理を依頼する
請求項１に記載の情報処理装置。
【請求項１５】
前記アプリ実行専用ＶＭプログラムは、仮想マシン用のオペレーティングシステムが起動し、プログラムをロードする直前の状態で停止したＶＭイメージファイルを含む
請求項４に記載の情報処理装置。
【手続補正書】
【提出日】平成24年3月2日(2012.3.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の仮想マシンを搭載し、前記複数の仮想マシンを管理する仮想マシン管理部を備える情報処理装置であって、
前記仮想マシン管理部は、
プログラムを実行するための仮想マシンを生成するアプリＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）生成部を備え、
前記複数の仮想マシンの一つである第１の仮想マシンは、当該第１の仮想マシンで動作可能な第１のプログラムを、当該第１の仮想マシンで動作させるか、当該第１の仮想マシン以外の他の仮想マシンで動作させるかを判定し、
前記アプリＶＭ生成部は、前記第１の仮想マシンにより、前記第１のプログラムを他の仮想マシンで動作させると判定された場合に、前記第１のプログラムを実行するための第２の仮想マシンを生成し、
前記第１の仮想マシンは、前記第１のプログラムが他の機器から取得されたプログラムである場合、前記第１のプログラムを他の仮想マシンで動作させると判定し、
前記第２の仮想マシンは、
当該第２の仮想マシンのオペレーティングシステムで実行できない処理であるＯＳ処理の実行を他の仮想マシンに依頼するＯＳ処理依頼を前記仮想マシン管理部へ送るＯＳ処理依頼部を備え、
前記仮想マシン管理部は、さらに、
前記第２の仮想マシンから前記ＯＳ処理依頼があった時に、他の仮想マシンへ前記ＯＳ処理を依頼するＯＳ処理依頼制御部と、
前記ＯＳ処理依頼により実現する機能ごとに、当該機能の前記ＯＳ処理依頼を他の仮想マシンに依頼可能か否かを判定するポリシー管理部とを備え、
前記ＯＳ処理依頼制御部は、前記ＯＳ処理依頼を依頼可能であると前記ポリシー管理部が判定した場合、前記第１の仮想マシンへ前記ＯＳ処理を依頼する
情報処理装置。
【請求項２】
前記第１の仮想マシンは、前記第１のプログラムが他の機器から取得されたデバイスドライバソフトウェアを含む場合、前記第１のプログラムを他の仮想マシンで動作させると判定する
請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、さらに、
ＶＭ用ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）プログラムを記憶する記憶部を備え、
前記第１の仮想マシンは、さらに、前記第１のプログラムと異なる、当該第１の仮想マシンで動作可能な第２のプログラムを、当該第１の仮想マシンで動作させるか、前記他の仮想マシンで動作させるかを判定し、
前記アプリＶＭ生成部は、前記第１の仮想マシンにより、前記第２のプログラムを前記他の仮想マシンで動作させると判定された場合に、前記第２のプログラムを実行するための第３の仮想マシンを生成し、
前記アプリＶＭ生成部は、前記第２の仮想マシン用のオペレーティングシステムと、前記第３の仮想マシン用のオペレーティングシステムとの両方を、前記ＶＭ用ＯＳプログラムを用いて生成する
請求項１又は２に記載の情報処理装置。
【請求項４】
前記仮想マシン管理部は、さらに、
前記複数の仮想マシンの親子関係を管理する親子関係管理部とを備え、
前記親子関係管理部は、前記仮想マシンの生成を依頼した前記第１の仮想マシンを親とし、当該依頼に応じて生成した前記第２の仮想マシンを子として親子関係を管理し、
前記ＯＳ処理依頼制御部は、前記第２の仮想マシンから前記ＯＳ処理依頼があった時に、前記第２の仮想マシンの親として管理されている前記第１の仮想マシンへ前記ＯＳ処理を依頼する
請求項１に記載の情報処理装置。
【請求項５】
前記ＯＳ処理依頼部は、前記第１のプログラムが他の機器から取得されたデバイスドライバソフトウェアを含み、かつ、前記ＯＳ処理を当該デバイスドライバソフトウェアが処理可能な場合、前記ＯＳ処理を前記第２の仮想マシンで処理すると判定し、前記ＯＳ処理を当該デバイスドライバソフトウェアが処理できない場合、前記ＯＳ処理依頼を前記仮想マシン管理部へ送る
請求項１に記載の情報処理装置。
【請求項６】
前記ＯＳ処理依頼制御部は、コールバック関数、専用の割り込み、又はシステムコールを利用して、他の仮想マシンへ前記ＯＳ処理を依頼する
請求項１に記載の情報処理装置。
【請求項７】
前記第２の仮想マシンは、仮想マシン用のオペレーティングシステムが起動し、プログラムをロードする直前の状態で停止したＶＭイメージファイルを含む
請求項３に記載の情報処理装置。
【請求項８】
複数の仮想マシンを搭載し、前記複数の仮想マシンを管理する仮想マシン管理部を備える情報処理装置における仮想マシン生成方法であって、
前記仮想マシン管理部が、プログラムを実行するための仮想マシンを生成するアプリＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）生成ステップと、
前記複数の仮想マシンの一つである第１の仮想マシンが、当該第１の仮想マシンで動作可能な第１のプログラムを、当該第１の仮想マシンで動作させるか、当該第１の仮想マシン以外の他の仮想マシンで動作させるかを判定する第１判定ステップとを含み、
前記アプリＶＭ生成ステップでは、前記第１の仮想マシンにより、前記第１のプログラムを他の仮想マシンで動作させると判定された場合に、前記第１のプログラムを実行するための第２の仮想マシンを生成し、
前記仮想マシン生成方法は、さらに、
前記第１の仮想マシンが、前記第１のプログラムが他の機器から取得されたプログラムである場合、前記第１のプログラムを他の仮想マシンで動作させると判定する第２判定ステップと、
前記第２の仮想マシンが、当該第２の仮想マシンのオペレーティングシステムで実行できない処理であるＯＳ処理の実行を他の仮想マシンに依頼するＯＳ処理依頼を前記仮想マシン管理部へ送るＯＳ処理依頼ステップと、
前記仮想マシン管理部が、前記第２の仮想マシンから前記ＯＳ処理依頼があった時に、他の仮想マシンへ前記ＯＳ処理を依頼するＯＳ処理依頼制御ステップと、
前記仮想マシン管理部が、前記ＯＳ処理依頼により実現する機能ごとに、当該機能の前記ＯＳ処理依頼を他の仮想マシンに依頼可能か否かを判定するポリシー管理ステップとを含み、
前記ＯＳ処理依頼制御ステップでは、前記ＯＳ処理依頼を依頼可能であると前記ポリシー管理ステップで判定された場合、前記第１の仮想マシンへ前記ＯＳ処理を依頼する
仮想マシン生成方法。
【請求項９】
請求項８に記載の仮想マシン生成方法をコンピュータに実行させる
プログラム。
【請求項１０】
請求項９に記載のプログラムを記録した
コンピュータ読み取り可能な記録媒体。
【請求項１１】
ネットワークを利用してプログラムを配信するアプリ配信システムであって、
前記アプリ配信システムは、
請求項１に記載の情報処理装置と、
アプリ配信サーバと
を含み、
前記アプリ配信サーバは、
配信するプログラムを保持するアプリ保持部と、
前記情報処理装置へプログラムを送信するアプリ送信処理部とを備え、
前記第１の仮想マシンは、前記第１のプログラムが前記アプリ送信処理部により送信されたプログラムである場合、前記第１のプログラムを他の仮想マシンで動作させると判定する
アプリ配信システム。
【請求項１２】
複数の仮想マシンを搭載し、
前記複数の仮想マシンを管理する仮想マシン管理部を備える半導体集積回路であって、
前記仮想マシン管理部は、
プログラムを実行するための仮想マシンを生成するアプリＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）生成部を備え、
前記複数の仮想マシンの一つである第１の仮想マシンは、当該第１の仮想マシンで動作可能な第１のプログラムを、当該第１の仮想マシンで動作させるか、当該第１の仮想マシン以外の仮想マシンで動作させるかを判定し、
前記アプリＶＭ生成部は、前記第１の仮想マシンにより、前記第１のプログラムを他の仮想マシンで動作させると判定された場合に、前記第１のプログラムを実行するための第２の仮想マシンを生成し、
前記第１の仮想マシンは、前記第１のプログラムが他の機器から取得されたプログラムである場合、前記第１のプログラムを他の仮想マシンで動作させると判定し、
前記第２の仮想マシンは、
当該第２の仮想マシンのオペレーティングシステムで実行できない処理であるＯＳ処理の実行を他の仮想マシンに依頼するＯＳ処理依頼を前記仮想マシン管理部へ送るＯＳ処理依頼部を備え、
前記仮想マシン管理部は、さらに、
前記第２の仮想マシンから前記ＯＳ処理依頼があった時に、他の仮想マシンへ前記ＯＳ処理を依頼するＯＳ処理依頼制御部と、
前記ＯＳ処理依頼により実現する機能ごとに、当該機能の前記ＯＳ処理依頼を他の仮想マシンに依頼可能か否かを判定するポリシー管理部とを備え、
前記ＯＳ処理依頼制御部は、前記ＯＳ処理依頼を依頼可能であると前記ポリシー管理部が判定した場合、前記第１の仮想マシンへ前記ＯＳ処理を依頼する
半導体集積回路。
【国際調査報告】
2011114655.tif 000035
2011114655.tif 000036
2011114655.tif 000037
2011114655.tif 000038