VM 【Virtual Machine】 仮想マシン / バーチャルマシン / 仮想機械 / 仮想コンピュータ

概要

VM(Virtual Machine)とは、コンピュータCPU(マイクロプロセッサ)の機能を模倣し、まったく同じように振る舞うソフトウェア。また、そのようなソフトウェアによってコンピュータ内に構築された仮想的コンピュータ

仮想化技術におけるVM

仮想化技術におけるVMはコンピュータ全体の動作を模したソフトウェアで、その上でオペレーティングシステムOS)を起動して制御することができる。OSやその上で動作するソフトウェアからはある特定の仕様を持つ物理的なコンピュータであるかのように見える。

VM上でソフトウェア環境構築することにより、一台の物理的なコンピュータをあたかも複数台あるかのように分割し、それぞれを別の利用者が互いに影響を与えず独立に操作したり、それぞれ別のOSを動作させたりすることができる。また、ある機種向けのOSソフトウェアを、その機種を模したVMを用意することで別の機種上で動作させることができる。

ただし、VMを動作させることによる処理能力の消費が大きく、物理的なコンピュータをそのまま使う場合よりも性能が大きく制約される。また、導入や運用には高度な知識や技能が必要なシステムが多く、構造が複雑なためトラブルが発生した場合に対処するのが難しい。

コンピュータハードウェア資源を管理し、VMを実行するソフトウェアを「ハイパーバイザー」(hypervisor)という。通常はハードウェア上でOS実行されるが、仮想化環境ではハードウェア上でハイパーバイザーが動作し、ハイパーバイザーが用意した個々のVM上でOS実行される。

ソフトウェアの実行環境としてのVM

ソフトウェア実行環境としてのVMは、ある仕様を持つCPUのように振る舞うソフトウェアで、そのプロセッサ向けのプログラムコードを読み込んで実行することができる。

VMに実装されているのは実際には存在しない架空のプロセッサ機械語マシン語)の命令セットで、その架空の機械語で記述されたプログラムを読み込んで、自らが動作しているコンピュータCPUが解釈できる実際の機械語プログラムネイティブコード)に変換して実行する。

この架空のプロセッサ向けのプログラムを「中間コード」という。命令語1バイトで構成されるものを特に「バイトコード」と呼ぶ。プログラミング言語で記述されたソースコードは開発者側でコンパイラなどによって一旦中間コードプログラムに変換されて利用者へ提供され、利用者側のVMで動的実行可能コードに変換される。

このように中間コードとVMを介在させることにより、開発者側はプログラミング言語から中間コードへのコンパイラが提供されていれば、利用者の機種やOSごとに配布プログラムを用意する必要がなくなる。利用者側はその中間コードのVMが利用できれば、ソフトウェアが自分の機種やOS向けに個別に対応していなくても使用できるようになる。

この仕組みを利用する著名な例として、Java言語実行環境である「Java仮想マシン」(Java VM)や、.NET共通仕様を満たす様々なプログラミング言語で対応プログラム開発できる「.NET Framework」「.NET Core」などがある。

(2024.3.12更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる