throbber
Microsoft
`p ress1.
`on me
`
`., •i
`;. jlf':
`- --..
`
` Home | Contact Us | Archive | Support | About Our Site | Shopping |
`
` All Products | Support | Search | microsoft.com Home
`
`Find a Product
`
`
`more search
`options
`How to Buy
`Hot Off the Press
`Monthly Feature
`News & Events
`IT Professional
`Developer
`Home User
`Business Solutions
`Self-Paced Training
`Success Stories
`Getting Started
`Staying Ahead
`Ask the Experts
`MCP Exam Info
`MCP Scholarship
`MCP Connection
`Win Big
`Worldwide Sites
`
`Sample Chapter_
`Inside Windows NT(R), Second Edition
`David A. Solomon,
`based on the original edition by Helen Custer
`
`ISBN: 1-57231-677-2
`
`Chapter 2: System Architecture
`
`• • • •
`
`•
`
`System Architecture
`Requirements and Design Goals
`Operating System Models
`Architecture Overview
`Portability
`0
`Symmetric Multiprocessing
`0
`Windows NT Workstation vs. Windows NT Server
`0
`Key System Components
`Environment Subsystems and Subsystem DLLs
`0
`NTDLL.DLL
`0
`Executive
`0
`Kernel
`0
`Hardware Abstraction Layer (HAL)
`0
`Device Drivers
`0
`Peering into Undocumented Interfaces
`0
`System Processes
`0
`Conclusion
`
`•
`
`System Architecture
`
`Now that we’ve covered the terms, concepts, and tools you need to be familiar with, we’re ready to start our
`exploration of the internal design goals and structure of Microsoft Windows NT. This chapter explains the
`overall architecture of the system--the key components, how they interact with each other, and the context
`in which they run. To provide a framework for understanding the internals of Windows NT, let’s first
`review the requirements and goals that shaped the original design and specification of the system.
`
`Requirements and Design Goals
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1021, p. 1
`
`

`

`The following requirements drove the specification of Windows NT back in 1989:
`
`• • • • • • • •
`
`Provide a true 32-bit, preemptive, reentrant, virtual memory operating system
`Run on multiple hardware architectures and platforms
`Run and scale well on symmetric multiprocessing systems
`Be a great distributed computing platform, both as a network client and a server
`Run most existing 16-bit MS-DOS and Microsoft Windows 3.1 applications
`Meet government requirements for POSIX 1003.1 compliance
`Meet government and industry requirements for operating system security
`Be easily adaptable to the global market by supporting Unicode
`
`To guide the thousands of decisions that had to be made to create a system that met these requirements, the
`Windows NT design team adopted the following design goals at the beginning of the project:
`
`Extensibility The code must be written to comfortably grow and change as market requirements
`change.
`
`•
`•
`•
`
`Portability The system must be able to run on multiple hardware architectures and must be able to
`move with relative ease to new ones as market demands dictate.
`
`Reliability and robustness The system should protect itself from both internal malfunction and
`external tampering. Applications should not be able to harm the operating system or other running
`applications.
`
`•
`
`Compatibility Although Windows NT should extend existing technology, its user interface and
`application programming interfaces (APIs) should be compatible with older versions of Windows as
`well as older operating systems such as MS-DOS. It should also interoperate well with other systems
`such as UNIX, OS/2, and NetWare.
`
`•
`
`Performance Within the constraints of the other design goals, the system should be as fast and
`responsive as possible on each hardware platform.
`
`As we explore the details of the internal structure and operation of Windows NT, you’ll see how these
`design goals and market requirements were woven successfully into the construction of the system. But
`before we start that exploration, let’s examine the overall design model for Windows NT and compare it to
`other modern operating systems.
`
`Operating System Models
`
`In most operating systems, applications are separated from the operating system itself--the operating system
`code runs in a privileged processor mode (referred to as kernel mode in this book), with access to system
`data and to the hardware; applications run in a nonprivileged processor mode (called user mode), with a
`limited set of interfaces available and with limited access to system data. When a user-mode program calls a
`system service, the processor traps the call and then switches the calling thread to kernel mode. When the
`system service completes, the operating system switches the thread context back to user mode and allows
`the caller to continue.
`
`The design of the internal structure of the kernel-mode portion of such systems varies widely. For example,
`traditional operating systems were monolithic in nature, as illustrated in Figure 2-1. The system was
`constructed as a single, large software system with many dependencies among internal components. This
`interdependency meant that extensions to the system might require many changes across the entire code
`base. Also, in a monolithic operating system, the bulk of the operating system code runs in the same
`memory space, which means that any operating system component could corrupt data being used by other
`components.
`
`
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1021, p. 2
`
`

`

