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

Windows 9x系での仮想DOSマシン

編集

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

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を返す[3]

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

OS/2での仮想DOSマシン

編集

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

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を返す[3]

脚注

編集

出典

  1. ^ https://www.atmarkit.co.jp/fwin2k/special/win9xorwin2k/windows9xknlover.html
  2. ^ https://www.informit.com/articles/article.aspx?p=131307&seqNum=4
  3. ^ a b c GET DOS VERSION

関連項目

編集