Windows 2000 的系统架构
kenli 2003-02-19 01:47:39 要想写nt, 2000的驱动,首先要对2000的架构有所了解,否则都是舍本逐末, 沙上建塔(成语用的不大对 :P ).
2000的总体架构可以粗略分为2个部分,User Mode和Kernel Mode,如下图:
---------------------
| subsystem |
---------------------
|
---------------------
| ntdll.dll |
---------------------
UserMode
===============================================================
KernelMode
--------------------
| 执行体(executive)|
-------------------- ------------
|内核 | 驱动程序 | | 图形引擎 |
-------------------- ------------
| HAL 硬件抽象层 |
--------------------
subsystem 是子系统, windows2k 实现win32/posix/os2 3个子系统. 我们用到的最多的是win32子系统,其它的两个几乎用不到. posix是微软为了符合美国国家标准实现的. os2是历史遗留产物. win32子系统是最重要的必须的子系统, 其它的两个子系统都需要依靠它.
executive包括基本的操作系统服务,有: 存储管理, process & thread管理, 安全, I/O Manager和进程间通讯(LPC)
kernel(内核)包括了调度(dispatch) 中断(interrupt), 异常(exception)和多处理器同步.
device driver(设备驱动)就是我们可以插入自己驱动(或者可以说内核模块)的地方了.
HAL Hardware Abstract Layer(硬件抽象层)是将内核,驱动程序和其它win2k执行程序与特定硬件差别隔离的层. 微软为不同的硬件体系做了不同的实现,安装的时候由安装程序检测硬件类型, 并装入适当的hal实现.
图形引擎是nt4开始移到内核态的部分, 不在我们讨论范围之列.