25 Mar 96
One of the year end programs on TV showed a clip in which Bill Gates described Windows 95 as "a 32 bit operating system." This is completely wrong. Windows 95 provides an environment in which 32 bit applications can run, but it is basically still a 16 bit operating system with a few 32 bit extensions.
When Windows 3.x runs on a 386, 486, or Pentium computer, some of its memory management and device I/O support already ran in 32 bit mode. These were the so called virtual device drivers or VxD's. Initially VxD modules were used for memory management and for handling a few special devices like modems and sound cards.
Windows 3.x used DOS services for the other devices, such as hard disks, CD-ROMs, and network cards. Windows for Workgroups provided an option to move network support (except for Novell) to 32 bit VxDs. Disk support, at least for standard IDE drives, could also be enabled through 32 bit VxD drivers.
Add to this the optional WIN32S support, which allowed some WIN32 applications to run under older versions of Windows, and you have many of the main features of Windows 95. The new system did not make any radical change. Instead it refined, tested, and simplified what were previously exotic options.
A WFWG system starts by loading a real DOS system, including its device drivers. Then WFWG starts up and loads its VxDs. I/O to supported networks and IDE disks are handled by the Windows drivers directly through to the hardware. When a request is made for a device with no native Window support, it is passed down to real DOS where it can be processed by the DOS device driver.
When Windows 95 boots, the Windows Virtual Machine Manager (VMM) initializes itself and loads the VxD modules that were previously Windows device drivers. VxD drivers exist for IDE and SCSI disks and for the extended VFAT file system. The network support loads support for Windows NT and Novell servers. Since this support runs as a VxD, it can be loaded into memory above the first megabyte of RAM. Although VxDs support Windows applications, they also support DOS programs running under the control of the VMM. Therefore, the command shell of Windows 95 will have access to extended features (such as long file names) that real DOS device drivers and file systems would not support.
However, there are still occasional odd devices that only have DOS device drives. Windows 95 must still support them. So at this point, the VMM creates a "DOS Virtual Machine" that is actually fairly real. It loads into the fairly real DOS virtual machine any drivers that it finds mentioned in the CONFIG.SYS dataset, and any resident routines that it finds mentioned in AUTOEXEC.BAT. Later on, when Windows 95 receives a request for a device with no native VxD support, it uses the Real Mode Mapper (RMM) to pass the request down to the fairly-real DOS where the old driver can process it (synchronously and using buffers in the 640K area).
A major feature of Windows 95 is that it "gets rid of DOS." Technically, this is a correct statement. However, the DOS programs are simply merged into the \WINDOWS directory and the DOS system function is repackaged. This new version of DOS supports long file names, and \\SERVER\SHARE\FILE.EXT syntax wherever a file or directory might appear. However, the change is still evolutionary and not radical. There has been a shift in emphasis. The glass switches from being half empty to half full. Or put in another formula:
We used to run Windows under DOS,
but Windows 95 runs DOS under Windows.
The Windows 95 installation process borrows some of the technology that Microsoft developed for NT. Through a sequence of software probes, the installation program determines automatically the type of display adapter, keyboard, mouse, disk, LAN adapter, CD-ROM, and sound card installed in the machine. It automatically configures the correct drivers. New adapters conforming to the Plug-and-Play standard will be automatically configured. Windows 95 installs proper support for PCMCIA. Users will find this to be substantially easier than the installation of DOS support for similar devices.
Every time that Windows 95 boots up, it scans the system for new devices. When it finds one, it pops up the Hardware Configuration Wizard. If the user agrees, this tool will probe the hardware to determine its I/O address and interrupt levels. Most of the time it can configure the device automatically. Sometimes it will make a mistake and crash the system.
This is probably the most fundamental difference between Windows 95 and Windows NT. Windows 95 is a personal system and it is willing to allow a configuration utility do things that have a small chance of crashing the system to save the end user from manually configuring a device. NT is designed as a server operating system. No program is allowed to do anything that might crash the system. After installation, hardware changes must be manually configured to NT by a system administrator who knows how to do it.
Although WFWG simplified the installation of MS networking, it greatly complicated the installation of Novell clients and TCP/IP. Windows 95 comes with a complete, integrated networking package. The NETBEUI support can be used for locally attached LANMAN, NT, or OS/2 file servers. The same configuration process installs a Microsoft-written Novell client, a Microsoft TCP/IP package, and support for remote dial-in LAN access using the industry standard PPP protocol.
As different functions rolled out over the years in different releases of Windows, new configuration tools were added to the user interface as needed. Before Windows 95, a Windows user wanting to change the display resolution needed to run \WINDOWS\SETUP.EXE from DOS (outside Windows). Changing the network adapter was done with the Network icon in Control Panel. CD-ROM support was added in CONFIG.SYS.
Windows NT 3.1 demonstrated that it is possible to get rid of DOS and install things automatically, yet still leave a muddled mess of configuration. Users have to memorize by rote the rules that SCSI adapters and tape drives are installed with the Windows NT Setup icon, but sound cards are installed with the Drivers icon. The user interface of Windows NT was designed to match WFWG as closely as possible.
Windows 95 makes a modest effort to clean things up. There is a New Device Install Wizard that helps the user to install any new card no matter what type of device it may be. Windows NT 4.0 will adopt the Windows 95 look and feel and allow a more reasonable approach to user customization.
Windows 95 evolved. If you want a system with some design, look at OS/2. If you want a system with a detailed, elegant, advanced design look at Windows NT. Windows 95 is the result of compromises, like a bill reported out from the Senate Finance Committee. The most important feature of a Senate bill is that it have 51 votes (60 if you have to cut off debate). Since Windows 95 is designed to replace Windows 3.x and DOS 6.x, its most important requirement is to support nearly 100% of the programs that ran under the old systems. It has to fit in a four megabyte machine and deliver performance comparable to the earlier systems. Like politics, you would do well not to question how these goals were accomplished if you lack a strong stomach.
To develop the system as quickly as possible, to provide maximum compatibility, and to maintain good performance for existing Windows applications, Windows 95 also obeys the design principle, "if it ain't broke don't fix it." Many of the existing, tested 16-bit DLL routines in Windows 3.1 are reused. New code, such as the disk and network device drivers, are written as 32-bit libraries. Both 16-bit and 32-bit applications are supported. Requests are thunked from one addressing mode to the other as needed.
Suppose a program makes a mistake. Can it crash the system? If not, will it damage any other programs that are also running? In Plain Old Windows and Windows 95, the answer is clearly Yes to both questions. In Unix and NT, the answer is clearly No.
For thirty years, operating systems have been designed to protect themselves. The application program runs in its own memory and is unable to change system data. All services filter through a mechanism that converts from the unauthorized application mode to a privileged system mode. Native OS/2 programs work this way, as do WIN32 programs running on NT.
However, the WIN16 interface was never designed to permit isolation. This is why IBM was sure, in 1988, that Windows was a lousy system and everyone would migrate over time to OS/2. WIN16 programs run with a shared set of memory segments, shared control blocks, and shared DLLs. When a WIN16 program writes something on the screen, it doesn't call another process, address space, or subsystem. It calls a subroutine that helps the program to display the data directly on the display. Nothing except good manners prevents a program from writing on a part of the screen that belongs to another program. Screen savers depend on this.
This reflects the old DOS/Windows spirit. Every program is authorized. BIOS and DOS calls are useful, but optional. DOS is a set of services that the program calls to do something it could do itself, but does not want to bother with. WIN16 is explicitly designed as a set of subroutines that cooperating programs call to coordinate their direct use of system hardware resources. But WIN16 assumes that the programs all run in a common memory and share the control blocks that determine where the window are on the screen and which window is on top.
Running all the programs together with a common set of control blocks saves memory and speeds up processing. However, if a program makes a mistake, it can crash the system.
OS/2 and Windows NT can provide some isolation by running more than one virtual machine with more than one copy of the WIN16 system. Each such machines, however, uses about two megabytes of RAM to hold the USER-GDI-KRNL libraries and control blocks. Since Windows 95 is designed to run in typical desktop systems with four megabytes of RAM, it cannot afford isolation. Thus all the Windows 95 WIN16 programs have to share a common virtual machine.
Unfortunately, there is one more step in the logic. Native OS/2 PM programs can run in separate address spaces because Microsoft and IBM defined PM to avoid the limitations of the WIN16 interface. In Windows NT, WIN32 programs can run in a separate address space because NT is natively a 32-bit operating system and all the screen management is physically handled by the WIN32 subsystem (in NT, all WIN16 programs are thunked to WIN32 requests). However, Windows 95 reuses a large part of the old WIN16 USER-GDI-KRNL DLL support. Many WIN32 calls are thunked down to 16-bit calls to the old WIN16 library modules. Those modules assume shared memory and a common set of control blocks. Therefore, under Windows 95 even WIN32 programs have to share the same virtual machine with each other and with the WIN16 routines.
There is a bit of flimflam in the Windows 95 hype that deserves special note. Windows 95 is able to rearrange the page tables so that WIN16 programs cannot directly address WIN32 program storage, and WIN32 programs cannot address each other's storage. But that does not provide real program isolation. All WIN16 and WIN32 programs can address the Windows system control blocks that govern things like events and windows. Clobber one of these data areas, and the whole system fails.
IBM and Microsoft delivered OS/2 in 1988. OS/2 isolates applications and provides system integrity. If the users really cared about program integrity, they would have converted to OS/2. Windows 3.0 did not have integrity or advanced structural features. It was small and ran nice applications. Users loved it. Windows 95 simply continues the emphasis of size, speed, and interface over internal structure and clean program interfaces. From the view of a system designer, OS/2 is an objectively "better" system. However, most users are not system designers, and to them, a better system with no applications is not as good as a mediocre design with zillions of great programs.
Besides, Microsoft would add, if anyone cares about structure and integrity, then they should consider Windows NT.
Windows 95 has major advantages in installation, configuration, and ease of use. These are not, however, topics under consideration in this series of articles. Structurally, Windows 95 adds VxD support for most of the commonly used devices and largely disposes of DOS drivers and BIOS. There is a residual Real Mode Mapper to simulate the DOS environment for really odd devices (say Localtalk adapters) that have no native VxD support.
Windows 95 is a hybrid system. It preserves the old 16-bit components whenever a system service has not changed. New 32-bit components are added mostly for new kernel functions (multithreading, storage management, etc.). WIN16 and WIN32 applications are both supported. When the application program and system service use different memory models, the call is thunked.
Windows 95 is designed for home computers, small business users, and others with limited technical background. It is largely self configuring, runs most of the old games and multimedia programs, and can run on machines with only 8 megabytes (although more memory is better).
Windows NT is a better choice for institutional use in corporations, university departments, or other locations with better technical support. It provides greater integrity, security, and better network integration. It requires a bit more thought to configure one system, but this planning can then be applied to all the other systems managed by the same organization.
Copyright 1995 PCLT -- Surviving the Next Operating System -- H. Gilbert
This document generated by SpHyDir, another fine product of PC Lube and Tune.