Windows NT

From Computer History Wiki
Jump to: navigation, search


Windows NT
Type: Time-sharing
Creator: Dave Cutler et al
Multitasking: Multitasking with paging/swap
Architecture: Originally MIPS, then i386, DEC Alpha, PowerPC, Itanium, x64
Date Released: 1993


Windows NT is Microsoft's first home built 32bit OS.

Background

The NT OS/2 original logo

Windows NT started life as NT OS/2. Originally it was a future thinking version of OS/2 that would be portable, and was targeted for the coming RISC CPUs. The goal was to design a micro kernel OS that could run 32 bit POSIX binaries, 16 bit OS/2 1.x binaries, 16 bit MS-DOS & Windows binaries with an improved 32bit OS/2 API & Windowing system. Microsoft hired Dave Cutler away from Digital to help with the implementation of the OS, back in 1988.

It is important to remember that the NT project started in 1988, and where Microsoft was product wise. Released products in 1988 were:

Learning DOS 2.0, Microsoft Stat Pack on CD-ROM, MS-DOS 4.01, Small Business Consultant 1.0 on CD-ROM, SQL Server Network Developers Kit 1.0, Excel for OS/2, Word 5.0 for PC, Quick Basic 4.5, Excel for Windows 2.1, OS/2 Software Development kit 1.2, Microsoft Programmer’s Library on CD-ROM, Quick Basic 1.0 for Mac, MS-DOS CD-ROM Extensions 2.0, COBOL Optimizing Compiler 3.0, Flight Simulator 3.0 for PC, PowerPoint 2.01 for Mac, Learning DOS 2.0, Stat Pack 1.0

NT OS/2 was originally targeted to the Intel i860 CPU. This was done to keep Windows NT portable, and not fall into i386'isims into the original base source. This is where the NT in NT comes from, processor they used was called the "N-Ten" from the i860 XR processor. It was quickly apparent though that the i860 was NOT going to be a good workstation CPU, and the effort was quickly moved to the MIPS CPU, and Microsoft built their own motherboard design the JAZZ.

However after the 1990 release of Windows 3.0, Microsoft started to shift the primary API of NT OS/2 to the Windows API. The 16 bit emulation for OS/2 applications remained, however the Graphical Interface for OS/2 programs became a separate product. This started the rift that would end the Microsoft IBM collaboration.

With NT OS/2 renamed to Windows NT, the first public demonstration was the October 1991 Comdex developers pre-release, followed up by the December 1991 pre-release. Betas were then released in July of 1992, at the Professional Developers Conference in San Francisco, followed up with another beta in October 11th, of 1992.

Architecture

Windows NT is a micro kernel design that supported the following subsystems:

  • Win32
  • NTVDM
  • Win16 (WOW)
  • OS/2
  • POSIX

The native API is largely undocumented, and noted by the prefixes Rtl, Zw, and Nt. The Win32 API is considered it's primary API as the system services, security & console are all win32 applications.

Win32

This is the most commonly used subsystem. This is responsible for running the 32bit windows applications.

NTVDM

Microsoft licensed SoftPC 3.0 to provide a full PC emulated experience on the RISC CPUs and for emulating IBM PC hardware on the i386, but running instructions inside a v86 virtual machine (A hardware feature of the 386 and higher CPUs).

