最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

驱动的作用

IT圈 admin 41浏览 0评论

2024年5月18日发(作者:宁智美)

驱动的工作原理

一.DOS 时期 在窗口概念还没出现的时代,驱动出现就已经诞生。早期的BIOS通过常用的

软件中断开放驱动程序的服务,如磁盘管理和键盘等。最初的DOS操作系统允许用户通过

配置文件将新的驱动程序加载进操作系统内核。那个时代的用户一定深有体会,

为了能让《仙剑奇侠传》有音乐效果,我们都曾不厌其烦地摆弄过DOS恼人的声卡驱动程

序。由于这样的驱动安装方法过于繁琐,因此程序员便将相关的驱动程序直接嵌入到应用程

序中,开发出软硬结合的程序。

二.Windows 3.x 时期 早期的Windows仍然是运行在实模式状态下,充其量不过是增强版本

的MS-DOS Shell而已,因此DOS和BIOS的驱动仍然最为重要。Inter 80286处理器的出现,

使Windows能在保护模式中运行管理16MB内存空间,依靠在保护模式和实模式之间的切

换来完成系统需求,我们把这种运行模式称之为Windows标准模式。 Inter 80386处理器的

问世使Windows进化到增强模式,这是虚拟设备的概念逐渐形成。对应用程序而言虚拟机

就像独立的个人电脑,拥有自己的键盘、鼠标、显示器等硬件。实际上经过所谓的虚拟化,

数个虚拟机还是共享相同的硬件。

三.Windows 95 时期 Windows95终结了DOS实模式的历史,是真正独立的32位操作系统。

Win95使用数种不同的驱动驱动程序模型。在操作系统中,程序必须通过系统内核上的驱动

来控制硬件,而这些驱动必须完全符合操作系统对驱动加载、连接、读写的规定,并且使用

相关系统API(Application Programming Interface)函数来控制。Windows 95的驱动程序类

型以VXD为中心VXD又称虚拟设备驱动。它不仅适用于硬件设备,还能虚拟出不存在的"

软件设备",如虚拟光驱。 所有运行Windows的程序都分为两个保护级:Ring0和Ring3。

系统进程运行于Ring0级,这个保护级的程序拥有完全的系统控制权限,可对所有的系统资

源进行访问与管理;普通应用程序运行与Ring3级,不允许对系统资源进行直接访问且很多

操作系统也受到限制,如果程序强行访问的话,Windows就会给出出错提示并强制结束——

我们会经常看到某些程序运行中出现"常规保护错误"等错误提示,也就是这个原因。 所有

的Ring3级程序在Windows下都受到80×86保护模式的严格"监视",使应用程序无法进行

高级的操作,不过,VXD能使应用程序具有扩展操作系统的能力,开发人员通过让运行于

Ring3级的普通程序加载具有Ring0级的VXD,从而实现底层控制。不幸的是,著名的"CIH"

病毒就是利用了VXD技术才可以破坏主板BIOS。

四.Windows NT 时期 Windows NT操作系统存在3种类型的驱动程序:1.虚拟设备驱动

(Virtual device Driver),能让Win 16应用程序可以访问特定的I/O端口。驱动,提供

显示和打印所需的GDI函数。3.内核模式驱动(Kernel Mode Driver),也是Windows NT中

唯一可对硬件中断和DMA进行操作的驱动。Windows NT的保护模式比Windows 95更加完

善,它限制了普通应用程序的I/O操作且几乎不可能进入到Ring0层。虽然众多"保护"让程

序开发者们头疼不已,但这些措施却使系统的稳定性提升到前所未有的高度。

五.Windows 98/2000 时期 微软在1996年推出了全新的设备驱动类型——WDM(Windows

Driver Model),取代了VXD成为Windows操作系统的核心。WDM由Windows NT的内核

模式驱动发展而来增加了电源管理和即插即用的支持。 虽然Windows 98仍然支持VXD(已

开始使用WDM),但微软极力推广WDM驱动方式并在Windows 2000系统中放弃了对VXD

的支持。在微软随后的操作系统中,WDM模型被不断完善,已经成为驱动程序的主流。

六.Windows XP/Server2003 Windows XP和Windows Server2003仍然沿用了WDM模型,不

过不同操作系统的WDM内容并不相同。一般来说,新版本的WDM向下兼容。另外,微

软宣称Windows Longhorn操作系统要推迟到2006年发布,但从预览版的情况和最新发布的

