以下、添付図面を参照しながら、本実施の形態の情報処理方法、および、情報処理装置の実施の形態を詳細に説明する。なお、本明細書において、同じ構成および機能を示す部分には、同じ符号を付与し、詳細な説明を省略する場合がある。
(第1の実施の形態)
図1は、本実施の形態の情報処理装置10のハードウェア構成の一例を示す模式図である。情報処理装置10は、SoC13、RAM(Random Access Memory)14、NAND15、HDD(Hard Disk Drive)16、ASIC(Application Specific Integrated Circuit)17、LCD18、USB(Universal Serial Bus)ホストコントローラ19、キーマイコン20、HDMI(登録商標)(High−Definition Multimedia Interface)21、NIC(Network Interface Card)22、およびUSBペリフェラル23を備える。
SoC13は、CPU(Central Processing Unit)や各種のバス機能を含む。SoC13は、RAM14におけるコントローラのソフトウェア処理を行うための演算器である。SoC13には、RAM14、NAND15、ASIC17、LCD18、USBホストコントローラ19、キーマイコン20、およびHDMI21が電気的に接続されている。
RAM14は、CPU動作時に利用される主メモリである。NAND15は、コントローラ上で動作するソフトウェアを格納するストレージである。LCD18は、各種画像を表示する表示デバイスである。キーマイコン20は、ユーザによる操作部の操作指示を受付ける。HDMI21は、映像・音声をデジタル信号で伝送する通信インターフェースである。
USBホストコントローラ19は、ポート24を介して装着されたUSB機器28にSoC13のバスの使用権を付与する。USBホストコントローラ19は、接続されたUSB機器28に対してバスアドレスを動的に割当てると共に、USB機器28から機器識別情報を取得する(詳細後述)。
USBホストコントローラ19は、例えば、EHCI(Enhanced Host Controller Interface)や、OHCI(Open Host Controller Interface)などで実現する。なお、USBホストコントローラ19は、これらに限定されない。
USB機器28は、外部装置の一例である。USB機器28は、例えば、マウス、デジタルカメラ、キーボード、ICカードリーダ、ICカードリーダライタ、USBメモリ、などのUSB接続の可能な機器である。なお、ポート24に接続される外部装置は、情報処理装置10に接続されることで該情報処理装置10が各種制御信号を送信可能となる機器であればよい。このため、外部装置は、USB接続の可能な機器に限定されない。
なお、図1には、情報処理装置10が、3つのポート24(ポート24A〜ポート24C)を備えた構成である場合を一例として示した。しかし、情報処理装置10に設けられるポート24の数は、3つに限定されない。また、図1には、ポート24A〜ポート24Cの各々に、USB機器28A〜USB機器28Cがそれぞれ接続される例を示した。しかし、各ポート24に接続されるUSB機器28の種類は、3種類(USB機器28A〜USB機器28C)に限定されない。
ASIC17は、SoC13と、HDD16と、NIC22およびUSBペリフェラル23と、の間の通信の調停を行う。HDD16は、各種データを記憶するストレージである。NIC22は、インターネットやLAN(Local Area Network)に対する通信を制御する。
なお、ASIC17には、更に、他のハードウェアを接続した構成であってもよい。本実施の形態では、ASIC17には、例えば、FAXユニット25、プロッタ26、およびスキャナ27が接続されている。スキャナ27は、原稿画像を読みとり、画像データを取得する。プロッタ26は、画像データを記録媒体に形成する画像形成処理を行う。FAXユニット25は、例えば、公衆電話回線と接続され、画像データを指定された送信先へ送信する。
次に、本実施の形態の情報処理装置10の構成を説明する。図2は、本実施の形態の情報処理装置10の構成の一例を示す模式図である。
情報処理装置10は、USBホストハードウェア30と、ハイパーバイザー32と、複数の仮想マシン34と、を備える。
USBホストハードウェア30は、本発明の情報処理方法および情報処理装置における、ハードウェアの一例である。USBホストハードウェア30は、情報処理装置10に搭載された物理ハードウェアである。具体的には、USBホストハードウェア30は、SoC13、RAM14、NAND15、HDD16、ASIC17、LCD18、USBホストコントローラ19、キーマイコン20、HDMI21、NIC22、USBペリフェラル23、などのハードウェアリソースである。
ハイパーバイザー32は、本発明におけるハイパーバイザーに相当する。ハイパーバイザー32は、ハードウェアの仮想化を実現するソフトウェアである。ハイパーバイザー32は、コンピュータを仮想化し、複数の異なるOS(ゲストOSと称する)を並列に実行できるようにするソフトウェアである。
本実施の形態では、ハイパーバイザー32は、複数の仮想マシン34を実現する。具体的には、ハイパーバイザー32は、1台のUSBホストハードウェア30上に複数の仮想マシン34を実現し、各々の仮想マシン34でゲストOSを稼働させる。
具体的には、ハイパーバイザー32は、USBホストハードウェア30のリソースを仮想マシン34に割当てる。仮想マシン34は、割当てられたUSBホストハードウェア30のリソース上で動作する。すなわち、仮想マシン34は、割当てられたUSBホストハードウェア30のリソースを利用して、個別のゲストOSインスタンスを実行する。なお、以下では、USBホストハードウェア30のリソースを、単に、USBホストハードウェア30と称して説明する場合がある。
本実施の形態では、ハイパーバイザー32は、複数の仮想マシン34として、コントローラ仮想マシン36と、操作部仮想マシン38と、を実現する場合を一例として説明する。なお、ハイパーバイザー32によって実現される仮想マシン34の数は、複数であればよく、2つに限定されない。また、ハイパーバイザー32によって実現される仮想マシン34の種類は、コントローラ仮想マシン36および操作部仮想マシン38に限定されない。
コントローラ仮想マシン36および操作部仮想マシン38は、各々、専用のゲストOSとアプリケーションソフトウェアと、を有する。
ここで、記録媒体への画像形成を制御するコントローラと、ユーザによる操作の受付および画像の表示を行う操作部と、を備えた画像形成装置を仮定する。コントローラ仮想マシン36は、このコントローラを仮想化した仮想マシン34である。一方、操作部仮想マシン38は、この操作部を仮想化した仮想マシン34である。
コントローラ仮想マシン36は、HV通信ドライバ36Aと、USBホストドライバ36Bと、生成部36Cと、を含む。HV通信ドライバ36Aは、ハイパーバイザー32と通信する。USBホストドライバ36Bは、ハイパーバイザー32によってコントローラ仮想マシン36にUSBホストハードウェア30が割当てられた時に、コントローラ仮想マシン36がUSBホスト制御を実行するためのデバイスドライバである。
USBホスト制御とは、情報処理装置10に接続されたUSB機器28やUSBホストハードウェア30を制御することを示す。すなわち、ハイパーバイザー32によってUSBホストハードウェア30の割当てられたコントローラ仮想マシン36は、USBホスト制御を行う。これにより、コントローラ仮想マシン36は、USB機器28に対して制御信号を送信する“ホスト”として機能しうる。
また、コントローラ仮想マシン36は、USBホストハードウェア30が割当てられることで、USBホストコントローラ19、ASIC17、HDD16、NIC22、USBペリフェラル23、FAXユニット25、プロッタ26、および、スキャナ27、を仮想環境において制御可能となる。すなわち、コントローラ仮想マシン36は、USBホスト制御を行うことで、これらのUSBホストハードウェア30を制御する。
生成部36Cは、利用条件情報を生成する。利用条件情報については、後述する。
操作部仮想マシン38は、HV通信ドライバ38Aと、USBホストドライバ38Bと、生成部38Cと、を含む。HV通信ドライバ38Aは、ハイパーバイザー32と通信する。USBホストドライバ38Bは、ハイパーバイザー32によって操作部仮想マシン38にUSBホストハードウェア30が割当てられた時に、操作部仮想マシン38がUSBホスト制御を実行するためのデバイスドライバである。USBホスト制御は、上記と同様である。
ハイパーバイザー32によってUSBホストハードウェア30の割当てられた操作部仮想マシン38は、USBホスト制御を行う。これにより、操作部仮想マシン38は、USB機器28に対して制御信号を送信する“ホスト”として機能しうる。
また、操作部仮想マシン38は、ハイパーバイザー32によってUSBホストハードウェア30が割当てられることで、USBホストコントローラ19、LCD18、キーマイコン20、およびHDMI21を、仮想環境において制御可能となる。
生成部38Cは、利用条件情報を生成する。生成部36Cおよび生成部38Cによる、利用条件情報の生成処理は、生成ステップに相当する。
利用条件情報は、複数の仮想マシン34の各々が、情報処理装置10に接続されたUSB機器28を利用(制御)するときの利用条件を示す情報である。
複数の仮想マシン34の各々は、各仮想マシン34の各々に対応する利用条件情報を生成する。すなわち、コントローラ仮想マシン36の生成部36Cは、コントローラ仮想マシン36に対応する利用条件情報を生成する。また、操作部仮想マシン38の生成部38Cは、操作部仮想マシン38に対応する利用条件情報を生成する。
図3は、利用条件情報40のデータ構成の一例を示す模式図である。図3(A)は、コントローラ仮想マシン36に対応する利用条件情報40Aのデータ構成の一例を示す模式図である。図3(B)は、操作部仮想マシン38に対応する利用条件情報40Bのデータ構成の一例を示す模式図である。なお、利用条件情報40Aおよび利用条件情報40Bを総称して説明する場合、利用条件情報40と称して説明する場合がある。
利用条件情報40は、機器識別情報と、優先度と、コメントと、を対応づけたデータである。なお、利用条件情報40は、少なくとも機器識別情報と優先度とを対応づけたものであればよい。
機器識別情報は、USB機器28を識別するための識別情報である。本実施の形態では、機器識別情報は、VendorID、ProductID、Class、SubClass、および、Protocolを含む場合を一例として説明する。なお、図3中、“*”マーク部分は、任意の値でよいことを示す。これらのVendorID、ProductID、Class、SubClass、および、Protocolは、USB規格で定められたものであり、全てのUSB機器28が、これらの情報を保持している。本実施の形態では、USB規格で定められたこれらの情報を、機器識別情報として用いる場合を一例として説明する。
コメントは、対応する機器識別情報によって識別されるUSB機器28に関する情報である。本実施の形態では、コメントとして、対応する機器識別情報によって識別されるUSB機器28の種類が登録されている。
優先度は、仮想マシン34における、機器識別情報によって識別されるUSB機器28に対する優先度を示す。
ここで、仮想マシン34の種類によって、接続されるUSB機器28に対する優先度は異なる。また、USB機器28の種類によって、仮想マシン34によるUSB機器28に対する優先度は異なる。
コントローラ仮想マシン36の生成部36Cは、コントローラ仮想マシン36に応じた優先度を機器識別情報ごとに生成し、利用条件情報40Aに登録する。これによって、生成部36Cは、利用条件情報40Aを生成する。
例えば、USB機器28がICカードリーダであると仮定する。ICカードリーダは、コントローラ仮想マシン36において、利用者の個人認証を行う認証機能上、重要なUSB機器28である。このため、コントローラ仮想マシン36の生成部36Cは、ICカードリーダの機器識別情報に対応する優先度として、高い優先度を示す“High”を生成する。
また、USB機器28が、キーボードであると仮定する。キーボードは、コントローラ仮想マシン36において、他のUSB機器28でも代替可能なUSB機器28である。このため、コントローラ仮想マシン36の生成部36Cは、キーボードの機器識別情報に対応する優先度として、低い優先度を示す“Low”を生成する。
また、USB機器28がデジタルカメラであると仮定する。デジタルカメラは、コントローラ仮想マシン36において、例えば、中程度の重要度のUSB機器28である。このため、コントローラ仮想マシン36の生成部36Cは、デジタルカメラの機器識別情報に対応する優先度として、中程度を示す優先度“Middle”を生成する。
なお、生成部36Cは、コントローラ仮想マシン36の構成および設定の少なくとも一方に基づいて、利用条件情報40Aを生成すればよい。なお、生成部36Cは、ユーザによる操作指示に応じて、利用条件情報40Aを生成してもよい。
また、生成部36Cは、利用条件情報40Aを予め生成してもよいし、コントローラ仮想マシン36における構成および設定の少なくとも一方が変更されたときに、利用条件情報40Aを生成(再生成)してもよい。
操作部仮想マシン38の生成部38Cは、操作部仮想マシン38に応じた優先度を機器識別情報ごとに生成し、利用条件情報40Bに登録する。これによって、生成部38Cは、利用条件情報40Bを生成する。
生成部38Cは、操作部仮想マシン38の構成および設定の少なくとも一方に基づいて、利用条件情報40Bを生成すればよい。また、生成部38Cは、ユーザによる操作指示に応じて、利用条件情報40Bを生成してもよい。なお、生成部38Cは、利用条件情報40Bを予め生成してもよいし、操作部仮想マシン38における構成および設定の少なくとも一方が変更されたときに、利用条件情報40Bを生成(再生成)してもよい。
図2に戻り、説明を続ける。本実施の形態ではハイパーバイザー32は、通信部32Aと、調停部32Bと、を含む。
通信部32Aは、仮想マシン34の各々に設けられたHV通信ドライバ(HV通信ドライバ36A)と、通信を行う。
調停部32Bは、USBホストハードウェア30のリソースを、複数の仮想マシン34の内、何れの仮想マシン34に割当てるかを調停する。
調停部32Bは、取得部32Cと、割当部32Dと、を含む。取得部32Cは、取得部、および、取得ステップに相当する。割当部32Dは、割当部、および、割当ステップに相当する。
取得部32Cは、複数の仮想マシン34の各々に対応する利用条件情報40を読取る(取得する)。本実施の形態では、取得部32Cは、コントローラ仮想マシン36から受付けた利用条件情報40Aと、操作部仮想マシン38から受付けた利用条件情報40Bと、を読取る(取得する)。
割当部32Dは、利用条件情報40における、情報処理装置10に接続されたUSB機器28の機器識別情報に対応する、最も高い優先度に対応する仮想マシン34に、USBホストハードウェア30の排他的利用権を割当てる。
排他的利用権を割当てる、とは、USBホストハードウェア30のリソースを、最も高い優先度に対応する仮想マシン34に割当てることを示す。排他的利用権とは、複数の仮想マシン34の内、1つの仮想マシン34のみが、独占的に、USBホストハードウェア30を利用する権利を意味する。
例えば、調停部32Bは、情報処理装置10のポート24に接続されているUSB機器28を確認する。そして、調停部32Bは、接続されているUSB機器28の機器識別情報を、該USB機器28から取得する。
そして、割当部32Dは、仮想マシン34(コントローラ仮想マシン36、操作部仮想マシン38)から受付けた、利用条件情報40(利用条件情報40A、利用条件情報40B)における、接続されているUSB機器28の機器識別情報に対応する優先度を読取る。そして、割当部32Dは、読取った優先度の内、最も高い優先度を特定する。割当部32Dは、特定した優先度を含む利用条件情報40に対応する仮想マシン34(コントローラ仮想マシン36または操作部仮想マシン38)に、排他的利用権を割当てる。
具体的には、情報処理装置10に接続されているUSB機器28がICカードリーダであったとする。また、このUSB機器28の機器識別情報が、“VendorID=0x1234,ProcutID=0xABCD”であったとする。
この場合、割当部32Dは、利用条件情報40Aおよび利用条件情報40Bにおける、該機器識別情報に対応する優先度を読取る。例えば、割当部32Dは、利用条件情報40A(図3(A)参照)から、該機器識別情報に対応する優先度“High”を読取る。なお、利用条件情報40Bには、該機器識別情報が登録されていないと仮定する(図3(B)参照)。この場合、割当部32Dは、この優先度“High”を含む利用条件情報40Aに対応するコントローラ仮想マシン36に、USBホストハードウェア30の排他的利用権を割当てる。
また、例えば、情報処理装置10に接続されているUSB機器28が、キーボードであったと仮定する。また、このUSB機器28の機器識別情報が、“VendorID=0x2345,ProductID=0x0002”であったと仮定する。
この場合、割当部32Dは、利用条件情報40Aおよび利用条件情報40Bにおける、該機器識別情報に対応する優先度を読取る。例えば、割当部32Dは、利用条件情報40B(図3(B)参照)から、該機器識別情報に対応する優先度“Low”を読取る。なお、利用条件情報40Aには、該機器識別情報が登録されていないと仮定する(図3(A)参照)。この場合、割当部32Dは、この優先度“Low”を含む利用条件情報40Bに対応する操作部仮想マシン38に、USBホストハードウェア30の排他的利用権を割当てる。
また、情報処理装置10に接続されているUSB機器28が、マウスとデジタルカメラであったと仮定する。また、これらのUSB機器28の各々の機器識別情報が、“VendorID=0x2345,ProductID=0x0003”と、“Class=0x06,SubClass=0x01,Protocol=0x01”であったと仮定する。
この場合、割当部32Dは、利用条件情報40Aおよび利用条件情報40Bにおける、これらの機器識別情報の各々に対応する優先度を読取る。例えば、割当部32Dは、利用条件情報40A(図3(A)参照)から、該機器識別情報“Class=0x06,SubClass=0x01,Protocol=0x01”に対応する優先度“Middle”を読取る。また、割当部32Dは、利用条件情報40B(図3(B)参照)から、機器識別情報“VendorID=0x2345,ProductID=0x0003”に対応する優先度“Low”を読取る。
この場合、割当部32Dは、より高い優先度“Middle”の登録されている利用条件情報40Aに対応するコントローラ仮想マシン36に、USBホストハードウェア30の排他的利用権を割当てる。
USBホストハードウェア30の排他的利用権を割当てられた仮想マシン34(コントローラ仮想マシン36または操作部仮想マシン38)は、USBホストハードウェア30を排他的に利用可能な状態となる。
次に、情報処理装置10で実行する処理の手順の一例を説明する。図4は、情報処理装置10で実行する処理の手順の一例を示す、シーケンス図である。
まず、調停部32Bが、USBホストハードウェア30を初期化する(SEQ100)。次に、調停部32Bが、情報処理装置10のポート24に接続されているUSB機器28をチェックする(SEQ102)。そして、調停部32Bは、接続されている全てのUSB機器28の各々の機器識別情報を、該USB機器28から取得する(SEQ103)。
次に、ハイパーバイザー32が、複数の仮想マシン34を順次起動する。本実施の形態では、ハイパーバイザー32は、まず、コントローラ仮想マシン36を起動する(SEQ104)。そして、ハイパーバイザー32は、該コントローラ仮想マシン36に対して、USBホストハードウェア30のパススルー設定を行う(SEQ106)。
コントローラ仮想マシン36に対してパススルー設定を行う、とは、コントローラ仮想マシン36に対してUSBホストハードウェア30を一時的に割当てることで、該USBホストハードウェア30をコントローラ仮想マシン36のみが利用可能とすることを示す。
コントローラ仮想マシン36は、USBホストハードウェア30を利用して、USBホストドライバ36Bを初期化する(SEQ108)。SEQ108では、コントローラ仮想マシン36は、USBホストハードウェア30の識別と、識別したUSBホストハードウェア30に応じたソフトウェアリソースの初期化と、を行う。
USBホストドライバ36Bの初期化が完了すると、コントローラ仮想マシン36は、USBホストドライバ36Bを休止状態に移行させる(SEQ110)。これによって、コントローラ仮想マシン36によるUSBホストハードウェア30の制御が停止される。HV通信ドライバ36Aは、初期化完了と休止状態への移行を示す信号を、ハイパーバイザー32へ送信する(SEQ112)。
ハイパーバイザー32の通信部32Aが、コントローラ仮想マシン36から、初期化完了と休止状態への移行を示す信号を受付けると、調停部32Bが、該コントローラ仮想マシン36に対するパススルー設定を解除する(SEQ114)。
一方、コントローラ仮想マシン36の生成部36Cは、コントローラ仮想マシン36の利用条件情報40Aを、HV通信ドライバ36Aを介してハイパーバイザー32へ登録する(SEQ116)。
次に、ハイパーバイザー32は、操作部仮想マシン38を起動する(SEQ118)。そして、ハイパーバイザー32は、該操作部仮想マシン38に対して、USBホストハードウェア30のパススルー設定を行う(SEQ120)。
操作部仮想マシン38に対してパススルー設定を行う、とは、操作部仮想マシン38に対してUSBホストハードウェア30を一時的に割当てることで、該USBホストハードウェア30を操作部仮想マシン38のみが利用可能とすることを示す。
操作部仮想マシン38は、USBホストハードウェア30を利用して、USBホストドライバ38Bを初期化する(SEQ122)。SEQ122では、操作部仮想マシン38は、USBホストハードウェア30の識別と、識別したUSBホストハードウェア30に応じたソフトウェアリソースの初期化と、を行う。
USBホストドライバ38Bの初期化が完了すると、操作部仮想マシン38は、USBホストドライバ38Bを休止状態に移行させる(SEQ124)。これによって、操作部仮想マシン38によるUSBホストハードウェア30の制御が停止される。HV通信ドライバ38Aは、初期化完了と休止状態への移行を示す信号を、ハイパーバイザー32へ送信する(SEQ126)。
ハイパーバイザー32の通信部32Aは、操作部仮想マシン38から、初期化完了と休止状態への移行を示す信号を受付けると、調停部32Bが該操作部仮想マシン38に対するパススルー設定を解除する(SEQ128)。
一方、操作部仮想マシン38の生成部38Cは、操作部仮想マシン38の利用条件情報40Bを、HV通信ドライバ38Aを介してハイパーバイザー32へ登録する(SEQ130)。
ハイパーバイザー32は、実現した複数の全ての仮想マシン34の各々について、SEQ104〜SEQ116、または、SEQ118〜SEQ130の処理を行うと、SEQ131へ進む。
SEQ131では、調停部32Bの取得部32Cが、仮想マシン34の各々から登録された利用条件情報40(利用条件情報40A、利用条件情報40B)を読取る(取得する)(SEQ131)。
次に、調停部32Bの割当部32Dが、SEQ131で読取った利用条件情報40と、SEQ103で取得した機器識別情報と、を用いて、複数の仮想マシン34の内の何れか1つに、USBホストハードウェア30の排他的利用権を割当てる(SEQ132)。
次に、調停部32Bの割当部32Dは、SEQ132で排他的利用権を割当てた仮想マシン34(本実施の形態では、コントローラ仮想マシン36または操作部仮想マシン38)に、USBホストハードウェア30のパススルーを設定する(SEQ134)。
SEQ134の処理によって、パススルー設定された仮想マシン34(コントローラ仮想マシン36または操作部仮想マシン38)が、USBホストハードウェア30を排他的に(独占的)に利用可能な状態となる。
USBホストハードウェア30の排他的利用権を割当てられた仮想マシン34(例えば、コントローラ仮想マシン36)は、休止していたUSBホストドライバ36Bを再開させる(SEQ136)。そして、コントローラ仮想マシン36のUSBホストドライバ36Bは、USBホストハードウェア30の利用を開始する(SEQ138)。
次に、読取・割当処理の詳細な手順を説明する。図5は、読取・割当処理の手順の一例を示す、フローチャートである。
まず、調停部32Bが、USBホストハードウェア30を初期化する(ステップS200)。ステップS200の処理は、SEQ100(図4参照)と同様である。次に、調停部32Bは、情報処理装置10の全てのポート24(ポート24A〜ポート24C)の各々について、ステップS202〜ステップS204の処理を実行する。まず、調停部32Bは、ポート24にUSB機器28が接続されているか否かを判断する(ステップS202)。ステップS202で肯定判断すると(ステップS202:Yes)、ステップS204へ進む。ステップS204では、調停部32Bは、ポート24に接続されているUSB機器28から、機器識別情報を取得する(ステップS204)。一方、ステップS202で否定判断すると(ステップS202:No)、該USB機器28についてのステップS204の処理を行わずに終了する。
調停部32Bは、情報処理装置10の全てのポート24(ポート24A〜ポート24C)の各々について、ステップS202〜ステップS204の処理を行うと、ステップS206へ進む。
ステップS206では、取得部32Cは、全ての仮想マシン34(コントローラ仮想マシン36、操作部仮想マシン38)から、対応する利用条件情報40を受け取る(ステップS206)。ステップS206の処理によって、取得部32Cは、複数の仮想マシン34の各々に対応する利用条件情報40を読取る(取得する)。ステップS206は、取得ステップに相当する。
次に、割当部32Dは、ステップS206で読取った利用条件情報40における、ステップS204で取得した、情報処理装置10に接続されたUSB機器28の機器識別情報に対応する優先度を読取る(ステップS208)。
そして、割当部32Dは、最も高い優先度に対応する仮想マシン34に、USBホストハードウェア30の排他的利用権を割当てる(ステップS210)。ステップS210は、割当ステップに相当する。そして、本ルーチンを終了する。
以上説明したように、本実施の形態の情報処理方法は、USBホストハードウェア30(ハードウェア)上で動作するハイパーバイザー32を有する情報処理装置10の情報処理方法である。そして、本実施の形態の情報処理方法は、取得ステップ(取得部32C、ステップS208)と、割当ステップ(割当部32D、ステップS210)を、含む。
取得ステップでは、ハイパーバイザー32によって実現された複数の仮想マシン34(コントローラ仮想マシン36、操作部仮想マシン38)の各々に対応する利用条件情報40(利用条件情報40A、利用条件情報40B)を読取る(取得する)。利用条件情報40(利用条件情報40A、利用条件情報40B)は、情報処理装置10に接続されるUSB機器28(外部機器)の機器識別情報と、該機器識別情報によって識別されるUSB機器28(外部機器)に対する優先度と、を含む。
割当ステップでは、利用条件情報40における、情報処理装置10に接続されたUSB機器28(外部機器)の機器識別情報に対応する、最も高い優先度に対応する仮想マシン34(コントローラ仮想マシン36、または操作部仮想マシン38)に、USBホストハードウェア30(ハードウェア)の排他的利用権を割当てる。
このように、本実施の形態の情報処理方法では、複数の仮想マシン34の各々に対応する利用条件情報40に基づいて、接続されたUSB機器28に対する優先度に応じた最適な仮想マシン34に、USBホストハードウェア30の排他的利用権を割当てる。
従って、本実施の形態の情報処理方法では、複数の仮想マシン34の実現された情報処理装置10において、仮想マシン34にハードウェアリソースを効率よく割当てることができる。
また、本実施の形態の情報処理方法では、ユーザによる設定や操作を必要とせず、最適な仮想マシン34に、USBホストハードウェア30を効率よく割当てることができる。
ここで、画像形成装置におけるコントローラと操作部とを仮想化し、1つのUSBホストハードウェア30上で動作させた場合を想定する(コントローラ仮想マシン36、操作部仮想マシン38参照)。
仮想化を行う前には、コントローラおよび操作部の各々には、CPU、メモリ、USBホストコントローラなどのI/Oデバイスが独立して存在している。しかし、仮想化されたコントローラ仮想マシン36および操作部仮想マシン38は、1つのUSBホストハードウェア30を供給する形となる。
ここで、USBホストコントローラ19に接続されるUSB機器28を考えると、従来では、以下のような問題が生じていた。
同じUSBホストコントローラ19に接続されたUSB機器28であっても、コントローラ仮想マシン36および操作部仮想マシン38の構成や状態により、何れの仮想マシン34にUSBホストハードウェア30を割当てるかが異なる。従来では、このような割当ての制御は行われていなかった。
具体的には、USB機器28としてICカードリーダが接続されている場合を想定する。この場合、画像形成に寄与するハードウェアがスタンバイの状態である場合には、ICカードリーダの制御は、コントローラ仮想マシン36で行うことが好ましい。この場合、コントローラ仮想マシン36は、ICカードリーダと通信し、ICカードの接続をチェックすると共に、ICカードからデータの読取りや認証処理などを行う。これらの処理においては、ICカードの接続の有無のチェックのみではなく、認証処理や暗号化処理などの複雑な制御も必要となる。
一方で、画像形成に寄与するハードウェアが省電力状態である場合には、省電力状態でも動作をしている操作部仮想マシン38側に、USBホストハードウェア30を割当てることが好ましい。この場合、操作部仮想マシン38は、ICカードの接続の有無のチェックといった、単純な処理のみを行えばよい。そして、操作部仮想マシン38は、カード有りを識別した場合には、画像形成に寄与するハードウェアを省電力状態からスタンバイ状態に遷移させると共に、ICカードリーダの制御をコントローラ仮想マシン36側に移す処理を行う。
また、USB機器28としてデジタルカメラが接続されている場合を想定する。コントローラ仮想マシン36に、PictBridge制御のソフトウェアが搭載されている場合には、コントローラ仮想マシン36がデジタルカメラを制御することが好ましい。一方、コントローラ仮想マシン36に、PictBridge制御のソフトウェアが搭載されていない場合には、操作部仮想マシン38がデジタルカメラを制御することが好ましい。
このように、同じUSBホストコントローラ19に接続されたUSB機器28であっても、コントローラ仮想マシン36および操作部仮想マシン38の構成や状態により、何れの仮想マシン34にUSBホストハードウェア30を割当てるかが異なる。従来では、このような割当ての制御は行われていなかった。
一方、本実施の形態では、上記構成とすることで、仮想マシン34にハードウェアリソースを効率よく割当てることができる。
また、本実施の形態では、仮想マシン34は、仮想マシン34の構成および設定の少なくとも一方に応じて、利用条件情報40を生成する生成ステップ(生成部36C、生成部38C)を実行することができる。
このため、本実施の形態の情報処理方法では、仮想マシン34における構成や設定が変更された場合であっても、変更後の構成や設定に応じた利用条件情報40を生成することができる。このため、本実施の形態の情報処理方法では、上記効果に加えて、更に、最適な仮想マシン34に効率よくUSBホストハードウェア30を割当てることができる。
また、本実施の形態では、ハイパーバイザー32が、取得ステップ(取得部32C)と割当ステップ(割当部32D)とを実行する。このため、本実施の形態の情報処理方法では、簡易な構成で、効率よく仮想マシン34にUSBホストハードウェア30を割当てることができる。
<変形例1>
なお、上記実施の形態では、取得部32Cは、複数の仮想マシン34(コントローラ仮想マシン36および操作部仮想マシン38)の各々に対応する利用条件情報40(利用条件情報40A、利用条件情報40B)を、読取る(取得する)形態を説明した。
しかし、取得部32Cは、複数の仮想マシン34の各々に対応する、利用条件情報40と、仮想マシン34のマシン優先度と、を読取る(取得する)形態であってもよい。
この場合、仮想マシン34(コントローラ仮想マシン36、操作部仮想マシン38)の各々の生成部(生成部36C、生成部38C)は、利用条件情報40と、仮想マシン34のマシン優先度と、をハイパーバイザー32へ登録すればよい。
図6は、利用条件情報40と、マシン優先度41と、のデータ構成の一例を示す模式図である。図6(A)は、コントローラ仮想マシン36に対応する利用条件情報40Aと、マシン優先度41Aと、のデータ構成の一例を示す模式図である。利用条件情報40Aは、第1の実施の形態と同様である。
図6(B)は、操作部仮想マシン38に対応する利用条件情報40Bと、マシン優先度41Bと、のデータ構成の一例を示す模式図である。利用条件情報40Bは、第1の実施の形態と同様である。
なお、マシン優先度41Aおよびマシン優先度41Bを総称して説明する場合、マシン優先度41と称して説明する場合がある。
マシン優先度41Aは、コントローラ仮想マシン36に対する優先度を示す。マシン優先度41Bは、操作部仮想マシン38に対する優先度を示す。図6に示す例では、マシン優先度41Aには“High”が設定され、マシン優先度41Bには“Low”が設定されている。これらのマシン優先度41についても、生成部36Cおよび生成部38Cの各々が生成すればよい。
割当部32Dは、第1の実施の形態と同様にして、利用条件情報40における、情報処理装置10に接続されたUSB機器28の機器識別情報に対応する、最も高い優先度に対応する仮想マシン34に、USBホストハードウェア30の排他的利用権を割当てる。
ここで、利用条件情報40における、情報処理装置10に接続されたUSB機器28の機器識別情報に対応する優先度が、仮想マシン34間で同じである場合がある。詳細には、利用条件情報40Aおよび利用条件情報40Bの各々における、情報処理装置10に接続されているUSB機器28の機器識別情報に対応する優先度が、同じである場合がある。
このような場合、割当部32Dは、高いマシン優先度41に対応する仮想マシン34に、USBホストハードウェア30の排他的利用権を割当てればよい。
具体的には、情報処理装置10に接続されているUSB機器28がキーボードであったとする。また、情報処理装置10に、2つのキーボードが接続されていたと仮定する。そして、これらのキーボード(USB機器28)の各々の機器識別情報が、“VendorID=0x1234,ProductID=0x0001”、“VendorID=0x2345,ProductID=0x0002”の各々であったと仮定する。
この場合、利用条件情報40Aにおける上記機器識別情報に対応する優先度と、利用条件情報40Bにおける上記機器識別情報に対応する優先度と、は、何れも“Low”である。
この場合、割当部32Dは、マシン優先度41Aおよびマシン優先度41Bの内、より高いマシン優先度41A“High”に対応するコントローラ仮想マシン36に、USBホストハードウェア30の排他的利用権を割当てればよい。
なお、本変形例においても、情報処理装置10は、第1の実施の形態と同様の手順(図4参照)を行えばよい。
次に、本変形例における、読取・割当処理の詳細な手順を説明する。図7は、読取・割当処理の手順の一例を示す、フローチャートである。
まず、調停部32Bは、第1の実施の形態のステップS200〜ステップS204(図5参照)と同様にして、ステップS300〜ステップS304の処理を実行する。
すなわち、調停部32Bが、USBホストハードウェア30を初期化する(ステップS300)。次に、調停部32Bは、情報処理装置10の全てのポート24の各々について、ステップS302〜ステップS304の処理を実行する。
調停部32Bは、情報処理装置10の全てのポート24の各々について、ステップS302〜ステップS304の処理を行うと、ステップS306へ進む。
ステップS306では、取得部32Cは、全ての仮想マシン34(コントローラ仮想マシン36、操作部仮想マシン38)から、対応する利用条件情報40およびマシン優先度41を受け取る(ステップS306)。ステップS306の処理によって、取得部32Cは、複数の仮想マシン34の各々に対応する利用条件情報40およびマシン優先度41を読取る(取得する)。
次に、割当部32Dは、ステップS306で読取った利用条件情報40における、ステップS304で取得した、情報処理装置10に接続されたUSB機器28の機器識別情報に対応する優先度を読取る(ステップS308)。
次に、割当部32Dは、利用条件情報40における該機器識別情報に対応する優先度が、仮想マシン34間で同じであるか否かを判断する(ステップS310)。詳細には、割当部32Dは、利用条件情報40Aにおける、該機器識別情報に対応する優先度の内の最も高い優先度と、利用条件情報40Bにおける、該機器識別情報に対応する優先度の内の最も高い優先度と、が同じであるか否かを判断する。
ステップS310で否定判断すると(ステップS310:No)、ステップS312へ進む。ステップS312では、割当部32Dは、ステップS308で読取った最も高い優先度に対応する仮想マシン34に、USBホストハードウェア30の排他的利用権を割当てる(ステップS312)。そして、本ルーチンを終了する。
一方、ステップS310で肯定判断すると(ステップS310:Yes)、ステップS314へ進む。ステップS314では、割当部32Dは、最も高いマシン優先度41に対応する仮想マシン34に、USBホストハードウェア30の排他的利用権を割当てる(ステップS314)。そして、本ルーチンを終了する。
以上説明したように、本変形例では、取得部32C(読取ステップ)は、複数の仮想マシン34の各々に対応する利用条件情報40と、仮想マシン34のマシン優先度41と、を読取る(取得する)。割当部32D(割当ステップ)は、利用条件情報40(利用条件情報40A、利用条件情報40B)における、情報処理装置10に接続されたUSB機器28(外部機器)の機器識別情報に対応する優先度が仮想マシン34間で同じである場合、マシン優先度41の高い仮想マシン34に、排他的利用権を割当てる。
このため、本変形例では、接続されたUSB機器28の機器識別情報に対応する優先度が、仮想マシン34間で同じである場合であっても、最適な仮想マシン34に容易に、USBホストハードウェア30の排他的利用権を割当てることができる。
(第2の実施の形態)
本実施の形態では、利用条件情報と、仮想マシンの稼働状態を示す稼働状態情報と、に基づいて、排他的利用権を割当てる形態を説明する。
図1は、本実施の形態の情報処理装置10Aのハードウェア構成の一例を示す模式図である。情報処理装置10Aのハードウェア構成は、情報処理装置10のハードウェア構成と同様である。
次に、本実施の形態の情報処理装置10Aの構成を説明する。図8は、本実施の形態の情報処理装置10Aの構成の一例を示す模式図である。
情報処理装置10Aは、USBホストハードウェア30と、ハイパーバイザー33と、複数の仮想マシン35と、を備える。USBホストハードウェア30は、第1の実施の形態と同様である。
ハイパーバイザー33は、複数の仮想マシン35を実現する。ハイパーバイザー33は、USBホストハードウェア30を仮想マシン35に割当てる。仮想マシン35は、割当てられたUSBホストハードウェア30上で動作する。
本実施の形態では、ハイパーバイザー33は、仮想マシン35として、コントローラ仮想マシン37と、操作部仮想マシン39と、を実現する場合を一例として説明する。なお、ハイパーバイザー33によって実現される仮想マシン35の数は、複数であればよく、2つに限定されない。
コントローラ仮想マシン37は、コントローラ仮想マシン36と同様に、記録媒体への画像形成を制御するコントローラを仮想化した仮想マシン35である。操作部仮想マシン39は、操作部仮想マシン38と同様に、ユーザによる操作の受付および画像の表示を行う操作部を仮想化した仮想マシン35である。なお、仮想マシン35の種類は、これらに限定されない。
コントローラ仮想マシン37は、HV通信ドライバ36Aと、USBホストドライバ36Bと、生成部37Cと、状態制御部37Dと、を含む。HV通信ドライバ36AおよびUSBホストドライバ36Bは、第1の実施の形態と同様である。
状態制御部37Dは、コントローラ仮想マシン37の稼働状態を制御する。コントローラ仮想マシン37の稼働状態は、例えば、予め定めた閾値以上の電力を消費する通常状態や、該閾値未満の電力を消費する省電力状態、である。なお、コントローラ仮想マシン37の稼働状態の種類は、これらの種類に限定されない。
状態制御部37Dは、コントローラ仮想マシン37の稼働状態の遷移や、コントローラ仮想マシン37の現在の稼働状態の管理などを行う。
例えば、コントローラ仮想マシン37が、記録媒体への画像形成および排紙の制御を行わない場合がある。この場合、状態制御部37Dは、プロッタ26、スキャナ27、およびHDD16などの使用しないリソースの電源を切るように制御することで、コントローラ仮想マシン37の稼働状態を省電力状態に遷移させる。また、例えば、コントローラ仮想マシン37が、ネットワーク通信を必要としない状態となる場合がある。この場合、状態制御部37Dは、コントローラ仮想マシン37による制御を停止することで、コントローラ仮想マシン37の稼働状態を省電力状態に遷移させる。
生成部37Cは、利用条件情報を生成する(詳細後述)。
操作部仮想マシン39は、HV通信ドライバ38Aと、USBホストドライバ38Bと、生成部39Cと、状態制御部39Dと、を含む。HV通信ドライバ38AおよびUSBホストドライバ38Bは、第1の実施の形態と同様である。
状態制御部39Dは、操作部仮想マシン39の稼働状態を制御する。操作部仮想マシン39の稼働状態は、例えば、予め定めた閾値以上の電力を消費する通常状態や、該閾値未満の電力を消費する省電力状態、である。なお、操作部仮想マシン39の稼働状態の種類は、これらの状態に限定されない。
状態制御部39Dは、操作部仮想マシン39の稼働状態の遷移や、操作部仮想マシン39の現在の稼働状態の管理などを行う。
例えば、ユーザによる操作が所定時間以上行われない場合には、LCD18をオフとする場合がある。この場合、状態制御部39Dは、LCD18の電源を切るように制御することで、操作部仮想マシン39の稼働状態を省電力状態に遷移させる。
生成部39Cは、利用条件情報を生成する(詳細後述)。生成部37Cおよび生成部39Cは、生成ステップに相当する。
本実施の形態で用いる利用条件情報は、複数の仮想マシン35の各々が、情報処理装置10Aに接続されたUSB機器28を利用(制御)するときの利用条件と、仮想マシン35の稼働状態と、を示す情報である。
複数の仮想マシン35の各々は、各仮想マシン35の各々に対応する利用条件情報を生成する。すなわち、コントローラ仮想マシン37の生成部37Cは、コントローラ仮想マシン37に対応する利用条件情報を生成する。また、操作部仮想マシン39の生成部39Cは、操作部仮想マシン39に対応する利用条件情報を生成する。
図9は、利用条件情報42のデータ構成の一例を示す模式図である。図9(A)は、コントローラ仮想マシン37に対応する利用条件情報42Aのデータ構成の一例を示す模式図である。図9(B)は、操作部仮想マシン39に対応する利用条件情報42Bのデータ構成の一例を示す模式図である。なお、利用条件情報42Aおよび利用条件情報42Bを総称して説明する場合、利用条件情報42と称して説明する場合がある。
利用条件情報42は、機器識別情報と、稼働状態情報と、優先度と、コメントと、を対応づけたデータである。なお、利用条件情報42は、少なくとも機器識別情報と稼働状態情報と優先度とを対応づけたものであればよい。
機器識別情報、優先度、およびコメントは、第1の実施の形態で説明した利用条件情報40と同様である。すなわち、利用条件情報42は、利用条件情報40に、更に、稼働状態情報を含めたものである。
稼働状態情報は、対応する仮想マシン35の稼働状態を示す情報である。利用条件情報42における稼働状態情報は、対応する機器識別情報によって識別されるUSB機器28に対する優先度が、該機器識別情報に対応する優先度であるときの、仮想マシン35の稼働状態を示す情報である。
図9(A)に示す例では、コントローラ仮想マシン37に対応する利用条件情報42Aには、稼働状態情報として、スタンバイ、エンジンOFF、の少なくとも一方が登録されている。スタンバイは、上記通常状態に相当する。エンジンOFFは、上記省電力状態に相当する。
図9(B)に示す例では、操作部仮想マシン39に対応する利用条件情報42Bには、稼働状態情報として、LCD−ON、LCD−OFF、の少なくとも一方が登録されている。LCD−ONは、上記通常状態に相当する。LCD−OFFは、上記省電力状態に相当する。
ここで、仮想マシン35の種類、および仮想マシン35の稼働状態によって、接続されるUSB機器28に対する優先度は異なる。また、USB機器28の種類によって、仮想マシン35によるUSB機器28に対する優先度は異なる。
このため、コントローラ仮想マシン37の生成部37Cは、コントローラ仮想マシン37に応じた優先度を、機器識別情報および稼働状態情報ごとに生成し、利用条件情報42Aに登録する。これによって、生成部37Cは、利用条件情報42Aを生成する。
なお、生成部37Cは、コントローラ仮想マシン37の構成および設定の少なくとも一方に基づいて、利用条件情報42Aを生成すればよい。また、生成部37Cは、コントローラ仮想マシン37における構成および設定の少なくとも一方が変更されたときに、利用条件情報42Aを再生成することが好ましい。
操作部仮想マシン39の生成部39Cは、操作部仮想マシン39に応じた優先度を、機器識別情報および稼働状態情報ごとに生成し、利用条件情報42Bに登録する。これによって、生成部39Cは、利用条件情報42Bを生成する。
なお、生成部39Cは、操作部仮想マシン39におけるソフトウェアの構成および設定の少なくとも一方に基づいて、利用条件情報42Bを生成すればよい。また、生成部39Cは、操作部仮想マシン39における構成および設定の少なくとも一方が変更されたときに、利用条件情報42Bを再生成することが好ましい。
図8に戻り、説明を続ける。本実施の形態ではハイパーバイザー33は、通信部33Aと、調停部33Bと、を含む。
通信部33Aは、仮想マシン35に設けられたHV通信ドライバ(HV通信ドライバ36A)と、通信を行う。
調停部33Bは、USBホストハードウェア30を、複数の仮想マシン35の内、何れの仮想マシン35に割当てるかを調停する。
調停部33Bは、取得部33Cと、割当部33Dと、を含む。取得部33Cは、取得部、および、取得ステップに相当する。割当部33Dは、割当部、および、割当ステップに相当する。
取得部33Cは、複数の仮想マシン35の各々に対応する利用条件情報42を読取る(取得する)(図9参照)。本実施の形態では、取得部33Cは、コントローラ仮想マシン37から受付けた利用条件情報42Aと、操作部仮想マシン39から受付けた利用条件情報42Bと、を読取る(取得する)。
割当部33Dは、利用条件情報42における、情報処理装置10Aに接続されたUSB機器28の機器識別情報と、仮想マシン35の現在の稼働状態の稼働状態情報と、に対応する、最も高い優先度に対応する仮想マシン35に、排他的利用権を割当てる。
詳細には、調停部33Bは、情報処理装置10Aのポート24に接続されているUSB機器28を確認する。そして、調停部33Bは、接続されているUSB機器28の機器識別情報を、該USB機器28から取得する。
そして、割当部33Dは、仮想マシン35(コントローラ仮想マシン37、操作部仮想マシン39)から受付けた、利用条件情報42(利用条件情報42A、利用条件情報42B)における、接続されているUSB機器28の機器識別情報と、仮想マシン35の各々の現在の稼働状態の稼働状態情報と、に対応する優先度を読取る。そして、割当部33Dは、読取った優先度の内、最も高い優先度を特定する。割当部33Dは、特定した優先度を含む利用条件情報42に対応する仮想マシン35(コントローラ仮想マシン37または操作部仮想マシン39)に、排他的利用権を割当てる。
このため、本実施の形態では、USBホストハードウェア30は、接続されたUSB機器28の機器識別情報と、仮想マシン35の現在の稼働状態情報と、に対応する、最も高い優先度に対応する仮想マシン35に割当てられる。
次に、情報処理装置10Aで実行する処理の手順の一例を説明する。図10は、情報処理装置10Aで実行する処理の手順の一例を示す、シーケンス図である。
なお、SEQ400〜SEQ414、およびSEQ420〜SEQ430は、第1の実施の形態におけるSEQ100〜SEQ114、およびSEQ118〜SEQ128、の各々と同様である。
まず、調停部33Bが、USBホストハードウェア30を初期化する(SEQ400)。次に、調停部33Bが、情報処理装置10Aのポート24に接続されているUSB機器28をチェックする(SEQ402)。そして、調停部33Bは、接続されている全てのUSB機器28の各々の機器識別情報を、該USB機器28から取得する(SEQ403)。
次に、ハイパーバイザー33が、複数の仮想マシン35を順次起動する。本実施の形態では、ハイパーバイザー33は、まず、コントローラ仮想マシン37を起動する(SEQ404)。そして、ハイパーバイザー33は、該コントローラ仮想マシン37に対して、USBホストハードウェア30のパススルー設定を行う(SEQ406)。
コントローラ仮想マシン37は、USBホストハードウェア30を利用して、USBホストドライバ36Bを初期化する(SEQ408)。USBホストドライバ36Bの初期化が完了すると、コントローラ仮想マシン37は、USBホストドライバ36Bを休止状態に移行させる(SEQ410)。HV通信ドライバ36Aは、初期化完了と休止状態への移行を示す信号を、ハイパーバイザー33へ送信する(SEQ412)。
ハイパーバイザー33の通信部33Aは、コントローラ仮想マシン37から、初期化完了と休止状態への移行を示す信号を受付けると、調停部33Bが、該コントローラ仮想マシン37に対するパススルー設定を解除する(SEQ414)。
一方、コントローラ仮想マシン37の状態制御部37Dは、コントローラ仮想マシン37の現在の稼働状態を示す稼働状態情報を、調停部33Bへ通知する(SEQ416)。例えば、状態制御部37Dは、“スタンバイ”などの稼働状態情報を、調停部33Bへ通知する。
コントローラ仮想マシン37の生成部37Cは、コントローラ仮想マシン37の利用条件情報42Aを、HV通信ドライバ36Aを介してハイパーバイザー33へ登録する(SEQ418)。
次に、ハイパーバイザー33は、操作部仮想マシン39を起動する(SEQ420)。そして、ハイパーバイザー33は、該操作部仮想マシン39に対して、USBホストハードウェア30のパススルー設定を行う(SEQ422)。
操作部仮想マシン39は、USBホストハードウェア30を利用して、USBホストドライバ38Bを初期化する(SEQ424)。USBホストドライバ38Bの初期化が完了すると、操作部仮想マシン39は、USBホストドライバ38Bを休止状態に移行させる(SEQ426)。HV通信ドライバ38Aは、初期化完了と休止状態への移行を示す信号を、ハイパーバイザー33へ送信する(SEQ428)。
ハイパーバイザー33の通信部33Aは、操作部仮想マシン39から、初期化完了と休止状態への移行を示す信号を受付けると、調停部33Bが、該操作部仮想マシン39に対するパススルー設定を解除する(SEQ430)。
一方、操作部仮想マシン39の状態制御部39Dは、操作部仮想マシン39の現在の稼働状態を示す稼働状態情報を、調停部33Bへ通知する(SEQ432)。例えば、状態制御部39Dは、“LCD−ON”などの稼働状態情報を、調停部33Bへ通知する。
操作部仮想マシン39の生成部39Cは、操作部仮想マシン39の利用条件情報42Bを、HV通信ドライバ38Aを介してハイパーバイザー33へ登録する(SEQ434)。
ハイパーバイザー33は、実現した複数の全ての仮想マシン35の各々について、SEQ404〜SEQ418、または、SEQ420〜SEQ434の処理を行うと、SEQ435へ進む。
SEQ435では、調停部33Bの取得部33Cが、仮想マシン35の各々から登録された利用条件情報42(利用条件情報42A、利用条件情報42B)を読取る(取得する)(SEQ435)。
次に、調停部33Bの割当部33Dが、SEQ435で読取った利用条件情報42と、SEQ403で取得した機器識別情報と、を用いて、複数の仮想マシン35の内の何れか1つに、USBホストハードウェア30の排他的利用権を割当てる(SEQ436)。
次に、調停部33Bの割当部33Dは、SEQ436で排他的利用権を割当てた仮想マシン35(本実施の形態では、コントローラ仮想マシン37または操作部仮想マシン39)に、USBホストハードウェア30のパススルーを設定する(SEQ438)。
SEQ438の処理によって、パススルー設定された仮想マシン35(コントローラ仮想マシン37または操作部仮想マシン39)が、USBホストハードウェア30を排他的(独占的)に利用可能な状態となる。
USBホストハードウェア30の排他的利用権を割当てられた仮想マシン35(例えば、コントローラ仮想マシン37)は、休止していたUSBホストドライバ36Bを再開させる(SEQ440)。そして、コントローラ仮想マシン37のUSBホストドライバ36Bは、USBホストハードウェア30の利用を開始する(SEQ442)。そして、本シーケンスを終了する。
次に、仮想マシン35の各々の稼働状態が変化したときの、処理の手順の一例を説明する。図11は、仮想マシン35の稼働状態が変化したときに、情報処理装置10Aで実行する処理の手順の一例を示す、シーケンス図である。
操作部仮想マシン39の状態制御部39Dは、操作部仮想マシン39の稼働状態が変化すると(SEQ500)、操作部仮想マシン39の現在の稼働状態を示す稼働状態情報を、調停部33Bへ通知する(SEQ502)。例えば、状態制御部39Dは、“LCD−OFF”などの稼働状態情報を、調停部33Bへ通知する。
調停部33Bの割当部33Dは、SEQ502で新たに受付けた、操作部仮想マシン39の現在の稼働状態情報と、利用条件情報42(図9参照)と、を用いて、排他的利用権の再割当てを行う(SEQ504)。
すなわち、割当部33Dは、情報処理装置10Aに接続されたUSB機器28の機器識別情報と、新たに受付けた稼働状態情報と、に対応する、最も高い優先度に対応する仮想マシン35に、排他的利用権を割当てる。なお、SEQ504の処理前に割当てられていた仮想マシン35と、再割当て後の仮想マシン35と、が同じである場合には、再割当てを行わなくてもよい。ここでは、同じであったと仮定して説明を続ける。
なお、SEQ504の処理による再割当て前の仮想マシン35と、再割当て後の仮想マシン35と、が異なる場合には、調停部33Bは、図10のSEQ436〜SEQ442と同様の処理を行えばよい。
次に、コントローラ仮想マシン37の状態制御部37Dは、コントローラ仮想マシン37の稼働状態が変化すると(SEQ506)、コントローラ仮想マシン37の現在の稼働状態を示す稼働状態情報を、調停部33Bへ通知する(SEQ508)。例えば、状態制御部37Dは、“エンジンOFF”などの稼働状態情報を、調停部33Bへ通知する。
調停部33Bの割当部33Dは、SEQ508で新たに受付けた、コントローラ仮想マシン37の現在の稼働状態情報と、利用条件情報42(図9参照)と、を用いて、排他的利用権の再割当てを行う(SEQ510)。
ここで、SEQ510の処理による再割当て前の仮想マシン35と、再割当て後の仮想マシン35と、が異なるものであったと仮定する。具体的には、SEQ510の再割当て前の仮想マシン35は、コントローラ仮想マシン37であり、再割当て後の仮想マシン35が、操作部仮想マシン39であったと仮定する。
この場合、調停部33Bは、コントローラ仮想マシン37に対するパススルー設定を解除する(SEQ512、SEQ514)。
次に、割当部33Dは、SEQ510で排他的利用権を割当てた仮想マシン35(例えば、操作部仮想マシン39)に、USBホストハードウェア30のパススルーを設定する(SEQ516)。SEQ516の処理によって、パススルー設定された操作部仮想マシン39が、USBホストハードウェア30に対する排他的利用権を有する状態となる。
USBホストハードウェア30の排他的利用権を割当てられた操作部仮想マシン39は、休止していたUSBホストドライバ38Bを再開させる(SEQ518)。そして、操作部仮想マシン39のUSBホストドライバ38Bは、USBホストハードウェア30の利用を開始する(SEQ520)。そして、本シーケンスを終了する。
以上説明したように、利用条件情報42は、対応する仮想マシン35の稼働状態を示す稼働状態情報を更に含んでいてもよい。この場合、割当部33D(割当部、割当ステップ)は、利用条件情報42における、情報処理装置10Aに接続されたUSB機器28(外部機器)の機器識別情報と、仮想マシン35の現在の稼働状態の稼働状態情報と、に対応する、最も高い優先度に対応する仮想マシン35に、排他的利用権を割当てればよい。
このため、本実施の形態の情報処理装置10Aでは、第1の実施の形態の効果に加えて、仮想マシン35の稼働状態に応じた、最適な割当てが可能となる。
また、仮想マシン35の稼働状態が変化した場合、割当部33Dは、稼働状態の変化に応じて、排他的利用権の再割当てを行うことができる。
このため、本実施の形態の情報処理装置10Aでは、更に、最適な割当てが可能となる。
(第3の実施の形態)
なお、上記実施の形態および変形例では、ハイパーバイザー32およびハイパーバイザー33の各々が、取得部32Cおよび割当部32D、または、取得部33Cおよび割当部33Dを含む形態を説明した。
しかし、取得部32C(取得部33C)および割当部32D(割当部33D)を、仮想マシン側に設けた構成であってもよい。
図1は、本実施の形態の情報処理装置10Bのハードウェア構成の一例を示す模式図である。情報処理装置10Bのハードウェア構成は、情報処理装置10のハードウェア構成と同様である。
次に、本実施の形態の情報処理装置10Bの構成を説明する。図12は、本実施の形態の情報処理装置10Bの構成の一例を示す模式図である。
情報処理装置10Bは、USBホストハードウェア30と、ハイパーバイザー31と、複数の仮想マシン45と、を備える。USBホストハードウェア30は、第1の実施の形態と同様である。
ハイパーバイザー31は、複数の仮想マシン45を実現する。本実施の形態では、ハイパーバイザー31は、仮想マシン45として、コントローラ仮想マシン47と、操作部仮想マシン49と、を実現する場合を一例として説明する。なお、ハイパーバイザー31によって実現される仮想マシン45の数は、複数であればよく、2つに限定されない。
コントローラ仮想マシン47は、コントローラ仮想マシン36と同様に、記録媒体への画像形成を制御するコントローラを仮想化した仮想マシン45である。操作部仮想マシン49は、操作部仮想マシン38と同様に、ユーザによる操作の受付および画像の表示を行う操作部を仮想化した仮想マシン45である。
コントローラ仮想マシン47は、HV通信ドライバ36Aと、USBホストドライバ36Bと、生成部37Cと、状態制御部37Dと、調停部47Eと、を含む。HV通信ドライバ36AおよびUSBホストドライバ36Bは、第1の実施の形態と同様である。生成部37Cおよび状態制御部37Dは、第2の実施の形態と同様である。
調停部47Eは、USBホストハードウェア30のリソースを、何れの仮想マシン45に割当てるか調停する。調停部47Eは、他の仮想マシン45との間で通信(VM(仮想マシン)間通信)を行い、調整を行う。
調停部47Eは、取得部47Cと、割当部47Dと、を含む。取得部47Cは、取得部、および、取得ステップに相当する。割当部47Dは、割当部、および、割当ステップに相当する。
なお、本実施の形態では、他の仮想マシン45も、調停部(本実施の形態では調停部49E)を備える。本実施の形態では、複数の仮想マシン45の内、何れか1つの仮想マシン45に設けられた調停部が、他の仮想マシン45の調停部を制御するものとして説明する。本実施の形態では、一例として、コントローラ仮想マシン47に設けられた調停部47Eが、他の仮想マシン45に設けられた調停部を制御する場合を説明する。
調停部47Eは、取得部47Cと、割当部47Dと、を備える。取得部47Cは、上記実施の形態の取得部33Cと同様である。すなわち、取得部47Cは、複数の仮想マシン45の各々に対応する利用条件情報42を読取る(取得する)(図9参照)。なお、取得部47Cは、第1の実施の形態で用いた利用条件情報40(図3参照)を読取る(取得する)形態であってもよい。
割当部47Dは、上記実施の形態の割当部33Dと同様である。すなわち、割当部47Dは、利用条件情報42における、情報処理装置10Bに接続されたUSB機器28の機器識別情報と、仮想マシン45の現在の稼働状態の稼働状態情報と、に対応する、最も高い優先度に対応する仮想マシン45に、排他的利用権を割当てる。
操作部仮想マシン49は、HV通信ドライバ38Aと、USBホストドライバ38Bと、生成部39Cと、状態制御部39Dと、調停部49Eと、を含む。HV通信ドライバ38AおよびUSBホストドライバ38Bは、第1の実施の形態と同様である。生成部39Cおよび状態制御部39Dは、第2の実施の形態と同様である。
調停部49Eは、USBホストハードウェア30のリソースを、何れの仮想マシン45に割当てるか調停する。調停部49Eは、他の仮想マシン45との間で通信(VM(仮想マシン)間通信)を行い、調停を行う。
なお、複数の仮想マシン45の何れか1つに、調停部を設けた構成であってもよい。
本実施の形態では、ハイパーバイザー31は、調停部を備えない構成である。ハイパーバイザー31は、通信部31Aと、設定部31Bと、を備える。通信部31Aは、仮想マシン45に設けられえたHV通信ドライバ(HV通信ドライバ36A)と、通信を行う。
設定部31Bは、仮想マシン45から受信した、パススルー設定ONまたはパススルー設定OFFを示す要求信号に応じて、パススルー設定を行う。パススルー設定は、第1の実施の形態と同様である。
次に、情報処理装置10Bで実行する処理の手順の一例を説明する。図13は、情報処理装置10Bで実行する処理の手順の一例を示す、シーケンス図である。
まず、ハイパーバイザー31が、コントローラ仮想マシン47と操作部仮想マシン49を起動する(SEQ600、SEQ602)。
SEQ600の処理によって、コントローラ仮想マシン47の調停部47Eが動作を開始する(SEQ604)。コントローラ仮想マシン47の調停部47Eは、パススルー設定ONを示す要求信号を、設定部31Bへ送信する(SEQ608)。
設定部31Bは、コントローラ仮想マシン47の調停部47Eに対して、USBホストハードウェア30のパススルー設定を行う(SEQ610)。
コントローラ仮想マシン47の調停部47Eは、USBホストハードウェア30を利用して、USBホストドライバ36Bを初期化する(SEQ612)。USBホストドライバ36Bの初期化が完了すると、調停部47Eが、USBホストハードウェア30を利用して、情報処理装置10Bのポート24に接続されているUSB機器28をチェックする(SEQ614)。そして、調停部47Eは、接続されている全てのUSB機器28の各々の機器識別情報を、該USB機器28から取得する(SEQ615)。
次に、調停部47Eは、コントローラ仮想マシン47に対応する利用条件情報42を登録する(SEQ616)、次に、調停部47Eは、他の仮想マシン45である操作部仮想マシン49から、該操作部仮想マシン49に対応する利用条件情報42の登録を受付ける(SEQ618)。
次に、調停部47Eの取得部47Cが、仮想マシン45の各々から登録された利用条件情報42(利用条件情報42A、利用条件情報42B)を読取る(取得する)(SEQ619)。
次に、調停部47Eの割当部47Dが、SEQ619で読取った利用条件情報42と、SEQ615で取得した機器識別情報と、を用いて、複数の仮想マシン45の内の何れか1つに、USBホストハードウェア30の排他的利用権を割当てる(SEQ620)。割当部47Dによる割当て方法は、上記実施の形態の割当部32Dや割当部33Dと同様である。ここでは、調停部47Eは、操作部仮想マシン49に排他的利用権を割当てたものとして説明を続ける。
次に、調停部47Eは、パススルー設定OFFを示す要求信号を、設定部31Bへ送信する(SEQ622)。
設定部31Bは、コントローラ仮想マシン47の調停部47Eに対して、USBホストハードウェア30のパススルー設定の解除を行う(SEQ624)。
次に、調停部47Eが、操作部仮想マシン49の調停部49Eに、排他的利用権が割当てられたことを示す情報を送信する(SEQ626)。
操作部仮想マシン49の調停部49Eは、パススルー設定ONを示す要求信号を、設定部31Bへ送信する(SEQ628)。設定部31Bは、操作部仮想マシン49の調停部49Eに対して、USBホストハードウェア30のパススルー設定を行う(SEQ630)。
そして、操作部仮想マシン49のUSBホストドライバ38Bは、USBホストハードウェア30の利用を開始する(SEQ632)。
以上説明したように、本実施の形態では、情報処理装置10Bにおける複数の仮想マシン45の少なくとも1つが、取得部47Cによる取得ステップと、割当部47Dによる割当ステップと、を実行する。
このため、ハイパーバイザー31側で、排他的利用権の割当てを行わず、仮想マシン45側で排他的利用権を割当てることができる。そして、ハイパーバイザー31では、単純なパススルーのオンオフの設定を行えばよい。このため、ハイパーバイザー31側では、特別な処理を行う必要はない。
従って、本実施の形態の情報処理装置10Bでは、上記実施の形態および変形例の効果に加えて、様々なハイパーバイザー31上で、本実施の形態の処理を実行することが可能となる。
なお、上述した実施の形態および変形例における、情報処理装置10、10A、10Bの各々で実行する上記処理を実行するためのプログラムは、インストール可能な形式または実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよいし、インターネット等のネットワーク経由で提供または配布するように構成してもよい。また、各種プログラムを、ROM等に予め組み込んで提供するように構成してもよい。
なお、上記には、実施の形態および変形例を説明したが、これらの実施の形態および変形例は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施の形態および変形例は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これらの実施の形態および変形例は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。