一、背景介绍
1.1 Windows NT操作系统的组成
1.1.1 用户模式(User Mode)与内核模式(Kernel Mode)
从Intel 80386开始,出于安全性和稳定性的考虑,该系列的CPU可以运行于ring0
~ring3从高到低四个不同的权限级,对数据也提供相应的四个保护级别。运行于较
低级别的代码不能随意调用高级别的代码和访问较高级别的数据,而且也只有ring0
层的代码可以直接进行对物理硬件的访问。由于Windows NT是一个支持多平台的操作
系统,为了与其他平台兼容,它只利用了CPU的两个运行级别。一个被称为内核模式,
对应80x86的ring0层,操作系统的核心部分,包括设备驱动程序都运行在该模式;另
一个被称为用户模式,对应80x86的ring3层,操作系统的用户接口部分以及所有的用
户应用程序都运行在该级别。
1.1.2 Windows NT操作系统的结构
图1简要地描述了Windows NT的系统组成。
图一
从图中可以看到,在物理硬件(Hardware)与系统核心(Kernel)之间有一个硬件抽象
层(Hardware Abstraction Layer),它屏蔽了不同平台硬件的差异,向操作系统的
上层提供了一套统一的接口。从图中我们还可以看到,设备驱动程序(Device Driver)
是被I/O管理器(I/O Manager)包围起来的,即驱动程序与操作系统上层的通信全部都
要通过I/O管理器。这给驱动程序的编写带来了很大的便利,因为很多诸如接收用户的请
求 、与用户程序交换数据、内存映射、挂接中断、同步等等麻烦的工作都由I/O管理器代
劳了。
1.1.3 Windows NT设备驱动程序的分类
根据是否直接操作硬件,可以把驱动程序分成两大类:内核模式的驱动程序和专用驱
动程序。
内核模式的驱动程序根据硬件的通信协议,直接对硬件进行端口访问、中断响应、DM
A传输。它包括:串、并行口,键盘,文件系统,SCSI,网络等驱动程序;专用驱动程序
包括视频,打印,多媒体,虚拟DOS等驱动程序,他们在实现上与前者有很大区别。我在
实习期间所做的工作以及本文以下的讨论都局限于内核模式的驱动程序。
--