Windows Longhorn设备驱动开发包(LDK)中,可预测Longhorn仍将使用WDM模型。看

来,微软是要将WDM进行到底了。 通过上面的介绍,我们了解到驱动程序的重要性,但

其工作原理却鲜为人知。驱动程序如何识别硬件?它是怎么被安装到系统中?即插即用和驱

动程序有什么关系?我们以目前最主流的驱动模型——WDM模型为例来为大家揭开驱动

世界的神秘面纱。

七.WDM 模型 WDM模型采用分层结构,首先是由核心模型来描述设备驱动程序的标准结

构;其次微软为常见类型的设备提供一系列的总线驱动程序和类型驱动程序。核心模型描述

驱动程序如何安装和启动,类驱动则具有为许多标准类型设备所需的基本功能。标准的

WDM驱动应该包含1个总线驱动和1个功能驱动。 总线驱动:总线驱动已经包含在

Windows中,不必另行安装。总线包括PCI、AGP、并口、串口、IEEE 1394接口等。总线

驱动主要负责管理总线设备,例如当我们在PCI插槽上插入新硬件,开启电脑并进入系统

后总线驱动开始工作——报告发现新硬件,并提示用户安装驱动程序。不仅如此,总线驱动

还会实时向操作系统报告总线设备状态,检测总线上有什么类型的设备,这就是家喻户晓的

"即插即用"。总线设备还负责设备的电源管理(ACPI),比如Windows的休眠功能。当我们

通过控制面板选择不同电源管理模式时,电源管理器就会通过系统发出的电源命令向总线驱

动发出改变电源状态的请求,总线驱动会响应这些请求并设置相应设备的电源状态。 功能

驱动:这就是常说的驱动程序,由类驱动程序和Mini驱动程序组成。其中,类驱动用来处

理常规系统事务,如电源管理和即插即用,这都是由微软定义好的,程序开发者只需要编写

Mini驱动即可。功能驱动一般由设备生产厂商提供,用以实现硬件设备的具体功能。例如

NVIDIA系列显卡只有在"雷管"驱动的支持下才能使用抗锯齿和各项异性过虑。 过虑驱动:

过虑驱动程序位于其他的驱动程序层之间,提供一些附加功能但不影响其他驱动程序,例如

不少品牌电脑宣传的一键上网功能是通过键盘过虑驱动和应用程序来实现的。

八.WDM 驱动工作流程

1.创建设备 设备创建一般在设备管理器发现新设备时进行:设备管理器通过读取驱动程序

inf文件来创建新设备,将这个设备注册为特定的设备接口并建立符号链接,这样使操作系

统能正确识别这个硬件。在驱动程序安装过程中,设备管理器还会根据inf文件将驱动程序

拷贝到系统目录,并通过写入相关注册表信息建立服务,使这个驱动程序能够在系统启动时

被自动加载。

2.硬件资源分配 驱动程序需要知道为它们分配了那些硬件资源。常见的硬件资源有I/O端

口、存储器地址、中断和DMA。我们可通过设备管理器中的"资源"选项来查看某个设备的

资源分配情况,这些工作都是由系统自动完成的。当然,如果这个设备的资源与其他设备的

资源相冲突将不能正常工作,这时候必须通过设备管理器来手动配置资源。

3.串行化处理 在多处理器系统中,处理程序可同时在两个不同的处理器上运行,但如果它

们都试图访问同一硬件时,则会出现不可预料的结果。WDM驱动重要的功能之一就是提供

一个机制,保证驱动程序的不同部分不会同时访问相同的硬件,避免设备发生冲突。

4.访问硬件 驱动程序在取得了I/O端口和内存地址后就可以直接访问硬件,但由于Windows

是多任务操作系统,在一般情况下占用处理器的时间应小于50微秒,如果需要长时间的硬

件访问应采用系统线程的方法。

5.即插即用支持 即插即用(PnP)是系统自动识别和适应硬件配置改变的技术。即插即用不

仅需要硬件支持同时还需要软件支持。驱动程序是对即插即用支持很重要的部分,用户可随

时为计算机添加和删除设备而无需进行手工配置。微软作为PnP规范的制定者已经定义了

相关设备和组件的工业标准,通过这些标准我们可以了解操作系统和驱动程序如何支持即插

即用。操作系统和驱动程序对即插即用的支持主要提供的功能有自动识别已安装的设备;硬

件资源的动态分配;自动加载正确的驱动程序;在硬件环境发生变化时,向驱动程序发出通

