ハイパーバイザによって維持される仮想化環境において、ホストユニバーサルシリアルバスUSBアダプタを仮想化する方法であって、前記ハイパーバイザは1つまたは複数の論理区画を管理し、前記ハイパーバイザによって論理区画から論理USBアダプタを介してUSB入力/出力I/O要求を受信することであって、前記論理USBアダプタは前記ホストUSBアダプタに結合されたUSBデバイスに関連付けられる、受信することと、前記ハイパーバイザによって前記論理USBアダプタに関連付けられたキューペアのキュー内に作業キュー要素WQEを配置することと、前記WQEに基づき、インターフェースデバイスによって、ダイレクトメモリアクセスDMAを用いて、前記USBデバイスで生じたUSBデータを前記ホストUSBアダプタから前記論理USBアダプタ用の専用メモリ領域へと取り出すことを含む、前記論理区画と前記USBデバイスとの間のUSBデータ通信を管理することと、を含む、方法。前記USBI/O要求に指定された仮想アドレス範囲に基づいて、前記専用メモリ領域を登録することをさらに含み、前記論理USBアダプタに関連付けられたキューペアのキュー内にWQEを配置することが、前記USBI/O要求に含まれる前記USBデバイスの論理デバイスアドレスを、前記USBデバイスの物理デバイスアドレスに変換することをさらに含み、前記WQEが、転送タイプ、前記USBデバイスの前記物理デバイスアドレス、エンドポイント識別子、および、前記専用メモリ領域の前記仮想アドレス範囲の指定を含む記述子リストをさらに備える、請求項1に記載の方法。発見された各USBデバイスに物理デバイスアドレスを割り当てること、および、発見された各USBデバイスから、前記USBデバイスを記述する情報を含むデバイス記述子を取り出すことを含む、前記ハイパーバイザによって、前記ホストUSBアダプタに結合されたUSBデバイスのUSBデバイス発見を開始することをさらに含む、請求項1に記載の方法。前記ハイパーバイザによって、1つまたは複数の論理区画への発見された各USBデバイスの割り当てを構成マネージャから受信することと、前記ハイパーバイザによって、論理区画に割り当てられた各USBデバイスに対してキューペアを確立すること320と、をさらに含む、請求項2に記載の方法。前記ハイパーバイザによって、追加のUSBデバイスが前記ホストUSBアダプタに結合されている旨の指標を受信することと、前記ハイパーバイザによって、前記追加のUSBデバイスに物理デバイスアドレスを割り当てることと、前記ハイパーバイザによって、前記追加のUSBデバイスを記述する情報を含むデバイス記述子を前記追加のUSBデバイスから取り出すことと、前記ハイパーバイザによって、構成マネージャによって提供された情報から、前記追加のUSBデバイスが現在論理区画に割り当てられているかどうかを判別することと、前記追加のUSBデバイスが現在1つまたは複数の論理区画に割り当てられている場合、前記ハイパーバイザによって、前記追加のUSBデバイスが割り当てられた各論理区画に対するキューペアを確立することと、前記ハイパーバイザによって、前記追加のUSBデバイスが割り当てられた各論理区画に、前記追加のUSBデバイスの指標が提供されることと、をさらに含む、請求項1に記載の方法。前記ハイパーバイザによって、特定のUSBデバイスが前記ホストUSBアダプタから切断された旨の指標を受信することと、前記ハイパーバイザによって、前記特定のUSBデバイスに関連付けられたすべてのキューペアを使用不可にすることと、前記ハイパーバイザによって、前記特定のUSBデバイスが割り当てられた各論理区画に前記特定のUSBデバイスの取り外しの指標を提供することと、をさらに含む、請求項1に記載の方法。ハイパーバイザによって維持される仮想化環境において、ホストユニバーサルシリアルバスUSBアダプタを仮想化するための装置であって、前記ハイパーバイザは1つまたは複数の論理区画を管理し、前記装置は、コンピュータプロセッサと、前記コンピュータプロセッサに動作可能に結合されたコンピュータメモリとを備え、前記コンピュータメモリの内部には、前記ハイパーバイザによって論理区画から論理USBアダプタを介してUSB入力/出力I/O要求を受信することであって、前記論理USBアダプタは前記ホストUSBアダプタに結合されたUSBデバイスに関連付けられる、受信することと、前記ハイパーバイザによって前記論理USBアダプタに関連付けられたキューペアのキュー内に作業キュー要素WQEを配置することと、前記WQEに基づき、インターフェースデバイスによって、ダイレクトメモリアクセスDMAを用いて、前記USBデバイスで生じたUSBデータを前記ホストUSBアダプタから前記論理USBアダプタ用の専用メモリ領域へと取り出すことを含む、前記論理区画と前記USBデバイスとの間のUSBデータ通信を管理することと、を実行可能な、コンピュータプログラム命令が配設された、装置。前記USBI/O要求に指定された仮想アドレス範囲に基づいて、前記専用メモリ領域を登録することが実行可能であり、前記論理USBアダプタに関連付けられたキューペアのキュー内にWQEを配置することが、前記USBI/O要求に含まれる前記USBデバイスの論理デバイスアドレスを、前記USBデバイスの物理デバイスアドレスに変換することをさらに含み、前記WQEが、転送タイプ、前記USBデバイスの前記物理デバイスアドレス、エンドポイント識別子、および、前記専用メモリ領域の前記仮想アドレス範囲の指定を含む記述子リストをさらに備える、コンピュータプログラム命令をさらに備える、請求項7に記載の装置。発見された各USBデバイスに物理デバイスアドレスを割り当てること、および、発見された各USBデバイスから、前記USBデバイスを記述する情報を含むデバイス記述子を取り出すことを含む、前記ハイパーバイザによって、前記ホストUSBアダプタに結合されたUSBデバイスのUSBデバイス発見を開始することをさらに含む、請求項7に記載の装置。前記ハイパーバイザによって、1つまたは複数の論理区画への発見された各USBデバイスの割り当てを構成マネージャから受信することと、前記ハイパーバイザによって、論理区画に割り当てられた各USBデバイスに対してキューペアを確立すること320と、が実行可能な、コンピュータプログラム命令をさらに備える、請求項8に記載の装置。前記ハイパーバイザによって、追加のUSBデバイスが前記ホストUSBアダプタに結合されている旨の指標を受信することと、前記ハイパーバイザによって、前記追加のUSBデバイスに物理デバイスアドレスを割り当てることと、前記ハイパーバイザによって、前記追加のUSBデバイスを記述する情報を含むデバイス記述子を前記追加のUSBデバイスから取り出すことと、前記ハイパーバイザによって、構成マネージャによって提供された情報から、前記追加のUSBデバイスが現在論理区画に割り当てられているかどうかを判別することと、前記追加のUSBデバイスが現在1つまたは複数の論理区画に割り当てられている場合、前記ハイパーバイザによって、前記追加のUSBデバイスが割り当てられた各論理区画に対するキューペアを確立することと、前記ハイパーバイザによって、前記追加のUSBデバイスが割り当てられた各論理区画に、前記追加のUSBデバイスの指標を提供することと、が実行可能な、コンピュータプログラム命令をさらに備える、請求項7に記載の装置。前記ハイパーバイザによって、特定のUSBデバイスが前記ホストUSBアダプタから切断された旨の指標を受信することと、前記ハイパーバイザによって、前記特定のUSBデバイスに関連付けられたすべてのキューペアを使用不可にすることと、前記ハイパーバイザによって、前記特定のUSBデバイスが割り当てられた各論理区画に前記特定のUSBデバイスの取り外しの指標を提供することと、が実行可能な、コンピュータプログラム命令をさらに備える、請求項7に記載の装置。ハイパーバイザによって維持される仮想化環境において、ホストユニバーサルシリアルバスUSBアダプタを仮想化するためのコンピュータプログラムであって、前記ハイパーバイザは1つまたは複数の論理区画を管理し、前記コンピュータプログラムは、コンピュータによって、前記ハイパーバイザによって論理区画から論理USBアダプタを介してUSB入力/出力I/O要求を受信することであって、前記論理USBアダプタは前記ホストUSBアダプタに結合されたUSBデバイスに関連付けられる、受信することと、前記ハイパーバイザによって前記論理USBアダプタに関連付けられたキューペアのキュー内に作業キュー要素WQEを配置することと、前記WQEに基づき、インターフェースデバイスによって、ダイレクトメモリアクセスDMAを用いて、前記USBデバイスで生じたUSBデータを前記ホストUSBアダプタから前記論理USBアダプタ用の専用メモリ領域へと取り出すことを含む、前記論理区画と前記USBデバイスとの間のUSBデータ通信を管理することと、を実行可能な、コンピュータプログラム命令を備える、コンピュータプログラム。前記USBI/O要求に指定された仮想アドレス範囲に基づいて、前記専用メモリ領域を登録することが実行可能であり、前記論理USBアダプタに関連付けられたキューペアのキュー内にWQEを配置することが、前記USBI/O要求に含まれる前記USBデバイスの論理デバイスアドレスを、前記USBデバイスの物理デバイスアドレスに変換することをさらに含み、前記WQEが、転送タイプ、前記USBデバイスの前記物理デバイスアドレス、エンドポイント識別子、および、前記専用メモリ領域の前記仮想アドレス範囲の指定を含む記述子リストをさらに備える、コンピュータプログラム命令をさらに備える、請求項13に記載のコンピュータプログラム。発見された各USBデバイスに物理デバイスアドレスを割り当てること、および、発見された各USBデバイスから、前記USBデバイスを記述する情報を含むデバイス記述子を取り出すことを含む、前記ハイパーバイザによって、前記ホストUSBアダプタに結合されたUSBデバイスのUSBデバイス発見を開始することをさらに含む、請求項13に記載のコンピュータプログラム。前記ハイパーバイザによって、1つまたは複数の論理区画への発見された各USBデバイスの割り当てを構成マネージャから受信することと、前記ハイパーバイザによって、論理区画に割り当てられた各USBデバイスに対してキューペアを確立すること320と、が実行可能な、コンピュータプログラム命令をさらに備える、請求項14に記載のコンピュータプログラム。前記ハイパーバイザによって、追加のUSBデバイスが前記ホストUSBアダプタに結合されている旨の指標を受信することと、前記ハイパーバイザによって、前記追加のUSBデバイスに物理デバイスアドレスを割り当てることと、前記ハイパーバイザによって、前記追加のUSBデバイスを記述する情報を含むデバイス記述子を前記追加のUSBデバイスから取り出すことと、前記ハイパーバイザによって、構成マネージャによって提供された情報から、前記追加のUSBデバイスが現在論理区画に割り当てられているかどうかを判別することと、前記追加のUSBデバイスが現在1つまたは複数の論理区画に割り当てられている場合、前記ハイパーバイザによって、前記追加のUSBデバイスが割り当てられた各論理区画に対するキューペアを確立することと、前記ハイパーバイザによって、前記追加のUSBデバイスが割り当てられた各論理区画に、前記追加のUSBデバイスの指標を提供することと、が実行可能な、コンピュータプログラム命令をさらに備える、請求項13に記載のコンピュータプログラム。前記ハイパーバイザによって、特定のUSBデバイスが前記ホストUSBアダプタから切断された旨の指標を受信することと、前記ハイパーバイザによって、前記特定のUSBデバイスに関連付けられたすべてのキューペアを使用不可にすることと、前記ハイパーバイザによって、前記特定のUSBデバイスが割り当てられた各論理区画に前記特定のUSBデバイスの取り外しの指標を提供することと、が実行可能な、コンピュータプログラム命令をさらに備える、請求項13に記載のコンピュータプログラム。現在、改良されたUSBの仮想化がますます求められている。ハイパーバイザによって維持される仮想化環境において、ホストユニバーサルシリアルバスUSBアダプタを仮想化するための方法、装置、および製品が開示される。本発明の諸実施形態では、ハイパーバイザは1つまたは複数の論理区画を管理し、ホストUSBアダプタの仮想化は、ハイパーバイザによって論理区画から論理USBアダプタを介してUSB入力/出力I/O要求を受信することであって、この論理USBアダプタはホストUSBアダプタに結合されたUSBデバイスに関連付けられる、受信することと、ハイパーバイザによって論理USBアダプタに関連付けられたキューペアのキュー内に作業キュー要素WQEを配置することと、WQEに基づき、インターフェースデバイスによって、ダイレクトメモリアクセスDMAを用いて、USBデバイスで生じたUSBデータをホストUSBアダプタから論理USBアダプタ用の専用メモリ領域へと取り出すことを含む、論理区画とUSBデバイスとの間のUSBデータ通信を管理することと、を含む。本発明の前述および他の目的、特徴、および利点は、同様の参照番号が本発明の例示的諸実施形態の同様の部分を全体として表す添付の図面に示された、本発明の例示的諸実施形態についての以下のより具体的な説明から明らかになろう。本発明の諸実施形態に従ってホストUSBアダプタを仮想化するための方法、装置、およびコンピュータプログラムについて、図1から始まる添付の図面を参照しながら説明する。図1は、本発明の諸実施形態に従った、ホストUSBアダプタを仮想化するための例示的システムを示すネットワーク図である。図1のシステムは、本発明の諸実施形態に従ってホストUSBアダプタを仮想化する際に役立つ例示的コンピュータ152を備える、自動化コンピューティング機構を含む。図1のコンピュータ152は、少なくとも1つのコンピュータプロセッサ156すなわちCPU、ならびに、高速メモリバス166およびバスアダプタ158を介してプロセッサ156とコンピュータ152の他のコンポーネントとに接続された、ランダムアクセスメモリ168RAMを含む。RAM168には、コンピュータプログラム命令、コンピュータハードウェアなどの、任意の組み合わせを備えることが可能な、自動化コンピューティング機構である、ハイパーバイザ130が格納される。図1の例におけるハイパーバイザ130は、仮想化環境を維持する。ハイパーバイザは仮想マシンモニタVMMとも呼ばれ、複数のオペレーティングシステムが1つのホストコンピュータ上で同時に実行できるようにするために、ソフトウェアおよびハードウェアのプラットフォーム仮想化を実行する。ハイパーバイザはホストのハードウェア上で直接、ハードウェアアクセスの制御およびゲストオペレーティングシステムの監視を実行する。ゲストオペレーティングシステムは、ハイパーバイザより上のレベルで実行する。ハイパーバイザによって提供されるプラットフォーム仮想化が、本明細書では仮想化環境と呼ばれる。仮想化環境とは、コンピューティングプラットフォームの物理的特徴、すなわちコンピュータプロセッサ、コンピュータメモリ、I/Oアダプタなどが、オペレーティングシステムおよび他のソフトウェアアプリケーションの観点から抽出される環境である。図1の例では、ハイパーバイザ130は、2つの論理区画106、118を含む仮想化環境を維持する。本明細書で使用される用語としての論理区画とは、内部でオペレーティングシステムおよび他のアプリケーションが実行可能なハイパーバイザによって提供される、固有の仮想マシンのことである。各論理区画106、118は、アプリケーション108、120およびオペレーティングシステム110、122を含む。アプリケーション108、120は、ユーザレベルのデータ処理タスクを実行することができるコンピュータプログラム命令のモジュールである。こうしたアプリケーションの例には、当業者であれば思いつくであろう、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、ウェブサーバアプリケーション、データベース管理アプリケーション、メディアライブラリアプリケーション、メディア再生アプリケーション、メディア変換アプリケーションなどが含まれる。本発明の諸実施形態に従ってホストUSBアダプタを仮想化するシステムにおいて有用なオペレーティングシステムには、当業者であれば思いつくであろう、UNITTM、LinuxTM、MicrosoftXPTM、AIXTM、IBM社のi5/OSTM、およびその他が含まれる。図1の例では、ハイパーバイザ130は、一般に、本発明の諸実施形態に従ったホストUSBアダプタ202を仮想化するためにも動作する。USBは、デバイスとホストコントローラとの間の通信を確立するための仕様である。USBは、マウス、キーボード、デジタルカメラ、プリンタ、パーソナルメディアプレーヤ、フラッシュドライブ、および外付けハードドライブなどの、コンピュータ周辺装置を接続することができる。こうしたデバイスの多くでは、USBは標準接続方法となってきている。USBはパーソナルコンピュータ用に設計されたが、スマートフォン、携帯情報端末PDA、およびビデオゲームコンソールなど、ならびに、デバイスとバッテリ充電用のコンセントに差し込まれるACアダプタとの間の電源コードなどの、他のデバイスで普及してきた。USBの設計は、コンピュータおよび電子産業から主要な企業を組み入れた業界規格化団体である、USBインプリメンターズフォーラムUSB-IFによって規格化される。USBデバイスは、ホストUSBアダプタを介してホストコンピュータシステムに結合される。図1の例では、ホストUSBアダプタ202は、USBハブ204を介して2つのUSBデバイス206、208に結合される。USBハブとは、多くのUSBデバイスを、ホストコンピュータ又は他のハブ上の単一のUSBポートに接続できるようにするデバイスである。ハイパーバイザ130は、ホストUSBアダプタ202に結合されたUSBデバイス206、208のUSBデバイス発見を開始することによって、ホストUSBアダプタ202を仮想化することができる。USBデバイス206、208のUSBデバイス発見の開始は、発見された各USBデバイスに物理デバイスアドレス105を割り当てること、および、発見された各USBデバイスからUSBデバイスを記述する情報を含むデバイス記述子117を取り出すことを、含むことができる。デバイス記述子117は、たとえばUSBデバイスのデバイスクラス、USBデバイスのベンダ識別子、USBデバイスの製品識別子、およびUSBデバイスのシリアル番号を含むことができる。物理デバイスアドレス105の割り当ては、デフォルトのターゲットアドレスを使用してUSBファブリックを探査すること、USBデバイスに物理デバイスアドレスを割り当てるために制御移行によって探査中に識別された各デバイスをプログラミングすることを含む、USB仕様によって定義されたような典型的な様式で実施することができる。ハイパーバイザ130は、は、デバイスの探査中に、現時点で発見されているUSBデバイスが示された、テーブル、リスト、または論理ツリーなどの、データ構造を生成することができる。ハイパーバイザ130は、たとえば、物理デバイスアドレス105およびデバイス記述子117間の関連性を含むテーブル図示せずを生成することができる。ハイパーバイザ130は、構成マネージャ200から、1つまたは複数の論理区画への発見された各USBデバイス割り当て119を受信することもできる。構成マネージャとは、図1のコンピュータ152に関する構成メカニズムをユーザに提供する、自動化コンピューティング機構のモジュールである。構成マネージャ200は、たとえば、ユーザ入力を取り込む際に介することが可能なグラフィカルユーザインターフェースGUIを提示することができる。こうしたGUIによって、ユーザは、たとえば論理区画106、118へのUSBデバイス206、208の割り当てを含む、図1のコンピュータ152の様々なコンポーネントを構成することができる。図1の例の構成マネージャ200は、GUIによって受信されたユーザ入力に応答して、1つまたは複数の論理区画への発見された各USBデバイス割り当て119を指定することができる。こうした割り当て119の受信に応答して、ハイパーバイザ130は、物理デバイスアドレス105と、論理デバイスアドレス103、区画識別子107、およびデバイス記述子117との関連性を含む、図1の例示的デバイスアドレステーブル150などの、割り当てを表すデータ構造を生成することができる。構成マネージャ200は、USBデバイス発見中にあらかじめ発見されなかったUSBデバイスについて、ハイパーバイザに通知することもできる。こうしたデバイスは、現在、電力節約のために電源がオフになっている、修理に出されているなどの可能性がある。ハイパーバイザ130は、論理区画106、118に割り当てられた各USBデバイス206、208について、キューペア134136、146148を確立することができる。さらにハイパーバイザは、区画に割り当てられた各USBデバイスについて、別々の論理USBアダプタ116、118を提示する。たとえば、3つのデバイスが割り当てられた論理区画の場合、ハイパーバイザは3つのキューペアを確立することが可能であり、さらに、その論理区画に3つの別々の論理USBアダプタを提示することが可能である。論理USBアダプタとは、USBデータ通信を実行するための手段として論理区画106に提示される自動化コンピューティング機構のモジュールであり、ここで論理USBアダプタは、ホストUSBアダプタ202に結合された特定のUSBデバイスに関連付けられる。論理USBアダプタは、区画の観点からすると、ホストUSBアダプタ202の抽出である。図1のシステムでは、論理区画内のオペレーティングシステムの観点からすると、実際は1つのハードウェアUSBアダプタ202のみが存在する場合、論理区画に割り当てられた各USBデバイスは異なるホストUSBアダプタ、すなわち論理USBアダプタに、直接結合される。1つのUSBデバイスを複数の論理区画に割り当てることができる。USBデバイスが割り当てられた各論理区画について、ハイパーバイザは別々のキューペアを確立し、その区画に論理USBアダプタを提示する。論理区画に割り当てられた各USBデバイスに対するキューペアの確立に加えて、またその確立の後、ハイパーバイザは、論理区画に割り当てられた各USBデバイスに、USBデバイスの存在のインジケーションを提供することができる。こうしたインジケーションの後、区画106、118のオペレーティングシステム110、122は、USBデバイスのためのデバイスドライバ112、124をロードすることができる。ハイパーバイザは、論理USBアダプタ116、128を介して論理区画106、118からUSB入力/出力I/O要求114、126を受信することによって、図1のホストUSBアダプタ202を仮想化することもできる。各論理USBアダプタ116、128は、ホストUSBアダプタ204に結合されたUSBデバイス206、208に関連付けられる。ハイパーバイザは、ハイパーバイザによって各区画に使用可能となった機能へのライブラリ機能呼び出しを受信することによって、USBI/O要求114、126を受信することが可能であり、より具体的に言えば、デバイスドライバ112、124は、1つまたは複数のハイパーバイザ機能呼び出しを実行し、USBデバイスから受信したUSBデータを格納するためのメモリ領域を定義する仮想アドレス範囲、USBデバイスを識別する論理デバイスアドレス、および実行するI/Oのタイプなどの、USBI/O要求のペイロードデータを、機能呼び出しへの引数として渡すことができる。ハイパーバイザは、USBI/O要求114、126に指定された仮想アドレス範囲に基づいて、専用メモリ領域190、192を登録することができる。ハイパーバイザは、メモリページングから物理メモリセグメントをピンニングpinningすること、および仮想アドレス範囲を物理メモリセグメントにマッピングすることによって、専用メモリ領域190、192を登録することができる。こうした仮想アドレス範囲109、113の物理アドレス範囲111、115へのマッピングを、たとえばアドレステーブル194、196内などの、各区画106、118に関する別々のデータ構造内に格納することができる。ハイパーバイザ130は、論理USBアダプタ116、128に関連付けられたキューペアのキュー134、136、146、148内に作業キュー要素WQEを配置することもできる。キューペアとは、仮想化されたホストUSBアダプタに伝送/受信または送信/受信機能を提供する、2つのキューのセットである。キューペアは、HostEthernetAdapterで実装されたキューペアと同様の様式で、またはInfinibandTM技術で、実装可能である。キューペアのキュー内にWQEを配置する際に、ハイパーバイザは、USBI/O要求114、126に含まれるUSBデバイス206、208の論理デバイスアドレス103を、USBデバイス206、208の物理デバイスアドレス105に変換することができる。WQEとは、USBデータ通信を介して実施されることになる送信または受信コマンドなどの特定の動作を定義する要素である。送信WQEはキューペアの送信キュー内に配置することが可能であり、受信WQEはキューペアの受信キュー内に配置することが可能である。WQEは、転送タイプ、USBデバイスの物理デバイスアドレス、エンドポイント識別子、および、専用メモリ領域の仮想アドレス範囲の指定を含む記述子リストを指定することができる。転送タイプは、大容量転送、割り込みタイプ転送、等時性Isochronous転送、または制御転送などの、実施するためのデータ通信転送のタイプを記述する。エンドポイント識別子は、通信パーティ、USBデバイスによって公開される、インターフェースの識別子である。各論理USBアダプタ116、128は、各キューペアの送信キューおよび受信キューに加えて、完了キュー132、144にも関連付けられる。完了キュー132、144は、WQEの完了を示す要素、完了キュー要素を格納するように構成される。完了キュー132、144には、完了キュー要素CQE138、184が格納される。図1のコンピュータは、インターフェースデバイス102も含む。図1のインターフェースデバイス102は、WQEに基づいて論理区画とUSBデバイスとの間のUSBデータ通信を管理するように構成された、自動化コンピューティング機構を備える。図1の例におけるインターフェースデバイス102は、ダイレクトメモリアクセスDMAエンジン104も含む。USBデータ通信を管理する際に、インターフェースデバイス102は、DMAを用いて、USBデバイス206、208で生じたUSBデータをホストUSBアダプタ202から論理USBアダプタ116、128用の専用メモリ領域190、192へと取り出すことができる。DMAは、コンピュータ内のハードウェアサブシステムが、中央処理ユニットとは無関係に読み取りおよび書き込みのためにシステムメモリにアクセスできるようにする、最新のコンピュータおよびマイクロプロセッサの機能である。多くのハードウェアシステムは、ディスクドライブコントローラ、グラフィックスカード、ネットワークカード、およびサウンドカードを含む、DMAを使用する。DMAは、複数コアプロセッサ内での、特に、その処理要素にローカルメモリしばしばスクラッチパッドメモリと呼ばれるが装備され、DMAがローカルメモリとメインメモリとの間でデータを転送するために使用される、オンチップマルチプロセッサシステム内での、チップ間データ転送にも使用される。DMAチャネルを有するコンピュータは、DMAチャネルを有さないコンピュータに比べてはるかに少ないCPUオーバヘッドで、デバイスとの間でデータを転送することができる。同様に、マルチコアプロセッサ内部の処理要素は、そのプロセッサ時間を占有することなく、また計算およびデータ転送の同時実行を可能にしながら、そのローカルメモリとの間でデータを転送することが可能である。インターフェースデバイスは、物理デバイスアドレスおよびパケット識別子PIDに基づいて、ホストUSBアダプタによって受信された着信データのUSBフレームルーティングを実行する。USBフレーム内のPIDは、USBフレームのタイプを識別する。例示的なPIDには、SPLIT、PING、PRE、ERR、ACK、NACKNYET、STALL、OUT、IN、SOF、SETUP、DATA0、DATA1、DATA2、MDATAなどが含まれる。PIDおよびデバイスアドレスを使用して、インターフェースデバイスによって関連付けられたWQEおよびWQEからの専用メモリの仮想アドレス範囲を識別することができる。インターフェースデバイスは、WQEならびにアドレステーブル194、196に含まれる仮想アドレス範囲を使用して、仮想アドレスを物理アドレスに変換し、DMAをその物理アドレス範囲に直接変換することができる。RAM168内には、論理区画106、118、アプリケーション108、120、オペレーティングシステム110、122、デバイスドライバ112、124、USBI/O要求114、126、論理USBアダプタ116、128、ハイパーバイザ130、キューペア134136、146148、他のデータ、データ構造、および図1の例におけるコンピュータプログラム命令のモジュールが示されているが、こうしたソフトウェアの多くのコンポーネントは、たとえばディスクドライブ170などの不揮発性メモリ内にも格納される。図1のコンピュータ152は、拡張バス160およびバスアダプタ158を介してプロセッサ156およびコンピュータ152の他のコンポーネントに結合された、ディスクドライブアダプタ172を含む。ディスクドライブアダプタ172は、不揮発性データストレージをディスクドライブ170の形でコンピュータ152に接続する。本発明の諸実施形態に従ってホストUSBアダプタを仮想化するためにコンピュータ内で有用なディスクドライブアダプタは、当業者であれば思いつくであろうIntegatedDriveEectronicsIDEアダプタ、SmallComputerSystemInterfaceSCSIアダプタ、およびその他を含む。不揮発性コンピュータメモリは、当業者であれば思いつくであろう光ディスクドライブ、電気消去可能プログラマブル読み取り専用メモリいわゆるEEPROMまたはフラッシュメモリ、RAMドライブなどとしても実装可能である。図1の例示的コンピュータ152は、1つまたは複数の入力/出力I/Oアダプタ178を含む。I/Oアダプタは、たとえば、ソフトウェアドライブおよびコンピュータハードウェアを介して、コンピュータディスプレイなどのディスプレイデバイスへの出力、ならびにキーボードおよびマウスなどのユーザ入力デバイス181からのユーザ入力を制御するための、ユーザ指向入力/出力を実装する。図1の例示的コンピュータ152は、ディスプレイ画面またはコンピュータモニタなどのディスプレイデバイス180へのグラフィック出力向けに特別に設計されたI/Oアダプタの一例である、ビデオアダプタ209を含む。ビデオアダプタ209は、高速ビデオバス164、バスアダプタ158、および、同じく高速バスであるフロントサイドバス162を介して、プロセッサ156に接続される。図1の例示的コンピュータ152は、他のコンピュータ182とのデータ通信用、およびデータ通信ネットワーク100とのデータ通信用の、通信アダプタ167を含む。こうしたデータ通信は、RS-232接続を介して、UniversalSerialBusUSBなどの外部バスを介して、IPデータ通信ネットワークなどのデータ通信ネットワークを介して、および当業者であれば思いつくであろう他の方法で、順次実施することができる。通信アダプタは、1つのコンピュータが他のコンピュータへ、直接またはデータ通信ネットワークを介してデータ通信を送信する際に介するハードウェアレベルのデータ通信を実装する。本発明の諸実施形態に従ってホストUSBアダプタを仮想化するために有用な通信アダプタの例には、有線ダイアルアップ通信用モデム、有線データ通信ネットワーク通信用EthernetIEEE802.3アダプタ、および無線データ通信ネットワーク通信用802.11アダプタが含まれる。図1に示された例示的システムを構成しているサーバおよび他のデバイスの配置構成は、説明のためであり、限定的なものではない。本発明の様々な実施形態に従った有用なデータ処理システムは、当業者であれば思いつくであろう、図1に示されていない追加のサーバ、ルータ、他のデバイス、およびピアツーピアアーキテクチャを含むことができる。こうしたデータ処理システムにおけるネットワークは、たとえば、当業者であれば思いつくであろう、TCP伝送制御プロトコル、IPインターネットプロトコル、HTTPハイパーテキスト転送プロトコル、WAP無線アクセスプロトコル、HDTPハンドヘルドデバイス転送プロトコル、およびその他を含む、多くのデータ通信プロトコルをサポートすることができる。本発明の様々な実施形態は、図1に示されたものに加えて様々なハードウェアプラットフォーム上で実装可能である。さらに詳細に説明するために、図2は、本発明の諸実施形態に従ってホストUSBアダプタを仮想化するための例示的方法を示す流れ図を示す。図2の方法は、1つまたは複数の論理区画図1の106、118を管理するハイパーバイザ130によって維持される、仮想化環境内で実施される。図2の方法は、ハイパーバイザ130により、論理USBアダプタを介して論理区画からUSBI/O要求212を受信すること210を含む。図2の方法では、ホストUSBアダプタに結合されたUSBデバイスに関連付けられた論理USBアダプタはホストUSBアダプタに結合される。同様に図2の方法では、USBI/O要求212は、登録するメモリ領域を指定する、仮想アドレス範囲214と、USBデバイスを識別する論理デバイスアドレスとを含む。図2の方法は、USBI/O要求212に指定された仮想アドレス範囲214に基づいて、専用メモリ領域190を登録すること218も含む。前述のように、ハイパーバイザは、DMA転送を実行する際にインターフェースデバイスによって後に使用するための物理アドレスマッピングへの仮想アドレスのページングおよび格納から、メモリ領域をピンニングすることによって、専用メモリ領域190を登録すること218ができる。図2の方法は、ハイパーバイザ130によって、論理USBアダプタに関連付けられたキューペア134、136のキュー136内にWQE140を配置すること220も含む。図2の方法では、キュー136内にWQE140を配置すること220は、USBI/O要求218に含まれるUSBデバイスの論理デバイスアドレス216を、USBデバイスの物理デバイスアドレス232に変換すること222を含む。図2の方法では、WQE140は、転送タイプ230、USBデバイスの物理デバイスアドレス232、エンドポイント識別子234、および、専用メモリ領域190の仮想アドレス範囲214の指定を含む記述子リスト236を含む。図2の方法は、WQE140に基づき、論理区画とUSBデバイスとの間のUSBデータ通信をインターフェースデバイス102によって管理すること226も含む。図2の方法では、USBデータ通信を管理すること226は、DMAを用いて、USBデバイスで生じたUSBデータ224をホストUSBアダプタから論理USBアダプタ用の専用メモリ領域190へと取り出すこと228によって実施される。さらに詳細に説明するために、図3は、本発明の諸実施形態に従った、ホストUSBアダプタを仮想化するための他の例示的方法を示す流れ図を示す。図3の方法は、図3の方法が、1つまたは複数の論理区画図1の106、118を管理するハイパーバイザ130によって維持される仮想化環境内で実施されるという点において、図2の方法と同様である。図3の方法は、図3の方法が、USBI/O要求212を受信すること210と、論理USBアダプタに関連付けられたキューペア134、136のキュー136内にWQE140を配置すること220と、DMAを用いて、USBデータ224をホストUSBアダプタから論理USBアダプタ用の専用メモリ領域190へと取り出すこと228により、論理区画とUSBデバイスとの間のUSBデータ通信を管理すること226とを含む、という点においても、図2の方法と同様である。しかしながら図3の方法は、図3の方法が、ハイパーバイザ130によって、ホストUSBアダプタに結合されたUSBデバイスのUSBデバイス発見を開始すること302も含むという点において、図2の方法とは異なる。図2の方法では、ホストUSBアダプタに結合されたUSBデバイスのUSBデバイス発見を開始すること302は、発見された各USBデバイスに物理デバイスアドレス310を割り当てること304、および、発見された各USBデバイスから、USBデバイスを記述する情報を含むデバイス記述子312を取り出すこと306によって、実施される。ハイパーバイザは、発見された各デバイスの物理デバイスアドレス310およびデバイス記述子312を含む、現在発見されているUSBデバイスのテーブル308を生成することができる。図3の方法は、ハイパーバイザ130によって、1つまたは複数の論理区画318への発見された各USBデバイスの割り当て316を構成マネージャから受信すること314も含む。図3の方法は、ハイパーバイザ130によって、論理区画に割り当てられた各USBデバイスに対してキューペア134、136を確立すること320も含む。さらに詳細に説明するために、図4は、本発明の諸実施形態に従った、ホストUSBアダプタを仮想化するための他の例示的方法を示す流れ図を示す。図4の方法は、図4の方法が、1つまたは複数の論理区画図1の106、118を管理するハイパーバイザ130によって維持される仮想化環境内で実施されるという点において、図2の方法と同様である。図4の方法は、図4の方法が、USBI/O要求212を受信すること210と、論理USBアダプタに関連付けられたキューペア134、136のキュー136内にWQE140を配置すること220と、DMAを用いて、USBデータ224をホストUSBアダプタから論理USBアダプタ用の専用メモリ領域190へと取り出すこと228により、論理区画とUSBデバイスとの間のUSBデータ通信を管理すること226とを含む、という点においても、図2の方法と同様である。しかしながら図4の方法は、図4の方法が、ハイパーバイザによって、追加のUSBデバイスがホストUSBアダプタに結合されている旨の指標を受信すること402も含むという点において、図2の方法とは異なる。ハイパーバイザによって、追加のUSBデバイスがホストUSBアダプタに結合されている旨の指標を受信すること402は、たとえば、ダウンストリームUSBハブまたはホストUSBアダプタへの追加USBデバイスの接続時に発生するハードウェア割り込みを受信することを含む、様々な方法で実施することができる。図4の方法は、ハイパーバイザ130によって、追加のUSBデバイスに物理デバイスアドレスを割り当てること404、ハイパーバイザ130によって、追加のUSBデバイスを記述する情報を含むデバイス記述子を追加のUSBデバイスから取り出すこと406、および、ハイパーバイザ130によって、構成マネージャから提供された情報から追加のUSBデバイスが現在論理区画に割り当てられているかどうかを判別すること408も含む。追加のUSBデバイスが現在論理区画に割り当てられているかどうかを判別すること408は、追加のUSBデバイスのシリアル番号および任意の関連付けられた区画識別子318などの、デバイス記述子またはデバイス記述子の一部312に対するデバイス割り当てのテーブル316を検査することによって、実施することができる。追加のUSBデバイスが現在1つまたは複数の論理区画に割り当てられていない場合、図4の方法は、ハイパーバイザ130によって、USBデバイスに対するキューペアを確立しないこと414によって続行される。追加のUSBデバイスが現在1つまたは複数の論理区画に割り当てられている場合、図4の方法は、ハイパーバイザ130によって、追加のUSBデバイスが割り当てられた各論理区画に対するキューペア134、136を確立すること410によって続行される。図4の方法は、ハイパーバイザ130によって、追加のUSBデバイスが割り当てられている各論理区画に、追加のUSBデバイスの指標を提供すること412も含む。ハイパーバイザは、こうした目的用にオペレーティングシステムが指定されている区画内でソフトウェア割り込みを発生させること、または当業者であれば思いつくであろう他の方法で、追加のUSBデバイスが割り当てられている各論理区画に、追加のUSBデバイスの指標を提供すること412が可能である。さらに詳細に説明するために、図5は、本発明の諸実施形態に従った、ホストUSBアダプタを仮想化するための他の例示的方法を示す流れ図を示す。図5の方法は、図5の方法が、1つまたは複数の論理区画図1の106、118を管理するハイパーバイザ130によって維持される仮想化環境内で実施されるという点において、図2の方法と同様である。図5の方法は、図5の方法が、USBI/O要求212を受信すること210と、論理USBアダプタに関連付けられたキューペア134、136のキュー136内にWQE140を配置すること220と、DMAを用いて、USBデータ224をホストUSBアダプタから論理USBアダプタ用の専用メモリ領域190へと取り出すこと228により、論理区画とUSBデバイスとの間のUSBデータ通信を管理すること226とを含む、という点においても、図2の方法と同様である。しかしながら図5の方法は、図5の方法が、ハイパーバイザ130によって、特定のUSBデバイスがホストUSBアダプタから切断された旨の指標を受信すること502、ハイパーバイザ130によって、この特定のUSBデバイスに関連付けられたすべてのキューペアを使用不可にすること504、および、ハイパーバイザ130によって、この特定のUSBデバイスが割り当てられた各論理区画にこの特定のUSBデバイスの取り外しの指標を提供すること506も含むという点において、図2の方法とは異なる。前述の説明から鑑みて、本発明の諸実施形態に従ってホストUSBアダプタを仮想化することの利点が、以下の点を含むことを理解されよう。1つの物理ハードウェアが多くの区画によって共有される。顧客はUSB接続を達成するために、各論理区画用に別々のアダプタを購入する必要がない。これにより、アダプタの費用と、アダプタの格納装置、ケーブル接続、および他の物理属性との、両方が節約される。デバイスドライバ間または区画間の調整が不要である。完全なハードウェア分離および保護が提供される。たとえその区画が挙動不良であっても、仮想化USBハードウェアを介して他の区画を破損する可能性はない。本発明の諸実施形態に従った仮想化を採用するために、既存のUSBインフラストラクチャを変更する必要はまったくない。諸実施形態は、標準の市販のコンポーネントおよび管理ソフトウェアと、完全に相互運用可能とすることができる。USBアダプタは、通常のホストUSBアダプタに対してネットワークとして出現する。論理USBアダプタは、適切に実装されたUSBアダプタとまったく同様にコピーの書き込み/読み取りを提供しないため、論理USBアダプタの仕様に関連付けられた性能に不利な条件に制限されない。アダプタ、アダプタの格納装置、およびUSBデバイスの数が削減されることによって、大幅な電力節約が可能である。USBアダプタを仮想化することにより、CPU処理能力およびメモリの大幅な節約が可能である。USBのための現在のオペレーティングシステムデバイスドライバは変更することなく、本発明の諸実施形態に従って仮想化されたUSBホストアダプタと共に動作可能である。当業者であれば理解できるように、本発明の諸態様は、システム、方法、またはコンピュータプログラム製品として具体化可能である。したがって、本発明の諸態様は、すべてが本明細書では一般に回路、モジュール、またはシステムと呼ばれることのある、完全なハードウェア実施形態、完全なソフトウェア実施形態ファームウェア、常駐ソフトウェア、マイクロコードなどを含む、またはソフトウェアおよびハードウェアの諸態様を組み合わせた実施形態の形をとることができる。さらに、本発明の諸態様は、具体化されたコンピュータ読み取り可能プログラムコードを有する、1つまたは複数のコンピュータ読み取り可能媒体において具体化されたコンピュータプログラム製品の形を取ることができる。1つまたは複数のコンピュータ読み取り可能媒体の任意の組み合わせが利用可能である。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能ストレージ媒体とすることができる。コンピュータ読み取り可能ストレージ媒体は、たとえば電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイス、あるいはそれらの任意の好適な組み合わせとすることができるが、これらに限定されない。コンピュータ読み取り可能ストレージ媒体のより具体的な例網羅的なリストではないには、1本または複数の線を有する電気接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリRAM、読み取り専用メモリROM、消去可能プログラマブル読み取り専用メモリEPROMまたはフラッシュメモリ、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリCD-ROM、光ストレージデバイス、磁気ストレージデバイス、またはこれらの任意の好適な組み合わせが含まれることになる。本書との関連において、コンピュータ読み取り可能ストレージ媒体は、命令実行システム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを、包含または格納可能な、任意の有形媒体とすることができる。コンピュータ読み取り可能信号媒体は、たとえば帯域幅内で、または搬送波の一部として、内部に具体化されたコンピュータ読み取り可能プログラムコードを備えた、伝搬データ信号を含むことができる。こうした伝搬信号は、電磁、光、またはそれらの好適な組み合わせを含むがこれらに限定されない、様々な形のいずれかを取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能ストレージ媒体ではなく、命令実行システム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを通信、伝搬、または移送することが可能な、任意のコンピュータ読み取り可能媒体とすることができる。コンピュータ読み取り可能媒体上で具体化されたプログラムコードは、無線、有線、光ファイバケーブル、RFなど、またはこれらの任意の好適な組み合わせを含むがこれらに限定されない、任意の適切な媒体を使用して伝送可能である。本発明の諸態様に関する動作を実行するためのコンピュータプログラムコードは、Java、Smalltalk、Cなど、および、Cプログラミング言語または同様のプログラミング言語などの従来の手続きプログラミング言語などの、オブジェクト指向プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで作成することができる。プログラムコードは、全体としてユーザのコンピュータ上で、一部はスタンドアロン型ソフトウェアパッケージとしてユーザのコンピュータ上で、一部はユーザのコンピュータ上かつ一部はリモートコンピュータ上で、あるいは全体としてリモートコンピュータまたはサーバ上で、実行可能である。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワークLANまたはワイドエリアネットワークWANを含む任意のタイプのネットワークを介して、ユーザのコンピュータに接続可能であるか、またはたとえばインターネットサービスプロバイダを介して外部コンピュータへと接続することが可能である。以上、本発明の諸態様について、本発明の諸実施形態に従った方法、装置システム、およびコンピュータプログラム製品の流れ図あるいはブロック図またはその両方を参照しながら説明した。流れ図あるいはブロック図またはその両方の各ブロック、ならびに、流れ図あるいはブロック図またはその両方におけるブロックの組み合わせは、コンピュータプログラム命令によって実装可能であることを理解されよう。これらのコンピュータプログラム命令を、汎用コンピュータ、特定用途向けコンピュータ、または他のプログラマブルデータ処理装置の、プロセッサに提供し、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行する命令が、流れ図あるいはブロック図またはその両方のブロックで指定された機能/動作を実装するための手段を作成するようなマシンを作成することができる。コンピュータ読み取り可能媒体に格納された命令が、流れ図あるいはブロック図またはその両方のブロックで指定された機能/動作を実装する命令を含む製品を製造するように、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスが、特定の様式で機能するように命令可能な、これらのコンピュータプログラム命令は、コンピュータ読み取り可能媒体内に格納することもできる。コンピュータプログラム命令は、コンピュータまたは他のプログラマブル装置上で実行する命令が、流れ図あるいはブロック図またはその両方のブロックで指定された機能/動作を実装するためのプロセスを提供するように、コンピュータ実施プロセスを作成するために、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるように、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイス上にロードすることもできる。図面における流れ図およびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。この点で、流れ図またはブロック図における各ブロックは、コードのモジュール、セグメント、または一部を表し、指定された論理機能を実装するための1つまたは複数の実行可能命令を備える。いくつかの代替実装では、ブロック内に示された機能が、図に示された順序以外で実行可能であることにも留意されたい。たとえば、連続して示された2つのブロックが、実際にはほぼ同時に実行可能であるか、またはそのブロックが、関連する機能に応じて時には逆の順序で実行可能な場合がある。ブロック図あるいは流れ図またはその両方の各ブロック、および、ブロック図あるいは流れ図またはその両方におけるブロックの組み合わせが、指定された機能または動作、あるいは特定用途向けハードウェアおよびコンピュータ命令の組み合わせを実行する、特定用途向けハードウェアベースシステムによって実装可能であることにも留意されたい。前述の説明から、本発明の様々な実施形態において、その趣旨を逸脱することなく、修正および変更が可能であることを理解されよう。本明細書の説明は単に例示を目的としており、限定的な意味で解釈されるべきではない。本発明の範囲は、以下の特許請求の範囲の記述によってのみ限定されるものである。