Running 16-Bit Applications as a Separate Process
Your legacy 16-bit applications will run much more slowly than 32-bit apps on Windows 2000, because of the translation process. Here's how to speed them up.
It's no secret that Windows 2000 is a 32-bit operating system. As such, it stands to reason that 32-bit applications simply will run better under this OS than 16-bit applications will. Unfortunately, some companies haven't updated their legacy applications, and we can't avoid running 16-bit applications. However, there is a way to make your 16-bit applications run more like 32-bit applications.
16 vs. 32
Before I show you the trick to increasing your 16-bit application's performance, you should know a little bit about why 32-bit applications perform better. Many 32-bit applications are multithreaded. (A thread is a unit of execution.) Windows 2000 is designed to be able to run multiple threads at a time, allowing 32-bit applications to run very quickly.
However, 16-bit applications can't run in the native Windows 2000 environment. They require a separate set of DLL files, and basically rely on an entirely different set of instructions than those supported by Windows 2000. Any time that you attempt to run a 16-bit application in Windows 2000, Windows realizes that it can't run the application and opens an NT Virtual DOS Machine (NTVDM) session. An NTVDM is a 32-bit program whose sole purpose is to simulate a 16-bit DOS environment. The NTVDM translates the instructions handed to it by 16-bit applications into something that the 32-bit operating system can understand.
Part of the reason 16-bit applications run so much more slowly than their 32-bit counterparts is the overhead caused by having to rely on an NTVDM. Unfortunately, there's no getting around it. Another performance problem comes from the way the NTVDM works. The NTVDM is a single-threaded application, so Windows 2000 can't service two or more 16-bit applications simultaneously. Instead of running simultaneously, the 16-bit applications must take turns executing units of code. This process can slow performance to a crawl.
If you want to see this concept in action, you can do so by running a few 16-bit applications and then looking for them in the Task Manager. Although you'll see listings for 32-bit applications, you'll never see your 16-bit applications. Instead, you'll simply see the NTVDM.
The trick to enhancing the performance of your 16-bit applications is to run each 16-bit application in a separate NTVDM. Because the operating system can run multiple 32-bit programs simultaneously, and each NTVDM is technically a 32-bit program, running multiple NTVDMs makes it possible to run 16-bit applications simultaneously as though they were 32-bit applications.
To run a 16-bit application in its own individual NTVDM, simply enter the following command at the Run prompt (or modify the program's shortcut to match the command shown below):
START /SEPARATE processname
Brien M. Posey is an MCSE who works as a freelance writer. His past experience includes working as the director of information systems for a national chain of health care facilities and as a network engineer for the Department of Defense. Because of the extremely high volume of e-mail that Brien receives, it's impossible for him to respond to every message, although he does read them all.