仮想DOSマシン

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

Windows 9x系での仮想DOSマシン
Windowsには仮想マシンと呼ばれる概念があり、これは一般的によく使われているハードウェアエミュレーションを行う仮想マシンとは別のものである。Windows 9x系には「システム仮想マシン」と「仮想DOSマシン」と呼ばれる２つのタイプの仮想マシンが存在する。システム仮想マシンは一つだけ作成され、OSとすべてのWin16アプリとWin32アプリはシステム仮想マシン上で動作する（なおWin32アプリはそれぞれ独立してメモリアドレス空間で動作し、16ビットWindowsアプリは互換性のためにすべてのアプリケーションでメモリアドレス空間を共有している）https://atmarkit.itmedia.co.jp/fwin2k/special/win9xorwin2k/windows9xknlover.html https://www.informit.com/articles/article.aspx?p=131307&seqNum=4。

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

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

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

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

Windows NT 4.0までの非x86系プラットフォームでは80286または80486のエミュレーションを含むNTVDMが提供されていた。Windows 2000以降の非x86版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を返す。

 脚注 
出典

関連項目
DOS Protected Mode Interface (DPMI)

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