知。

2024年5月18日发(作者:宁智美)

驱动的工作原理

一.DOS 时期 在窗口概念还没出现的时代,驱动出现就已经诞生。早期的BIOS通过常用的

软件中断开放驱动程序的服务,如磁盘管理和键盘等。最初的DOS操作系统允许用户通过

配置文件将新的驱动程序加载进操作系统内核。那个时代的用户一定深有体会,

为了能让《仙剑奇侠传》有音乐效果,我们都曾不厌其烦地摆弄过DOS恼人的声卡驱动程

序。由于这样的驱动安装方法过于繁琐,因此程序员便将相关的驱动程序直接嵌入到应用程

序中,开发出软硬结合的程序。

二.Windows 3.x 时期 早期的Windows仍然是运行在实模式状态下,充其量不过是增强版本

的MS-DOS Shell而已,因此DOS和BIOS的驱动仍然最为重要。Inter 80286处理器的出现,

使Windows能在保护模式中运行管理16MB内存空间,依靠在保护模式和实模式之间的切

换来完成系统需求,我们把这种运行模式称之为Windows标准模式。 Inter 80386处理器的

问世使Windows进化到增强模式,这是虚拟设备的概念逐渐形成。对应用程序而言虚拟机

就像独立的个人电脑,拥有自己的键盘、鼠标、显示器等硬件。实际上经过所谓的虚拟化,

数个虚拟机还是共享相同的硬件。

三.Windows 95 时期 Windows95终结了DOS实模式的历史,是真正独立的32位操作系统。

Win95使用数种不同的驱动驱动程序模型。在操作系统中,程序必须通过系统内核上的驱动

来控制硬件,而这些驱动必须完全符合操作系统对驱动加载、连接、读写的规定,并且使用

相关系统API(Application Programming Interface)函数来控制。Windows 95的驱动程序类

型以VXD为中心VXD又称虚拟设备驱动。它不仅适用于硬件设备,还能虚拟出不存在的"

软件设备",如虚拟光驱。 所有运行Windows的程序都分为两个保护级:Ring0和Ring3。

系统进程运行于Ring0级,这个保护级的程序拥有完全的系统控制权限,可对所有的系统资

源进行访问与管理;普通应用程序运行与Ring3级,不允许对系统资源进行直接访问且很多

操作系统也受到限制,如果程序强行访问的话,Windows就会给出出错提示并强制结束——

我们会经常看到某些程序运行中出现"常规保护错误"等错误提示,也就是这个原因。 所有

的Ring3级程序在Windows下都受到80×86保护模式的严格"监视",使应用程序无法进行

高级的操作,不过,VXD能使应用程序具有扩展操作系统的能力,开发人员通过让运行于

Ring3级的普通程序加载具有Ring0级的VXD,从而实现底层控制。不幸的是,著名的"CIH"

病毒就是利用了VXD技术才可以破坏主板BIOS。

四.Windows NT 时期 Windows NT操作系统存在3种类型的驱动程序:1.虚拟设备驱动

(Virtual device Driver),能让Win 16应用程序可以访问特定的I/O端口。驱动,提供

显示和打印所需的GDI函数。3.内核模式驱动(Kernel Mode Driver),也是Windows NT中

唯一可对硬件中断和DMA进行操作的驱动。Windows NT的保护模式比Windows 95更加完

善,它限制了普通应用程序的I/O操作且几乎不可能进入到Ring0层。虽然众多"保护"让程

序开发者们头疼不已,但这些措施却使系统的稳定性提升到前所未有的高度。

五.Windows 98/2000 时期 微软在1996年推出了全新的设备驱动类型——WDM(Windows

Driver Model),取代了VXD成为Windows操作系统的核心。WDM由Windows NT的内核

模式驱动发展而来增加了电源管理和即插即用的支持。 虽然Windows 98仍然支持VXD(已

开始使用WDM),但微软极力推广WDM驱动方式并在Windows 2000系统中放弃了对VXD

的支持。在微软随后的操作系统中,WDM模型被不断完善,已经成为驱动程序的主流。

六.Windows XP/Server2003 Windows XP和Windows Server2003仍然沿用了WDM模型,不

过不同操作系统的WDM内容并不相同。一般来说,新版本的WDM向下兼容。另外,微

软宣称Windows Longhorn操作系统要推迟到2006年发布,但从预览版的情况和最新发布的

Windows Longhorn设备驱动开发包(LDK)中,可预测Longhorn仍将使用WDM模型。看

