Windows 2000 Architecture
In this article, Windows 2000 architecture is explained from a high-level, block diagram approach. You get an overview of Windows 2000 architecture without oversimplification.
The Windows 2000 operating system architecture is a hybrid architecture that is comprised of client/server, layered, object-oriented, and symmetric multiprocessing architecture principles. Although it uses objects to represent shared system resources, Windows 2000 is not strictly an object-oriented operating system. The bulk of the code is written in C for both tool availability and portability, and C does not directly support object-oriented constructs. Windows 2000 borrows from the features of object-oriented languages. Its features include 32-bit addressing, virtual memory support, system security and enhanced system integrity, platform independence, and built-in modular networking. Figure 1, taken from the Microsoft white paper Windows 2000 Reliability and Availability Improvements, illustrates the Windows 2000 Server architecture.
Windows 2000 reliability and availability improvements.
A complete explanation of Windows 2000 architecture is beyond the scope of this article; in fact, entire books on this subject have already been written. (If you require an in-depth explanation, see "Related Publications" at the end of this article for a suggested reading list.) This article attempts to explain Windows 2000 architecture from a high-level block diagram approach and will try to give an overview of Windows 2000 architecture without over-simplifying it.
The operating system is built upon a layered approach, similar to the UNIX operating system. One advantage of the layered operating structure is that each layer of code is given access only to the layer below it (interfaces and data structures). This structure also allows the operating system to be debugged, starting at the lowest layer and adding one layer at a time until the whole system works correctly. Layering also makes it easier to enhance the operating system; one entire layer can be replaced without affecting other parts of the operating system.
Windows 2000 is a portable operating system because of two design decisions. First, the operating system was written in ANSI C, a language that enables programs to be ported easily to other hardware architectures. Second, all parts of Windows 2000 that must be written for a specific hardware are isolated in an area called the Hardware Abstraction Layer (HAL). To move Windows 2000 to a new hardware platform, developers need to do little more than recompile the C code for the new hardware and create a new HAL. Designing an OS around a HAL means that a large portion of the code is exactly the same between hardware platforms. This also means that only the small slice of code that interfaces with the computer's hardware needs to be rewritten as Windows 2000 is ported between different processor architectures. Thus, it provides a high level of portability.
The two modes that Windows 2000 operates in—kernel mode and user mode—are discussed in the following sections.
In this mode, the software is able to access the hardware and system data, as well as access all other system resources. The kernel mode has the following components:
Executive. Contains components that implement memory management, process and thread management, security, I/O, interprocess communication, and other base operating system services. For the most part, these components interact with one another in a modular, layered fashion.
Microkernel. The Microkernel's primary functions are to provide multiprocessor synchronization, thread and interrupt scheduling and dispatching, and trap handling and exception dispatching. During system startup, it extracts information from the Registry, such as which device drivers to load and in what order.
Hardware Abstraction Layer (HAL). The HAL is the code associated with Windows 2000 that changes with the hardware the operating system is being run on. Thus, it becomes compatible with multiple processor platforms. The HAL manipulates the hardware directly.
Device drivers. Device drivers send and receive load parameters and configuration data from the Registry.
Windowing and graphics system. This system implements the graphical user interface (GUI).