Windows NT 3.1

Windows NT 3.1 is the first major release of the Windows NT operating system developed by Microsoft, released on July 27, 1993.

At the time of Windows NT's release, Microsoft's Windows 3.1 desktop environment had established brand recognition and market share, but it relied on the DOS operating system for essential functions, and it had a constrictive 16-bit architecture. Windows NT, however, was a complete, 32-bit operating system that retained a desktop environment familiar to Windows 3.1 users. By extending the Windows brand and beginning NT at version 3.1, Microsoft implied that consumers should expect a familiar user experience. The name Windows NT ("New Technology") advertised that this was a re-engineered version of Windows.

Windows NT began as a rewrite of the OS/2 operating system, which Microsoft had co-developed with IBM in the 1980s. For several reasons, including the market success of Windows 3.0 in 1990, Microsoft decided to advance Windows rather than OS/2, relinquished their OS/2 development responsibilities. First publicly demonstrated at Comdex 1991, NT 3.1 was finally released in 1993, available in two editions: Windows NT 3.1 for workstations, and Windows NT 3.1 Advanced Server for servers.

When Windows NT premiered, their sales were limited by high system requirements, and a general lack of 32-bit applications to take advantage of the OS's data processing capabilities. It sold about 300,000 copies before it was succeeded by Windows NT 3.5 in 1994. On December 31, 2000, Microsoft declared Windows NT 3.1 obsolete and stopped providing support and updates for the system.

Development history
The origins of Windows NT date back to 1988, where Microsoft had a major foothold on the personal computer market due to the use of its MS-DOS as the operating system of IBM PC compatibles. Nathan Myhrvold, who had joined Microsoft after its acquisition of Dynamical Systems Research, identified two major threats to Microsoft's monopoly—RISC architectures, which proved to be more powerful than the equivalent Intel processors that MS-DOS ran on, and Unix, a family of cross-platform multitasking operating systems with support for multiprocessing and networking. While the widespread use of Unix was hindered by the need to adapt programs for each individual variant, Bill Gates believed that the combination of a Unix-like operating system with RISC processors could be a market threat, prompting the need for Microsoft to develop a "Unix killer" that could run on multiple architectures. Myhrvold wanted to develop a new system that would run on RISC workstations and Intel chips and multiprocessing computers. Gates had also hired Dave Cutler from Digital Equipment Corporation to assist in developing the new operating system; Cutler left DEC after the cancellation of the PRISM architecture and its MICA operating system, and agreed to join Microsoft on the condition that he be able to bring a number of staff members from his team at DEC with him. Cutler arrived at Microsoft in October 1988, and began working on the development of the operating system in November.

The operating system was first developed as a revised version of OS/2, an operating system Microsoft had jointly developed with IBM. While OS/2 was originally intended to succeed MS-DOS, it had yet to be commercially successful. The OS was to be designed so it could be ported to different processor platforms, and support multiprocessor systems, which few operating systems did at that time. To target the enterprise market, the OS was also to support networking, the POSIX standard, and a security platform compliant with the "Orange Book" standards; which would require the OS to be a multi-user system with a permission framework and the ability to audit security-related events.

Both Microsoft and IBM wanted to market an operating system that appealed to corporate "enterprise software" customers. That meant greater security, reliability, processing power, and computer networking features. However, since Microsoft also wanted to capture market share from Unix on other computing platforms, they needed a system design that was more portable than that of OS/2.

To this end, Microsoft began by developing and testing their new operating system for a non-x86 processor: an emulated version of the Intel i860. Alluding to the chip's codename, "N10", Microsoft codenamed their operating system NT OS/2. DEC preemptively sued Microsoft, alleging that they stole code from MICA for use in the new operating system. In an out-of-court settlement, Microsoft agreed to make NT OS/2 compatible with DEC's Alpha processor.

The development team originally estimated that development would be complete within 18 months. By April 1989, the NT OS/2 kernel could run inside the i860 emulator. However, the development team later determined that the i860 was unsuitable for the project. By December they had begun porting NT OS/2 to the MIPS R3000 processor instead, and completed the task in three months. Senior Microsoft executive Paul Maritz was targeting a release date in 1992, but the development schedule was uncertain. The company was eager to silence naysayers who speculated that NT wouldn't be on the market until 1994, and had planned to present the new OS at COMDEX in 1990.

