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开始移到内核态的部分, 不在我们讨论范围之列.
...全文
121 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kenli 2003-02-20
  • 打赏
  • 举报
回复
Intel的CPU定义了4个执行代码的权限,以防止低级别权限的代码无意或者恶意访问修改高级别数据和代码,ring0-3。Windows2000只实现了两个级别的代码执行权限,用户态和内核态,分别对应ring0和ring3。用户模式的代码在用户态下执行,核心态代码在核心态执行,这样就防止了串改,提高系统的稳定性。
user32.dll, kernel32.dll都是用户态代码,是win32子系统的一部分。只是win32api的实现。
marcal 2003-02-20
  • 打赏
  • 举报
回复
USER32.dll在用户态???那么GDI32.dll一定也是在用户态了?
  用户态和核心态是怎么样分的?

  现在我只知道kernel32.dll是在核心态的。同时所有的进程和线程都必须在核心kernel32.dll里面注册,每一个窗体都必须在user32.dll中建立消息模块,在shell32.dll里面注册窗体。难道这些都不是核心态?
lornwolf 2003-02-19
  • 打赏
  • 举报
回复
硬件抽象层屏蔽下层硬件的差别,向上提供一个通用接口。
ntdll.dll可以理解为环境子系统调用系统服务功能的通道。
执行体(executive)和图形引擎当然不是USER32.dll,USER32.dll在用户态,是Win32子系统的一部分,执行体(executive)和图形引擎都在核心态。
marcal 2003-02-19
  • 打赏
  • 举报
回复
驱动程序不是直接操作系统硬件的吗?Hardware Abstract Layer(硬件抽象层)这一层能讲的详细一点吗?
  ntdll.dll 是什么?只是泛指dynamice linking library??? 
  执行体(executive)和图形引擎是USER32.dll做的吗?
LoveBeyond 2003-02-19
  • 打赏
  • 举报
回复
买本“Windows操作系统原理”看看~~~
sunwhite 2003-02-19
  • 打赏
  • 举报
回复
写的好,值得一观

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