(57)【特許請求の範囲】
【請求項１】
ハードウェア上で動作するハイパーバイザーを有する情報処理装置の情報処理方法であって、
前記ハイパーバイザーによって実現された複数の仮想マシンの各々に対応する、前記情報処理装置に接続される外部機器の機器識別情報と該機器識別情報によって識別される前記外部機器に対する優先度とを含む利用条件情報を、取得する取得ステップと、
前記利用条件情報における、前記情報処理装置に接続された前記外部機器の前記機器識別情報に対応する、最も高い前記優先度に対応する前記仮想マシンに、前記ハードウェアであるＵＳＢホストハードウェアの排他的利用権を割当てる割当ステップと、
を含む情報処理方法。
【請求項２】
前記取得ステップは、
複数の前記仮想マシンの各々に対応する前記利用条件情報と、前記仮想マシンのマシン優先度と、を取得し、
前記割当ステップは、
前記利用条件情報における、前記情報処理装置に接続された前記外部機器の前記機器識別情報に対応する前記優先度が、前記仮想マシン間で同じである場合、前記マシン優先度の高い前記仮想マシンに、前記排他的利用権を割当てる、
請求項１に記載の情報処理方法。
【請求項３】
前記利用条件情報は、対応する前記仮想マシンの稼働状態を示す稼働状態情報を含み、  前記割当ステップは、
前記利用条件情報における、前記情報処理装置に接続された前記外部機器の前記機器識別情報と、前記仮想マシンの現在の稼働状態の前記稼働状態情報と、に対応する、最も高い前記優先度に対応する前記仮想マシンに、前記排他的利用権を割当てる、
請求項１または請求項２に記載の情報処理方法。
【請求項４】
前記ハイパーバイザーが、前記取得ステップと、前記割当ステップと、を実行する、請求項１〜請求項３の何れか１項に記載の情報処理方法。
【請求項５】
複数の前記仮想マシンの少なくとも１つが、前記取得ステップと、前記割当ステップと、を実行する、請求項１〜請求項３の何れか１項に記載の情報処理方法。
【請求項６】
前記仮想マシンは、前記仮想マシンの構成および設定の少なくとも一方に応じて、前記利用条件情報を生成する生成ステップを実行する、請求項１〜請求項５の何れか１項に記載の情報処理方法。
【請求項７】
ハードウェア上で動作するハイパーバイザーを有する情報処理装置であって、
前記ハイパーバイザーによって実現された複数の仮想マシンの各々に対応する、前記情報処理装置に接続される外部機器の機器識別情報と該機器識別情報によって識別される前記外部機器に対する優先度とを含む利用条件情報を、取得する取得部と、
前記利用条件情報における、前記情報処理装置に接続された前記外部機器の前記機器識別情報に対応する、最も高い前記優先度に対応する前記仮想マシンに、前記ハードウェアであるＵＳＢホストハードウェアの排他的利用権を割当てる割当部と、
を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理方法、および、情報処理装置に関する。
【背景技術】
【０００２】
１つのハードウェアプラットフォーム上で、複数の仮想マシンを動作させる仮想化技術が知られている。仮想化を実現する方法として、ハイパーバイザーと称されるソフトウェアにより、複数の仮想マシンを動かす仮想環境が知られている。仮想環境において、ＣＰＵやメモリ等のハードウェアリソースは、ハイパーバイザーにより、各仮想マシンに割当てられる。各仮想マシンは、自身に割当てられたハードウェアリソースを用いて動作する。
【０００３】
また、１つの仮想マシンが、物理ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートを占有利用するように利用権限を切り替えることで、特定の仮想マシンにＵＳＢ機器を制御させる技術が開示されている（例えば、特許文献１参照）。特許文献１には、仮想マシンの各々に物理ＵＳＢホストコントローラを論理実装してレジスタ状態を制御することで、物理ＵＳＢホストコントローラが制御するＵＳＢポートに対して、１つの仮想デバイスに制御権を与える技術が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来では、物理ＵＳＢホストコントローラの状態を仮想マシンにエミュレーションさせる必要があり、処理効率が悪かった。また、従来では、仮想マシンの各々に応じた排他制御を行うことは困難であった。すなわち、従来では、複数の仮想マシンの実現された情報処理装置において、効率よく仮想マシンにハードウェアリソースを割当てることは困難であった。
【０００５】
本発明は、上記に鑑みてなされたものであって、複数の仮想マシンの実現された情報処理装置において、仮想マシンにハードウェアリソースを効率よく割当てることができる、情報処理方法、および、情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、本発明は、ハードウェア上で動作するハイパーバイザーを有する情報処理装置の情報処理方法であって、前記ハイパーバイザーによって実現された複数の仮想マシンの各々に対応する、前記情報処理装置に接続される外部機器の機器識別情報と該機器識別情報によって識別される前記外部機器に対する優先度とを含む利用条件情報を、取得する取得ステップと、前記利用条件情報における、前記情報処理装置に接続された前記外部機器の前記機器識別情報に対応する、最も高い前記優先度に対応する前記仮想マシンに、前記ハードウェアであるＵＳＢホストハードウェアの排他的利用権を割当てる割当ステップと、を含む。
【発明の効果】
【０００７】
本発明によれば、複数の仮想マシンの実現された情報処理装置において、仮想マシンにハードウェアリソースを効率よく割当てることができる、という効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、情報処理装置のハードウェア構成の一例を示す模式図である。
【図２】図２は、情報処理装置の構成の一例を示す模式図である。
【図３】図３は、利用条件情報のデータ構成の一例を示す模式図である。
【図４】図４は、情報処理装置で実行する処理の手順の一例を示す、シーケンス図である。
【図５】図５は、読取・割当処理の手順の一例を示すフローチャートである。
【図６】図６は、利用条件情報とマシン優先度のデータ構成の一例を示す模式図である。
【図７】図７は、読取・割当処理の手順の一例を示す、フローチャートである。
【図８】図８は、情報処理装置の構成の一例を示す模式図である。
【図９】図９は、利用条件情報のデータ構成の一例を示す模式図である。
【図１０】図１０は、情報処理装置で実行する処理の手順の一例を示す、シーケンス図である。
【図１１】図１１は、情報処理装置で実行する処理の手順の一例を示す、シーケンス図である。
【図１２】図１２は、情報処理装置の構成の一例を示す模式図である。
【図１３】図１３は、情報処理装置で実行する処理の手順の一例を示す、シーケンス図である。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照しながら、本実施の形態の情報処理方法、および、情報処理装置の実施の形態を詳細に説明する。なお、本明細書において、同じ構成および機能を示す部分には、同じ符号を付与し、詳細な説明を省略する場合がある。
【００１０】
（第１の実施の形態）
図１は、本実施の形態の情報処理装置１０のハードウェア構成の一例を示す模式図である。情報処理装置１０は、ＳｏＣ１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１４、ＮＡＮＤ１５、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１６、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１７、ＬＣＤ１８、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ホストコントローラ１９、キーマイコン２０、ＨＤＭＩ（登録商標）（Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）２１、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）２２、およびＵＳＢペリフェラル２３を備える。
【００１１】
ＳｏＣ１３は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）や各種のバス機能を含む。ＳｏＣ１３は、ＲＡＭ１４におけるコントローラのソフトウェア処理を行うための演算器である。ＳｏＣ１３には、ＲＡＭ１４、ＮＡＮＤ１５、ＡＳＩＣ１７、ＬＣＤ１８、ＵＳＢホストコントローラ１９、キーマイコン２０、およびＨＤＭＩ２１が電気的に接続されている。
【００１２】
ＲＡＭ１４は、ＣＰＵ動作時に利用される主メモリである。ＮＡＮＤ１５は、コントローラ上で動作するソフトウェアを格納するストレージである。ＬＣＤ１８は、各種画像を表示する表示デバイスである。キーマイコン２０は、ユーザによる操作部の操作指示を受付ける。ＨＤＭＩ２１は、映像・音声をデジタル信号で伝送する通信インターフェースである。
【００１３】
ＵＳＢホストコントローラ１９は、ポート２４を介して装着されたＵＳＢ機器２８にＳｏＣ１３のバスの使用権を付与する。ＵＳＢホストコントローラ１９は、接続されたＵＳＢ機器２８に対してバスアドレスを動的に割当てると共に、ＵＳＢ機器２８から機器識別情報を取得する（詳細後述）。
【００１４】
ＵＳＢホストコントローラ１９は、例えば、ＥＨＣＩ（Ｅｎｈａｎｃｅｄ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）や、ＯＨＣＩ（Ｏｐｅｎ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）などで実現する。なお、ＵＳＢホストコントローラ１９は、これらに限定されない。
【００１５】
ＵＳＢ機器２８は、外部装置の一例である。ＵＳＢ機器２８は、例えば、マウス、デジタルカメラ、キーボード、ＩＣカードリーダ、ＩＣカードリーダライタ、ＵＳＢメモリ、などのＵＳＢ接続の可能な機器である。なお、ポート２４に接続される外部装置は、情報処理装置１０に接続されることで該情報処理装置１０が各種制御信号を送信可能となる機器であればよい。このため、外部装置は、ＵＳＢ接続の可能な機器に限定されない。
【００１６】
なお、図１には、情報処理装置１０が、３つのポート２４（ポート２４Ａ〜ポート２４Ｃ）を備えた構成である場合を一例として示した。しかし、情報処理装置１０に設けられるポート２４の数は、３つに限定されない。また、図１には、ポート２４Ａ〜ポート２４Ｃの各々に、ＵＳＢ機器２８Ａ〜ＵＳＢ機器２８Ｃがそれぞれ接続される例を示した。しかし、各ポート２４に接続されるＵＳＢ機器２８の種類は、３種類（ＵＳＢ機器２８Ａ〜ＵＳＢ機器２８Ｃ）に限定されない。
【００１７】
ＡＳＩＣ１７は、ＳｏＣ１３と、ＨＤＤ１６と、ＮＩＣ２２およびＵＳＢペリフェラル２３と、の間の通信の調停を行う。ＨＤＤ１６は、各種データを記憶するストレージである。ＮＩＣ２２は、インターネットやＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）に対する通信を制御する。
【００１８】
なお、ＡＳＩＣ１７には、更に、他のハードウェアを接続した構成であってもよい。本実施の形態では、ＡＳＩＣ１７には、例えば、ＦＡＸユニット２５、プロッタ２６、およびスキャナ２７が接続されている。スキャナ２７は、原稿画像を読みとり、画像データを取得する。プロッタ２６は、画像データを記録媒体に形成する画像形成処理を行う。ＦＡＸユニット２５は、例えば、公衆電話回線と接続され、画像データを指定された送信先へ送信する。
【００１９】
次に、本実施の形態の情報処理装置１０の構成を説明する。図２は、本実施の形態の情報処理装置１０の構成の一例を示す模式図である。
【００２０】
情報処理装置１０は、ＵＳＢホストハードウェア３０と、ハイパーバイザー３２と、複数の仮想マシン３４と、を備える。
【００２１】
ＵＳＢホストハードウェア３０は、本発明の情報処理方法および情報処理装置における、ハードウェアの一例である。ＵＳＢホストハードウェア３０は、情報処理装置１０に搭載された物理ハードウェアである。具体的には、ＵＳＢホストハードウェア３０は、ＳｏＣ１３、ＲＡＭ１４、ＮＡＮＤ１５、ＨＤＤ１６、ＡＳＩＣ１７、ＬＣＤ１８、ＵＳＢホストコントローラ１９、キーマイコン２０、ＨＤＭＩ２１、ＮＩＣ２２、ＵＳＢペリフェラル２３、などのハードウェアリソースである。
【００２２】
ハイパーバイザー３２は、本発明におけるハイパーバイザーに相当する。ハイパーバイザー３２は、ハードウェアの仮想化を実現するソフトウェアである。ハイパーバイザー３２は、コンピュータを仮想化し、複数の異なるＯＳ（ゲストＯＳと称する）を並列に実行できるようにするソフトウェアである。
【００２３】
本実施の形態では、ハイパーバイザー３２は、複数の仮想マシン３４を実現する。具体的には、ハイパーバイザー３２は、１台のＵＳＢホストハードウェア３０上に複数の仮想マシン３４を実現し、各々の仮想マシン３４でゲストＯＳを稼働させる。
【００２４】
具体的には、ハイパーバイザー３２は、ＵＳＢホストハードウェア３０のリソースを仮想マシン３４に割当てる。仮想マシン３４は、割当てられたＵＳＢホストハードウェア３０のリソース上で動作する。すなわち、仮想マシン３４は、割当てられたＵＳＢホストハードウェア３０のリソースを利用して、個別のゲストＯＳインスタンスを実行する。なお、以下では、ＵＳＢホストハードウェア３０のリソースを、単に、ＵＳＢホストハードウェア３０と称して説明する場合がある。
【００２５】
本実施の形態では、ハイパーバイザー３２は、複数の仮想マシン３４として、コントローラ仮想マシン３６と、操作部仮想マシン３８と、を実現する場合を一例として説明する。なお、ハイパーバイザー３２によって実現される仮想マシン３４の数は、複数であればよく、２つに限定されない。また、ハイパーバイザー３２によって実現される仮想マシン３４の種類は、コントローラ仮想マシン３６および操作部仮想マシン３８に限定されない。
【００２６】
コントローラ仮想マシン３６および操作部仮想マシン３８は、各々、専用のゲストＯＳとアプリケーションソフトウェアと、を有する。
【００２７】
ここで、記録媒体への画像形成を制御するコントローラと、ユーザによる操作の受付および画像の表示を行う操作部と、を備えた画像形成装置を仮定する。コントローラ仮想マシン３６は、このコントローラを仮想化した仮想マシン３４である。一方、操作部仮想マシン３８は、この操作部を仮想化した仮想マシン３４である。
【００２８】
コントローラ仮想マシン３６は、ＨＶ通信ドライバ３６Ａと、ＵＳＢホストドライバ３６Ｂと、生成部３６Ｃと、を含む。ＨＶ通信ドライバ３６Ａは、ハイパーバイザー３２と通信する。ＵＳＢホストドライバ３６Ｂは、ハイパーバイザー３２によってコントローラ仮想マシン３６にＵＳＢホストハードウェア３０が割当てられた時に、コントローラ仮想マシン３６がＵＳＢホスト制御を実行するためのデバイスドライバである。
【００２９】
ＵＳＢホスト制御とは、情報処理装置１０に接続されたＵＳＢ機器２８やＵＳＢホストハードウェア３０を制御することを示す。すなわち、ハイパーバイザー３２によってＵＳＢホストハードウェア３０の割当てられたコントローラ仮想マシン３６は、ＵＳＢホスト制御を行う。これにより、コントローラ仮想マシン３６は、ＵＳＢ機器２８に対して制御信号を送信する“ホスト”として機能しうる。
【００３０】
また、コントローラ仮想マシン３６は、ＵＳＢホストハードウェア３０が割当てられることで、ＵＳＢホストコントローラ１９、ＡＳＩＣ１７、ＨＤＤ１６、ＮＩＣ２２、ＵＳＢペリフェラル２３、ＦＡＸユニット２５、プロッタ２６、および、スキャナ２７、を仮想環境において制御可能となる。すなわち、コントローラ仮想マシン３６は、ＵＳＢホスト制御を行うことで、これらのＵＳＢホストハードウェア３０を制御する。
【００３１】
生成部３６Ｃは、利用条件情報を生成する。利用条件情報については、後述する。
【００３２】
操作部仮想マシン３８は、ＨＶ通信ドライバ３８Ａと、ＵＳＢホストドライバ３８Ｂと、生成部３８Ｃと、を含む。ＨＶ通信ドライバ３８Ａは、ハイパーバイザー３２と通信する。ＵＳＢホストドライバ３８Ｂは、ハイパーバイザー３２によって操作部仮想マシン３８にＵＳＢホストハードウェア３０が割当てられた時に、操作部仮想マシン３８がＵＳＢホスト制御を実行するためのデバイスドライバである。ＵＳＢホスト制御は、上記と同様である。
【００３３】
ハイパーバイザー３２によってＵＳＢホストハードウェア３０の割当てられた操作部仮想マシン３８は、ＵＳＢホスト制御を行う。これにより、操作部仮想マシン３８は、ＵＳＢ機器２８に対して制御信号を送信する“ホスト”として機能しうる。
【００３４】
また、操作部仮想マシン３８は、ハイパーバイザー３２によってＵＳＢホストハードウェア３０が割当てられることで、ＵＳＢホストコントローラ１９、ＬＣＤ１８、キーマイコン２０、およびＨＤＭＩ２１を、仮想環境において制御可能となる。
【００３５】
生成部３８Ｃは、利用条件情報を生成する。生成部３６Ｃおよび生成部３８Ｃによる、利用条件情報の生成処理は、生成ステップに相当する。
【００３６】
利用条件情報は、複数の仮想マシン３４の各々が、情報処理装置１０に接続されたＵＳＢ機器２８を利用（制御）するときの利用条件を示す情報である。
【００３７】
複数の仮想マシン３４の各々は、各仮想マシン３４の各々に対応する利用条件情報を生成する。すなわち、コントローラ仮想マシン３６の生成部３６Ｃは、コントローラ仮想マシン３６に対応する利用条件情報を生成する。また、操作部仮想マシン３８の生成部３８Ｃは、操作部仮想マシン３８に対応する利用条件情報を生成する。
【００３８】
図３は、利用条件情報４０のデータ構成の一例を示す模式図である。図３（Ａ）は、コントローラ仮想マシン３６に対応する利用条件情報４０Ａのデータ構成の一例を示す模式図である。図３（Ｂ）は、操作部仮想マシン３８に対応する利用条件情報４０Ｂのデータ構成の一例を示す模式図である。なお、利用条件情報４０Ａおよび利用条件情報４０Ｂを総称して説明する場合、利用条件情報４０と称して説明する場合がある。
【００３９】
利用条件情報４０は、機器識別情報と、優先度と、コメントと、を対応づけたデータである。なお、利用条件情報４０は、少なくとも機器識別情報と優先度とを対応づけたものであればよい。
【００４０】
機器識別情報は、ＵＳＢ機器２８を識別するための識別情報である。本実施の形態では、機器識別情報は、ＶｅｎｄｏｒＩＤ、ＰｒｏｄｕｃｔＩＤ、Ｃｌａｓｓ、ＳｕｂＣｌａｓｓ、および、Ｐｒｏｔｏｃｏｌを含む場合を一例として説明する。なお、図３中、“＊”マーク部分は、任意の値でよいことを示す。これらのＶｅｎｄｏｒＩＤ、ＰｒｏｄｕｃｔＩＤ、Ｃｌａｓｓ、ＳｕｂＣｌａｓｓ、および、Ｐｒｏｔｏｃｏｌは、ＵＳＢ規格で定められたものであり、全てのＵＳＢ機器２８が、これらの情報を保持している。本実施の形態では、ＵＳＢ規格で定められたこれらの情報を、機器識別情報として用いる場合を一例として説明する。
【００４１】
コメントは、対応する機器識別情報によって識別されるＵＳＢ機器２８に関する情報である。本実施の形態では、コメントとして、対応する機器識別情報によって識別されるＵＳＢ機器２８の種類が登録されている。
【００４２】
優先度は、仮想マシン３４における、機器識別情報によって識別されるＵＳＢ機器２８に対する優先度を示す。
【００４３】
ここで、仮想マシン３４の種類によって、接続されるＵＳＢ機器２８に対する優先度は異なる。また、ＵＳＢ機器２８の種類によって、仮想マシン３４によるＵＳＢ機器２８に対する優先度は異なる。
【００４４】
コントローラ仮想マシン３６の生成部３６Ｃは、コントローラ仮想マシン３６に応じた優先度を機器識別情報ごとに生成し、利用条件情報４０Ａに登録する。これによって、生成部３６Ｃは、利用条件情報４０Ａを生成する。
【００４５】
例えば、ＵＳＢ機器２８がＩＣカードリーダであると仮定する。ＩＣカードリーダは、コントローラ仮想マシン３６において、利用者の個人認証を行う認証機能上、重要なＵＳＢ機器２８である。このため、コントローラ仮想マシン３６の生成部３６Ｃは、ＩＣカードリーダの機器識別情報に対応する優先度として、高い優先度を示す“Ｈｉｇｈ”を生成する。
【００４６】
また、ＵＳＢ機器２８が、キーボードであると仮定する。キーボードは、コントローラ仮想マシン３６において、他のＵＳＢ機器２８でも代替可能なＵＳＢ機器２８である。このため、コントローラ仮想マシン３６の生成部３６Ｃは、キーボードの機器識別情報に対応する優先度として、低い優先度を示す“Ｌｏｗ”を生成する。
【００４７】
また、ＵＳＢ機器２８がデジタルカメラであると仮定する。デジタルカメラは、コントローラ仮想マシン３６において、例えば、中程度の重要度のＵＳＢ機器２８である。このため、コントローラ仮想マシン３６の生成部３６Ｃは、デジタルカメラの機器識別情報に対応する優先度として、中程度を示す優先度“Ｍｉｄｄｌｅ”を生成する。
【００４８】
なお、生成部３６Ｃは、コントローラ仮想マシン３６の構成および設定の少なくとも一方に基づいて、利用条件情報４０Ａを生成すればよい。なお、生成部３６Ｃは、ユーザによる操作指示に応じて、利用条件情報４０Ａを生成してもよい。
【００４９】
また、生成部３６Ｃは、利用条件情報４０Ａを予め生成してもよいし、コントローラ仮想マシン３６における構成および設定の少なくとも一方が変更されたときに、利用条件情報４０Ａを生成（再生成）してもよい。
【００５０】
操作部仮想マシン３８の生成部３８Ｃは、操作部仮想マシン３８に応じた優先度を機器識別情報ごとに生成し、利用条件情報４０Ｂに登録する。これによって、生成部３８Ｃは、利用条件情報４０Ｂを生成する。
【００５１】
生成部３８Ｃは、操作部仮想マシン３８の構成および設定の少なくとも一方に基づいて、利用条件情報４０Ｂを生成すればよい。また、生成部３８Ｃは、ユーザによる操作指示に応じて、利用条件情報４０Ｂを生成してもよい。なお、生成部３８Ｃは、利用条件情報４０Ｂを予め生成してもよいし、操作部仮想マシン３８における構成および設定の少なくとも一方が変更されたときに、利用条件情報４０Ｂを生成（再生成）してもよい。
【００５２】
図２に戻り、説明を続ける。本実施の形態ではハイパーバイザー３２は、通信部３２Ａと、調停部３２Ｂと、を含む。
【００５３】
通信部３２Ａは、仮想マシン３４の各々に設けられたＨＶ通信ドライバ（ＨＶ通信ドライバ３６Ａ）と、通信を行う。
【００５４】
調停部３２Ｂは、ＵＳＢホストハードウェア３０のリソースを、複数の仮想マシン３４の内、何れの仮想マシン３４に割当てるかを調停する。
【００５５】
調停部３２Ｂは、取得部３２Ｃと、割当部３２Ｄと、を含む。取得部３２Ｃは、取得部、および、取得ステップに相当する。割当部３２Ｄは、割当部、および、割当ステップに相当する。
【００５６】
取得部３２Ｃは、複数の仮想マシン３４の各々に対応する利用条件情報４０を読取る（取得する）。本実施の形態では、取得部３２Ｃは、コントローラ仮想マシン３６から受付けた利用条件情報４０Ａと、操作部仮想マシン３８から受付けた利用条件情報４０Ｂと、を読取る（取得する）。
【００５７】
割当部３２Ｄは、利用条件情報４０における、情報処理装置１０に接続されたＵＳＢ機器２８の機器識別情報に対応する、最も高い優先度に対応する仮想マシン３４に、ＵＳＢホストハードウェア３０の排他的利用権を割当てる。
【００５８】
排他的利用権を割当てる、とは、ＵＳＢホストハードウェア３０のリソースを、最も高い優先度に対応する仮想マシン３４に割当てることを示す。排他的利用権とは、複数の仮想マシン３４の内、１つの仮想マシン３４のみが、独占的に、ＵＳＢホストハードウェア３０を利用する権利を意味する。
【００５９】
例えば、調停部３２Ｂは、情報処理装置１０のポート２４に接続されているＵＳＢ機器２８を確認する。そして、調停部３２Ｂは、接続されているＵＳＢ機器２８の機器識別情報を、該ＵＳＢ機器２８から取得する。
【００６０】
そして、割当部３２Ｄは、仮想マシン３４（コントローラ仮想マシン３６、操作部仮想マシン３８）から受付けた、利用条件情報４０（利用条件情報４０Ａ、利用条件情報４０Ｂ）における、接続されているＵＳＢ機器２８の機器識別情報に対応する優先度を読取る。そして、割当部３２Ｄは、読取った優先度の内、最も高い優先度を特定する。割当部３２Ｄは、特定した優先度を含む利用条件情報４０に対応する仮想マシン３４（コントローラ仮想マシン３６または操作部仮想マシン３８）に、排他的利用権を割当てる。
【００６１】
具体的には、情報処理装置１０に接続されているＵＳＢ機器２８がＩＣカードリーダであったとする。また、このＵＳＢ機器２８の機器識別情報が、“ＶｅｎｄｏｒＩＤ＝０ｘ１２３４，ＰｒｏｃｕｔＩＤ＝０ｘＡＢＣＤ”であったとする。
【００６２】
この場合、割当部３２Ｄは、利用条件情報４０Ａおよび利用条件情報４０Ｂにおける、該機器識別情報に対応する優先度を読取る。例えば、割当部３２Ｄは、利用条件情報４０Ａ（図３（Ａ）参照）から、該機器識別情報に対応する優先度“Ｈｉｇｈ”を読取る。なお、利用条件情報４０Ｂには、該機器識別情報が登録されていないと仮定する（図３（Ｂ）参照）。この場合、割当部３２Ｄは、この優先度“Ｈｉｇｈ”を含む利用条件情報４０Ａに対応するコントローラ仮想マシン３６に、ＵＳＢホストハードウェア３０の排他的利用権を割当てる。
【００６３】
また、例えば、情報処理装置１０に接続されているＵＳＢ機器２８が、キーボードであったと仮定する。また、このＵＳＢ機器２８の機器識別情報が、“ＶｅｎｄｏｒＩＤ＝０ｘ２３４５，ＰｒｏｄｕｃｔＩＤ＝０ｘ０００２”であったと仮定する。
【００６４】
この場合、割当部３２Ｄは、利用条件情報４０Ａおよび利用条件情報４０Ｂにおける、該機器識別情報に対応する優先度を読取る。例えば、割当部３２Ｄは、利用条件情報４０Ｂ（図３（Ｂ）参照）から、該機器識別情報に対応する優先度“Ｌｏｗ”を読取る。なお、利用条件情報４０Ａには、該機器識別情報が登録されていないと仮定する（図３（Ａ）参照）。この場合、割当部３２Ｄは、この優先度“Ｌｏｗ”を含む利用条件情報４０Ｂに対応する操作部仮想マシン３８に、ＵＳＢホストハードウェア３０の排他的利用権を割当てる。
【００６５】
また、情報処理装置１０に接続されているＵＳＢ機器２８が、マウスとデジタルカメラであったと仮定する。また、これらのＵＳＢ機器２８の各々の機器識別情報が、“ＶｅｎｄｏｒＩＤ＝０ｘ２３４５，ＰｒｏｄｕｃｔＩＤ＝０ｘ０００３”と、“Ｃｌａｓｓ＝０ｘ０６，ＳｕｂＣｌａｓｓ＝０ｘ０１，Ｐｒｏｔｏｃｏｌ＝０ｘ０１”であったと仮定する。
【００６６】
この場合、割当部３２Ｄは、利用条件情報４０Ａおよび利用条件情報４０Ｂにおける、これらの機器識別情報の各々に対応する優先度を読取る。例えば、割当部３２Ｄは、利用条件情報４０Ａ（図３（Ａ）参照）から、該機器識別情報“Ｃｌａｓｓ＝０ｘ０６，ＳｕｂＣｌａｓｓ＝０ｘ０１，Ｐｒｏｔｏｃｏｌ＝０ｘ０１”に対応する優先度“Ｍｉｄｄｌｅ”を読取る。また、割当部３２Ｄは、利用条件情報４０Ｂ（図３（Ｂ）参照）から、機器識別情報“ＶｅｎｄｏｒＩＤ＝０ｘ２３４５，ＰｒｏｄｕｃｔＩＤ＝０ｘ０００３”に対応する優先度“Ｌｏｗ”を読取る。
【００６７】
この場合、割当部３２Ｄは、より高い優先度“Ｍｉｄｄｌｅ”の登録されている利用条件情報４０Ａに対応するコントローラ仮想マシン３６に、ＵＳＢホストハードウェア３０の排他的利用権を割当てる。
【００６８】
ＵＳＢホストハードウェア３０の排他的利用権を割当てられた仮想マシン３４（コントローラ仮想マシン３６または操作部仮想マシン３８）は、ＵＳＢホストハードウェア３０を排他的に利用可能な状態となる。
【００６９】
次に、情報処理装置１０で実行する処理の手順の一例を説明する。図４は、情報処理装置１０で実行する処理の手順の一例を示す、シーケンス図である。
【００７０】
まず、調停部３２Ｂが、ＵＳＢホストハードウェア３０を初期化する（ＳＥＱ１００）。次に、調停部３２Ｂが、情報処理装置１０のポート２４に接続されているＵＳＢ機器２８をチェックする（ＳＥＱ１０２）。そして、調停部３２Ｂは、接続されている全てのＵＳＢ機器２８の各々の機器識別情報を、該ＵＳＢ機器２８から取得する（ＳＥＱ１０３）。
【００７１】
次に、ハイパーバイザー３２が、複数の仮想マシン３４を順次起動する。本実施の形態では、ハイパーバイザー３２は、まず、コントローラ仮想マシン３６を起動する（ＳＥＱ１０４）。そして、ハイパーバイザー３２は、該コントローラ仮想マシン３６に対して、ＵＳＢホストハードウェア３０のパススルー設定を行う（ＳＥＱ１０６）。
【００７２】
コントローラ仮想マシン３６に対してパススルー設定を行う、とは、コントローラ仮想マシン３６に対してＵＳＢホストハードウェア３０を一時的に割当てることで、該ＵＳＢホストハードウェア３０をコントローラ仮想マシン３６のみが利用可能とすることを示す。
【００７３】
コントローラ仮想マシン３６は、ＵＳＢホストハードウェア３０を利用して、ＵＳＢホストドライバ３６Ｂを初期化する（ＳＥＱ１０８）。ＳＥＱ１０８では、コントローラ仮想マシン３６は、ＵＳＢホストハードウェア３０の識別と、識別したＵＳＢホストハードウェア３０に応じたソフトウェアリソースの初期化と、を行う。
【００７４】
ＵＳＢホストドライバ３６Ｂの初期化が完了すると、コントローラ仮想マシン３６は、ＵＳＢホストドライバ３６Ｂを休止状態に移行させる（ＳＥＱ１１０）。これによって、コントローラ仮想マシン３６によるＵＳＢホストハードウェア３０の制御が停止される。ＨＶ通信ドライバ３６Ａは、初期化完了と休止状態への移行を示す信号を、ハイパーバイザー３２へ送信する（ＳＥＱ１１２）。
【００７５】
ハイパーバイザー３２の通信部３２Ａが、コントローラ仮想マシン３６から、初期化完了と休止状態への移行を示す信号を受付けると、調停部３２Ｂが、該コントローラ仮想マシン３６に対するパススルー設定を解除する（ＳＥＱ１１４）。
【００７６】
一方、コントローラ仮想マシン３６の生成部３６Ｃは、コントローラ仮想マシン３６の利用条件情報４０Ａを、ＨＶ通信ドライバ３６Ａを介してハイパーバイザー３２へ登録する（ＳＥＱ１１６）。
【００７７】
次に、ハイパーバイザー３２は、操作部仮想マシン３８を起動する（ＳＥＱ１１８）。そして、ハイパーバイザー３２は、該操作部仮想マシン３８に対して、ＵＳＢホストハードウェア３０のパススルー設定を行う（ＳＥＱ１２０）。
【００７８】
操作部仮想マシン３８に対してパススルー設定を行う、とは、操作部仮想マシン３８に対してＵＳＢホストハードウェア３０を一時的に割当てることで、該ＵＳＢホストハードウェア３０を操作部仮想マシン３８のみが利用可能とすることを示す。
【００７９】
操作部仮想マシン３８は、ＵＳＢホストハードウェア３０を利用して、ＵＳＢホストドライバ３８Ｂを初期化する（ＳＥＱ１２２）。ＳＥＱ１２２では、操作部仮想マシン３８は、ＵＳＢホストハードウェア３０の識別と、識別したＵＳＢホストハードウェア３０に応じたソフトウェアリソースの初期化と、を行う。
【００８０】
ＵＳＢホストドライバ３８Ｂの初期化が完了すると、操作部仮想マシン３８は、ＵＳＢホストドライバ３８Ｂを休止状態に移行させる（ＳＥＱ１２４）。これによって、操作部仮想マシン３８によるＵＳＢホストハードウェア３０の制御が停止される。ＨＶ通信ドライバ３８Ａは、初期化完了と休止状態への移行を示す信号を、ハイパーバイザー３２へ送信する（ＳＥＱ１２６）。
【００８１】
ハイパーバイザー３２の通信部３２Ａは、操作部仮想マシン３８から、初期化完了と休止状態への移行を示す信号を受付けると、調停部３２Ｂが該操作部仮想マシン３８に対するパススルー設定を解除する（ＳＥＱ１２８）。
【００８２】
一方、操作部仮想マシン３８の生成部３８Ｃは、操作部仮想マシン３８の利用条件情報４０Ｂを、ＨＶ通信ドライバ３８Ａを介してハイパーバイザー３２へ登録する（ＳＥＱ１３０）。
【００８３】
ハイパーバイザー３２は、実現した複数の全ての仮想マシン３４の各々について、ＳＥＱ１０４〜ＳＥＱ１１６、または、ＳＥＱ１１８〜ＳＥＱ１３０の処理を行うと、ＳＥＱ１３１へ進む。
【００８４】
ＳＥＱ１３１では、調停部３２Ｂの取得部３２Ｃが、仮想マシン３４の各々から登録された利用条件情報４０（利用条件情報４０Ａ、利用条件情報４０Ｂ）を読取る（取得する）（ＳＥＱ１３１）。
【００８５】
次に、調停部３２Ｂの割当部３２Ｄが、ＳＥＱ１３１で読取った利用条件情報４０と、ＳＥＱ１０３で取得した機器識別情報と、を用いて、複数の仮想マシン３４の内の何れか１つに、ＵＳＢホストハードウェア３０の排他的利用権を割当てる（ＳＥＱ１３２）。
【００８６】
次に、調停部３２Ｂの割当部３２Ｄは、ＳＥＱ１３２で排他的利用権を割当てた仮想マシン３４（本実施の形態では、コントローラ仮想マシン３６または操作部仮想マシン３８）に、ＵＳＢホストハードウェア３０のパススルーを設定する（ＳＥＱ１３４）。
【００８７】
ＳＥＱ１３４の処理によって、パススルー設定された仮想マシン３４（コントローラ仮想マシン３６または操作部仮想マシン３８）が、ＵＳＢホストハードウェア３０を排他的に（独占的）に利用可能な状態となる。
【００８８】
ＵＳＢホストハードウェア３０の排他的利用権を割当てられた仮想マシン３４（例えば、コントローラ仮想マシン３６）は、休止していたＵＳＢホストドライバ３６Ｂを再開させる（ＳＥＱ１３６）。そして、コントローラ仮想マシン３６のＵＳＢホストドライバ３６Ｂは、ＵＳＢホストハードウェア３０の利用を開始する（ＳＥＱ１３８）。
【００８９】
次に、読取・割当処理の詳細な手順を説明する。図５は、読取・割当処理の手順の一例を示す、フローチャートである。
【００９０】
まず、調停部３２Ｂが、ＵＳＢホストハードウェア３０を初期化する（ステップＳ２００）。ステップＳ２００の処理は、ＳＥＱ１００（図４参照）と同様である。次に、調停部３２Ｂは、情報処理装置１０の全てのポート２４（ポート２４Ａ〜ポート２４Ｃ）の各々について、ステップＳ２０２〜ステップＳ２０４の処理を実行する。まず、調停部３２Ｂは、ポート２４にＵＳＢ機器２８が接続されているか否かを判断する（ステップＳ２０２）。ステップＳ２０２で肯定判断すると（ステップＳ２０２：Ｙｅｓ）、ステップＳ２０４へ進む。ステップＳ２０４では、調停部３２Ｂは、ポート２４に接続されているＵＳＢ機器２８から、機器識別情報を取得する（ステップＳ２０４）。一方、ステップＳ２０２で否定判断すると（ステップＳ２０２：Ｎｏ）、該ＵＳＢ機器２８についてのステップＳ２０４の処理を行わずに終了する。
【００９１】
調停部３２Ｂは、情報処理装置１０の全てのポート２４（ポート２４Ａ〜ポート２４Ｃ）の各々について、ステップＳ２０２〜ステップＳ２０４の処理を行うと、ステップＳ２０６へ進む。
【００９２】
ステップＳ２０６では、取得部３２Ｃは、全ての仮想マシン３４（コントローラ仮想マシン３６、操作部仮想マシン３８）から、対応する利用条件情報４０を受け取る（ステップＳ２０６）。ステップＳ２０６の処理によって、取得部３２Ｃは、複数の仮想マシン３４の各々に対応する利用条件情報４０を読取る（取得する）。ステップＳ２０６は、取得ステップに相当する。
【００９３】
次に、割当部３２Ｄは、ステップＳ２０６で読取った利用条件情報４０における、ステップＳ２０４で取得した、情報処理装置１０に接続されたＵＳＢ機器２８の機器識別情報に対応する優先度を読取る（ステップＳ２０８）。
【００９４】
そして、割当部３２Ｄは、最も高い優先度に対応する仮想マシン３４に、ＵＳＢホストハードウェア３０の排他的利用権を割当てる（ステップＳ２１０）。ステップＳ２１０は、割当ステップに相当する。そして、本ルーチンを終了する。
【００９５】
以上説明したように、本実施の形態の情報処理方法は、ＵＳＢホストハードウェア３０（ハードウェア）上で動作するハイパーバイザー３２を有する情報処理装置１０の情報処理方法である。そして、本実施の形態の情報処理方法は、取得ステップ（取得部３２Ｃ、ステップＳ２０８）と、割当ステップ（割当部３２Ｄ、ステップＳ２１０）を、含む。
【００９６】
取得ステップでは、ハイパーバイザー３２によって実現された複数の仮想マシン３４（コントローラ仮想マシン３６、操作部仮想マシン３８）の各々に対応する利用条件情報４０（利用条件情報４０Ａ、利用条件情報４０Ｂ）を読取る(取得する)。利用条件情報４０（利用条件情報４０Ａ、利用条件情報４０Ｂ）は、情報処理装置１０に接続されるＵＳＢ機器２８（外部機器）の機器識別情報と、該機器識別情報によって識別されるＵＳＢ機器２８（外部機器）に対する優先度と、を含む。
【００９７】
割当ステップでは、利用条件情報４０における、情報処理装置１０に接続されたＵＳＢ機器２８（外部機器）の機器識別情報に対応する、最も高い優先度に対応する仮想マシン３４（コントローラ仮想マシン３６、または操作部仮想マシン３８）に、ＵＳＢホストハードウェア３０（ハードウェア）の排他的利用権を割当てる。
【００９８】
このように、本実施の形態の情報処理方法では、複数の仮想マシン３４の各々に対応する利用条件情報４０に基づいて、接続されたＵＳＢ機器２８に対する優先度に応じた最適な仮想マシン３４に、ＵＳＢホストハードウェア３０の排他的利用権を割当てる。
【００９９】
従って、本実施の形態の情報処理方法では、複数の仮想マシン３４の実現された情報処理装置１０において、仮想マシン３４にハードウェアリソースを効率よく割当てることができる。
【０１００】
また、本実施の形態の情報処理方法では、ユーザによる設定や操作を必要とせず、最適な仮想マシン３４に、ＵＳＢホストハードウェア３０を効率よく割当てることができる。
【０１０１】
ここで、画像形成装置におけるコントローラと操作部とを仮想化し、１つのＵＳＢホストハードウェア３０上で動作させた場合を想定する（コントローラ仮想マシン３６、操作部仮想マシン３８参照）。
【０１０２】
仮想化を行う前には、コントローラおよび操作部の各々には、ＣＰＵ、メモリ、ＵＳＢホストコントローラなどのＩ／Ｏデバイスが独立して存在している。しかし、仮想化されたコントローラ仮想マシン３６および操作部仮想マシン３８は、１つのＵＳＢホストハードウェア３０を供給する形となる。
【０１０３】
ここで、ＵＳＢホストコントローラ１９に接続されるＵＳＢ機器２８を考えると、従来では、以下のような問題が生じていた。
【０１０４】
同じＵＳＢホストコントローラ１９に接続されたＵＳＢ機器２８であっても、コントローラ仮想マシン３６および操作部仮想マシン３８の構成や状態により、何れの仮想マシン３４にＵＳＢホストハードウェア３０を割当てるかが異なる。従来では、このような割当ての制御は行われていなかった。
【０１０５】
具体的には、ＵＳＢ機器２８としてＩＣカードリーダが接続されている場合を想定する。この場合、画像形成に寄与するハードウェアがスタンバイの状態である場合には、ＩＣカードリーダの制御は、コントローラ仮想マシン３６で行うことが好ましい。この場合、コントローラ仮想マシン３６は、ＩＣカードリーダと通信し、ＩＣカードの接続をチェックすると共に、ＩＣカードからデータの読取りや認証処理などを行う。これらの処理においては、ＩＣカードの接続の有無のチェックのみではなく、認証処理や暗号化処理などの複雑な制御も必要となる。
【０１０６】
一方で、画像形成に寄与するハードウェアが省電力状態である場合には、省電力状態でも動作をしている操作部仮想マシン３８側に、ＵＳＢホストハードウェア３０を割当てることが好ましい。この場合、操作部仮想マシン３８は、ＩＣカードの接続の有無のチェックといった、単純な処理のみを行えばよい。そして、操作部仮想マシン３８は、カード有りを識別した場合には、画像形成に寄与するハードウェアを省電力状態からスタンバイ状態に遷移させると共に、ＩＣカードリーダの制御をコントローラ仮想マシン３６側に移す処理を行う。
【０１０７】
また、ＵＳＢ機器２８としてデジタルカメラが接続されている場合を想定する。コントローラ仮想マシン３６に、ＰｉｃｔＢｒｉｄｇｅ制御のソフトウェアが搭載されている場合には、コントローラ仮想マシン３６がデジタルカメラを制御することが好ましい。一方、コントローラ仮想マシン３６に、ＰｉｃｔＢｒｉｄｇｅ制御のソフトウェアが搭載されていない場合には、操作部仮想マシン３８がデジタルカメラを制御することが好ましい。
【０１０８】
このように、同じＵＳＢホストコントローラ１９に接続されたＵＳＢ機器２８であっても、コントローラ仮想マシン３６および操作部仮想マシン３８の構成や状態により、何れの仮想マシン３４にＵＳＢホストハードウェア３０を割当てるかが異なる。従来では、このような割当ての制御は行われていなかった。
【０１０９】
一方、本実施の形態では、上記構成とすることで、仮想マシン３４にハードウェアリソースを効率よく割当てることができる。
【０１１０】
また、本実施の形態では、仮想マシン３４は、仮想マシン３４の構成および設定の少なくとも一方に応じて、利用条件情報４０を生成する生成ステップ（生成部３６Ｃ、生成部３８Ｃ）を実行することができる。
【０１１１】
このため、本実施の形態の情報処理方法では、仮想マシン３４における構成や設定が変更された場合であっても、変更後の構成や設定に応じた利用条件情報４０を生成することができる。このため、本実施の形態の情報処理方法では、上記効果に加えて、更に、最適な仮想マシン３４に効率よくＵＳＢホストハードウェア３０を割当てることができる。
【０１１２】
また、本実施の形態では、ハイパーバイザー３２が、取得ステップ（取得部３２Ｃ）と割当ステップ（割当部３２Ｄ）とを実行する。このため、本実施の形態の情報処理方法では、簡易な構成で、効率よく仮想マシン３４にＵＳＢホストハードウェア３０を割当てることができる。
【０１１３】
＜変形例１＞
なお、上記実施の形態では、取得部３２Ｃは、複数の仮想マシン３４（コントローラ仮想マシン３６および操作部仮想マシン３８）の各々に対応する利用条件情報４０（利用条件情報４０Ａ、利用条件情報４０Ｂ）を、読取る（取得する）形態を説明した。
【０１１４】
しかし、取得部３２Ｃは、複数の仮想マシン３４の各々に対応する、利用条件情報４０と、仮想マシン３４のマシン優先度と、を読取る（取得する）形態であってもよい。
【０１１５】
この場合、仮想マシン３４（コントローラ仮想マシン３６、操作部仮想マシン３８）の各々の生成部（生成部３６Ｃ、生成部３８Ｃ）は、利用条件情報４０と、仮想マシン３４のマシン優先度と、をハイパーバイザー３２へ登録すればよい。
【０１１６】
図６は、利用条件情報４０と、マシン優先度４１と、のデータ構成の一例を示す模式図である。図６（Ａ）は、コントローラ仮想マシン３６に対応する利用条件情報４０Ａと、マシン優先度４１Ａと、のデータ構成の一例を示す模式図である。利用条件情報４０Ａは、第１の実施の形態と同様である。
【０１１７】
図６（Ｂ）は、操作部仮想マシン３８に対応する利用条件情報４０Ｂと、マシン優先度４１Ｂと、のデータ構成の一例を示す模式図である。利用条件情報４０Ｂは、第１の実施の形態と同様である。
【０１１８】
なお、マシン優先度４１Ａおよびマシン優先度４１Ｂを総称して説明する場合、マシン優先度４１と称して説明する場合がある。
【０１１９】
マシン優先度４１Ａは、コントローラ仮想マシン３６に対する優先度を示す。マシン優先度４１Ｂは、操作部仮想マシン３８に対する優先度を示す。図６に示す例では、マシン優先度４１Ａには“Ｈｉｇｈ”が設定され、マシン優先度４１Ｂには“Ｌｏｗ”が設定されている。これらのマシン優先度４１についても、生成部３６Ｃおよび生成部３８Ｃの各々が生成すればよい。
【０１２０】
割当部３２Ｄは、第１の実施の形態と同様にして、利用条件情報４０における、情報処理装置１０に接続されたＵＳＢ機器２８の機器識別情報に対応する、最も高い優先度に対応する仮想マシン３４に、ＵＳＢホストハードウェア３０の排他的利用権を割当てる。
【０１２１】
ここで、利用条件情報４０における、情報処理装置１０に接続されたＵＳＢ機器２８の機器識別情報に対応する優先度が、仮想マシン３４間で同じである場合がある。詳細には、利用条件情報４０Ａおよび利用条件情報４０Ｂの各々における、情報処理装置１０に接続されているＵＳＢ機器２８の機器識別情報に対応する優先度が、同じである場合がある。
【０１２２】
このような場合、割当部３２Ｄは、高いマシン優先度４１に対応する仮想マシン３４に、ＵＳＢホストハードウェア３０の排他的利用権を割当てればよい。
【０１２３】
具体的には、情報処理装置１０に接続されているＵＳＢ機器２８がキーボードであったとする。また、情報処理装置１０に、２つのキーボードが接続されていたと仮定する。そして、これらのキーボード（ＵＳＢ機器２８）の各々の機器識別情報が、“ＶｅｎｄｏｒＩＤ＝０ｘ１２３４，ＰｒｏｄｕｃｔＩＤ＝０ｘ０００１”、“ＶｅｎｄｏｒＩＤ＝０ｘ２３４５，ＰｒｏｄｕｃｔＩＤ＝０ｘ０００２”の各々であったと仮定する。
【０１２４】
この場合、利用条件情報４０Ａにおける上記機器識別情報に対応する優先度と、利用条件情報４０Ｂにおける上記機器識別情報に対応する優先度と、は、何れも“Ｌｏｗ”である。
【０１２５】
この場合、割当部３２Ｄは、マシン優先度４１Ａおよびマシン優先度４１Ｂの内、より高いマシン優先度４１Ａ“Ｈｉｇｈ”に対応するコントローラ仮想マシン３６に、ＵＳＢホストハードウェア３０の排他的利用権を割当てればよい。
【０１２６】
なお、本変形例においても、情報処理装置１０は、第１の実施の形態と同様の手順（図４参照）を行えばよい。
【０１２７】
次に、本変形例における、読取・割当処理の詳細な手順を説明する。図７は、読取・割当処理の手順の一例を示す、フローチャートである。
【０１２８】
まず、調停部３２Ｂは、第１の実施の形態のステップＳ２００〜ステップＳ２０４（図５参照）と同様にして、ステップＳ３００〜ステップＳ３０４の処理を実行する。
【０１２９】
すなわち、調停部３２Ｂが、ＵＳＢホストハードウェア３０を初期化する（ステップＳ３００）。次に、調停部３２Ｂは、情報処理装置１０の全てのポート２４の各々について、ステップＳ３０２〜ステップＳ３０４の処理を実行する。
【０１３０】
調停部３２Ｂは、情報処理装置１０の全てのポート２４の各々について、ステップＳ３０２〜ステップＳ３０４の処理を行うと、ステップＳ３０６へ進む。
【０１３１】
ステップＳ３０６では、取得部３２Ｃは、全ての仮想マシン３４（コントローラ仮想マシン３６、操作部仮想マシン３８）から、対応する利用条件情報４０およびマシン優先度４１を受け取る（ステップＳ３０６）。ステップＳ３０６の処理によって、取得部３２Ｃは、複数の仮想マシン３４の各々に対応する利用条件情報４０およびマシン優先度４１を読取る（取得する）。
【０１３２】
次に、割当部３２Ｄは、ステップＳ３０６で読取った利用条件情報４０における、ステップＳ３０４で取得した、情報処理装置１０に接続されたＵＳＢ機器２８の機器識別情報に対応する優先度を読取る（ステップＳ３０８）。
【０１３３】
次に、割当部３２Ｄは、利用条件情報４０における該機器識別情報に対応する優先度が、仮想マシン３４間で同じであるか否かを判断する（ステップＳ３１０）。詳細には、割当部３２Ｄは、利用条件情報４０Ａにおける、該機器識別情報に対応する優先度の内の最も高い優先度と、利用条件情報４０Ｂにおける、該機器識別情報に対応する優先度の内の最も高い優先度と、が同じであるか否かを判断する。
【０１３４】
ステップＳ３１０で否定判断すると（ステップＳ３１０：Ｎｏ）、ステップＳ３１２へ進む。ステップＳ３１２では、割当部３２Ｄは、ステップＳ３０８で読取った最も高い優先度に対応する仮想マシン３４に、ＵＳＢホストハードウェア３０の排他的利用権を割当てる（ステップＳ３１２）。そして、本ルーチンを終了する。
【０１３５】
一方、ステップＳ３１０で肯定判断すると（ステップＳ３１０：Ｙｅｓ）、ステップＳ３１４へ進む。ステップＳ３１４では、割当部３２Ｄは、最も高いマシン優先度４１に対応する仮想マシン３４に、ＵＳＢホストハードウェア３０の排他的利用権を割当てる（ステップＳ３１４）。そして、本ルーチンを終了する。
【０１３６】
以上説明したように、本変形例では、取得部３２Ｃ（読取ステップ）は、複数の仮想マシン３４の各々に対応する利用条件情報４０と、仮想マシン３４のマシン優先度４１と、を読取る（取得する）。割当部３２Ｄ（割当ステップ）は、利用条件情報４０（利用条件情報４０Ａ、利用条件情報４０Ｂ）における、情報処理装置１０に接続されたＵＳＢ機器２８（外部機器）の機器識別情報に対応する優先度が仮想マシン３４間で同じである場合、マシン優先度４１の高い仮想マシン３４に、排他的利用権を割当てる。
【０１３７】
このため、本変形例では、接続されたＵＳＢ機器２８の機器識別情報に対応する優先度が、仮想マシン３４間で同じである場合であっても、最適な仮想マシン３４に容易に、ＵＳＢホストハードウェア３０の排他的利用権を割当てることができる。
【０１３８】
（第２の実施の形態）
本実施の形態では、利用条件情報と、仮想マシンの稼働状態を示す稼働状態情報と、に基づいて、排他的利用権を割当てる形態を説明する。
【０１３９】
図１は、本実施の形態の情報処理装置１０Ａのハードウェア構成の一例を示す模式図である。情報処理装置１０Ａのハードウェア構成は、情報処理装置１０のハードウェア構成と同様である。
【０１４０】
次に、本実施の形態の情報処理装置１０Ａの構成を説明する。図８は、本実施の形態の情報処理装置１０Ａの構成の一例を示す模式図である。
【０１４１】
情報処理装置１０Ａは、ＵＳＢホストハードウェア３０と、ハイパーバイザー３３と、複数の仮想マシン３５と、を備える。ＵＳＢホストハードウェア３０は、第１の実施の形態と同様である。
【０１４２】
ハイパーバイザー３３は、複数の仮想マシン３５を実現する。ハイパーバイザー３３は、ＵＳＢホストハードウェア３０を仮想マシン３５に割当てる。仮想マシン３５は、割当てられたＵＳＢホストハードウェア３０上で動作する。
【０１４３】
本実施の形態では、ハイパーバイザー３３は、仮想マシン３５として、コントローラ仮想マシン３７と、操作部仮想マシン３９と、を実現する場合を一例として説明する。なお、ハイパーバイザー３３によって実現される仮想マシン３５の数は、複数であればよく、２つに限定されない。
【０１４４】
コントローラ仮想マシン３７は、コントローラ仮想マシン３６と同様に、記録媒体への画像形成を制御するコントローラを仮想化した仮想マシン３５である。操作部仮想マシン３９は、操作部仮想マシン３８と同様に、ユーザによる操作の受付および画像の表示を行う操作部を仮想化した仮想マシン３５である。なお、仮想マシン３５の種類は、これらに限定されない。
【０１４５】
コントローラ仮想マシン３７は、ＨＶ通信ドライバ３６Ａと、ＵＳＢホストドライバ３６Ｂと、生成部３７Ｃと、状態制御部３７Ｄと、を含む。ＨＶ通信ドライバ３６ＡおよびＵＳＢホストドライバ３６Ｂは、第１の実施の形態と同様である。
【０１４６】
状態制御部３７Ｄは、コントローラ仮想マシン３７の稼働状態を制御する。コントローラ仮想マシン３７の稼働状態は、例えば、予め定めた閾値以上の電力を消費する通常状態や、該閾値未満の電力を消費する省電力状態、である。なお、コントローラ仮想マシン３７の稼働状態の種類は、これらの種類に限定されない。
【０１４７】
状態制御部３７Ｄは、コントローラ仮想マシン３７の稼働状態の遷移や、コントローラ仮想マシン３７の現在の稼働状態の管理などを行う。
【０１４８】
例えば、コントローラ仮想マシン３７が、記録媒体への画像形成および排紙の制御を行わない場合がある。この場合、状態制御部３７Ｄは、プロッタ２６、スキャナ２７、およびＨＤＤ１６などの使用しないリソースの電源を切るように制御することで、コントローラ仮想マシン３７の稼働状態を省電力状態に遷移させる。また、例えば、コントローラ仮想マシン３７が、ネットワーク通信を必要としない状態となる場合がある。この場合、状態制御部３７Ｄは、コントローラ仮想マシン３７による制御を停止することで、コントローラ仮想マシン３７の稼働状態を省電力状態に遷移させる。
【０１４９】
生成部３７Ｃは、利用条件情報を生成する（詳細後述）。
【０１５０】
操作部仮想マシン３９は、ＨＶ通信ドライバ３８Ａと、ＵＳＢホストドライバ３８Ｂと、生成部３９Ｃと、状態制御部３９Ｄと、を含む。ＨＶ通信ドライバ３８ＡおよびＵＳＢホストドライバ３８Ｂは、第１の実施の形態と同様である。
【０１５１】
状態制御部３９Ｄは、操作部仮想マシン３９の稼働状態を制御する。操作部仮想マシン３９の稼働状態は、例えば、予め定めた閾値以上の電力を消費する通常状態や、該閾値未満の電力を消費する省電力状態、である。なお、操作部仮想マシン３９の稼働状態の種類は、これらの状態に限定されない。
【０１５２】
状態制御部３９Ｄは、操作部仮想マシン３９の稼働状態の遷移や、操作部仮想マシン３９の現在の稼働状態の管理などを行う。
【０１５３】
例えば、ユーザによる操作が所定時間以上行われない場合には、ＬＣＤ１８をオフとする場合がある。この場合、状態制御部３９Ｄは、ＬＣＤ１８の電源を切るように制御することで、操作部仮想マシン３９の稼働状態を省電力状態に遷移させる。
【０１５４】
生成部３９Ｃは、利用条件情報を生成する（詳細後述）。生成部３７Ｃおよび生成部３９Ｃは、生成ステップに相当する。
【０１５５】
本実施の形態で用いる利用条件情報は、複数の仮想マシン３５の各々が、情報処理装置１０Ａに接続されたＵＳＢ機器２８を利用（制御）するときの利用条件と、仮想マシン３５の稼働状態と、を示す情報である。
【０１５６】
複数の仮想マシン３５の各々は、各仮想マシン３５の各々に対応する利用条件情報を生成する。すなわち、コントローラ仮想マシン３７の生成部３７Ｃは、コントローラ仮想マシン３７に対応する利用条件情報を生成する。また、操作部仮想マシン３９の生成部３９Ｃは、操作部仮想マシン３９に対応する利用条件情報を生成する。
【０１５７】
図９は、利用条件情報４２のデータ構成の一例を示す模式図である。図９（Ａ）は、コントローラ仮想マシン３７に対応する利用条件情報４２Ａのデータ構成の一例を示す模式図である。図９（Ｂ）は、操作部仮想マシン３９に対応する利用条件情報４２Ｂのデータ構成の一例を示す模式図である。なお、利用条件情報４２Ａおよび利用条件情報４２Ｂを総称して説明する場合、利用条件情報４２と称して説明する場合がある。
【０１５８】
利用条件情報４２は、機器識別情報と、稼働状態情報と、優先度と、コメントと、を対応づけたデータである。なお、利用条件情報４２は、少なくとも機器識別情報と稼働状態情報と優先度とを対応づけたものであればよい。
【０１５９】
機器識別情報、優先度、およびコメントは、第１の実施の形態で説明した利用条件情報４０と同様である。すなわち、利用条件情報４２は、利用条件情報４０に、更に、稼働状態情報を含めたものである。
【０１６０】
稼働状態情報は、対応する仮想マシン３５の稼働状態を示す情報である。利用条件情報４２における稼働状態情報は、対応する機器識別情報によって識別されるＵＳＢ機器２８に対する優先度が、該機器識別情報に対応する優先度であるときの、仮想マシン３５の稼働状態を示す情報である。
【０１６１】
図９（Ａ）に示す例では、コントローラ仮想マシン３７に対応する利用条件情報４２Ａには、稼働状態情報として、スタンバイ、エンジンＯＦＦ、の少なくとも一方が登録されている。スタンバイは、上記通常状態に相当する。エンジンＯＦＦは、上記省電力状態に相当する。
【０１６２】
図９（Ｂ）に示す例では、操作部仮想マシン３９に対応する利用条件情報４２Ｂには、稼働状態情報として、ＬＣＤ−ＯＮ、ＬＣＤ−ＯＦＦ、の少なくとも一方が登録されている。ＬＣＤ−ＯＮは、上記通常状態に相当する。ＬＣＤ−ＯＦＦは、上記省電力状態に相当する。
【０１６３】
ここで、仮想マシン３５の種類、および仮想マシン３５の稼働状態によって、接続されるＵＳＢ機器２８に対する優先度は異なる。また、ＵＳＢ機器２８の種類によって、仮想マシン３５によるＵＳＢ機器２８に対する優先度は異なる。
【０１６４】
このため、コントローラ仮想マシン３７の生成部３７Ｃは、コントローラ仮想マシン３７に応じた優先度を、機器識別情報および稼働状態情報ごとに生成し、利用条件情報４２Ａに登録する。これによって、生成部３７Ｃは、利用条件情報４２Ａを生成する。
【０１６５】
なお、生成部３７Ｃは、コントローラ仮想マシン３７の構成および設定の少なくとも一方に基づいて、利用条件情報４２Ａを生成すればよい。また、生成部３７Ｃは、コントローラ仮想マシン３７における構成および設定の少なくとも一方が変更されたときに、利用条件情報４２Ａを再生成することが好ましい。
【０１６６】
操作部仮想マシン３９の生成部３９Ｃは、操作部仮想マシン３９に応じた優先度を、機器識別情報および稼働状態情報ごとに生成し、利用条件情報４２Ｂに登録する。これによって、生成部３９Ｃは、利用条件情報４２Ｂを生成する。
【０１６７】
なお、生成部３９Ｃは、操作部仮想マシン３９におけるソフトウェアの構成および設定の少なくとも一方に基づいて、利用条件情報４２Ｂを生成すればよい。また、生成部３９Ｃは、操作部仮想マシン３９における構成および設定の少なくとも一方が変更されたときに、利用条件情報４２Ｂを再生成することが好ましい。
【０１６８】
図８に戻り、説明を続ける。本実施の形態ではハイパーバイザー３３は、通信部３３Ａと、調停部３３Ｂと、を含む。
【０１６９】
通信部３３Ａは、仮想マシン３５に設けられたＨＶ通信ドライバ（ＨＶ通信ドライバ３６Ａ）と、通信を行う。
【０１７０】
調停部３３Ｂは、ＵＳＢホストハードウェア３０を、複数の仮想マシン３５の内、何れの仮想マシン３５に割当てるかを調停する。
【０１７１】
調停部３３Ｂは、取得部３３Ｃと、割当部３３Ｄと、を含む。取得部３３Ｃは、取得部、および、取得ステップに相当する。割当部３３Ｄは、割当部、および、割当ステップに相当する。
【０１７２】
取得部３３Ｃは、複数の仮想マシン３５の各々に対応する利用条件情報４２を読取る（取得する）（図９参照）。本実施の形態では、取得部３３Ｃは、コントローラ仮想マシン３７から受付けた利用条件情報４２Ａと、操作部仮想マシン３９から受付けた利用条件情報４２Ｂと、を読取る（取得する）。
【０１７３】
割当部３３Ｄは、利用条件情報４２における、情報処理装置１０Ａに接続されたＵＳＢ機器２８の機器識別情報と、仮想マシン３５の現在の稼働状態の稼働状態情報と、に対応する、最も高い優先度に対応する仮想マシン３５に、排他的利用権を割当てる。
【０１７４】
詳細には、調停部３３Ｂは、情報処理装置１０Ａのポート２４に接続されているＵＳＢ機器２８を確認する。そして、調停部３３Ｂは、接続されているＵＳＢ機器２８の機器識別情報を、該ＵＳＢ機器２８から取得する。
【０１７５】
そして、割当部３３Ｄは、仮想マシン３５（コントローラ仮想マシン３７、操作部仮想マシン３９）から受付けた、利用条件情報４２（利用条件情報４２Ａ、利用条件情報４２Ｂ）における、接続されているＵＳＢ機器２８の機器識別情報と、仮想マシン３５の各々の現在の稼働状態の稼働状態情報と、に対応する優先度を読取る。そして、割当部３３Ｄは、読取った優先度の内、最も高い優先度を特定する。割当部３３Ｄは、特定した優先度を含む利用条件情報４２に対応する仮想マシン３５（コントローラ仮想マシン３７または操作部仮想マシン３９）に、排他的利用権を割当てる。
【０１７６】
このため、本実施の形態では、ＵＳＢホストハードウェア３０は、接続されたＵＳＢ機器２８の機器識別情報と、仮想マシン３５の現在の稼働状態情報と、に対応する、最も高い優先度に対応する仮想マシン３５に割当てられる。
【０１７７】
次に、情報処理装置１０Ａで実行する処理の手順の一例を説明する。図１０は、情報処理装置１０Ａで実行する処理の手順の一例を示す、シーケンス図である。
【０１７８】
なお、ＳＥＱ４００〜ＳＥＱ４１４、およびＳＥＱ４２０〜ＳＥＱ４３０は、第１の実施の形態におけるＳＥＱ１００〜ＳＥＱ１１４、およびＳＥＱ１１８〜ＳＥＱ１２８、の各々と同様である。
【０１７９】
まず、調停部３３Ｂが、ＵＳＢホストハードウェア３０を初期化する（ＳＥＱ４００）。次に、調停部３３Ｂが、情報処理装置１０Ａのポート２４に接続されているＵＳＢ機器２８をチェックする（ＳＥＱ４０２）。そして、調停部３３Ｂは、接続されている全てのＵＳＢ機器２８の各々の機器識別情報を、該ＵＳＢ機器２８から取得する（ＳＥＱ４０３）。
【０１８０】
次に、ハイパーバイザー３３が、複数の仮想マシン３５を順次起動する。本実施の形態では、ハイパーバイザー３３は、まず、コントローラ仮想マシン３７を起動する（ＳＥＱ４０４）。そして、ハイパーバイザー３３は、該コントローラ仮想マシン３７に対して、ＵＳＢホストハードウェア３０のパススルー設定を行う（ＳＥＱ４０６）。
【０１８１】
コントローラ仮想マシン３７は、ＵＳＢホストハードウェア３０を利用して、ＵＳＢホストドライバ３６Ｂを初期化する（ＳＥＱ４０８）。ＵＳＢホストドライバ３６Ｂの初期化が完了すると、コントローラ仮想マシン３７は、ＵＳＢホストドライバ３６Ｂを休止状態に移行させる（ＳＥＱ４１０）。ＨＶ通信ドライバ３６Ａは、初期化完了と休止状態への移行を示す信号を、ハイパーバイザー３３へ送信する（ＳＥＱ４１２）。
【０１８２】
ハイパーバイザー３３の通信部３３Ａは、コントローラ仮想マシン３７から、初期化完了と休止状態への移行を示す信号を受付けると、調停部３３Ｂが、該コントローラ仮想マシン３７に対するパススルー設定を解除する（ＳＥＱ４１４）。
【０１８３】
一方、コントローラ仮想マシン３７の状態制御部３７Ｄは、コントローラ仮想マシン３７の現在の稼働状態を示す稼働状態情報を、調停部３３Ｂへ通知する（ＳＥＱ４１６）。例えば、状態制御部３７Ｄは、“スタンバイ”などの稼働状態情報を、調停部３３Ｂへ通知する。
【０１８４】
コントローラ仮想マシン３７の生成部３７Ｃは、コントローラ仮想マシン３７の利用条件情報４２Ａを、ＨＶ通信ドライバ３６Ａを介してハイパーバイザー３３へ登録する（ＳＥＱ４１８）。
【０１８５】
次に、ハイパーバイザー３３は、操作部仮想マシン３９を起動する（ＳＥＱ４２０）。そして、ハイパーバイザー３３は、該操作部仮想マシン３９に対して、ＵＳＢホストハードウェア３０のパススルー設定を行う（ＳＥＱ４２２）。
【０１８６】
操作部仮想マシン３９は、ＵＳＢホストハードウェア３０を利用して、ＵＳＢホストドライバ３８Ｂを初期化する（ＳＥＱ４２４）。ＵＳＢホストドライバ３８Ｂの初期化が完了すると、操作部仮想マシン３９は、ＵＳＢホストドライバ３８Ｂを休止状態に移行させる（ＳＥＱ４２６）。ＨＶ通信ドライバ３８Ａは、初期化完了と休止状態への移行を示す信号を、ハイパーバイザー３３へ送信する（ＳＥＱ４２８）。
【０１８７】
ハイパーバイザー３３の通信部３３Ａは、操作部仮想マシン３９から、初期化完了と休止状態への移行を示す信号を受付けると、調停部３３Ｂが、該操作部仮想マシン３９に対するパススルー設定を解除する（ＳＥＱ４３０）。
【０１８８】
一方、操作部仮想マシン３９の状態制御部３９Ｄは、操作部仮想マシン３９の現在の稼働状態を示す稼働状態情報を、調停部３３Ｂへ通知する（ＳＥＱ４３２）。例えば、状態制御部３９Ｄは、“ＬＣＤ−ＯＮ”などの稼働状態情報を、調停部３３Ｂへ通知する。
【０１８９】
操作部仮想マシン３９の生成部３９Ｃは、操作部仮想マシン３９の利用条件情報４２Ｂを、ＨＶ通信ドライバ３８Ａを介してハイパーバイザー３３へ登録する（ＳＥＱ４３４）。
【０１９０】
ハイパーバイザー３３は、実現した複数の全ての仮想マシン３５の各々について、ＳＥＱ４０４〜ＳＥＱ４１８、または、ＳＥＱ４２０〜ＳＥＱ４３４の処理を行うと、ＳＥＱ４３５へ進む。
【０１９１】
ＳＥＱ４３５では、調停部３３Ｂの取得部３３Ｃが、仮想マシン３５の各々から登録された利用条件情報４２（利用条件情報４２Ａ、利用条件情報４２Ｂ）を読取る（取得する）（ＳＥＱ４３５）。
【０１９２】
次に、調停部３３Ｂの割当部３３Ｄが、ＳＥＱ４３５で読取った利用条件情報４２と、ＳＥＱ４０３で取得した機器識別情報と、を用いて、複数の仮想マシン３５の内の何れか１つに、ＵＳＢホストハードウェア３０の排他的利用権を割当てる（ＳＥＱ４３６）。
【０１９３】
次に、調停部３３Ｂの割当部３３Ｄは、ＳＥＱ４３６で排他的利用権を割当てた仮想マシン３５（本実施の形態では、コントローラ仮想マシン３７または操作部仮想マシン３９）に、ＵＳＢホストハードウェア３０のパススルーを設定する（ＳＥＱ４３８）。
【０１９４】
ＳＥＱ４３８の処理によって、パススルー設定された仮想マシン３５（コントローラ仮想マシン３７または操作部仮想マシン３９）が、ＵＳＢホストハードウェア３０を排他的（独占的）に利用可能な状態となる。
【０１９５】
ＵＳＢホストハードウェア３０の排他的利用権を割当てられた仮想マシン３５（例えば、コントローラ仮想マシン３７）は、休止していたＵＳＢホストドライバ３６Ｂを再開させる（ＳＥＱ４４０）。そして、コントローラ仮想マシン３７のＵＳＢホストドライバ３６Ｂは、ＵＳＢホストハードウェア３０の利用を開始する（ＳＥＱ４４２）。そして、本シーケンスを終了する。
【０１９６】
次に、仮想マシン３５の各々の稼働状態が変化したときの、処理の手順の一例を説明する。図１１は、仮想マシン３５の稼働状態が変化したときに、情報処理装置１０Ａで実行する処理の手順の一例を示す、シーケンス図である。
【０１９７】
操作部仮想マシン３９の状態制御部３９Ｄは、操作部仮想マシン３９の稼働状態が変化すると（ＳＥＱ５００）、操作部仮想マシン３９の現在の稼働状態を示す稼働状態情報を、調停部３３Ｂへ通知する（ＳＥＱ５０２）。例えば、状態制御部３９Ｄは、“ＬＣＤ−ＯＦＦ”などの稼働状態情報を、調停部３３Ｂへ通知する。
【０１９８】
調停部３３Ｂの割当部３３Ｄは、ＳＥＱ５０２で新たに受付けた、操作部仮想マシン３９の現在の稼働状態情報と、利用条件情報４２（図９参照）と、を用いて、排他的利用権の再割当てを行う（ＳＥＱ５０４）。
【０１９９】
すなわち、割当部３３Ｄは、情報処理装置１０Ａに接続されたＵＳＢ機器２８の機器識別情報と、新たに受付けた稼働状態情報と、に対応する、最も高い優先度に対応する仮想マシン３５に、排他的利用権を割当てる。なお、ＳＥＱ５０４の処理前に割当てられていた仮想マシン３５と、再割当て後の仮想マシン３５と、が同じである場合には、再割当てを行わなくてもよい。ここでは、同じであったと仮定して説明を続ける。
【０２００】
なお、ＳＥＱ５０４の処理による再割当て前の仮想マシン３５と、再割当て後の仮想マシン３５と、が異なる場合には、調停部３３Ｂは、図１０のＳＥＱ４３６〜ＳＥＱ４４２と同様の処理を行えばよい。
【０２０１】
次に、コントローラ仮想マシン３７の状態制御部３７Ｄは、コントローラ仮想マシン３７の稼働状態が変化すると（ＳＥＱ５０６）、コントローラ仮想マシン３７の現在の稼働状態を示す稼働状態情報を、調停部３３Ｂへ通知する（ＳＥＱ５０８）。例えば、状態制御部３７Ｄは、“エンジンＯＦＦ”などの稼働状態情報を、調停部３３Ｂへ通知する。
【０２０２】
調停部３３Ｂの割当部３３Ｄは、ＳＥＱ５０８で新たに受付けた、コントローラ仮想マシン３７の現在の稼働状態情報と、利用条件情報４２（図９参照）と、を用いて、排他的利用権の再割当てを行う（ＳＥＱ５１０）。
【０２０３】
ここで、ＳＥＱ５１０の処理による再割当て前の仮想マシン３５と、再割当て後の仮想マシン３５と、が異なるものであったと仮定する。具体的には、ＳＥＱ５１０の再割当て前の仮想マシン３５は、コントローラ仮想マシン３７であり、再割当て後の仮想マシン３５が、操作部仮想マシン３９であったと仮定する。
【０２０４】
この場合、調停部３３Ｂは、コントローラ仮想マシン３７に対するパススルー設定を解除する（ＳＥＱ５１２、ＳＥＱ５１４）。
【０２０５】
次に、割当部３３Ｄは、ＳＥＱ５１０で排他的利用権を割当てた仮想マシン３５（例えば、操作部仮想マシン３９）に、ＵＳＢホストハードウェア３０のパススルーを設定する（ＳＥＱ５１６）。ＳＥＱ５１６の処理によって、パススルー設定された操作部仮想マシン３９が、ＵＳＢホストハードウェア３０に対する排他的利用権を有する状態となる。
【０２０６】
ＵＳＢホストハードウェア３０の排他的利用権を割当てられた操作部仮想マシン３９は、休止していたＵＳＢホストドライバ３８Ｂを再開させる（ＳＥＱ５１８）。そして、操作部仮想マシン３９のＵＳＢホストドライバ３８Ｂは、ＵＳＢホストハードウェア３０の利用を開始する（ＳＥＱ５２０）。そして、本シーケンスを終了する。
【０２０７】
以上説明したように、利用条件情報４２は、対応する仮想マシン３５の稼働状態を示す稼働状態情報を更に含んでいてもよい。この場合、割当部３３Ｄ（割当部、割当ステップ）は、利用条件情報４２における、情報処理装置１０Ａに接続されたＵＳＢ機器２８（外部機器）の機器識別情報と、仮想マシン３５の現在の稼働状態の稼働状態情報と、に対応する、最も高い優先度に対応する仮想マシン３５に、排他的利用権を割当てればよい。
【０２０８】
このため、本実施の形態の情報処理装置１０Ａでは、第１の実施の形態の効果に加えて、仮想マシン３５の稼働状態に応じた、最適な割当てが可能となる。
【０２０９】
また、仮想マシン３５の稼働状態が変化した場合、割当部３３Ｄは、稼働状態の変化に応じて、排他的利用権の再割当てを行うことができる。
【０２１０】
このため、本実施の形態の情報処理装置１０Ａでは、更に、最適な割当てが可能となる。
【０２１１】
（第３の実施の形態）
なお、上記実施の形態および変形例では、ハイパーバイザー３２およびハイパーバイザー３３の各々が、取得部３２Ｃおよび割当部３２Ｄ、または、取得部３３Ｃおよび割当部３３Ｄを含む形態を説明した。
【０２１２】
しかし、取得部３２Ｃ（取得部３３Ｃ）および割当部３２Ｄ（割当部３３Ｄ）を、仮想マシン側に設けた構成であってもよい。
【０２１３】
図１は、本実施の形態の情報処理装置１０Ｂのハードウェア構成の一例を示す模式図である。情報処理装置１０Ｂのハードウェア構成は、情報処理装置１０のハードウェア構成と同様である。
【０２１４】
次に、本実施の形態の情報処理装置１０Ｂの構成を説明する。図１２は、本実施の形態の情報処理装置１０Ｂの構成の一例を示す模式図である。
【０２１５】
情報処理装置１０Ｂは、ＵＳＢホストハードウェア３０と、ハイパーバイザー３１と、複数の仮想マシン４５と、を備える。ＵＳＢホストハードウェア３０は、第１の実施の形態と同様である。
【０２１６】
ハイパーバイザー３１は、複数の仮想マシン４５を実現する。本実施の形態では、ハイパーバイザー３１は、仮想マシン４５として、コントローラ仮想マシン４７と、操作部仮想マシン４９と、を実現する場合を一例として説明する。なお、ハイパーバイザー３１によって実現される仮想マシン４５の数は、複数であればよく、２つに限定されない。
【０２１７】
コントローラ仮想マシン４７は、コントローラ仮想マシン３６と同様に、記録媒体への画像形成を制御するコントローラを仮想化した仮想マシン４５である。操作部仮想マシン４９は、操作部仮想マシン３８と同様に、ユーザによる操作の受付および画像の表示を行う操作部を仮想化した仮想マシン４５である。
【０２１８】
コントローラ仮想マシン４７は、ＨＶ通信ドライバ３６Ａと、ＵＳＢホストドライバ３６Ｂと、生成部３７Ｃと、状態制御部３７Ｄと、調停部４７Ｅと、を含む。ＨＶ通信ドライバ３６ＡおよびＵＳＢホストドライバ３６Ｂは、第１の実施の形態と同様である。生成部３７Ｃおよび状態制御部３７Ｄは、第２の実施の形態と同様である。
【０２１９】
調停部４７Ｅは、ＵＳＢホストハードウェア３０のリソースを、何れの仮想マシン４５に割当てるか調停する。調停部４７Ｅは、他の仮想マシン４５との間で通信（ＶＭ（仮想マシン）間通信）を行い、調整を行う。
【０２２０】
調停部４７Ｅは、取得部４７Ｃと、割当部４７Ｄと、を含む。取得部４７Ｃは、取得部、および、取得ステップに相当する。割当部４７Ｄは、割当部、および、割当ステップに相当する。
【０２２１】
なお、本実施の形態では、他の仮想マシン４５も、調停部（本実施の形態では調停部４９Ｅ）を備える。本実施の形態では、複数の仮想マシン４５の内、何れか１つの仮想マシン４５に設けられた調停部が、他の仮想マシン４５の調停部を制御するものとして説明する。本実施の形態では、一例として、コントローラ仮想マシン４７に設けられた調停部４７Ｅが、他の仮想マシン４５に設けられた調停部を制御する場合を説明する。
【０２２２】
調停部４７Ｅは、取得部４７Ｃと、割当部４７Ｄと、を備える。取得部４７Ｃは、上記実施の形態の取得部３３Ｃと同様である。すなわち、取得部４７Ｃは、複数の仮想マシン４５の各々に対応する利用条件情報４２を読取る（取得する）（図９参照）。なお、取得部４７Ｃは、第１の実施の形態で用いた利用条件情報４０（図３参照）を読取る（取得する）形態であってもよい。
【０２２３】
割当部４７Ｄは、上記実施の形態の割当部３３Ｄと同様である。すなわち、割当部４７Ｄは、利用条件情報４２における、情報処理装置１０Ｂに接続されたＵＳＢ機器２８の機器識別情報と、仮想マシン４５の現在の稼働状態の稼働状態情報と、に対応する、最も高い優先度に対応する仮想マシン４５に、排他的利用権を割当てる。
【０２２４】
操作部仮想マシン４９は、ＨＶ通信ドライバ３８Ａと、ＵＳＢホストドライバ３８Ｂと、生成部３９Ｃと、状態制御部３９Ｄと、調停部４９Ｅと、を含む。ＨＶ通信ドライバ３８ＡおよびＵＳＢホストドライバ３８Ｂは、第１の実施の形態と同様である。生成部３９Ｃおよび状態制御部３９Ｄは、第２の実施の形態と同様である。
【０２２５】
調停部４９Ｅは、ＵＳＢホストハードウェア３０のリソースを、何れの仮想マシン４５に割当てるか調停する。調停部４９Ｅは、他の仮想マシン４５との間で通信（ＶＭ（仮想マシン）間通信）を行い、調停を行う。
【０２２６】
なお、複数の仮想マシン４５の何れか１つに、調停部を設けた構成であってもよい。
【０２２７】
本実施の形態では、ハイパーバイザー３１は、調停部を備えない構成である。ハイパーバイザー３１は、通信部３１Ａと、設定部３１Ｂと、を備える。通信部３１Ａは、仮想マシン４５に設けられえたＨＶ通信ドライバ（ＨＶ通信ドライバ３６Ａ）と、通信を行う。
【０２２８】
設定部３１Ｂは、仮想マシン４５から受信した、パススルー設定ＯＮまたはパススルー設定ＯＦＦを示す要求信号に応じて、パススルー設定を行う。パススルー設定は、第１の実施の形態と同様である。
【０２２９】
次に、情報処理装置１０Ｂで実行する処理の手順の一例を説明する。図１３は、情報処理装置１０Ｂで実行する処理の手順の一例を示す、シーケンス図である。
【０２３０】
まず、ハイパーバイザー３１が、コントローラ仮想マシン４７と操作部仮想マシン４９を起動する（ＳＥＱ６００、ＳＥＱ６０２）。
【０２３１】
ＳＥＱ６００の処理によって、コントローラ仮想マシン４７の調停部４７Ｅが動作を開始する（ＳＥＱ６０４）。コントローラ仮想マシン４７の調停部４７Ｅは、パススルー設定ＯＮを示す要求信号を、設定部３１Ｂへ送信する（ＳＥＱ６０８）。
【０２３２】
設定部３１Ｂは、コントローラ仮想マシン４７の調停部４７Ｅに対して、ＵＳＢホストハードウェア３０のパススルー設定を行う（ＳＥＱ６１０）。
【０２３３】
コントローラ仮想マシン４７の調停部４７Ｅは、ＵＳＢホストハードウェア３０を利用して、ＵＳＢホストドライバ３６Ｂを初期化する（ＳＥＱ６１２）。ＵＳＢホストドライバ３６Ｂの初期化が完了すると、調停部４７Ｅが、ＵＳＢホストハードウェア３０を利用して、情報処理装置１０Ｂのポート２４に接続されているＵＳＢ機器２８をチェックする（ＳＥＱ６１４）。そして、調停部４７Ｅは、接続されている全てのＵＳＢ機器２８の各々の機器識別情報を、該ＵＳＢ機器２８から取得する（ＳＥＱ６１５）。
【０２３４】
次に、調停部４７Ｅは、コントローラ仮想マシン４７に対応する利用条件情報４２を登録する（ＳＥＱ６１６）、次に、調停部４７Ｅは、他の仮想マシン４５である操作部仮想マシン４９から、該操作部仮想マシン４９に対応する利用条件情報４２の登録を受付ける（ＳＥＱ６１８）。
【０２３５】
次に、調停部４７Ｅの取得部４７Ｃが、仮想マシン４５の各々から登録された利用条件情報４２（利用条件情報４２Ａ、利用条件情報４２Ｂ）を読取る（取得する）（ＳＥＱ６１９）。
【０２３６】
次に、調停部４７Ｅの割当部４７Ｄが、ＳＥＱ６１９で読取った利用条件情報４２と、ＳＥＱ６１５で取得した機器識別情報と、を用いて、複数の仮想マシン４５の内の何れか１つに、ＵＳＢホストハードウェア３０の排他的利用権を割当てる（ＳＥＱ６２０）。割当部４７Ｄによる割当て方法は、上記実施の形態の割当部３２Ｄや割当部３３Ｄと同様である。ここでは、調停部４７Ｅは、操作部仮想マシン４９に排他的利用権を割当てたものとして説明を続ける。
【０２３７】
次に、調停部４７Ｅは、パススルー設定ＯＦＦを示す要求信号を、設定部３１Ｂへ送信する（ＳＥＱ６２２）。
【０２３８】
設定部３１Ｂは、コントローラ仮想マシン４７の調停部４７Ｅに対して、ＵＳＢホストハードウェア３０のパススルー設定の解除を行う（ＳＥＱ６２４）。
【０２３９】
次に、調停部４７Ｅが、操作部仮想マシン４９の調停部４９Ｅに、排他的利用権が割当てられたことを示す情報を送信する（ＳＥＱ６２６）。
【０２４０】
操作部仮想マシン４９の調停部４９Ｅは、パススルー設定ＯＮを示す要求信号を、設定部３１Ｂへ送信する（ＳＥＱ６２８）。設定部３１Ｂは、操作部仮想マシン４９の調停部４９Ｅに対して、ＵＳＢホストハードウェア３０のパススルー設定を行う（ＳＥＱ６３０）。
【０２４１】
そして、操作部仮想マシン４９のＵＳＢホストドライバ３８Ｂは、ＵＳＢホストハードウェア３０の利用を開始する（ＳＥＱ６３２）。
【０２４２】
以上説明したように、本実施の形態では、情報処理装置１０Ｂにおける複数の仮想マシン４５の少なくとも１つが、取得部４７Ｃによる取得ステップと、割当部４７Ｄによる割当ステップと、を実行する。
【０２４３】
このため、ハイパーバイザー３１側で、排他的利用権の割当てを行わず、仮想マシン４５側で排他的利用権を割当てることができる。そして、ハイパーバイザー３１では、単純なパススルーのオンオフの設定を行えばよい。このため、ハイパーバイザー３１側では、特別な処理を行う必要はない。
【０２４４】
従って、本実施の形態の情報処理装置１０Ｂでは、上記実施の形態および変形例の効果に加えて、様々なハイパーバイザー３１上で、本実施の形態の処理を実行することが可能となる。
【０２４５】
なお、上述した実施の形態および変形例における、情報処理装置１０、１０Ａ、１０Ｂの各々で実行する上記処理を実行するためのプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよいし、インターネット等のネットワーク経由で提供または配布するように構成してもよい。また、各種プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０２４６】
なお、上記には、実施の形態および変形例を説明したが、これらの実施の形態および変形例は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施の形態および変形例は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これらの実施の形態および変形例は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２４７】
１０、１０Ａ、１０Ｂ  情報処理装置
３０  ＵＳＢホストハードウェア
３１、３２、３３  ハイパーバイザー
３２Ｃ、３３Ｃ、４７Ｃ  取得部
３２Ｄ、３３Ｄ、４７Ｄ  割当部
３４、３５、４５  仮想マシン
３６、３７、４７  コントローラ仮想マシン
３８、３９、４９  操作部仮想マシン
【先行技術文献】
【特許文献】
【０２４８】
【特許文献１】特開２００９−１８７３６８号公報
【図１】
0006645212.tif 000002
【図２】
0006645212.tif 000003
【図３】
0006645212.tif 000004
【図４】
0006645212.tif 000005
【図５】
0006645212.tif 000006
【図６】
0006645212.tif 000007
【図７】
0006645212.tif 000008
【図８】
0006645212.tif 000009
【図９】
0006645212.tif 000010
【図１０】
0006645212.tif 000011
【図１１】
0006645212.tif 000012
【図１２】
0006645212.tif 000013
【図１３】
0006645212.tif 000014