As Windows NT
In May 1990, Microsoft released Windows 3.0, a new version of its MS-DOS-based Windows desktop environment. Windows 3.0 sold well, and the resulting shift in Microsoft's marketing strategy eroded their partnership with IBM—who wanted Microsoft to concentrate solely on developing OS/2 as its primary platform as opposed to building their future business around Windows. Users and developers were unsure of whether to adopt Windows or OS/2 due to these uncertainties (a situation magnified by the fact that the operating systems were incompatible with each other at the API level), while Microsoft's resources were also being drained by the simultaneous development of multiple operating systems. In August 1990, as a response to the popularity of Windows 3.0, the NT OS/2 team decided to re-work the operating system to use an extended 32-bit port of the Windows API known as Win32. Win32 maintained the familiar structure of the 16-bit APIs used by Windows, which would allow developers to easily adapt their software for the new platform while maintaining a level of compatibility with existing software for Windows. With the shift to a Windows-like architecture, the operating system's shell was also changed from OS/2's Presentation Manager to Windows' Program Manager.

Due to these changes, NT was not presented at COMDEX 1990 as was originally planned. Neither the general public nor IBM knew about the transformation of NT OS/2 into Windows NT at the time. Although the companies did agree to a revised partnership where IBM and Microsoft would alternate developing major versions of OS/2 instead of collaborating on each version, IBM eventually learned of Microsoft's Windows NT plans in January 1991, and immediately ended the OS/2 partnership. IBM would solely develop OS/2 2.0 (as was planned under the amended version) and all future versions, without any further involvement from Microsoft.

In October 1991, Windows NT received its first public demonstration at COMDEX. In an effort to ensure software taking advantage of Windows NT was available upon its release (scheduled for late-1992), Microsoft also distributed a 32-bit software development kit to selected developers in attendance. The demonstration was positively received; PC Magazine called Windows NT "the modern reinvention of the operating system", but at the same time claimed that it was unlikely that the promised backward compatibility would be kept for the final release. In March 1992, Microsoft also released Win32s, which would allow Windows 3.1 to have partial compatibility with Windows NT programs for the purposes of developing software optimized for the platform.

At Microsoft's Win32 Professional Developers Conference in June 1992, Windows NT was demonstrated running on x86 and MIPS processors, while a beta version of Windows NT and an updated development kit were also made available. Concurrently, Microsoft announced a new version of its SQL Server product for Windows NT; Unix vendors feared that the software could be a killer app that would affect the market share of Unix systems. Concerns were also raised over NT's memory usage; while most computers of the era shipped with 4 megabytes of RAM, 16 MB was recommended for NTs. Due to the high cost of RAM at the time, critics thought that its high system requirements could affect the sales and adoption of Windows NT. Steps were taken to reduce its memory usage through methods such as paging.

Microsoft began releasing public beta builds of NT in October 1992, and a month later at COMDEX, a presentation focusing on third-party software for Windows NT was held. The final pre-release version of NT was released in March 1993, alongside the unveiling of the server version, LAN Manager for Windows NT. Although its stability and performance had improved, there were still fears that the OS could be released in an unfinished state or delayed further into 1993.

Release
Windows NT 3.1 and Windows NT 3.1 Advanced Server (so numbered to associate them with Windows 3.1) were released on July 26, 1993. At first, only the x86 and MIPS versions shipped; the DEC Alpha version followed in September. Microsoft sold the workstation version for US$495, and the server version for US$1495. Ostensibly, the server price was meant to be a promotional discount offered only during the first six months of sale, but they never raised the retail price to the listed one—US$2995. 250 programmers wrote 5.6 million lines of code; the development cost US$150 million. In the last year of development, the team fixed more than 30,000 bugs.

During the product's lifecycle, Microsoft published three service packs: Service Pack 1 was released on October 8, 1993; Service Pack 2 followed on January 24, 1994; and Service Pack 3's release date was October 29, 1994. The service packs were distributed on CD-ROM and floppy disk, and also through bulletin board systems, CompuServe, and the Internet. Microsoft terminated support for the operating system on December 31, 2000. Support for Windows NT 3.1 RTM (without a service pack) ended on January 8, 1994. Service Pack 1 support ended on April 24, 1994, and finally, Service Pack 2 support ended on January 29, 1995, only 1 year after general availability.

Windows NT 3.1 was localized into various languages. Besides English, it was available in Dutch, French, German, Japanese, Spanish and Swedish. The version for workstations, but not Windows NT 3.1 Server, was additionally available in Danish, Finnish, Italian, Norwegian and Portuguese.

Operating system goals
Cutler set three main goals for Windows NT. The first goal was portability: in contrast to previous operating systems, which were strongly tied to one architecture, Windows NT should be able to operate on multiple architectures. To meet this goal, most of the operating systems, including the operating system core, had to be written in the C programming language. During the planning phase it was clear that this would cause Windows NT to have higher memory consumption than all previous operating systems. Besides the graphics system and parts of the networking system, which were written in C++, only parts of the operating systems which required direct hardware access and performance critical functions were written in assembly language. These parts were isolated so that they could easily be rewritten when porting the operating system to a new architecture.

