仮想機械

仮想機械(VM)とは



仮想機械(Virtual Machine、VM)とは、コンピュータの動作をソフトウェアで再現する技術です。エミュレートされた仮想のコンピュータそのものを指すこともあります。仮想機械の導入により、1台のコンピュータ上で複数のオペレーティングシステム(OS)やアプリケーションを同時に実行でき、異なるソフトウェア間の干渉を防ぐことが可能です。

企業や個人にとって、仮想機械は既存のアプリケーションを有効活用し、1台のコンピュータでさまざまな種類のアプリケーションを最大限に活用するための重要な手段となっています。これにより、ハードウェア資源の効率的な利用が促進されます。

システム仮想機械



システム仮想機械は、コンピュータシステム全体を仮想的に再現し、その上でOSを動作させることができます。仮想化されたOSを動作させるためには、OSに一部の変更を加える必要がある場合(準仮想化)もあります。

システム仮想機械では、複数の仮想機械に対して計算資源、メモリ資源、ディスク資源を効率的に割り当てる(スケジューリング)必要があり、またハードウェア割り込みなどの情報を伝達する機能が求められます。これらの制御を行うプログラムはハイパーバイザと呼ばれています。

システム仮想機械は、ユーザーやプログラムからは独立した「別のコンピュータ」として認識されます。これは、OS環境を実現するものであり、初期のコンピュータ技術には、仮想記憶、マルチタスク、マルチユーザー、タイムシェアリングなど、現在のOSの機能とみなされるものが含まれていました。仮想機械の技術は、メインフレームコンピュータで利用されていましたが、現在ではコンピュータサービスを提供する上で一般的な技術となっています。

特に、クラウドコンピューティングの分野では、ハードウェアに依存しない仮想実行環境を構築する基盤技術(IaaS)として重要な役割を果たしています。

歴史



仮想機械の概念は1950年代から存在し、1960年代以降、具体的な技術として発展を遂げてきました。以下に主な歴史をまとめます。

