読み方 : ブイエム

VM【Virtual Machine】仮想マシン

別名  :バーチャルマシン/仮想機械/仮想コンピュータ

概要

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

仮想化技術における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更新)

他の用語辞典による「VM」の解説 (外部サイト)

資格試験などの「VM」の出題履歴

▼ 基本情報技術者試験
令4修12 問16】 仮想化マシン環境を物理マシン20台で運用しているシステムがある。次の運用条件のとき,物理マシンが最低何台停止すると縮退運転になるか。
令3修7 問15】 仮想化マシン環境を物理マシン20台で運用しているシステムがある。次の運用条件のとき,物理マシンが最低何台停止すると縮退運転になるか。
令1修7 問13】 仮想化マシン環境を物理マシン20台で運用しているシステムがある。次の運用条件のとき,物理マシンが最低何台停止すると縮退運転になるか。
平29修12 問14】 仮想化マシン環境を物理マシン20台で運用しているシステムがある。次の運用条件のとき,物理マシンが最低何台停止すると縮退運転になるか。
平27春 問13】 仮想化マシン環境を物理マシン20台で運用しているシステムがある。次の運用条件のとき,物理マシンが最低何台停止すると縮退運転になるか。