ARCHIVED: What is the difference between 16-bit and 32-bit Windows applications?

This content has been archived, and is no longer maintained by Indiana University. Information here may no longer be accurate, and links may no longer be available or reliable.

Note: UITS recommends that you use a current version of Windows on computers connected to the Indiana University network; see Recommended Windows operating systems at IU.

16-bit Windows applications were designed to run under Windows 3.0 and 3.1, while 32-bit Windows applications were designed for Windows 95, 98, NT, and 2000. They are written to two different Application Program Interfaces (APIs) called "Win16" and "Win32".

The main differences between the Win16 and Win32 APIs are:

  • Memory model: Win16 uses a segmented memory model (each memory address is referred to using a segment address, and the offset within that segment), while Win32 uses a flat 32-bit address space.
  • Multitasking: Win16 uses cooperative multitasking. This means that the application must relinquish control before another application or program can run. Win32 uses preemptive multitasking, in which the operating system (Windows NT, 95, 98, or 2000) assigns time slices to each process.
  • Multithreading: Unlike Win16, Win32 supports multithreading. This means that each program is broken up into many threads, which can run simultaneously.

Windows 3.1 and Windows for Workgroups 3.11 can run a small subset of Win32 applications, mostly older ones, by using a subsystem called "Win32s". Win32s translates Win32 system calls to Win16. This process is called "thunking".

Windows 95, 98, NT, and 2000 can run Win16 applications by running them cooperatively in a Win16 compatibility box. (In the case of Windows NT, this is called "WOW" - Windows on Windows). If a 32-bit application crashes, it will not affect any other 32-bit or 16-bit applications. However, if a 16-bit application crashes, it might affect other 16-bit applications (but not 32-bit applications).

Both APIs contain the mechanisms used to link applications and documents together (e.g., OLE and OLE2).

This is document ahop in the Knowledge Base.
Last modified on 2018-01-18 12:33:36.

Contact us

For help or to comment, email the UITS Support Center.