One of the main purposes of NT is hardware and software portability. Various versions of NT family operating systems have been released for a variety of processor architectures, initially
IA-32,
MIPS, and
DEC Alpha, with
PowerPC,
Itanium,
x86-64 and
ARM supported in later releases. An initial idea was to have a common code base with a custom
Hardware Abstraction Layer (HAL) for each platform. However, support for MIPS, Alpha, and PowerPC was later dropped in
Windows 2000. Broad software compatibility was initially achieved with support for several
API "personalities", including
Windows API,
POSIX, and
OS/2 APIs—the latter two were phased out starting with Windows XP. Partial
MS-DOS and Windows 16-bit compatibility is achieved on IA-32 via an integrated
DOS Virtual Machine—although this feature is not available on other architectures. NT has supported per-object (file, function, and role)
access control lists allowing a rich set of security permissions to be applied to systems and services. NT has also supported Windows network protocols, inheriting the previous OS/2
LAN Manager networking, as well as
TCP/IP networking (for which Microsoft used to implement a TCP/IP stack derived at first from a
STREAMS-based stack from
Spider Systems, then later rewritten in-house). Windows NT 3.1 was the first version of Windows to use 32-bit flat virtual memory addressing on 32-bit processors. Its companion product, Windows 3.1, used segmented addressing and switches from 16-bit to 32-bit addressing in pages. Windows NT 3.1 featured a core kernel providing a system API, running in
supervisor mode (ring 0 in x86; referred to in Windows NT as "kernel mode" on all platforms), and a set of user-space environments with their own APIs which included the new Win32 environment, an OS/2 1.3 text-mode environment and a POSIX environment. The full
preemptive multitasking kernel could interrupt running tasks to
schedule other tasks, without relying on user programs to voluntarily give up control of the CPU, as in Windows 3.1 applications (although MS-DOS applications were preemptively multitasked in Windows starting with
Windows/386). Notably, in Windows NT 3.x, several I/O driver subsystems, such as video and printing, were
user-mode subsystems. In Windows NT 4.0, the video, server, and printer spooler subsystems were moved into kernel mode. Windows NT's first
GUI was strongly influenced by (and programmatically compatible with) that from Windows 3.1; Windows NT 4.0's interface was redesigned to match that of the brand-new
Windows 95, moving from the
Program Manager to the
Windows shell design.
NTFS, a journaled, secure file system, is a major feature of NT. Windows NT also allows for other installable file systems; NT can also be installed on
FAT file systems, and versions 3.1, 3.5, and 3.51 could be installed on
HPFS file systems. Windows NT introduced its own driver model, the Windows NT driver model, and is incompatible with older driver frameworks. With
Windows 2000, the Windows NT driver model was enhanced to become the
Windows Driver Model, which was first introduced with
Windows 98, but was based on the NT driver model.
Windows Vista added native support for the
Windows Driver Foundation, which is also available for
Windows XP,
Windows Server 2003 and to an extent,
Windows 2000. ==Development==