`Click to view graphic (12 KB)
`
`Figure 2-1
`Monolithic operating system
`
`A different structuring approach divides the operating system into modules and layers them one on top of
`the other. Each module provides a set of functions that other modules can call. Code in any particular layer
`calls code only in lower layers. On some systems, such as the Digital Equipment Corporation (DEC)
`OpenVMS or the old Multics operating system, hardware even enforces the layering (using multiple,
`hierarchical processor modes). One advantage of a layered operating system structure is that because each
`layer of code is given access to only the lower-level interfaces (and data structures) it requires, the amount
`of code that wields unlimited power is limited. This structure also allows the operating system to be
`debugged starting at the lowest layer, adding one layer at a time until the whole system works correctly.
`Layering also makes it easier to enhance the operating system because individual layers can be modified or
`replaced without affecting other parts of the system.
`
`Another approach to structuring an operating system is the client/server microkernel model. The
`architecture in this approach divides the operating system into several server processes, each of which
`implements a single set of services--for example, memory management services, process creation services,
`or processor scheduling services. Each server runs in user mode, waiting for a client request for one of its
`services. The client, which can be either another operating system component or an application program,
`requests a service by sending a message to the server. An operating system microkernel running in kernel
`mode delivers the message to the server; the server performs the operation; and the kernel returns the results
`to the client in another message, as illustrated in Figure 2-2.
`
`NOTE:
`The client/server model of networking is distinctly different from the client/server model of
`processing. In client/server networking, a server provides resources (such as files, printer, and
`storage space) to the clients. Client/server processing is a method of distributing the
`processing load required by an application to best suit the capabilities of network, server, and
`client so that one part of an application is processed on a server machine while another is
`processed on the client.
`
`In reality, client/server systems fall within a spectrum, some doing very little work in kernel mode and
`others doing more. For example, the Carnegie Mellon University Mach operating system, a contemporary
`example of the client/server microkernel architecture, implements a minimal kernel that comprises thread
`scheduling, message passing, virtual memory, and device drivers. Everything else, including various APIs,
`file systems, and networking, runs in user mode. However, commercial implementations of the Mach
`microkernel operating system typically run at least all file system, networking, and memory management
`code in kernel mode. The reason is simple: the pure microkernel design is commercially impractical
`because it is too computationally expensive--that is, it’s too slow.
`-00
`~
`
`Click to view graphic (8 KB)
`
`Figure 2-2
`Client/server operating system
`
`So what model does Windows NT embody? It merges the attributes of a layered operating system with
`those of a client/server or microkernel operating system. Performance-sensitive operating system
`components run in kernel mode, where they can interact with the hardware and with each other without
`incurring the overhead of context switches and mode transitions. For example, the memory manager, cache
`manager, object and security managers, network protocols, file systems (including network servers and
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1021, p. 3
`
`

`

`redirectors), and all thread and process management run in kernel mode.
`
`Of course, all of these components are fully protected from errant applications, because applications don’t
`have direct access to the code and data of the privileged part of the operating system (though they can
`quickly call other kernel services). This protection is one of the reasons that Windows NT has the reputation
`for being both robust and stable as an application server and a workstation platform yet fast and nimble
`from the perspective of core operating system services, such as virtual memory management, file I/O,
`networking, and file and print sharing.
`
`Does the fact that so much of Windows NT runs in kernel mode mean it is more susceptible to crashes than
`a true microkernel operating system? Not really. Consider the following scenario: suppose the file system
`code of an operating system has a bug that causes it to crash from time to time. In a traditional operating
`system or a modified microkernel operating system, a bug in kernel-mode code such as the memory
`manager or the file system would likely crash the entire operating system. In a pure microkernel operating
`system, such components run in user mode, so theoretically a bug would simply mean that the component’s
`process exits. But in practical terms, the failure of such a critical process would result in a system crash,
`since recovery from the failure of such a component would likely be impossible.
`
`The kernel-mode components of Windows NT also embody basic object-oriented design principles. For
`example, they don’t reach into one another’s data structures to access information maintained by individual
`components. Instead, they use formal interfaces to pass parameters and access and/or modify data
`structures.
`
`Despite its pervasive use of objects to represent shared system resources, however, Windows NT is not an
`object-oriented system in the strict sense. Most of the operating system code is written in C for portability
`and because development tools are widely available. C does not directly support object-oriented constructs,
`such as dynamic binding of data types, polymorphic functions, or class inheritance. Therefore, the C-based
`implementation of objects in Windows NT borrows from, but does not depend on, esoteric features of
`particular object-oriented languages.
`
`Architecture Overview
`
`Now that you understand the basic model of Windows NT, let’s take a look at the key system components
`that comprise its architecture. A simplified version of this architecture is shown in Figure 2-3. Keep in mind
`that this diagram is basic--it doesn’t show everything. The various components of Windows NT are covered
`in detail later in the chapter.
`
`In Figure 2-3, first notice the line dividing the user-mode and kernel-mode parts of the Windows NT
`operating system. The boxes above the line represent user-mode processes, and the components below the
`line are kernel-mode operating system services. As mentioned in Chapter 1, user-mode threads execute in a
`protected process address space (although while they are executing in kernel mode, they have access to
`system space). Thus, system processes, server processes (services), the environment subsystems, and user
`applications each have their own private process address space.
`
`-~
`
`~
`Click to view graphic (8 KB)
`
`Figure 2-3
`Simplified Windows NT architecture
`
`The four basic types of user processes are described in the following list:
`
`•
`•
`
`Special system support processes, such as the logon process and the session manager, that are not
`Windows NT services (that is, not started by the service controller).
`
`Server processes that are Windows NT services, such as the Event Log and Schedule services. Many
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1021, p. 4
`
`

`

`add-on server applications, such as Microsoft SQL Server and Microsoft Exchange Server, also
`include components that run as Windows NT services.
`
`•
`
`Environment subsystems, which expose the native operating system services to user applications,
`thus providing an operating system environment, or personality. Windows NT ships with three
`environment subsystems: Win32, POSIX, and OS/2 1.2.
`
`•
`
`User applications, which can be one of five types: Win32, Windows 3.1, MS-DOS, POSIX, or OS/2
`1.2.
`
`In Figure 2-3, notice the "Subsystem DLLs" box below the "User applications" one. Under Windows NT,
`user applications do not call the native Windows NT operating system services directly; rather, they go
`through one or more subsystem dynamic-link libraries (DLLs). The role of the subsystem DLLs is to
`translate a documented function into the appropriate undocumented Windows NT system service calls. This
`translation might or might not involve sending a message to the environment subsystem process that is
`serving the user application.
`
`The kernel mode of the operating system includes these components:
`
`•
`•
`
`The Windows NT executive contains the base operating system services, such as memory
`management, process and thread management, security, I/O, and interprocess communication.
`
`The Windows NT kernel performs low-level operating system functions, such as thread scheduling,
`interrupt and exception dispatching, and multiprocessor synchronization. It also provides a set of
`routines and basic objects that the rest of the executive uses to implement higher-level constructs.
`
`•
`•
`•
`
`The hardware abstraction layer (HAL) is a layer of code that isolates the kernel, device drivers, and
`the rest of the Windows NT executive from platform-specific hardware differences.
`
`Device drivers include both file system and hardware device drivers that translate user I/O function
`calls into specific hardware device I/O requests.
`
`The windowing and graphics system implements the graphical user interface (GUI) functions (better
`known as the Win32 USER and GDI functions), such as dealing with windows, controls, and
`drawing.
`
`Each of these components is covered in greater detail both later in this chapter and in the chapters that
`follow.
`
`Before we dig into the details of these system components, though, let’s review two key attributes of the
`Windows NT architecture--portability and multiprocessing--and also examine the differences between
`Windows NT Workstation and Windows NT Server.
`
`Portability
`
`Windows NT was designed to run on a variety of hardware architectures, including Intel-based CISC
`systems as well as RISC systems. The initial release of Windows NT supported the x86 and MIPS
`architecture. Support for the DEC Alpha AXP was added shortly thereafter. Support for a fourth processor
`architecture, the Motorola PowerPC, was added in Windows NT 3.51. Because of changing market
`demands, however, support for both the MIPS and PowerPC was dropped after the release of Windows NT
`4.0. Windows NT 5.0 will run only on x86 and Alpha machines. Eventually, Windows NT will also run on
`the Merced chip, the first implementation of the new 64-bit architecture family being jointly developed by
`Intel and Hewlett-Packard, called IA64 (for Intel Architecture 64). As Microsoft has stated publicly,
`Windows NT will be enhanced to support a true 64-bit programming interface on both IA64 and Alpha
`systems.
`
`Windows NT achieves portability across hardware architectures and platforms in two primary ways:
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1021, p. 5
`
`

`