The second goal was reliability: The system should no longer crash due to a faulty application or faulty hardware. This way, the operating system should be made attractive for critical applications. To meet this goal, the architecture of Windows NT was designed so that the operating system core was isolated and applications could not access it directly. The kernel was designed as a microkernel and components of the core were to run atop the kernel in a modular fashion; Cutler knew this principle from his work at Digital. Reliability also includes security, and the operating system should be able to resist external attacks. Mainframes already had a system where every user had their own account which was assigned specific rights by the administrator, this way, users could be prevented access to confidential documents. A virtual memory management was designed to thwart attacks by malware and prevent users from accessing foreign areas of memory.

The third goal was called personality: The operating system should be able to run applications designed for various operating systems, such as Windows, MS-DOS and OS/2 applications. The Mach kernel followed a similar concept by moving the APIs to components which operated in user mode as applications, these could be changed and new ones could be added. This principle was applied to Windows NT.

Despite all these goals, the performance of the operating system was optimized where possible, by adapting critical sections of the code to fast execution speed. To improve networking performance, large parts of the networking system were moved to the operating system core.

Windows NT was designed as a networking operating system. In this branch, Novell had a lead with its product NetWare, mostly because of a lack of competition, and Microsoft failed to develop a product which could challenge NetWare's lead. Cutler hoped to gain additional customers with a reliable networking operating system. Bill Gates already dominated the market of desktop operating systems with MS-DOS and Windows and hoped to do the same in the networking market with Windows NT. He especially hoped to find a market in the emerging number of servers, while at the same time he did not expect a success in the desktop market until 1995.

Therefore, Windows NT was positioned as a high-end operating system in an interview with the product manager David Thacher. It was not designed to replace Windows 3.1 completely, but it should rather supplement Microsoft's product palette with an operating system for critical applications. The expectations were 10% to 20% among all Windows sales and a market share of 10% in the high end market, which amounted to one million copies.

Architecture
While Windows NT 3.1 uses the same graphical user interface as Windows 3.1, it was developed anew. The operating system is not DOS-based, but an independent 32-bit operating system; many concepts were taken from Cutler's previous operating system, VMS. The architecture of Windows NT takes some ideas of the client–server model, like the modular structure and the communication between the modules. System resources like memory, files or devices are viewed as objects by the operating system, which are all accessed in the same way through handles and which can in this way be secured against unauthorized access.

The operating system was designed for multiprocessor systems; it supports preemptive multitasking and can make use of threads to run multiple processes in parallel. Using symmetric multiprocessing, the processing usage is evenly distributed among all available processors. The inter-process communication in Windows NT 3.1 is designed around networks; two newly introduced functions, Remote Procedure Call (RPC) and Network DDE, an extension of Dynamic Data Exchange (DDE), facilitate the access and data exchange between processes running on different computers inside a network.

The operating system is designed to combine certain elements of a monolithic kernel and a microkernel; nowadays this is most often referred to as a hybrid kernel. The hardware abstraction layer represents the lowermost layer and isolates the operating system from the underlying hardware to make it easy to port the operating system to other platforms. The kernel running atop only has very basic functions like interrupt management and processor synchronization. All other functions of the operating system core are handled by modules which operate independently from one another and can be swapped without affecting the rest of the operating system.

Positioned above the operating system core are the subsystems. There are two types of subsystems: one are the integral subsystems, which perform important operating system functions. One such subsystem is the security subsystem, which handles the logon process and monitors the security of the system. The other type of subsystem is the environment subsystem, which exposes the operating system functions to applications via application programming interfaces. The base subsystem is the 32-bit subsystem which runs 32-bit applications written for Windows NT. Windows NT applications can only run on one platform, and must be recompiled for every platform. The 32-bit subsystem also contains all output functions, including the Graphics Device Interface (GDI), so all other subsystems have to call the 32-bit subsystem to be able to output text or graphics. Other subsystems contained in Windows NT 3.1 are the POSIX subsystem, which supports POSIX-compatible applications built for Windows NT, and, in the x86 version only, the OS/2 subsystem, which allows command-line based OS/2 1.x applications to run.

