"プロセッサパッケージを持つコンピュータシステムであって、オペレーティングシステムと、物理I/O装置と、前記物理I/O装置に対応する仮想I/O装置をインスタンス化する部分仮想マシンとを備え、前記仮想I/O装置は、仮想I/Oコントローラを含み、前記部分仮想マシンは、前記オペレーティングシステムから前記仮想I/O装置に対するI/O要求を捕捉するI/Oポートトラップ部と、前記I/Oポートトラップ部に結合されており、前記I/O要求がI/O制御要求を含む場合に前記仮想I/Oコントローラに対するI/O制御要求を処理するI/Oコントローラエミュレータ部と、前記I/Oポートトラップ部に結合されており、前記I/O要求がI/Oアクセス要求を含む場合に前記仮想I/O装置と通信するためのI/Oアクセス要求を処理するI/O装置エミュレータ部と、前記I/Oコントローラエミュレータ部および前記I/O装置エミュレータ部に結合されており、前記I/O制御要求および前記I/Oアクセス要求に少なくとも部分的に基づき前記物理I/O装置と通信する装置ドライバ部とを有し、前記部分仮想マシンは、前記プロセッサパッケージにおいてセキュアエンクレーブセッションにおいて実行され、前記オペレーティングシステムによる前記部分仮想マシンへのアクセスを抑制するコンピュータシステム。前記仮想I/O装置は仮想ATA装置を含み、前記仮想I/Oコントローラは仮想ATAコントローラを含み、前記物理I/O装置はATA装置を含む請求項1に記載のコンピュータシステム。前記仮想I/O装置は仮想SCSI装置を含み、前記仮想I/Oコントローラは仮想SCSIコントローラを含み、前記物理I/O装置はSCSI装置を含む請求項1に記載のコンピュータシステム。前記仮想I/O装置は仮想USB装置を含み、前記仮想I/Oコントローラは仮想USBコントローラを含み、前記物理I/O装置はUSB装置を含む請求項1に記載のコンピュータシステム。前記オペレーティングシステムが利用する第1の部分と、前記オペレーティングシステムおよび前記部分仮想マシンがデータを共有するための第2の部分と、前記部分仮想マシンが利用する第3の部分とにパーティション化されているメモリをさらに備え、前記第3の部分は、前記オペレーティングシステムから隠されている請求項1に記載のコンピュータシステム。前記物理I/O装置は、前記オペレーティングシステムから隠されている請求項1に記載のコンピュータシステム。前記部分仮想マシンは、OSに依存しない請求項1に記載のコンピュータシステム。オペレーティングシステムおよびプロセッサパッケージを備えるコンピュータシステムにおいて、物理I/O装置に対応する仮想I/O装置を提供する方法であって、仮想I/Oコントローラを含む前記仮想I/O装置を部分仮想マシンによってインスタンス化する段階と、前記部分仮想マシンのI/Oポートトラップ部によって、前記オペレーティングシステムから前記仮想I/O装置に対するI/O要求を捕捉する段階と、前記I/O要求が前記仮想I/OコントローラへのI/O制御要求を含む場合に、前記部分仮想マシンのI/Oコントローラエミュレータ部によって前記I/O制御要求を処理する段階と、前記I/O要求がI/Oアクセス要求を含む場合に、前記部分仮想マシンのI/O装置エミュレータ部によって前記I/Oアクセス要求を処理する段階とを備え、前記部分仮想マシンは、前記プロセッサパッケージにおいてセキュアエンクレーブセッションにおいて実行されているので、前記オペレーティングシステムによる前記部分仮想マシンへのアクセスが抑制され、前記I/O装置エミュレータ部は前記物理I/O装置に対応付けられている前記部分仮想マシンの装置ドライバと通信して、前記I/Oアクセス要求を実行する方法。前記仮想I/O装置は仮想ATA装置を含み、前記仮想I/Oコントローラは仮想ATAコントローラを含み、前記物理I/O装置はATA装置を含む請求項8に記載の方法。前記仮想I/O装置は仮想SCSI装置を含み、前記仮想I/Oコントローラは仮想SCSIコントローラを含み、前記物理I/O装置はSCSI装置を含む請求項8に記載の方法。前記仮想I/O装置は仮想USB装置を含み、前記仮想I/Oコントローラは仮想USBコントローラを含み、前記物理I/O装置はUSB装置を含む請求項8に記載の方法。前記コンピュータシステムは、前記オペレーティングシステムが利用する第1の部分と、前記オペレーティングシステムおよび前記部分仮想マシンがデータを共有するための第2の部分と、前記部分仮想マシンが利用する第3の部分とにパーティション化されているメモリを備え、前記第3の部分は、前記オペレーティングシステムから隠されている請求項8に記載の方法。前記部分仮想マシンによって前記オペレーティングシステムから前記物理I/O装置を隠す段階をさらに備える請求項8に記載の方法。前記部分仮想マシンは、OSに依存しない請求項8に記載の方法。前記I/O要求を捕捉した後で前記部分仮想マシンによってセキュアエンクレーブセッションを開始して、前記I/O要求を処理した後で前記オペレーティングシステムに制御を戻す前に前記部分仮想マシンによって前記セキュアエンクレーブセッションを終了する段階をさらに備える請求項8に記載の方法。本発明の実施形態は、部分仮想化マシンPVMを実現することによって統一格納装置を提供するシステムおよび方法を含む。PVMは、コンピュータシステムに結合されているさまざまな物理格納装置より高位に少なくとも1つの仮想格納装置を生成するために利用され得る。サポートされている格納装置のそれぞれについて特定の装置ドライバを提供する代わりに、OSは、統一格納装置に対するインターフェースにアクセスするとしてよい。PVMは、セキュアエンクレーブセッションにおいて実行されるので、従来の格納装置インターフェースに比べてセキュリティが改善され得る。本発明の実施形態によると、統一格納装置は、ブート時間およびランタイムにおいて利用可能であるとしてよく、OSに依存しないとしてよい。本明細書において本発明の一実施形態またはある実施形態と記載する場合、当該実施形態に関連付けて説明されている特定の特徴、構造、または、特性が本発明の少なくとも1つの実施形態に含まれていることを意味するものである。このように、一実施形態においてという表現は本明細書において繰り返し見られるが、必ずしも全てが同じ実施形態を意味するものではない。OSと特定の格納装置とを整合させるべく、当該格納装置のメーカによって当該格納装置について標準的なI/Oインターフェースが定義されているのが普通である。過去数年間にわたって利用されているI/Oインターフェースには幾つか種類がある。例えば、パラレルPC/ATアタッチメント/ATアタッチメントパケットインターフェースATAPIATAと呼ばれるのが一般的ATAPIは、INCITS317-1998、ATアタッチメントおよびパケットインターフェースエクステンションATA/ATAPI-4、www.t13.org/で入手可能においてATAの一環として採用された。、スモールコンピュータシステムインターフェースSCSIansi.orgで入手可能、ユニバーサルシリアルバスUSB、シリアルATASATA等がある。本発明の一実施形態によると、ATAインターフェースを利用するとしてよい。一実施形態によると、PVMは、コンピュータシステムに結合されている物理格納装置毎に、OSによるアクセスのために仮想ATA装置をエニュメレーションする。このような格納装置は、ブート時間またはその後の任意の時間においてコンピュータシステムに結合されるか、または、コンピュータシステムから取外されるとしてもよい。例えば、USBサムドライブは、ブート時間またはランタイムにおいて、PVMによってIDEインテグレーテッドドライブエレクトロニクスハードディスクとしてエニュメレーションされるとしてよい。このため、例えば、USBサムドライブをコンピュータシステムにホットプラグすると、USBサムドライブは、OSに対してハードディスクとして可視化されるように見えるとしてよい。I/Oに対する悪意あるアクセスから統一格納装置を保護するべく、本発明の実施形態では、PVMは、コンピュータシステムのプロセッサパッケージ内でセキュアエンクレーブSEセッションにおいて実行されるとしてよい。図1は、本発明の実施形態に係るコンピュータシステムにおけるセキュアエンクレーブセッションを示す図である。説明の便宜上、コンピュータシステム100の一部は図1において簡略化して図示している。プロセッサパッケージ102は、セキュリティぺリメータ境界線内に1以上の処理コアを有する。一実施形態によると、セキュリティぺリメータは、プロセッサパッケージの境界図1では太線で示すであるとしてよい。プロセッサパッケージは、メモリ104およびプラットフォームコントロールハブPCH106と連動している。PCHは、1以上のI/O装置108と連動している。セキュアエンクレーブ機能を実現するためには、セキュアエンクレーブを作成して、分離させて、命令実行およびデータアクセスを保護するプロセッサ命令を複数提供する。プロセッサパッケージの外側のデータおよびコードは、暗号化されてインテグリティが確認されるとしてよい。プロセッサパッケージの内側のデータおよびコードは、暗号化されず、モードおよびキャッシュ保護メカニズムによって保護されるとしてよい。ある実施形態によると、セキュアエンクレーブからデータが漏れることはない。プロセッサパッケージ内のマイクロコードは、割り込み、例外、トラップ、および、仮想マシンマネージャVMMイグジットEXITのために、エンクレーブ内にエンクレーブ状態情報を保存する。セキュアエンクレーブ機能については、PCT特許出願発明の名称:セキュアにアプリケーションを実行するための方法および装置、発明者:フランシスX.,マキン他、出願日:米国特許庁の受理局にて2009年12月22日に出願、出願番号:PCT/US2009/069212号で説明している。当該特許文献は、参照により本願に組み込まれる。図2は、本発明の実施形態に係るコンピュータシステムを示す図である。コンピュータシステム200では、1以上のアプリケーションプログラム202が当該コンピュータシステムで実行中である。コンピュータシステムは、オペレーティングシステムOS204およびコンピュータプラットフォーム206等、従来の構成要素を備える。コンピュータプラットフォームは、プロセッサパッケージ208、メモリ210、および、ファームウェア212を有し、図示されてはいないが、さらに従来の構成要素を有する。コンピュータシステム200はさらに、1以上のI/O装置214例えば、ハードディスクドライブ、CD-ROMドライブ、DVDドライブ、USBサムドライブ、ブルーレイプレーヤ、ソリッドステートドライブ、ネットワークインターフェースコントローラNIC等を備える。本発明の実施形態によると、アプリケーションプログラムがI/O装置のうち1つとの間でデータの読み書きを行なう必要がある場合、アプリケーションプログラム202はOS204と連動する。OSはその後、I/O要求の処理のために、I/Oドライバコンポーネント216を呼び出す。I/Oドライバ216は、OS要求を変換して、当該要求を部分仮想マシンPVM218に転送する。本発明の実施形態によると、I/Oドライバは、I/O要求のさらなる処理のためにPVM218を呼び出して、選択されたI/O装置214と通信する。本発明で利用する部分仮想化は、ハイエンドなサーバコンピュータシステムで利用されている準仮想化および完全仮想化の概念とは異なり、コンピュータシステムのハードウェアコンポーネントのうち一部のみを仮想化して、残りは仮想化しない技術を意味する。仮想化されたコンポーネントは、PVMを介してOSからそのI/Oドライバコンポーネントを介して直接アクセスされ得る。このため、一実施形態によると、PVMは、軽量仮想マシンLVMMを含み、コードコンポーネントとしてシステムファームウェア212に含められるとしてよい。通常のLVMMよりも簡単なバージョンでは、本発明の実施形態に係るPVMは、サービスOSを含まない。PVMは、部分仮想化のみを実現することにより、従前の仮想化方式に比べて性能が改善され、低性能のコンピュータシステムでも利用可能となる。仮想マシンマネージャVMMは通常はシステム全体をトラップして表現するが、PVMは非常に軽量な解決策となることを意図しているマイクロハイパーバイザと呼ぶことも容易に可能である。この場合、プラットフォームのうち非常に限られた部分が、I/Oサイクルのトラップが所定の範囲例えば、所与のコントローラに対するアクセスと対応付けられるI/Oサイクルに制限されるように実際に仮想化されるが、無効なメモリアクセス、または、より侵害性の高く、より多くのシステムリソースを必要とし、または、プラットフォームの処理を遅らせるその他の試みに対するその他の保護は提供されない場合がある。ある実施形態によると、PVMは、OSのために、コンピュータシステムが備えるほかの装置と同様の仮想I/O装置217と呼ばれる統一格納装置のインスタンスを生成するとしてよく、OSが制限を受けることなく当該インスタンスを検出および利用する。一実施形態によると、インスタンスが作成された仮想I/O装置217は、仮想ATA装置である。このように、物理I/O装置例えば、SATAコントローラと仮想I/O装置とは1対1でマッピングされるとしてよい。インスタンスが作成され得る仮想I/O装置の数は、実施例毎に決まるとしてよい。このような部分仮想化によって、同時に複数のオペレーティングシステムインスタンスを実行する通常の完全仮想化モードとは違って、一度に実行されるOSインスタンスは1つのみとなる。これは、部分仮想化の場合にはシステムのうち非常に限られた部分のみがPVMで実施されるためである。コンピュータプラットフォームが完全に仮想化される場合、コンピュータプラットフォーム全体がソフトウェアモデルでラッピングされて繰り返し複製され得るので、システムはn個に分割され、ターゲットOSのインスタンスがn個実行される。PVMではリソースが限られている場合がある。本発明の実施形態によると、PVMはOSとその下位にあるハードウェアとの間の翻訳者として動作し、通信言語はATAインターフェース仕様であるとしてよい仮想I/O装置が仮想ATA装置である場合。他の実施形態では、仮想I/O装置は、他のインターフェース仕様についてインスタンス化されるとしてよい。OSが統一格納装置本例では仮想ATA装置との間でデータの読み書きを行なう必要がある場合、ATAインターフェース仕様に従って、OS204のI/Oドライバ216が特定のI/Oポート例えば、0x1F7または0x3F7を読み書きすることによって統一格納装置にATAコマンドを送る。PVM218は、読み書き動作を求めるこれらの要求を下位の物理I/O装置例えば、USBサムドライブ、CD-ROMドライブ等が理解するコマンドに変換する。プロセッサパッケージがサポートする仮想技術VTに基づきPVMを実現するとしてよい。VTは、関連技術分野で公知であり、本明細書では説明は省略する。関連技術分野で公知であるがプロセッサに仮想マシン制御構造VMCSをプログラミングすることによって、PVMは上記のような関連するI/Oポートアクセスを捕捉可能となるので、本発明の実施形態を利用する際にOSカーネルを変更する必要はない。PVMは、VTのおかげで、OSに依存することがない。つまり、コンピュータシステムに準拠していれば全てのOSがPVMがイネーブルされているコンピュータシステムで実行され得る。統一格納装置をインスタンス化するべく、PVMは、コンピュータシステムの初期化処理中つまり、ブート時間中に、OSのロードが実行される前に、システムファームウェアによって開始されるとしてよい。ある実施形態によると、PVMは少なくとも数個の初期化ステップを実行する。OSがロードされる前に、システムファームウェア212はPVMが利用するメモリの領域を確保する。図3は、本発明の実施形態に係るメモリマップを示す図である。ある実施形態によると、コンピュータシステムの物理メモリ空間は、図示されているように、パーティション化されているとしてよい。OSは、OS領域302に対するアクセスを持つとしてよい。一実施形態によると、この領域はメモリの先頭位置から始まっているとしてよい。共有メモリ空間304は、OSとPVMとの間のデータのやり取りのために確保されているとしてよい。一実施形態によると、共有メモリ空間は、メモリ内において、OS領域に隣接して設けられ、OS領域よりも高位に構成されているとしてよい。PVMメモリ空間306は、一実施形態によると、メモリの最上位に確保されているとしてよい。他の実施形態では、メモリの割り当ておよび配置を変更するとしてもよい。PVMメモリは、OSから隠されている。OSは、PVM306にはアクセスできない。PVMは、OSが起動時に仮想I/Oコントローラに関する情報についてスキャンすると、少なくとも1つの仮想I/Oコントローラをエニュメレーションして、I/O装置を報告する。一実施形態によると、仮想I/Oコントローラは仮想ATAコントローラで、I/O装置はATA装置である。PVMによってI/O要求が捕捉されると、I/O要求を処理するタスクは、インスタンス化された仮想I/O装置に対応するI/O装置エミュレータおよびI/Oコントローラエミュレータと呼ばれる後述PVMの構成要素によって実行されるとしてよい。下位の物理I/O装置は、その存在およびそれへのアクセスをPVMによって隠されるとしてよい。物理I/O装置は、PVMおよびOSによるアクセスが競合しないように、OSによって検出されないようにしなければならない。OSの起動に先立って、装置の発見/設定/やり取りが仮想化されることによって通常通りに行なわれるが、実際にはOSは知らずに実際のI/Oハードウェアのソフトウェアエミュレーションとやり取りをするように、I/Oコントローラのソフトウェアモデルを構築する。PVMは、OSにおけるタイマ割り込みを制御して、I/O要求変換タスクを実行する際に、OSからプロセッサ実行サイクルを盗むことができるようにする。上記のような初期化ステップが実行されると、PVMはOSからのI/O要求に対して待機状態となる。PVMは、仮想I/O装置から下位の物理I/O装置へとI/O要求を変換する機能素子を複数有する。図4は、本発明の実施形態に係る部分仮想化マシン400を示す図である。I/Oポートトラップ部402は、OSが発行するI/Oポートに対する読み書き動作を捕捉する。I/O要求はその後、エミュレータに渡されるとしてよい。I/Oコントローラエミュレータ部404は、インスタンス化された仮想I/Oコントローラに対するI/O制御要求であるI/O要求を処理する。仮想I/Oコントローラが仮想ATAコントローラを含む実施形態では、I/Oコントローラエミュレータ部はATAコントローラエミュレータを含む。I/O装置エミュレータ部406は、アクセスの対象となっている特定の物理I/O装置をエミュレーションして、I/Oアクセス要求であるI/O要求を処理する。ある実施形態によると、I/O装置エミュレータは、ATA装置エミュレータを含み、エミュレーションの対象となっている装置は、ATAインターフェースをサポートする装置であればどのような装置であってもよく、例えば、仮想ハードディスク、仮想CD-ROM等が挙げられる。どちらのエミュレータも、イベント駆動ステートマシンを含み、I/Oアクセスが動作のトリガソースとなる。実施例毎に異なる利用環境に応じて、さまざまな装置ドライバ408がPVMに含められるとしてよい。例えば、USBサムドライブに仮想ハードディスクのインスタンスを作成することをユーザが所望する場合、USBサムドライブおよび対応するUSBコントローラの装置ドライバがPVMに含められるとしてよい。装置ドライバは、I/O制御要求およびI/Oアクセス要求に少なくとも部分的に基づいて、物理I/O装置と通信する。図4に図示されているその他のPVMの構成要素は、I/O要求の変換および物理I/O装置へのアクセスを促進する補完的なモジュールを含む。他の構成要素には、仮想化ドメインへ数回訪問する際に発生し得るイベントをスケジューリングするスケジューラ410が含まれる。例えば、PVMのコンテキストに通常留まる期間の4倍の時間がかかるI/O要求があるとしてよい。スケジューラは、I/Oトランザクションの一部のみしか完了しない場合、処理中のほかのトランザクションと共に、このI/Oトランザクションを追跡および管理する。さらに、PVMメモリ空間の割り当ておよび割り当て解除を管理するメモリ管理部412と、隠されているI/O装置がトリガする割り込みを処理する割り込み管理部414と、I/O装置をOSから隠すPCI装置管理部416とが設けられる。このようなPVMの構成要素は、OS内の対応するモジュールと同様であるが、小型化、高速化、および簡略化が図られているとしてよい。一実施形態によると、処理の対象となっているI/Oインターフェースは、ATAインターフェースであってよい。PVMにおいて統一格納装置を仮想ATAコントローラとして実現すると、幾つかの点で有用性が高いとしてよい。第一に、利用可能なオペレーティングシステムの大半は、ATA装置ドライバを備えており、ATA格納装置例えば、ハードディスクにシステムデータまたはユーザデータを格納している。ATA装置ドライバは、基本的な装置ドライバであり、今後長期にわたって大半のオペレーティングシステムの一部を形成するものと思われる。第二に、ATAインターフェースは、ダイレクトメモリアクセスDMAを含む非同期データ読み書き方法を定義している。PVMは、このDMAモードのおかげで、読み書き要求を非同期に処理する。つまり、PVMは、大量のデータにアクセスする場合、OSの実行をブロックすることはない。PVMは、ATA読み書きコマンドを捕捉すると、適切な装置ドライバを呼び出して読み書きプロセスを開始する。PVMは、データ転送の準備が整うまで待機することはしない。PVMは、これに代えて、即座に制御をOSに返す。PVMは、続くタイマスライスにおいて、データの読み書きを実行するためにプロセッササイクルを数サイクル盗む。PVMは、OS用のデータの準備が整うと、ISに通知するべく割り込みを作成する。第三に、ATA仕様はプラグアンドプレイ機能をサポートしている。PVMは、下位の物理I/O装置がコンピュータシステムから取外されると、仮想ATAコントローラのステータスレジスタを変更することによって、このイベントをOSに通知することが出来る。図5は、本発明の実施形態に係るシステム処理を説明するためのフローチャートである。502において、OS204は、選択されたI/OポートにI/Oドライバ216を介して、読み書き要求を実行する必要がある旨を示す書き込みを行なう。PVM218のI/Oポートトラップ部402は、504において、当該I/Oポートへの書き込みを検出して、書き込み動作をフックする。PVMはまた、504において、続いて行なわれるI/O処理を保護するべくセキュアエンクレーブセッションを開始する。PVMがセキュアエンクレーブ内で動作している間、PVMの処理は保護されており、OSおよびアプリケーションプログラムはPVMが行なっていることを見ることは出来ないつまり、PVMの動作を追跡することはできない。506において、I/O要求がI/Oコントローラレジスタ利用可能なI/Oポートのうちの1つを参照している場合、処理はブロック508に続く。典型的な要求には、ブロック読出、ブロック書込、および、装置設定が含まれるとしてよい。要求は、コントローラの種類毎に異なるとしてよい。また、使用頻度が低い要求は、リセットおよびフラッシュがあるとしてよく、I/Oハードウェア毎に異なるとしてよい。508において、I/Oコントローラエミュレータ404は、I/O要求を処理する。続いて、510において、PVMは、内部PVMステートマシンを更新して、I/O要求の処理を反映させる。一実施形態によると、ステートは以下の通りである。1待ち行列に入れられているトランザクション待ち行列にあるがまだ処理されていないトランザクション2処理中のトランザクションアクティブとなったがまだ完了していないトランザクションこれは通常、要求を完了させるためには複数回の繰り返しが必要な場合のステートである珍しいものではない。また、PVMコンテキストの場合に次に作業すべきトランザクションでもある。3完了したトランザクションエラーなしで処理が完了したトランザクショントランザクションはこれ以外に、FIFOファーストインファーストアウト待ち行列として処理されるとしてもよい。この場合、存在する場合に2が処理されると、その後で1待ち行列ステートのうち最も古いトランザクションを処理する。処理は512に続き、PVMは現在のセキュアエンクレーブセッションを終了させてOSに制御を戻す。506において、I/O要求がI/Oコントローラレジスタを参照していない場合、処理はブロック514に続く。514において、I/O要求がI/Oコマンドブロックポート利用可能なI/Oポートのうちの1つを参照している場合、処理はブロック516に続く。I/O要求がI/Oコマンドブロックポートを参照していない場合、512において、PVMは現在のセキュアエンクレーブセッションを終了させてOSに制御を戻す。516において、I/O装置エミュレータ406はI/O要求を処理する。518において、I/O装置エミュレータは、I/O要求が大量のデータを読み書きするものか否かを判断する大量の程度は実施例毎に異なる。読み書き要求が大量のデータを処理するものである場合、520において、PVMスケジューラ410はOSからCPUサイクルを数サイクル盗む。つまり、PVMのある実装では、ある程度高頻度で周期的タイマによってPVMを再度訪問するようにスケジューリングして、要求されているトランザクションを処理することができるようにする。PVMは、主として受身なのが普通であるので、トランザクションが処理中状態の場合には、システムをPVMコンテキストに頻繁に切り替えることによって、トランザクションを処理できるようにより多くの注目を確実に集めるようにする。大半のOSはコンピュータプラットフォームが盗まれている期間が長くなり過ぎると安定性を維持することができないので、システムは最初から最後まで継続してPVMコンテキストに留まることはできない。PVMはこのため、作業を完了するのに十分な数であるが、OSコンテキストでのリソース割り当てエラーを発生させるには至らない数のプロセッササイクルを取得する。PVMは、522において、装置ドライバ408のうち適切なものを開始させて、データの読み書きを行なう。518において読み書きされるデータが大量でない場合、ブロック520および522を省略する。PVMは、OSに制御を戻さなければならなくなるまでどのくらいの期間にわたってシステムがPVMのコンテキストに留まることが可能であるかについて予め情報を持つ。PVMは、実際のI/Oハードウェアと直接やり取りするので、特定のトランザクションのI/Oハードウェアによる実行が完了したか否かを知る。いずれにしても、510において、PVMは内部PVMステートマシンを更新してI/O要求の処理状態を反映する。最後に、処理は512に続き、PVMは現在のセキュアエンクレーブセッションを終了させて、制御をOSに戻す。本発明の実施形態はコンピュータシステムに含まれており、さまざまな利用モデルが可能であるとしてよい。例えば、多くのモバイルインターネット装置MIDについては、内部CD-ROMドライブをインストールするのに十分なメモリがないので、コンピュータシステムメーカは、通常は、ブート可能なUSBサムドライブを用いてユーザがオペレーティングシステムをインストールできるように追加のソフトウェアツールを開発する必要がある。本発明の実施形態によれば、PVMは、USBサムドライブにある画像ファイルに少なくとも部分的に基づいてPVMに仮想CDROMドライブを作成させるので、OSが従来と同じ方法でインストールできるように構成されるとしてよい。OS用の多くのインストールプログラムは、どこからインストールされるか仮定している。本発明の実施形態によれば、USBサムドライブ上にある線形の情報群を取得することが可能であり、PVMにそのCDソフトウェアモデルを提示させて基本情報がCD装置から取得されたように見せかけるが、OSがCD装置とやり取りをしていると思っていても実際にはPVMが物理USB装置に対する連絡係として動作している。OSはハードディスクドライブの特定箇所からロードされるのが一般的であり、OSはこれが普通であると仮定している。しかし、場合によっては、別の格納装置例えば、USBサムドライブからOSをロードするのが望ましい場合もある。この利用方法は、一部のコンピュータシステムのサポートエンジニア達の間で一般的である。コンピュータシステムのOSが破損して開始できなくなると、サポートエンジニアは、当該OSのクリーンバージョンを開始して、コンピュータシステムのハードウェアおよびソフトウェアを診断するとしてよい。従来は、このような診断環境は、OSをロードする箇所例えば、ハードディスクドライブ上について仮定が存在するので、コンピュータシステムの製造者が開発またはカスタマイズする必要がある。しかし、本発明の実施形態によると、サポートエンジニアは、USBサムドライブに基づき仮想ハードディスクドライブを生成するようにPVMを設定するとしてよく、メーカでのさらなる開発努力を必要とすることなく、クリーンなOSはUSBサムドライブから直接開始され得る。PVMはさらに、格納装置メーカの知的財産を保護するべく利用され得る。一例を挙げると、Linux登録商標カーネルはジェネラルパブリックライセンスGPLを持つので、Linux登録商標用に開発された任意のカーネルモジュールは、当該カーネルモジュールのコードも同様に公開すべきである。メーカは、Linux登録商標で当該メーカの格納装置を利用可能にすることを望む場合、装置ドライバを開発する必要があり、当該装置ドライバは通常カーネルモジュールである。このカーネルモジュールのソースコードは公開されるが、メーカにとっては公開は望ましくない場合がある。本発明の実施形態によれば、メーカは、当該メーカの格納装置についてPVMに含まれる装置ドライバを開発し、PVMは、当該メーカの物理格納装置の上位に仮想ATA装置を生成するように構成されるとしてよい。メーカの装置ドライバはPVMにあるので、PVMの動作はセキュアエンクレーブによって保護されており、メーカの装置ドライバが保護される。このように、メーカはGPLOS用に特別に装置ドライバを開発せずにすむので、当該メーカの知的財産が保護される。この利用モデルの延長線上には、メーカがPVMについて1つのみ装置ドライバを開発して、サポートされているOS毎に別の装置ドライバをメーカが開発するのではなく、さまざまなOSが当該メーカの格納装置にPVMを介してアクセス可能になる場合も考えられる。また、下位の物理装置がハードディスクドライブである場合、PVMを用いてハードディスクドライブ内のメモリの一領域を確保して、この領域をシステム回復またはデータ保護等、特定の利用目的で隠すとしてよい。当業者であれば、本発明の範囲から逸脱することなく、PVMを用いて統一格納装置を提供するほかの方法があることを認めるであろう。当業者はまた、開示されている発明は、ソフトウェアのみで構成されているにしろ、または、ハードウェアが補助的に利用されているにしろ、コンピュータシステムまたはプログラミング環境の部分仮想化または完全仮想化を利用したさまざまな種類の仮想化環境および仮想化システムに適用され得るものと認めるであろう。さらに、当業者は、本発明の実施形態は他の方法および他のプログラミング言語を用いて実施され得るものと認めるであろう。本明細書に記載した技術は、任意の特定のハードウェア構成またはソフトウェア構成に限定されるものではなく、任意のコンピュータ環境または処理環境で適用され得る。本明細書に記載した技術は、ハードウェア素子、ソフトウェア素子あるいはファームウェア素子、または、これらを組み合わせて具現化されるロジックに実装されるとしてよい。本明細書に記載した技術は、プロセッサ、プロセッサが読み出すことのできる格納媒体揮発性および不揮発性のメモリおよび/または格納素子を含む、少なくとも1つの入力装置、および、1以上の出力装置から構成される携帯式あるいは固定型のコンピュータ、携帯情報端末PDA、セットトップボックス、携帯電話およびポケベル、ならびに、その他の電子機器等、プログラミング可能な機械で実行されるプログラムに実装され得る。入力装置を用いて入力されたデータにプログラムコードが適用されると、本明細書に記載した機能が実行され、出力情報が生成される。出力情報は、1以上の出力装置に適用されるとしてよい。当業者であれば、さまざまなコンピュータシステム構成、例えば、マルチコアプロセッサ、マルチプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ等で本発明が実施可能であることに想到するであろう。本発明はさらに、通信ネットワークで結合されている複数の遠隔処理装置によってタスクが実行される分散型コンピュータ環境でも実施可能である。各プログラムは、処理システムと通信するべく高級プロシージャ言語またはオブジェクト指向型プログラミング言語で実装されるとしてよい。しかし、所望される場合には、アセンブリ言語または機械語でプログラムを実装するとしてもよい。いずれにしても、コンパイラ型言語またはインタプリタ型言語を用いるとしてよい。プログラム命令は、当該命令でプログラミングされた汎用処理システムまたは特定用途向け処理システムに本明細書に記載されている処理を実行させるべく利用されるとしてよい。これに代えて、本明細書に記載されている処理は、当該処理を実行するためのハードワイヤードロジックを含む特定のハードウェア素子によって、または、プログラミング済みのコンピュータ素子およびカスタマイズされたハードウェア素子を任意の方法で組み合わせることによって実行されるとしてもよい。本明細書に記載されている方法は、当該方法を実行するように処理システムまたはその他の電子機器をプログラミングするべく利用され得る命令を格納している機械可読媒体を含むコンピュータプログラム製品として提供されるとしてもよい。機械可読媒体という用語は、本明細書で使用される場合、機械によって実行される命令列を格納または符号化することができ、本明細書に記載した方法のうちいずれか1つを機械に実行させる任意の媒体を含むものとする。したがって、機械可読媒体という用語は、これらに限定されるものではないが、ソリッドステートメモリ、光ディスク、および、磁気ディスクを含むものである。さらに、関連技術分野では、ソフトウェアについて言及する場合、何らかの処理を実行したり、または、何らかの結果を発生させるものとして、さまざまな用語例えば、プログラム、プロシージャ、プロセス、アプリケーション、モジュール、ロジック等を利用するのが一般的である。このような表現は単に、プロセッサに何らかの処理を実行させるため、または、何らかの結果を発生させるための、処理システムによるソフトウェアの実行を説明するための簡潔な表現に過ぎない。本発明は具体的な実施形態を参照しつつ説明してきたが、上記の説明は本発明を限定するものと解釈されることを意図したものではない。具体的な実施形態のさまざまな変形例は、本発明の上記以外の実施形態と共に、本発明の関連技術分野の当業者には明らかであり、本発明の範囲に含まれるものと解釈される。"