Windows NT Application Support
The Win32 subsystem allows applications to use newer technologies for systems development which include:
- DirectX - A media interface providing accelerated support for high speed user response through direct access to the media device. It supports video, audio, and network interaction between applications. Components are:
- Direct Draw - Allows objects to be manipulated in video memory while remaining device-independent.
- DirectSound - Provides access to audio hardware with features that include volume control, real-time mixing, and special effects.
- DirectPlay - Computers communications across a network are transparent to the application. This used for multi user video games.
- OLE/ActiveX - Applications use this technology to share information. Based on component object modules (COM)
- OpenGL - A two and three dimensional color graphics industry software standard programming interface. Windows supports 16 color VGA mode and others support 256 color VGA mode. Uses dedicated processors on video cards. Win32 is required for this technology.
Other Win32 Features
- 32 bits
- Memory protection
- Large address space - Each program gets 2G of unsegmented virtual memory.
- Individual input queues - Each application has its own queue for user interactions such as keystrokes or moving the mouse.
NT Command Types
- Native commands - NT internal and external commands that use the 32 bit operating system.
- Configuration commands - Config.nt file commands that support MS-DOS.
- Subsystem commands - 16 bit MS-DOS commands.
WIN32 applications must be recompiled to run on a different platform even though both computers may be running NT. If moving code from a PowerPC to an Intel processor based machine, the code must be recompiled to run. This is known as platform source compatibility.
16 bit DOS and older 16 bit windows applications are supported by the NT virtual DOS machine (NTVDM) which runs in the Client/Server Runtime (CSR) subsystem. Since each copy of the NTVDM is given its own thread of execution, if it fails, it will not affect the operating system or other programs. The following components support the NTVDM:
- NTVDM.EXE - Starts the NTVDM and emulated the DOS environment.
- NTIO.SYS - Emulates the DOS IO.SYS system file.
- NTDOS.SYS - Emulates the DOS.SYS file.
- Virtual Device Driver (VDD) - Used to allow DOS to interface with system devices on various ports such as the mouse, keyboard, serial ports, parallel ports, and video devices. This component is required since DOS expects to access hardware devices directly, but cannot do so when running on Windows NT.
- VDMREDIR.DLL - Redirects file system input/output requests to the Win32 subsystem.
- AUTOEXEC.NT - Replacement for AUTOEXEC.BAT.
- CONFIG.NT - Replacement for CONFIG.SYS.
NT always loads a PIF for MS-DOS based applications. You can create a PIF to define requirements of the DOS application such as memory needs. In Windows NT 4.0, the PIF settings can be accessed by right clicking on the DOS executable file and selecting properties. On RISC based systems, an instruction execution unit (IEU) works with the NTDVM to emulate I383 Intel processor instruction sets.
Win16 Application support (Windows 3.1 and Windows for workgroups)
The Win16 on Win32 (WOW) subsystem allows 16 bit Windows applications that run on Windows 3.1 and Windows for Workgroups to run on Windows NT 32 bit architecture. This is because the WOW uses a process called thunking to intercept and translate 16 bit system calls to 32 bit system calls.
The WOW system components are:
- KRNL386.EXE - Modified 16 bit Windows kernel that uses thunking to translate many system service call into Win32 services.
- WOWEXEC.EXE - Emulates Windows 3.1 providing the Windows 3.1 16 bit virtual machine.
- GDI.EXE - Modified 16 bit Windows GDI.EXE, that uses thunking to translate API calls to Win32 services.
- USER.EXE - Modified 16 bit Windows USER.EXE file, that uses thunking to translate API calls to Win32 services.
- WOW32.dll - Emulates the DLL portion of the 16 bit Windows environment.
- Win16 Application.
When several 16 bit windows applications are run together in one NTVDM, they are not preemptively multitasked and one can cause all of them to fail. If this is a concern, each application may be run in its own NTVDM using one of the following methods. Original Windows3.1 system used cooperative multitasking which means that each application depended on the others to behave properly and share system time and resources.
- From the DOS command line enter "START /SEPARATE" followed by the path and filename of the file to be run.
- From the Start menu, choose Run and enter the path to the 16 bit windows application while selecting the "Run in separate memory space" option.
- Configure the application to start in its own memory space, by creating a shortcut for it and selecting "Run in Separate Memory Space" in the properties of the shortcut.
- Modify the applications run association, by finding it in windows Explorer or "my computer" and:
- Select "View", and "Options".
- Select the "File Types" tab and select "MS_DOS Application".
- Select "Edit" for the application and select "Edit" again.
- In the "Application used to perform action" box, include the entry "CMD /C START /SEPARATE" in front of the currently existing text.
- Select OK twice to exit.
Each NTVDM requires up to 2M of page file memory and 1M of additional RAM. Applications using OLE and DDE may need to run together if they must communicate. Only one NTVDM may have multiple 16 bit applications running. NT 4.0 workstation loads the WOW when it is booted, but the NT 4.0 Server only loads the WOW when required by a 16 bit Windows application.
Installing the Windows "addon subsystem for Presentation Manager" provides some graphical ability for the OS/2 subsystem. This subsystem supports up to OS/2 version 1.3 applications. Its components are:
- OS2SS.EXE - Main component.
- OS2SRV.EXE - Main component.
- OS2.EXE - One instance of this program is run for each OS/2 program run on the system.
- NETAPI.DLL - Supply APIs for OS/2 programs.
- DOSCALLS.DLL - Supply doscall APIs for OS/2 programs.
- FORLEDOS.EXE - Can be used to make programs compiled for DOS or OS/2 (bound programs) to run on the VDM.
The OS/2 subsystem is loaded when an OS/2 application is run and remains memory resident unless another application needs the memory or the NT operating system is rebooted.
The Registry holds OS/2 subsystem configuration information. The OS/2 CONFIG.SYS file or the STARTUP.CMD file provides driver and environment information for OS/2 applications. Information from these files is added to the registry the first time the OS/2 subsystem is used. Registry entries for the OS/2 subsystem are at:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OS/2 Subsystem For NT\1.0\Config.sys and OS2.ini.
POSIX Application Support
Portable Open Systems Interface for computing environments (POSIX) was started by the Institute of Electrical and Electronics Engineers (IEEE). POSIX applications can only run on an NTFS partition for the NT operating system when they require filesystem access. POSIX requirements supported by NT are:
- Case sensitive naming
- One file can have two different names using hard links.
- POSIX.1 is supported.
POSIX programs must be compiled on NT to run on NT. For I/O and video requirements, the POSIX subsystem uses the CSR subsystem to communicate with NT executive services.
POSIX subsystem components are:
- PSXSS.EXE - The main POSIX subsystem support is loaded only once in memory when the first POSIX program starts. It stays in memory until the user unloads it, another application needs the memory, or the system is rebooted.
- POSIX.EXE - Communicates between executive services and the POSIX subsystem.
- PSXDLL.DLL - Provides POSIX library support for applications.
DCOM provides a common interface that allows application components to run on multiple locations and platforms. DCOM is an application programming interface (API) for applications. DCOM uses remote procedure calls (RPC) for communications. The DCOMCNFG tool may be used to configure DCOM applications. This tool is select from the "Start" and "Run" button selections.
Thread priorities on NT are set between 0 and 31 with 31 being the highest priority, The normal user application's priority is 7 with kernel activities are 16 or higher. Higher or lower priorities may be assigned with the command:
START /HIGH programname
The options are:
- /LOW - Priority 4
- /NORMAL - Priority 7
- /HIGH - Priority 13
- /REALTIME - Priority 24, same level as kernel mode functions; available only to Administrators, can result in overall decrease of performance to operating system tasks
REALTIME priority is only available to administrators and can affect performance of operating system tasks.
In control panel, system, by selecting the performance tab, you can modify priority of tasks running in the foreground. Background applications run at priority of 7. The maximum boosts the level by 2, and the middle setting boosts the level by 1. These are the three settings:
- None - No priority increase.
- Middle - Foreground applications have plus 1 priority and background applications have normal priority.
- Maximum - Foreground applications have plus 2 priority and background applications have normal priority.
There is a NT Resource Kit called PVIEWER which may be used to see thread activity and change thread priorities.