The Virtual DOS Machine (VDM) is sometimes also viewed as a subsystem, but is, strictly speaking, a normal 32-bit Windows application. It manages applications originally built for DOS. Built on top is Windows on Windows (WoW), which allows applications built for 16-bit Windows operating systems like Windows 3.1 to run. On x86 computers, the virtual DOS machine uses the virtual 8086 mode to run DOS applications directly, on RISC computers, an emulator licensed from Insignia Solutions is used which emulates a 80286 processor. However, not all DOS and 16-bit Windows applications can be run on Windows NT 3.1 due to various limitations, one of them being the inability of applications to directly access the hardware. As well, VxD files sometimes needed by applications cannot be used with Windows NT 3.1. While pure DOS applications are run in separate memory spaces, 16-bit Windows applications have to share one memory space. While this is done due to compatibility reasons with applications which depend on this ability, like Schedule+ and Microsoft Mail, it also means that 16-bit Windows applications only run in cooperative multitasking. A faulty 16-bit Windows application is in this way able to cause all other 16-bit Windows applications (but not Windows NT itself) to crash.



System
Windows NT 3.1 provides a boot manager called NTLDR which is loaded during the startup process of the operating system on x86-based computers. It allows a multiboot setup of multiple instances of Windows NT 3.1, as well as MS-DOS and OS/2 1.x. NTLDR is not used for the RISC versions because the RISC computers' firmware provides their own boot manager.

Every user has to log on to the computer after Windows NT 3.1 is booted up by pressing the key combination Ctrl+Alt+Del and entering the user name and password. All users have their own user account, and user-specific settings like the Program Manager groups are stored separately for every user. Users can be assigned specific rights, like the right to change the system time or the right to shut down the computer. To facilitate management of user accounts, it is also possible to group multiple user accounts and assign rights to groups of users.

Windows NT 3.1 introduced the new NTFS file system. This new file system is more robust against hardware failures and allows assignment of read and write rights to users or groups on the file system level. NTFS supports long file names and has features to accommodate POSIX applications like hard links. For compatibility reasons, Windows NT 3.1 also supports FAT16 as well as OS/2's file system HPFS, but does not support long file names on FAT file system (VFAT). This was added in Windows NT 3.5.

Designed as a networking operating system, Windows NT 3.1 supports multiple network protocols. Besides IPX/SPX and NetBEUI, the TCP/IP protocol is supported allowing access to the Internet. Similar to Windows for Workgroups, files and printers can be shared and the access rights and configuration of these resources can be edited over the network. When a network printer is installed, the required drivers are automatically transferred over the network, removing the need to manually install the drivers for every computer. The Remote Access Service (RAS) allows a client from outside the network to connect to the network using a modem, ISDN or X.25 and access its resources. While the workstation allows one RAS connection at a time, the server supports 64.

Windows NT 3.1 supports the then-new Unicode standard, a character set which allows multiple languages to be displayed. This facilitates localization of the operating system. All strings, as well as file and folder names, are internally processed in Unicode, but the included programs, like the File Manager, are not Unicode aware, so folders containing Unicode characters cannot be accessed. For demonstration purposes, a Unicode typeface called Lucida Sans Unicode is shipped with Windows NT 3.1 even though it is not installed by default. The previous code pages are still supported for compatibility purposes.

The Windows registry, introduced with Windows 3.1, is a central, hierarchical configuration database designed to allow configuration of computers over the network and to replace the commonly-used text-based configuration files, like INI files, AUTOEXEC.BAT and CONFIG.SYS. Using the undocumented registry editor, the Windows registry can be viewed and edited by the user.

The Advanced Server is designed to manage the workstation computers. It can function as a Domain controller, where all users and groups as well as their rights are stored. This way, a user can log on from any computer in the network, and users can be managed centrally on the server. Trust relationships can be built to other domains to be able to exchange data cross-domain. Using the replication service, files like logon scripts can be synchronized across all computers on the network. The Advanced Server supports the AppleTalk protocol to allow connections to Macintosh computers. Hard drives can be combined to RAIDs in Windows NT 3.1 Advanced Server, the supported configurations are RAID 0, RAID 1 and RAID 5.

Included programs
Windows NT 3.1, for the most part, comes with 32-bit versions of the components featured in Windows 3.1 and Windows for Workgroups. However, it also included applications specifically aimed at the needs of Windows NT, like the User Manager, the Performance Monitor, the Disk Administrator, the Event Viewer and the Backup application. The Advanced Server contained further, server-specific administration tools. Because Windows NT 3.1 is not DOS-based, a new 32-bit command-line processor, called CMD.EXE was included which was compatible with MS-DOS 5.0. For compatibility reasons, Windows NT 3.1 shipped with a few 16-bit applications, like Microsoft Write or EDLIN.