Win16 (WOW

The Win16/WOW subsystem was a specialized copy of Windows 3.1 running in the NTVDM that would pass all the user interface calls up to the Win32 subsystem via thunking. This allowed for a seamless operation of legacy Win16 applications. Because this ran withing the NTVDM, even RISC machines could run legacy i286/i386/i486 Win16 programs. This was typical for Microsoft Office 4.2 as the only known RISC port of Office was Office 97 for the Dec Alpha.

OS/2

The OS/2 subsystem was to support the transition away from 16bit OS/2 applications. Out of the box it only supported running text mode OS/2 applications. There was a separately sold addon for the Presentation Manager graphical applications, although it was hard to come by as Microsoft strongly discouraged it's use. An interesting note about the 16bit OS/2 subsystem is that Microsoft had provided a callback facility to allow OS/2 programs to call the Win32 API.

POSIX

Posix compatibility was a 'hot topic' for US Government workstations. The POSIX subsystem was thrown together to achieve a 'checkbox' on GSA contracts. This subsystem was heavily crippled by not having a mechanism to call the Win32 API. As such it provided an environment akin to Unix/32V. With no ability to either run, display X11, or connect via TCP/IP it was largely ignored, except by a few who used its vi tool that was included in the resource kit.

Versions

Windows NT 3.1

Windows NT 3.1

This was the first public release of Windows NT, and the Win32 API. NT 3.1 was released on July 27th 1993. The build number of the initial release is 511, but later service packs increased the build number to 528. NT 3.1 supported the i386 cpu, and the MIPS R4000. Inside some boxes was a coupon for the Dec Alpha version. NT 3.1 was apparently already ported to the Dec Alpha, however none of the ARC capable machines were 'production grade' so they couldn't certify for certain that it'd work. Later copies of NT 3.1 have an ALPHA directory.

Windows NT 3.1 does NOT support PCI buses. It is limited to ISA/EISA/MCA only. However some PCI peripherals can be driven by ISA drivers for things that map to ISA space... Like Video cards. To get a scope of the limited support, check out the Windows NT 3.1 HCL.

On the i386, the more modern INT 15h/E820h interface for querying the system memory map was not yet standardized and supported. This meant that typically the most memory that would be recognized by NTLDR is 64Mb. Since newer versions of NTLDR can boot older systems, installing NT 3.5 or above can overcome this limit in NT 3.1, even if the installation is to a different partition and later removed.

NT 3.1 does include CDROM support, but does not support IDE CDROMs, which later became the industry standard. It also includes support for multiple processors, although the lack of industry standards for multiprocessor i386 at the time meant a custom HAL was needed for each multiprocessor device.

NT 3.1 did include support for long file names in NTFS, but did not include support for long file names in FAT. The NTFS format was later updated, so Windows NT 3.5 and 3.51 include an update to NT 3.1's NTFS driver to allow NT 3.1 to access an NTFS partition that has been mounted by NT 3.5 or later.

Windows NT 3.1 also only allows for a SINGLE WOW session.

NT 3.1 also includes a Microsoft Mail client, and the ability to setup & serve workgroup postoffices.

There were several beta and pre-release versions of Windows NT 3.1.

Windows NT 3.1 shipped in two versions, Windows NT 3.1 Advanced Server, and Windows NT 3.1. The most recent service pack available is service pack 3.

Windows NT 3.5

Windows NT 3.5

Codenamed Daytona, this release added several optimizations, and notably added support for the PCI bus, IDE CDROMs, memory above 64Mb, MPS 1.1 multiprocessor support, and the Dec Alpha CPU's shipped on the CD. It was released on September 21st, 1994. The build number was 807.

The Windows NT 3.5 SDK included the Dec Alpha CLI tools. This version also brought a software only port of OpenGL from SGI to make Windows NT more 'workstation like'.

Windows NT 3.5 replaced the TCP/IP stack from SpiderTCP to something that was built in house. It does support DHCP, and is faster then the SpiderTCP stack. This new TCP/IP stack was also the basis for the one in Windows 95. It is worth mentioning that SLIP & PPP were now included. IMHO this was the EASIEST OS at the time to connect to the internet.

Along with the TCP/IP improvements, NT 3.5 also shipped with a Netware requester. Netware was still late to the game with a client for Windows NT so Microsoft wrote one, and many organizations stuck with the Microsoft requester as it operated better then the Novell one.

From a programming level NT 3.5 also finished out many of the API's that were left to be finished by the time NT 3.1 had shipped... I suspect it had more to do with spec drift then anything.

In preparation for the Windows 95 release, NT 3.5 included support for long file names in FAT, and attempts to run Win32 programs that require version 4.0. It is not entirely successful, because it is missing a lot of APIs that would be included in Windows 95. Perhaps due to a lack of planning, it does not attempt to run Win32 programs that require 3.51.

NT 3.5 was released in two versions, Windows NT 3.5 Server and Windows NT 3.5 Workstation. The most recent service pack available is service pack 3.

Windows NT 3.51

Windows NT 3.51

This release added the PowerPC CPU support that was done by IBM. I've heard that NT 3.51 was actually 'done' 9 months prior to it's release but Microsoft had to wait for IBM to finish the PowerPC port. Meanwhile Microsoft did a LOT of bug fixing making this a very popular release for corporations. While it retained the look & feel of Windows 3.1 the newshell beta was available towards the end of the products lifespan, giving NT 3.51 a Windows 95 feel. It was released on May 30th, 1995 and it's build number was 1057.

NT 3.51 was to sync a lot of user mode components from Windows 95. For developers, this included the Windows 95 common control library including the rich edit control, as well as the Windows 95 help system. Although it may not 'look' or feel like Windows 95 in the slightest. This was the last version of Windows NT to incorporate the Program Manager as the primary interface. Unlike NT 3.1/3.5, Windows NT 3.51 could also run Microsoft Office 95, being the first widely available 32bit version of the popular office suite. This support was retained in Office 97, and dropped in Office 2000.

Although initially 32 bit Internet Explorer supported NT 3.51, this was quickly dropped and users were encouraged to use the 16 bit version. Curiously though the HTTP stack from Internet Explorer 3 (wininet.dll) was available as a redistributable for NT 3.51.

Windows NT 3.51 shipped in two versions, Windows NT 3.51 Server and Windows NT 3.51 Workstation. The most recent service pack available is service pack 5.

Windows NT 4.0

Windows NT 4.0

Windows NT 4.0 was released on August 24th, 1996. It's build number is 1381. Initially it supported the Alpha, i386, MIPS and PowerPC CPUs. However the MIPS cpu was dropped right after service pack 1. The PowerPC cpu was dropped right before service pack 3. The Dec Alpha would see mainstream support right through the Windows NT 4.0 product life cycle. It’s worth noting that the MCA bus (Microchannel) was also dropped from this release.

This release was the most significant user wise, as it incorporated the Windows 95 shell (newshell). Additionally Microsoft had moved the graphics & printing from the win32 user space, into the 'executive' or kernel. This made graphics (GDI) and printing were significantly faster. This did have the downside that video calls, or errors in print rasterization (1 point fonts!!) could crash the entire OS.

I have to say that in my opinion this is where Windows NT went from a curiosity and joke into being a real commercial success. Prior to this, Windows NT 3.1/3.5/3.51 ran mostly win16 applications, and ran them significantly slower then Windows 3.1. However with the transition of user desktops to Windows 95, corporate users now had machines with 16MB of ram, or more, and with Office 95 the beginning of 32bit productivity applications started to hit mainstream. Windows 95 proved itself to be unable to multitask that well under heavy system loads, and with Users with Pentium CPU's suddenly Windows NT was viable. In the company where I worked (Fortune 500 type) we had users going out an buying their own copies of NT 4.0 workstation once word got around that it ran Windows 95 applications but didn’t crash 2-3x a day. Another significant thing for users was the built in shell for Novell Netware, and how it outperformed the Novell offering.

Windows NT was also very popular on the server front, as installation and configuration was significantly easier then Novell Netware. With the release of Exchange server 4.0 more and more companies started to transition their mail infrastructure to Windows NT. Along with the rest of the ‘back office’ SQL, SNA Windows NT started to ‘steal’ away the data center.

Another significant aspect of Windows NT 4.0 was that it not only included TCP/IP in the product (it was an add-on for Novell Netware) but it also included a web server, ftp server & gopher server in the IIS product line. This made IIS servers the quickest to deploy for a novice IS person.

The downfall at the time was the numerous hotfixes for Windows NT, and how to apply them. While waiting for the servicepacks was one thing, running NT 4.0 on the internet became a challenge as installing anything could undo a hotfix, and you had to be extra diligent about finding and verifying their installation. Eventually Microsoft released the windows update function through Internet Explorer, alleviating most of this.

Windows NT 4.0 shipped in three versions, Windows NT 4.0 Server, Windows NT 4.0 Enterprise and Windows NT 4.0 Workstation. The most recent service pack available is service pack 6a.

Windows NT 4.0 Terminal Server

Windows NT 4.0 Terminal Server

This was the first Microsoft multiuser version of Windows, with technology given back from Citrix. I recall Microsoft strong armed the Citrix people into this 'deal'... Anyways it had Service pack 3 built into it, and thus only supported the Alpha & i386 CPUs. It was released around June of 1998.

This was more of a public alpha then a finished product. Because applications had not been written with multiple concurrent instances running under different sessions from different users in mind, quirks were common. It included installation and configuration utilities to tweak common applications to not freak out when more then one copy was running.

It included 10 connection licenses, but any connection from NT 4 or a newer version of Windows did not require a license, so over time this came to mean limited by available memory. Since this was a 32 bit release only, memory could be exhausted within 20-50 sessions depending on the intensity of load.

The protocol for terminal services changed significantly after this release, and support to connect to it was dropped in Windows XP service pack 2. Nonetheless it is possible to keep around mstsc.exe and mstsxax.dll for this purpose. The most recent client that works is distributed with Windows Server 2003. Many features are not supported by the older protocol, and it is limited to a maximum of 256 colors.

There never was a servicepack 6a, just 6 so .net will NOT install. This product was quickly replaced by the Windows 2000 Terminal Services, which honestly did a better job.

See also