1958年: IBM 709(マイクロコードによる商用初の別アーキテクチャのエミュレータ
1961年: バロース B5000(商用初の仮想記憶装置
1964年: IBM System/360(コンピュータアーキテクチャの確立、マイクロコードによる上位互換性)、CP-67(商用初の仮想化OS)
1970年: IBM System/370(商用初の複数アドレス空間)
1973年: IBM System/370 モデル158/168(商用初の物理分割)
1985年: インテル i386で仮想86モード採用
1987年: IBM PR/SM(商用初のファームウェアによる論理分割 (LPAR))
1995年: Java公式発表(Java仮想マシンの登場)
1997年: サン・マイクロシステムズ ダイナミックシステムドメイン(DSD、UNIXサーバでは初の物理分割機能)
1999年: VMwareの登場(x86システムの本格的な商用仮想化OS)
2001年: IBM pSeries(UNIXサーバでは初の論理分割 (LPAR))
2008年: オラクル Oracle VM発表、マイクロソフト Hyper-V発表


主な仮想化技術の例



仮想化技術は、ハードウェアソフトウェア、OSなど様々なレベルで実装されています。以下に主な例を挙げます。

ハードウェアによる物理分割: IBMのPPAR、サン・マイクロシステムズのDSD、ヒューレット・パッカードのnParsなど。
ハードウェア(マイクロコード)による論理分割: IBMのLPAR、サン・マイクロシステムズのLDOM、ヒューレット・パッカードのvParsなど。
仮想化ソフトウェアによる分割: z/VM、VMware、Xen、VirtualBox、Hyper-Vなど。
OSによる複数OS環境: AIX 6 ワークロードパーティション、Solaris10 Solarisコンテナなど。
ミドルウェアによる負荷管理: z/OSワークロードマネージャ、AIXワークロードマネージャなど。

メインフレームにおける仮想化



メインフレームでは、仮想化技術が初期から利用されてきました。

ハードウェアによる仮想化: 1950年代のコンピュータでは、アーキテクチャが異なるため、既存の設計を参考にしたり、他のコンピュータのプログラムやライブラリを流用するために、命令セットに互換性を持たせたマシンが存在しました。例えば、EDSACは頻繁に参考にされました。
1958年IBM 709は、既存のIBM 704の命令セットをマイクロコードでエミュレーションし、上位互換性を提供しました。
1964年IBM System/360も同様に、既存のIBM 1401やIBM 1620の命令セットをマイクロコードでエミュレーションしました。
1973年IBM System/370モデル158/168では物理分割(PPAR)をサポートし、コンピュータを単一または複数のコンピュータとして使用可能にしました。
1987年には、IBM 3090のPR/SMにより、論理区画(LPAR)が作成され、コンピュータ全体の停止なしに柔軟なリソース割り当てが可能になりました。

仮想化OSによる仮想化: 1964年IBM System/360で登場したCP-40、CP-67は、商用初の仮想化OSであり、1台のコンピュータ上で複数の仮想コンピュータを作成し、それぞれでゲストOSを稼働させることができました。この仮想化OSはVM/CMSとなり、現在のz/VMでもLinuxなどのゲストOSを同時に稼働させる用途で利用されています。

OSによるリソースの仮想化: OSの機能によるリソース仮想化には、仮想記憶、マルチタスク、マルチユーザー、タイムシェアリングがあります。
仮想記憶は、1961年のバロースB5000で商用化され、1970年IBM System/370で広く普及しました。
マルチタスクは、OS/360のMVTやMVSで登場し、入出力待ち中にCPUが他の処理を行えるため、処理の応答時間短縮とスループット向上に貢献しました。
メインフレームにおけるマルチタスクは、アドレス空間を完全に分離し、相互干渉を防止する点で、UNIXやWindowsのマルチタスクよりも仮想機械に近いレベルの機能を提供しました。
タイムシェアリング(時分割多重)は、オンライン・リアルタイム処理を普及させました。

ミッドレンジにおける仮想化



1979年IBM System/38は、TIMI(Technology Independent Machine Interface)を採用しました。これは、マイクロコードによる互換性確保をさらに進めたもので、ハードウェアアーキテクチャとプログラムを分離し、バイトコードを配布することで、異なるアーキテクチャへの移行を容易にしました。

商用UNIXにおける仮想化



商用UNIXベンダーは、独自の仮想化技術を提供しています。以下にいくつかの例を挙げます。

IBM PowerVM: LPAR(論理区画)、マイクロパーティショニング、WPAR(OS標準機能)、AIX WLM(ミドルウェア)を提供。
Sun N1構想: DSD(物理分割)、LDOM(論理分割)、Solarisコンテナ(OS標準機能)、Solarisリソース・マネージャ(ミドルウェア)を提供。
HP Virtual Server Environment for HP-UX: nPars(ハードウェアによるパーティショニング)、vPars(論理パーティション)、Integrity VM(動的なリソース割り当て)、HP-UX Workload Manager(リソース割り当て自動化)を提供。

その他のOSにおける仮想化



Apple macOS: Hypervisor.framework、Virtualization frameworkなどを提供。

UNIX/Linux/Windows: VMware、Xen、Oracle VM、Hyper-Vなどの仮想マシンソフトウェアが利用可能。これにより、物理資源を区分けし、複数のゲストOSを同時に稼働させることができます。

CPUの機能による仮想化



1985年に登場したIntel 80386の仮想86モードは、保護モード上でx86アーキテクチャに基づいたタスクを実行するための仮想機械を提供しました。
現在のCPUアーキテクチャは、仮想化ソフトウェアとOSによる仮想化を支援する命令セットを持っています。

プロセス仮想機械



アプリケーションプログラムを動作させるための仮想機械で、プログラミング言語や実装によっては理論上の機械をエミュレートします。

実装: ソフトウェアによる仮想CPUにバイトコードを実行させる形式が一般的で、インタプリタ、事前コンパイル、実行時コンパイルなどの方式があります。

アーキテクチャ: ハードウェアの制約がなく、型付きの演算をサポートする仮想機械もあります。

仮想機械のハードウェア



仮想機械の実行を最適化するために、専用のハードウェアが製造されることがあります。

PascalのPコードマシンではウェスタン・デジタルMCP-1600チップセットが開発されました。
Javaでは、サン・マイクロシステムズのpicoJavaなどのJavaプロセッサが存在します。
* ARMアーキテクチャには、JavaバイトコードのためのJazelle拡張機能があります。

仮想機械は、現代のコンピュータ技術において、不可欠な要素となっています。その柔軟性、効率性、セキュリティへの貢献は計り知れません。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。