仮想DOSマシン

仮想DOSマシン（かそうディーオーエスマシン、Virtual DOS Machine:VDM）とは、マイクロソフトのWindows等に実装されたIA-32の仮想86モードを利用したMS-DOSシステムコールが利用可能な環境のことである。

Windows 9x系での仮想DOSマシン
Windowsには仮想マシンと呼ばれる概念があり、これは一般的によく使われているハードウェアエミュレーションを行う仮想マシンとは別のものである。Windows 9xには「システム仮想マシン」と「仮想DOSマシン」と呼ばれる２つのタイプの仮想マシンが存在する。システム仮想マシンは一つだけ作成され、OSとすべてのWin16アプリとWin32アプリはシステム仮想マシン上で動作する。（なおWin32アプリはそれぞれ独立してメモリアドレス空間で動作し、16ビットWindowsアプリは互換性のためにすべてのアプリケーションでメモリアドレス空間を共有している。） 

Windows 9x系は一部を除きOSは32ビット化されており、OS自体がMS-DOSのシステムコールを直接呼び出すことはない。ただし必要な場合はMS-DOSの機能をレガシードライバとして利用することが出来る。Windows 9x系でDOSプロンプトを起動するとDOSプロンプトごとに独立した仮想DOSマシンが作成されcommand.comが実行される。この仮想DOSマシンの環境からMS-DOSの機能を使うことが出来る。

NT系での仮想DOSマシン
Windows NT系のOSに於いては、カーネルとユーザランドにおいて完全に32ビット化されておりMS-DOSの機能は完全に含まれていない。この上で、DOSアプリケーションを動作させる場合や16ビットWindowsアプリケーションを実行する場合、NTVDMと呼ばれるアプリケーションが起動し、そのプロセス内に仮想空間が作られ16ビットアプリケーションが実行される。

NTVDMはINT 21h/AH=30(Get DOS VERSION)では5.00を返す。

なお、CPUの64ビット動作モードであるLongモードでは仮想86モードが使えないため、64ビット版WindowsにはNTVDMは存在しない。

OS/2での仮想DOSマシン
OS/2バージョン1.xでは、DOSアプリケーションはリアルモードで動作し、同時に１つのDOSアプリケーションしか動作しない。正確には仮想DOSマシンではない。OS/2 1.xのDOS BOXはINT 21h/AH=30(Get DOS VERSION)では10.xを返す。

OS/2バージョン2.0以降では、仮想DOSマシンは仮想86モードを使用し、同時に複数のDOSアプリケーションを動作させることができる。MVDM（マルチ仮想DOSマシン）と呼ばれた。OS/2 1.xからDOS互換性が大幅に向上したため、IBMは、MVDMのことを"A Better DOS Than DOS"と呼んでいた。
OS/2 2.xのMVDMはINT 21h/AH=30(Get DOS VERSION)では20.xを返す。

脚注 
出典

関連項目
DPMI

MS-DOS・Windows 3.x・9x系
MS-DOS
仮想化