Introduction
The ReactOS architecture is based on that of Microsoft Windows 2003
Server. The ReactOS architecture, like NT, is monolithic but able to
load modules. At the lowest layer is the Executive. The executive
includes everything that runs in kernel mode. Above the executive are
the Protected Subsystems. These subsystems provide implementations of
different Operating System personalities.
The Executive
The Executive is all the code that runs in kernel mode. The executive
can roughly be broken up into the following components: Hardware
Abstraction Layer (HAL), Device Drivers, The Kernel, System Services
(including the Win32k subsystem) These components all run in kernel
mode. The HAL, Kernel, System Services and Device Drivers are
collectively referred to as the Executive.
Hardware Abstraction Layer
The HAL makes it possible for the x86 ReactOS kernel and HAL to run on
different x86 motherboards. The HAL abstracts motherboard specific code
from the kernel, so that different motherboards do not require changes
in the kernel. Examples for different hardware designs are the standard
PC, the Japanese NEC PC98 or x86 SGI workstations.
Device Drivers
Device drivers are hardware specific extensions to the ReactOS
Executive. They allow the Operating System to interact with certain
devices and visa versa. ReactOS currently aims to implement the NT
driver mode, of which the Windows Driver Model (WDM) is a subset of.
WDM is a set of rules for writing portable Windows drivers. The Windows
Driver Foundation (WDF) introduced in Windows Vista is also a
consideration for future development.
Communication
Device drivers use packets to communicate with the kernel and with
other drivers. Packets are sent via the I/O Manager (System Service)
and make use of IRPs (I/O Request Packets).
Kernel
The kernel design is based on that of Microsoft Windows 2003 Server. It
implements kernel mode Asynchronous Procedure Calls (APCs), Deferred
Procedure Calls (DPCs), processes, threading, mutexes, semaphores,
spinlocks, timing code, and more.
System Services
System services include: IO Manager, Configuration Manager, Plug and
Play, Power Manager, Memory Manager, Executive Support, Object Manager,
security reference monitor, process structure, local procedure call,
Win32 Subsystem.
Protected Subsystems
The Protected Subsystems allow different Operating System personalities
to run on top of the ReactOS Executive. The initial target for ReactOS
was the Win32k subsystem -- however, the Win32k subsystem runs in
kernel mode as part of the Executive and is not featured here. For
other graphical subsystems, there exists an Interface for Subsystems
via the Win32k Subsystem. The Windows NT graphics device drivers are
tightly integrated in design with the Win32k subsystem. Due to this it
is impractical for a user mode subsystem to interact directly with the
graphics drivers. For this reason, a subsystem should make use of the
kernel mode Win32k subsystem for a graphics interface. Such a subsystem
need not depend on the Win32k Window Manager, but can instead just use
the graphics primitives provided by the Win32k subsystem.
Native API Architecture
The Native API Architecture calls for user mode code to call kernel
mode services in a standard manner. It is the equivalent to the System
Call Interface used by most UNIXes. Microsoft Windows NT/2000/XP does
not document the Native API Architecture for programmers, they must use
the Win32 APIs instead. Since ReactOS is Open Source, our Native API
Architecture is open to the application programmer. The Native API
Architecture is implemented in NTDLL.dll. Aside from containing Native
API user mode entry points, NTDLL.dll also contains process startup and
module loading code. These entry points call KiSystemService in kernel
mode, which looks up the kernel mode service in a system table -
KiSystemServiceTable.
Compatibility Targets
The original target for ReactOS, with regards to driver and
application compatibility, was Microsoft Windows NT 4.0. Since then,
Microsoft Windows 2000, XP, 2003 Server, and Vista have been released.
All these are descendants of Windows NT. As such we can gradually shift
our compatibility target without worrying about the architecture
changing too much. In fact, internally, Windows 2000 reports version
information as Windows 5.0, XP as Windows 5.1, 2003 Server as Windows
5.2, and Vista as Windows 6.0. The ReactOS team currently targets
Windows 2003 Server as the official compatibility target. Of the
current releases, 2003 Server has proven one of the most robust. This
does not mean that features present in later versions of Windows NT
based operating systems will not be implemented in ReactOS and work is
continually done to implement newer APIs.