仮想DOSマシン

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

仮想DOSマシン(Virtual DOS Machine:VDM)とは、マイクロソフトWindows等に実装されたIA-32仮想86モードを利用したMS-DOSシステムコールが動作し、いくつかの周辺機器を仮想化した仮想機械アーキテクチャである。

非NT系での仮想DOSマシン[編集]

非NT系のWindowsでは、DOSプロンプトの実装に使われた他(この場合DOSプロンプト毎に仮想マシンが作られる)、Windows 3.xWindows 95等では、オペレーティングシステムそのものに16ビットコードが残っており、ある機械で動いているWindowsのネイティブアプリケーションは全て、一つの仮想DOSマシンで動作していた。仮想マシンを実装する仮想マシンマネージャ(VMM)は、Windows3.xではWIN386.EXEでWindows 9x系ではVMM386.VXDである。この仮想DOSマシンに対して仮想的なデバイスを提供するのが、仮想デバイスドライバである。仮想DOSマシンにおいては、DOS自体も仮想化しており、多くの部分は調停の上DOSのシステムコールまたはデバイスへのリクエストに変換するが、一部のDOSのシステムコールは直接仮想デバイスドライバが取り扱う。代表的な例がWindows 95からサポートされたファイルシステムVFATである。

NT系での仮想DOSマシン[編集]

Windows NT系のOSに於いては、カーネルとユーザランドにおいて32ビット化されており、MS-DOSのシステムコールを使わない構成になっている。この上で、DOSアプリケーションを動作させる場合や16ビットWindowsアプリケーションを実行する場合、NTVDMと呼ばれるアプリケーションが起動し、そのプロセス内に仮想空間が作られ16ビットアプリケーションが実行される。DOSアプリケーションの場合は一つ一つ別のNTVDMが作られるが、Windowsアプリケーションの場合は、互換性のために、基本的には一つのNTVDM上で複数動作する。また安定性を重視するために別のNTVDMで動作させることも可能になった。いずれにせよ、Windows 95等との互換性は多少損なわれることになった。

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

OS/2での仮想DOSマシン[編集]

OS/2バージョン1.xでは、仮想DOSマシンは使用可能な可能メモリ等の制約が多く、あまり使われなかった。

OS/2バージョン2.0以降では、仮想DOSマシンは仮想86モードを使用し、MVDM(マルチ仮想DOSマシン)と呼ばれた。

関連項目[編集]