Running DOS, Win16, and Win32 applications on an NT-based Computer
Whether you are troubleshooting a program or preparing for a Microsoft exam, you may find it useful to understand how different applications (MSDOS, Win16, and Win32) run on Windows.
All NT-based operating systems, such as Windows NT/2000/XP/2003, use the NT Virtual DOS Machines (NTVDMs). Applications running in an NTVDM acts as if they are the only application running on that virtual machine. Let’s look at the behavior of all types of applications.
All MSDOS-based applications run in a separate NTVDM. If one NTVDM crashes, it doesn’t affect the other DOS applications.
Windows 16-bit applications
All 16-bit Windows applications (Win16) run in a single virtual machine by default. If one Win16 application crashes, it can potentially bring down the entire NTVDM and affect all other Win16 applications in that VDM. By default, an NTVDM is created as soon as you start the first Win16 application. When you start additional Wn16 applications, they all run in the same NTVDM. You could start a Win16 application in its own NTVDM if you want to ensure that it doesn’t affect other applications, or that other applications don’t have any impact on it. Obviously, it won’t be able to share information with other Win16 applications and there’s an overhead to run a Win16 application in its own NTVDM. The overhead is 2MB of pagefile and 1MB of RAM per separate memory space.
NOTE: The Task Manager will show each NTVDM that’s started and indents the application processes running within those VDMs.
Windows 32-bit applications
Windows 32-bit applications (Win32) do not run in an NTVDM. Instead, each Win32 application runs into its own 2GB address space. If a Win32 application crashes, it doesn’t affect any other MSDOS-based, Win16, or Win32 application because it does not share the memory address space with other applications.
The following graphic shows you how these applications run on Windows-NT based computers.