来,微软是要将WDM进行到底了。 通过上面的介绍,我们了解到驱动程序的重要性,但

其工作原理却鲜为人知。驱动程序如何识别硬件?它是怎么被安装到系统中?即插即用和驱

动程序有什么关系?我们以目前最主流的驱动模型——WDM模型为例来为大家揭开驱动

世界的神秘面纱。

七.WDM 模型 WDM模型采用分层结构,首先是由核心模型来描述设备驱动程序的标准结

构;其次微软为常见类型的设备提供一系列的总线驱动程序和类型驱动程序。核心模型描述

驱动程序如何安装和启动,类驱动则具有为许多标准类型设备所需的基本功能。标准的

WDM驱动应该包含1个总线驱动和1个功能驱动。 总线驱动:总线驱动已经包含在

Windows中,不必另行安装。总线包括PCI、AGP、并口、串口、IEEE 1394接口等。总线

驱动主要负责管理总线设备,例如当我们在PCI插槽上插入新硬件,开启电脑并进入系统

后总线驱动开始工作——报告发现新硬件,并提示用户安装驱动程序。不仅如此,总线驱动

还会实时向操作系统报告总线设备状态,检测总线上有什么类型的设备,这就是家喻户晓的

"即插即用"。总线设备还负责设备的电源管理(ACPI),比如Windows的休眠功能。当我们

通过控制面板选择不同电源管理模式时,电源管理器就会通过系统发出的电源命令向总线驱

动发出改变电源状态的请求,总线驱动会响应这些请求并设置相应设备的电源状态。 功能

驱动:这就是常说的驱动程序,由类驱动程序和Mini驱动程序组成。其中,类驱动用来处

理常规系统事务,如电源管理和即插即用,这都是由微软定义好的,程序开发者只需要编写

Mini驱动即可。功能驱动一般由设备生产厂商提供,用以实现硬件设备的具体功能。例如

NVIDIA系列显卡只有在"雷管"驱动的支持下才能使用抗锯齿和各项异性过虑。 过虑驱动:

过虑驱动程序位于其他的驱动程序层之间,提供一些附加功能但不影响其他驱动程序,例如

不少品牌电脑宣传的一键上网功能是通过键盘过虑驱动和应用程序来实现的。

八.WDM 驱动工作流程

1.创建设备 设备创建一般在设备管理器发现新设备时进行:设备管理器通过读取驱动程序

inf文件来创建新设备,将这个设备注册为特定的设备接口并建立符号链接,这样使操作系

统能正确识别这个硬件。在驱动程序安装过程中,设备管理器还会根据inf文件将驱动程序

拷贝到系统目录,并通过写入相关注册表信息建立服务,使这个驱动程序能够在系统启动时

被自动加载。

2.硬件资源分配 驱动程序需要知道为它们分配了那些硬件资源。常见的硬件资源有I/O端

口、存储器地址、中断和DMA。我们可通过设备管理器中的"资源"选项来查看某个设备的

资源分配情况,这些工作都是由系统自动完成的。当然,如果这个设备的资源与其他设备的

资源相冲突将不能正常工作,这时候必须通过设备管理器来手动配置资源。

3.串行化处理 在多处理器系统中,处理程序可同时在两个不同的处理器上运行,但如果它

们都试图访问同一硬件时,则会出现不可预料的结果。WDM驱动重要的功能之一就是提供

一个机制,保证驱动程序的不同部分不会同时访问相同的硬件,避免设备发生冲突。

4.访问硬件 驱动程序在取得了I/O端口和内存地址后就可以直接访问硬件,但由于Windows

是多任务操作系统,在一般情况下占用处理器的时间应小于50微秒,如果需要长时间的硬

件访问应采用系统线程的方法。

5.即插即用支持 即插即用(PnP)是系统自动识别和适应硬件配置改变的技术。即插即用不

仅需要硬件支持同时还需要软件支持。驱动程序是对即插即用支持很重要的部分,用户可随

时为计算机添加和删除设备而无需进行手工配置。微软作为PnP规范的制定者已经定义了

相关设备和组件的工业标准,通过这些标准我们可以了解操作系统和驱动程序如何支持即插

即用。操作系统和驱动程序对即插即用的支持主要提供的功能有自动识别已安装的设备;硬

件资源的动态分配;自动加载正确的驱动程序;在硬件环境发生变化时,向驱动程序发出通

知。

发布评论

评论列表 (0)

  1. 暂无评论