Windows NT 3.1, being an all-new operating system for which no previous drivers could be used, includes a wealth of drivers for various common components and peripherals. This includes common SCSI devices like hard drives, CD-ROM drives, tape drives and image scanners, as well as ISA devices like graphics cards, sound cards and network cards. The PCI bus, however, is expressly not supported. Windows NT 3.1 supports an uninterruptible power supply.

Windows NT 3.1 could be installed either by using the CD-ROM and a provided boot disk, or by utilizing a set of twenty-two 3.5" floppies (twenty-three floppies for Advanced Server). Windows NT 3.1 could also be installed over the network. A coupon was included that made it possible to order a set of twenty-seven 5.25" floppies (or twenty-eight floppies for Advanced Server). Compared to the floppies, the CD-ROM contained additional drivers and applications.

System requirements
Windows NT 3.1 supports multiple platforms: Aside from the x86 architecture, it runs on computers with DEC Alpha or MIPS (R4000 and R4400) processors.

Minimum system requirements on x86 systems include a 25 MHz 80386 processor, at least 12 megabytes of memory, 75 megabytes of hard drive space, and a VGA graphics card. RISC systems require 16 megabytes of memory, 92 megabytes of hard drive space, and a CD-ROM drive. The Advanced Server edition requires an 80386 processor with 16 megabytes of memory and 90 megabytes of hard drive space. On RISC systems, 110 megabytes of hard drive space is needed.

Windows NT 3.1 supports dual processor systems, while the Advanced Server edition supports up to four processors. Due to an error in the processor detection routine, Windows NT 3.1 cannot be installed on Pentium II or newer processors. Microsoft never fixed the problem, but unofficial patches are available.

Reception
Windows NT 3.1 sold about 300,000 copies in its first year. The hardware requirements were deemed to be very high at that time; the recommended system requirements of a 486 processor with 16 megabytes of memory were well above the average computer's configuration, and the operating system turned out to be too slow to use. 32-bit applications which could have used the capabilities of Windows NT 3.1 were scarce, so users had to resort to the old 16-bit applications; however, these ran slower than on Windows 3.1. Estimates in November 1993 counted only 150 Windows NT applications. Common types of software, like office suites, were not available for Windows NT 3.1. During the development of the operating system, the API calls were changed so 32-bit applications built on the 1992 pre-release version of Windows NT 3.1 could not be run on the final version. This affected software such as Microsoft Visual C++ 1.0 and Microsoft Fortran PowerStation.

RISC systems with Windows NT 3.1 had an even bigger disadvantage: even though they were more powerful than x86 systems, almost no 32-bit applications or drivers were ported to these platforms. 16-bit applications ran much slower under RISC systems because of the 80286 emulation compared to x86 systems which could run 16-bit applications natively, and DOS and 16-bit applications which depended on 386 calls could not be run at all on RISC systems.

However, not all reception was negative; the multitasking capabilities of the operating system were rated positively, especially compared to Windows 3.1. Compared to the size of the operating system, the installation turned out to be very easy, even though installing from floppies was a very time-consuming task. The Advanced Server, intended to be the successor to the unsuccessful LAN Manager product, was technically much superior to its predecessor, and only failed to gain success because it shared the same problems with its workstation pendant, such as the low performance running 16-bit applications. The Advanced Server provided a financial advantage for large networks because its price was not dependent on the number of clients, unlike its competitor Novell NetWare.

With Windows NT, Microsoft entered a market it could not previously address and which was mostly dominated by Unix, Novell NetWare and OS/2. A test performed by the InfoWorld magazine in November 1993, where the networking capabilities of several operating systems were tested, showed that Windows NT 3.1 was seriously lacking in inter-client communication: it could only connect to its own server via NetBEUI; attempts to connect to Unix, NetWare and OS/2 all failed because no client software was available. For the Advanced Server, only their own client, the Macintosh and, if only limited, OS/2 were able to connect to the server.

Even though the operating system's actual success was only moderate, it had a huge lasting impact. Developers of Unix derivations for the first time strived to standardize their operating systems, and Novell was so concerned about its market share that it bought a Unix vendor. Manufacturers of microprocessors hoped to use the portability of the new operating system to increase their own sales, and thus ports of Windows NT were announced for various platforms, like the Sun SPARC architecture and the Clipper architecture. It was recognized that Windows NT would dominate the desktop market as soon as the hardware became powerful enough to run the operating system at an acceptable speed. Eight years later, Microsoft would unify the consumer-oriented Windows line (which had remained MS-DOS based) with the NT line with the October 2001 release of Windows XP—the first consumer-oriented version of Windows to use the NT architecture.