ソフトウエアによる仮想化の実現

ソフトウエアによる仮想化の実現

 OSは通常、コンピュータのすべてのハードウエアとリソースを占有して動作することを前提としています。このため、本来1台のシステムでは1つのOSしか動かすことができません。

 しかし、システムの仮想化技術を使えば、1台のコンピュータを複数の仮想マシンとして論理的に分割し、それぞれの仮想マシンの上で別々のOS(ゲストOSと呼びます)を独立して動作させることができます。こうした仮想化はVMWareやVirtual PCあるいはオープンソースのXenなどの仮想化ソフトウエアによって実現されてきました。これらのソフトウエアはゲストOSを制御する「VMM」(Virtual Machine Monitor)という機能を持っています。

 VMMは「バイナリートランスレーション」や「パラバーチャライゼーション」といった技術によって仮想化を実現しています。CPUの仮想化に入る前に、ソフトウエアの仮想化技術について、簡単におさらいしておきましょう。

 まずバイナリートランスレーションについて見ていきましょう。前項で説明したようにCPUには0から3までの4つのレベルがあります。OSは特権レベルが一番上のリング0で、アプリケーションはリング3で動作します。

 バイナリートランスレーションでは、図2に示すようにVMMはリング0で動きます。そしてその上のゲストOSをリング1で稼働させます。しかし、このゲストOS自身は、自分が実行できる命令などが少ないリング1にいることを知りません。

 そこでOSはリング1で実行できない命令を発行します。すると例外(フォールト)が起こり、「割り込み」と呼ばれる処理が発生します。VMMはこの割り込みをすべて監視しています。そしてこの割り込み処理でゲストOSがやりたかったこと、例えばハードウエアへのアクセス、特権命令の実行などをゲストOSの代わりに実行します。

 バイナリートランスレーションとは、文字通りバイナリー(二進数命令)のトランスレーション(翻訳)です。言葉で言えば簡単ですが、実際はOSが出すすべての特権命令について、翻訳するのは非常に高度な技術が必要です。またこの処理がオーバーヘッドとなる可能性もあります。VMWareなどの市販のVMMソフトウエアなどは、できるだけこのオーバーヘッドが少なくなるように、多くの技術者が開発にあたっています。

 もう1つのソフトウエアによる仮想化技術が、パラバーチャライゼーション(準仮想化)です。オープンソースのXenがこの技術を採用しています。パラバーチャライゼーションではVMMがリング0で、ゲストOSが1あるいは2で動作します。

 パラバーチャライゼーションでは、ゲストOSのコードを変更し、リング0でしかできない命令をVMMにわたすようにしています。つまり、バイナリートランスレーションとは異なり、ゲストOS自体が特権レベルの低い所にいるということを認識し、特権レベルに限られた処理をVMMに任せているのです。

 この方法であれば、バイナリートランスレーションであったようなトリッキーな処理は必要ないため、特殊な技術がなくても実現でき、またオーバーヘッドも比較的少なくて済みます。ただしOSのコードに変更を入れるため、市販のOSでは対応が難しくなります。よってXenを利用する場合は、ゲストOSはオープンソースのLinuxに制限されます。

ソフトウエアによる仮想化処理の限界

 上記で説明したように、ソフトウエアで仮想化を実現する場合は、ゲストOSとホストOSの切り替え処理によるオーバーヘッドでパフォーマンスが低下したり、利用できるOSに制限があるといった問題があります。

 これに対し、今回説明するCPUの仮想化技術は、よりハードウエアレベルで複数の仮想マシンを制御する処理を行うため、切り替えなどにかかるオーバーヘッドが少なく、またゲストOSの制限からも解放されます。

 Intelでは「Intel Virtualization Technology」(以下、VT)と呼ばれる仮想化技術を、AMD社は「AMD-V」と呼ばれる仮想化技術をそれぞれのCPUに採用しています。

 では、CPUに仮想化の機能が入った場合にはどのような動きになるのでしょうか?

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30