内容列表
1 介绍
2 执行层
2.1 硬件抽象层
2.2 设备驱动
2.3 内核
2.4 系统服务
3 保护子系统
4 本地API架构
5 兼容性目标
1 介绍
reactOS的架构基于Microsoft Windows NT
4.0。虽然Microsoft宣称其架构为改进的微内核(综合了微内核和分层操作系统各方面的优点),但reactOS对该架构有着不同的定义。NT架
构,以及由此而来的reactOS架构,是模块化和分层的架构。不能因为仅有的一点微内核架构的踪影就称其为改进的微内核架构。
在最底层是执行层,执行层包括在内核态运行的所有代码。执行层之上是保护子系统。该子系统提供不同操作系统的特点的实现。
2 执行层
执行层所有代码都运行在内核态。执行层可以大略的分成下面几个组件。
硬件抽象层(HAL)
设备驱动
内核
系统服务(包含win32子系统)
这些组件均运行在内核态。HAL、内核、系统服务和设备驱动的集合称为执行层。
2.1 硬件抽象层
HAL使得reactOS x86内核和HAL可以运行在不同的x86母板上。HAL为内核抽象母板的特定代码,这样不同的母板就不需要改变内核。例如标准PC、日本的NEC PC98、以及x86 SGI工作站等不同的硬件设计。
2.2 设备驱动
设备驱动是reactOS执行层的硬件特定扩展。他允许操作系统与设备交互。
reactOS当前目标是实现Windows NT 4.0的设备驱动模块。Windows驱动模块(WDM)也将实现。WDM是编写便携式的Windows驱动的规则的集合。
通信:
设备驱动通过packets与内核和其他驱动通信。packetsIRP 利用IRP(IO Request Packets)通过IO Manager(系统服务)发送。
2.3 内核
内核的设计是基于 Microsoft Windows NT 4.0的。实现了内核态异步过程调用、延迟过程调用、进程、线程、互斥、信号量、转锁、时序代码等。
2.4 系统服务
系统服务包括:
IO管理器
配置管理器
即插即用
电源管理
内存管理
执行层支持
对象管理器
安全参考监视器、进程结构、本地过程调用
win32子系统
3 保护子系统
保护子系统允许不同操作系统的特点在reactOS的执行层上运行。最初的目标是win32子系统。然而win32子系统作为执行层的一部分运行在内核态,所以在此就不作为特性列出。
已实现的用户态子系统:
POSIX
OS/2
未来可能的保护子系统:
DOS(可能是FreeDOS的一部分)
更多
win32子系统中为其他子系统提供服务的图形接口:
Windows NT的图形设备驱动设计时紧密地集成在win32子系统中。因此在其他子系统中直接与图形驱动交互是不可能的。所以某个子系统应当为了图形接口而使用win32子系统。
4 本地API架构
本地API架构允许用户态代码用标准方式调用内核态服务。它和大多数UNIX使用的系统调用接口是等价的。 Microsoft Windows NT/2000/XP并未对程序员提供本地API架构文档,使得他们必须使用win32 API来代替。因为reactOS是开源的,所以我们的本地API架构对应用程序开发者是开放的。
本地API架构在NTDLL.DLL中实现。另外NTDLL.DLL包含本地API用户态进入点,还包括进程启动和模块载入代码。这些进入点在系统表KiSystemServiceTable中查找内核态服务并在内核态调用KiSystemService。
5 兼容性目标
ReactOS驱动和应用程序兼容性的最初目标是Microsoft Windows NT 4.0。后来Microsoft Windows 2000和Windows XP发布了。Microsoft Windows 2000和Windows XP都是Windows NT的后续版本。这样我们就可以逐步改变我们的兼容性目标而不用过于担心架构的改变。事实上,从本质上讲,Microsoft Windows 2000的版本是Windows NT 5.0而Windows XP是Windows NT 5.1.
ReactOS小组决定保持Windows NT 4.0作为官方的兼容性目标。这是因为大部分的资源、文章、和Windows NT/2000/XP技术书籍均是为Windows NT 4.0而写。但这并不意味着在今后版本的特性描述中以Windows NT为基础的操作系统不会在reactOS中实现。