`•
`
`Windows NT has a layered design, with low-level portions of the system that are
`processor-architecture-specific or platform-specific isolated into separate modules so that upper
`layers of the system can be shielded from the differences among hardware platforms. The two key
`components that provide operating system portability are the HAL and the kernel. Functions that are
`architecture-specific (such as thread context switching) are implemented in the kernel. Functions that
`can differ from machine to machine within the same architecture are implemented in the HAL.
`
`•
`
`The majority of Windows NT is written in a portable language--the operating system executive,
`utilities, and device drivers are written in C, and portions of the graphics subsystem and user
`interface are written in C++. Assembly language is used only for those parts of the operating system
`that must communicate directly with system hardware (such as the interrupt trap handler) or that are
`extremely performance-sensitive (such as context switching). Assembly language code exists not
`only in the kernel and the HAL but also in a few places within the executive (such as the executive
`routines that implement interlocked instructions as well as one module in the local procedure call
`facility), in the kernel-mode part of the Win32 subsystem, and even in some user-mode libraries,
`such as the process startup code in NTDLL.DLL (explained later in this chapter).
`
`Symmetric Multiprocessing
`
`Multitasking is the operating system technique for sharing a single processor among multiple threads of
`execution. When a computer has more than one processor, however, it can execute two threads
`simultaneously. Thus, whereas a multitasking operating system only appears to execute multiple threads at
`the same time, a multiprocessing operating system actually does it, executing one thread on each of its
`processors.
`
`As mentioned at the beginning of the chapter, a key Windows NT design goal from the start of the project
`was to run well on multiprocessor computer systems. Windows NT supports symmetric multiprocessing
`(SMP). There is no master processor--the operating system as well as user threads can be scheduled to run
`on any processor. Also, all the processors share just one memory space. This model contrasts with
`asymmetric multiprocessing (ASMP), in which the operating system typically selects one processor to
`execute operating system code while other processors run only user code. The differences in the two
`multiprocessing models are illustrated in Figure 2-4.
`
`--~~ ~
`
`
`Click to view graphic (15 KB)
`
`Figure 2-4
`Symmetric vs. asymmetric multiprocessing
`
`Windows NT was architecturally designed to run on up to 32 processors. The number of licensed
`processors is stored in the registry at HKLM\System\CurrentControlSet\Control\Session
`Manager\LicensedProcessors. (Tampering with that data is a violation of the software license; and besides,
`modifying Windows NT to use more processors is more complicated than just changing this value.) The
`default value depends on the edition of Windows NT, as you can see in Table 2-1.
`
`Table 2-1. Number of Licensed Processors for Various Editions of Windows NT
`
`Edition
`
`Number of Licensed Processors
`
`Windows NT Server, Enterprise Edition
`
`Windows NT Server
`
`Windows NT Workstation
`
`8
`
`4
`
`2
`
`System manufacturers that sell Windows NT Server systems that support more than eight processors must
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1021, p. 6
`
`

`

`ship their own remastered Windows NT CD-ROM with a registry set to enable a higher number of
`processors. They might also need to provide their own HAL.
`
`One of the key issues with multiprocessor systems is scalability. To run correctly on an SMP system,
`operating system code must adhere to strict guidelines and rules to ensure correct operation. Resource
`contention and other performance issues are more complicated in multiprocessing systems than in ordinary
`operating systems and must be accounted for in the system’s design. Windows NT incorporates several
`features that are crucial to its success as a multiprocessing operating system:
`
`•
`
`The ability to run operating system code on any available processor and on multiple processors at the
`same time. With the exception of its kernel component, which handles thread scheduling and
`interrupts, all operating system code can be preempted (forced to give up a processor) when a
`higher-priority thread needs attention.
`
`Multiple threads of execution within a single process, each of which can potentially execute
`simultaneously on different processors.
`
`Fine-grained synchronization within the kernel as well as within device drivers and server processes
`allow more components to run concurrently on multiple processors.
`
`•
`•
`•
`•
`
`Server processes that use multiple threads to process requests from more than one client
`simultaneously.
`
`Convenient mechanisms for sharing objects among processes and flexible interprocess
`communication capabilities, including shared memory and an optimized message-passing facility.
`
`Chapter 4 describes how threads are scheduled in a multiprocessor system.
`
`Are there two versions of Windows NT--one for uniprocessor systems and one for multiprocessor ones?
`Not really. Besides the HAL, which by its very nature is different for a uniprocessor system than for a
`multiprocessor system, of the more than 2000 files on the Windows NT CD-ROM, only one file is shipped
`in different uniprocessor and multiprocessor versions: the core operating system image that contains the
`executive and kernel, NTOSKRNL.EXE. The rest of the binary files that comprise Windows NT (including
`all utilities, libraries, and device drivers) are built to run properly on both uniprocessor and multiprocessor
`systems. For example, they handle multiprocessor synchronization issues correctly. You should use this
`approach on any software you build, whether it be a Win32 application or a device driver--build your code
`assuming it might run on a multiprocessor system so that if it does, it won’t break.
`
`The Windows NT CD-ROM includes two versions of NTOSKRNL:
`
`•
`•
`
`NTOSKRNL.EXE is the executive and kernel for uniprocessor systems.
`
`NTKRNLMP.EXE is the executive and kernel for multiprocessor systems.
`
`These two images are built from the same source files. They are built using compile-time conditional code
`so that multiprocessor-specific support is not included in the uniprocessor version of NTOSKRNL and vice
`versa. Because of this, single processor systems don’t have to pay for the overhead of multiprocessor
`synchronization at the operating system level.
`
`At installation time, the appropriate file is selected and copied to the local \winnt\system32 directory. In
`either case, however, the file is named NTOSKRNL.EXE on the local hard drive.
`
`You’ll notice that on the checked build CD-ROM (the special debug version of Windows NT, which is
`explained on page 22 in Chapter 1), both NTOSKRNL.EXE and NTKRNLMP.EXE are identical--they are
`both built for multiprocessor systems. In other words, there is no uniprocessor version of the checked build
`version of NTOSKRNL.
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1021, p. 7
`
`

`

`EXPERIMENT: Checking Which Version of NTOSKRNL You’re Running
`
`You can tell which version of NTOSKRNL you’re running by running WINMSD.EXE.
`(From the Start menu, choose Programs, and then select Administrative Tools, Windows NT
`Diagnostics.) If you click the Version tab, you’ll see something like the following:
`
`
`Click to view graphic (9 KB)
`
`As you can see, the system is running the multiprocessor free build for x86 systems. (This
`screen shot was taken from the dual processor Pentium Pro workstation that Compaq so
`graciously loaned me for this book project.)
`
`Windows NT Workstation vs. Windows NT Server
`
`Many people wonder what exactly the differences are between Windows NT Workstation, Windows NT
`Server, and Windows NT Server, Enterprise Edition. First, Windows NT Server behaves differently than
`Windows NT Workstation does--Windows NT Server is optimized to be a high-performance network
`server platform, whereas Windows NT Workstation, although it has server capabilities, is optimized for
`interactive desktop use.
`
`Second, Windows NT Server, Enterprise Edition, is a superset of Windows NT Server, which in turn is a
`superset of Windows NT Workstation. For example, the following optionally installable networking and
`server components come with Windows NT Server but are not available for Windows NT Workstation:
`
`Enterprise network management and directory services through the formation of domains (groups of
`Windows NT systems treated as a single security perimeter)
`
`Disk fault-tolerance features (striping with parity and mirroring)
`
`Services for Macintosh: file and printer sharing, user administration
`
`•
`•
`•
`•
`•
`•
`
`Gateway Service for NetWare, which permits a number of Windows NT clients to access a NetWare
`server using the Windows NT Server as a gateway
`
`TCP/IP server addressing management, such as a complete Domain Name System (DNS) and
`Dynamic Host Configuration Protocol (DHCP)
`
`Remote boot server for diskless MS-DOS, Windows 3.1, and Windows 95 PCs
`
`Windows NT Server, Enterprise Edition, contains additional components and features beyond those in
`Windows NT Server, such as Microsoft Cluster Server, Microsoft Message Queue Server, and Microsoft
`Transaction Server. (The Windows NT 4.0 Option Pack, which installs on both Windows NT Server and
`Windows NT Server, Enterprise Edition, includes the latter two components in addition to Microsoft
`Internet Information Server 4.0 and Internet Connection Services for Microsoft RAS.) Also, on x86
`systems, Windows NT Server, Enterprise Edition, can allow certain applications to have a 3-GB user
`address space (as opposed to 2 GB on the other editions). This capability is explained in further detail in
`Chapter 5.
`
`There are also licensing differences between Windows NT Workstation and Windows NT Server:
`
`•
`
`The Windows NT Workstation license permits only 10 unique IP connections in a 10-minute period
`(though the code doesn’t enforce this connection limit). Windows NT Server has no such restriction.
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1021, p. 8
`
`

`

`•
`
`Windows NT Server supports an unlimited number of clients (assuming that you have licenses for all
`of them) accessing the built-in file and print-sharing services, whereas Windows NT Workstation
`permits only up to 10 simultaneous inbound connections to shared files or printers.
`
`•
`
`Windows NT Server, Enterprise Edition, supports eight processors, Windows NT Server four, and
`Windows NT Workstation only two.
`
`Although Windows NT Server and Windows NT Server, Enterprise Edition, contain significant added
`functionality over Windows NT Workstation, the majority of the files in all three products are identical,
`including such core components as the executive, kernel, device drivers, utilities, and libraries. However, a
`number of these components operate differently depending on which edition is running.
`
`How does Windows NT know which product is running? At boot time, the registry is queried and the result
`is stored in the system global variable MmProductType. One element of this information is in the registry
`key HKLM\System\CurrentControlSet\Control\ProductOptions. Changing this information is a violation of
`the software license. Table 2-2 shows the values for this key as they correspond to the different editions of
`Windows NT.
`
`Table 2-2. Product Type Registry Values
`
`Edition of Windows NT
`
`Windows NT Workstation
`
`Windows NT Server (domain controller)
`
`Windows NT Server (server only)
`
`Value of Product Options*
`
`WinNT
`
`LanmanNT
`
`ServerNT
`
`* A different key, ProductSuite, distinguishes Windows NT Server, Enterprise Edition.
`
`If user programs need to determine which Windows NT product is running, they can query for this
`information. (For sample code to do this, see the article Q124305 "Which Windows NT (Server or
`Workstation) Is Running?" in the MSDN Knowledge Base.) Device drivers running in kernel mode can call
`the internal executive routine used by Windows NT itself, MmIsThisAnNtasSystem, documented in the
`Windows NT Device Driver Kit (DDK).
`
`Based on the product type, several resource allocation decisions are made differently at system boot time,
`such as the size and number of operating system heaps (or pools), the number of internal system worker
`threads, and the size of the system data cache. Also, run-time policy decisions, such as the way the memory
`manager trades off system and process memory demands, differ between Windows NT Server and
`Windows NT Workstation. Even some thread-scheduling details are handled differently in the two editions.
`Where there are significant operational differences in the two products, these are highlighted in the
`pertinent chapters throughout the rest of the book. Thus, unless otherwise noted, everything in this book
`applies to both Windows NT Server and Windows NT Workstation.
`
`Windows NT vs. Windows 95 and Windows 98
`
`Windows NT and Windows 95 (and its follow-on release, Windows 98) are part of the
`"Windows family of operating systems," sharing a common subset API (Win32 and COM),
`device driver model (WDM), and in some cases shared operating system code. Although
`Windows NT 4.0 doesn’t have some of the features that Windows 95 has today, Microsoft
`has always made it clear that Windows NT was to be the strategic operating system platform
`for the future--not just for servers and business desktops but eventually for consumers as well.
`Following are some of the architectural differences and advantages that Windows NT has
`over Windows 95. (These comparisons also apply to Windows 98.)
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1021, p. 9
`
`

`

`Windows NT supports multiprocessor systems--Windows 95 doesn’t.
`
`Windows NT runs on a variety of machine architectures--Windows 95 is limited to x86
`systems.
`
`•
`•
`•
`•
`
`Windows 95 doesn’t have a file system that supports security (such as discretionary
`access control).
`
`Windows NT is a fully 32-bit operating system--it contains no 16-bit code. Windows
`95 contains a large amount of old 16-bit code from its predecessors, Windows 3.1 and
`MS-DOS.
`
`•
`
`Windows NT is fully reentrant--significant parts of Windows 95 are nonreentrant
`(mainly the older 16-bit code taken from Windows 3.1). This nonreentrant code
`includes the majority of the graphics and window management functions (USER and
`GDI). When a 32-bit application on Windows 95 attempts to call a system service
`implemented in nonreentrant 16-bit code, it must first obtain a systemwide lock (or
`mutex) to block other threads from entering the nonreentrant code base. And even
`worse, a 16-bit application holds this lock while running. Thus, although the core of
`Windows 95 contains a preemptive 32-bit multithreaded scheduler, because so much
`of the system is still implemented in nonreentrant code, applications many times run
`single threaded.
`
`•
`
`Windows NT provides an option to run 16-bit Windows applications in their own
`address space--Windows 95 always runs 16-bit Windows applications in a shared
`address space, in which they can corrupt (and hang) each other.
`
`•
`
`Shared memory on Windows NT is visible only to the processes that have the same
`shared memory section (called file mapping objects in the Win32 API) open. On
`Windows 95, all shared memory is visible and writable from all processes. Thus, any
`process can write to any file mapping object.
`
`•
`
`Windows 95 has some critical operating system pages that are writable from user
`mode, thus allowing a user application to crash the system.
`
`What does Windows 95 have that Windows NT 4.0 doesn’t? Full Plug and Play, power
`management, infrared support, and support for the FAT32 file system. However, all of these
`features will be a part of Windows NT 5.0, making it the first release of Windows NT to be a
`true superset of the Windows platform.
`
`The one thing both Windows 95 and Windows 98 can do that Windows NT will never do is
`run all older MS-DOS and Windows 3.1 applications (notably ones t

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket