1、标签: 即插即用 BIOS 操作系统 POST 发现新硬件的前前后后(连载之一)当我们把新硬件插入系统后,Windows 立即告诉你发现新硬件(如图 1),接着识别新硬件,然后自动安装硬件的驱动程序,这样设备就可以使用了,整个过程中系统像在和你交流一样。对于这个神奇的过程,你是否很想知道电脑到底都干了些什么?图 1 插入新硬件后屏幕出现的提示信息1新硬件与即插即用“新硬件” 是指在一个已经安装操作系统的 “现有系统”中新增加的硬件设备,“发现新硬件 ”就是现有系统能够自动侦测到新增加的硬件,并针对新硬件进行驱动程序的安装,直至成为“可用硬件” 的全部过程。如果硬件的安装可以“ 无人值守 ”地进
2、行,并且不需要重新启动机器就使新硬件直接成为可用硬件,那么这个过程就可称作“ 即插即用(Plug & Play)”,港台地区的译名更加生动:“插上就玩” 。插上就玩是人们多年来梦寐以求的,但直到 Windows 95 操作系统问世,这种愿望才得以实现。不过,那时的“插上就玩” 不够完备,许多新硬件在出售时,还附上了一张驱动程序的软盘和光盘,需要用户进行一系列软件安装,仅有少数设备能够真正的“ 插上就玩 ”。如今,Windows XP 已经足够强大,以至于附加的驱动程序都可省去,真正实现了插上就玩。不仅如此,热插拔技术还允许在机器工作期间插入新硬件,使得应用更为方便。即插即用需要所有条件同时具备
3、:即插即用的硬件支持(主机和设备),即插即用 BIOS 以及即插即用的操作系统。即插即用系统还需要团队精神硬件、BIOS 和操作系统三者团结一致、各担其责:即插即用 BIOS 与操作系统一起完成对即插即用设备的识别和配置,最后由操作系统帮助应用程序管理和使用硬件设备和系统资源。2谁发现了新硬件?对于电脑启动的过程,相信大叫都比较熟悉了。当我们接通电脑的电源时,CPU 执行的第一条指令是一条跳转指令,在地址线上输出 BIOS 中 POST 程序的首地址(FFFF0H),从 BIOS 芯片中读取 POST 程序并立即执行该程序,对电脑硬件进行检测,检测包括 BIOS 程序完整性检验、RAM 可读写
4、性检验、硬盘、光驱、软驱、键盘、打印机,电脑上所有部分,并从每台 PnP 设备上读取该设备的相关信息和资源需求数据,建立一个资源分配表,配置数据写回 BIOS 后,屏幕上出现“ Update ESCD.Succeed”信息,说明 ESCD(Extended System Configuration Data,扩展的系统配置数据)更新成功,随后启动自举装载程序引导操作系统。一些新硬件插入现有系统后,BIOS 能够赶在操作系统之前发现它,并进行合理配置,让其可用。可见,启动期间发现新硬件的工作是由 BIOS 程序独立完成的。但 BIOS 功能毕竟有限,它并不能发现所有的新硬件,有些硬件必须待Win
5、dows 引导成功后,才能被操作系统发现,并且由操作系统进行相应配置后让其成为可用硬件。正常开机期间插入的热插拔设备,往往也是由操作系统独立发现并进行配置。BIOS 和操作系统是两个独立的实体,它们能够发现并配置新硬件,只是它们发现并配置新硬件的时机和机制却有所不同,请往下看。3从新硬件到可用硬件BIOS 发现新硬件的过程,是依靠调用存贮在 BIOS 中三个程序实现的。首先由开机自检程序(POST)向设备发送 Device identify 命令去检测设备,并从设备取回一定的状态信息。如果状态信息与标准信息吻合,则继续向下一台设备发送 Device identify 命令;如果不吻合,则在屏幕
6、上显示出错信息,自检工作暂停。检测工作结束后,转入执行 BIOS 中的设置程序,将系统资源(包括 I/O端口、中断号、DMA 及内存等)分配给检测到的设备,生成一个资源配置表,防止出现资源冲突而导致设备不可用的情况发生。自检结束后,操作系统调用 BIOS 中的引导装配程序加载操作系统,操作系统获得控制权后,立即读取 BIOS 中的资源配置表,对设备进一步配置,并将配置情况记录到注册表中去。操作系统发现并配置新硬件的过程类似于人力资源部为企业招收新员工的工作流程:资格审核 登记造册 安排工作。操作系统执行如下检测和配置过程:(1)通报事件:新设备插入系统后(冷插拔或热插拔),BIOS 侦测到以后
7、,立即通过总线枚举程序向系统通报事件;(2)识别新设备:操作系统使用设备管理程序去识别外设,然后利用设备信息自动地装载相匹配的驱动程序;(3)将系统资源分配给新设备,并构建设备资源数据库。到现在为止,硬件的身份由“新硬件” 转变为“可用硬件”了。可以看出,可用硬件必须具备发挥自己的功能所必须的两个条件:(1)占有主机资源(2)操作系统中有与之匹配的驱动程序。应该说明一点,新硬件必须按照即插即用规范(最低版本为 PC95)设计,在设备电路中有一个 ROM 芯片(通常也称为设备 BIOS,如显卡 BIOS、显示器BIOS、硬盘 BIOS、光驱 BIOS 等),其中固化了该设备的信息,这样的设备才能
8、被系统自动识别并安装驱动程序,变成可用硬件。老的 CRT 显示器,就不能被系统识别,因为这种显示器电路中没有 ROMS 芯片和固件,显示器信号线也没有用于即插即用的检测信号线和数据返回线。4PnP BIOS:即插即用的马前卒电脑教材总是这么告诉大家:一个完整的电脑系统是由硬件系统和软件系统两部分组成的。这只不过是个粗略的说法,BIOS 在此被作为硬件系统的一部分来看待了。实际上,BIOS 并不是一个纯粹的硬件,正好相反,它是被预先包裹在硬件中的软件,通常称作固件(Firmware)固化在硬件中的软件。BIOS 是控制硬件的程序,它可以主动地对计算机系统中的设备和总线进行控制。BIOS 也是连接
9、操作系统和硬件设备的桥梁,能够被操作系统所控制,协助操作系统完成对硬件进行访问。操作系统对硬件的操作大多是通过调用 BIOS芯片中的中断服务程序完成的。BIOS 是电脑启动后最先执行的程序,它检测电脑最小系统的正确性,然后把系统控制权移交给操作系统。对于即插即用硬件的发现和配置,BIOS 也走在了操作系统的前面。早期的 BIOS 程序都是针对某个特定的硬件系统和软件系统而编制,不具通用性,我们称之为非即插即用 BIOS。非即插即用 BIOS 通常由一些程序(上电自检程序、配置程序、枚举程序、中断服务程序)和资源配置表组成,这些程序和表格一般存储在 ROM 芯片中。有一定经验的用户应该知道,48
10、6 级别的电脑有很大一部分并不支持从CD-ROM 和 Zip 驱动器等设备引导系统,但对 BIOS 升级后便可解决问题。非即插即用系统也可以通过 BIOS 版本升级来增加支持的硬件种类,或者提高硬件的性能。即插即用系统和非即插即用系统的差别可从图 2 中比较出来。即插即用系统要求外部设备、主板、BIOS 和操作系统均支持即插即用。为了在电脑系统中实现即插即用功能,研发出了在底层支持即插即用技术的 BIOS,我们在这种新的 BIOS 前面加上一个 PnP,称作 PnP BIOS。PnP BIOS 比非即插即用 BIOS 多了一个 PnP 功能模块,这个模块可以识别哪些设备为固定资源需求的传统设备
11、,哪些是可以对进行资源再配置的即插即用设备,并且识别出设备的资源需求。PnP 模块将这些设备信息传送给操作系统的设备管理程序,并由该程序进行重新配置,不需要重新开机即可实现 BIOS 的更新。图 2 非即插即用与即插即用系统的比较如果说 PnP 模块不过是对非即插即用 BIOS 列举和配置功能的增强,那么,“通报动态事件 ”就是 PnP BIOS 所独有的功能。当系统中增加了新硬件时,PnP BIOS 能够及时更新资源配置表,并通过枚举程序向操作系统报告。借助于 PnP BIOS 的动态通报功能,操作系统无需关机即可重新对资源进行重新配置。在去除设备时,PnP BIOS 也能够通知操作系统,并
12、通过操作系统向用户发出警告,以防错误和数据丢失。此外,PnP BIOS 中还有一个 ACPI 模块,配合操作系统实现节能。(未完待续)标签: 即插即用 BIOS device ID 驱动程序 发现新硬件的前前后后(连载之二)5Windows 95:构筑即插即用的理论体系即插即用系统的设计目标就是使普通用户安装新硬件的操作更容易,减少麻烦事。1995 年,微软公司在其发布的 Windows 95 操作系统中率先提供了对即插即用技术的支持,即插即用技术从此走上了不断发展的道路。即插即用操作系统能够动态地分配和管理系统资源,有效地避免资源冲突,提高了电脑的可靠性和易用性。Windows 也好,Lin
13、ux 也罢,操作系统就是一个管理和利用好硬件资源、然后为应用程序做好服务的一个“中间件”。操作系统的主要任务是将设备、主机(包括 BIOS)与设备驱动程序三者结合起来。为此,操作系统要完成两个基本任务:一是为设备配置资源,让设备在主板上占有一席之地;二是为设备选择匹配的驱动程序,以便在需要时可以调用它。前文曾提到,操作系统对一些基本的硬件(如键盘、鼠标和软驱、硬盘等)进行操作时,是通过调用 BIOS 的中断服务程序实现的。因为这些 BIOS 所支持设备的驱动程序固化在 BIOS 中,系统通过调用软件中断的方式来执行它们,因此称为中断服务程序。对于 BIOS 所不支持的设备,操作系统需要操作和管
14、理这些设备时,就要利用设备驱动程序。驱动程序是随新硬件而来的用于管理硬件的程序,可别小看了它的作用。如果把新硬件比作新娘,驱动程序就是陪嫁的仆人,她既了解新娘的嗜好和习惯,对新主人也惟命是从。驱动程序执行操作系统给出的任务,去与硬件打交道,并将执行结果返回给操作系统。操作系统安装驱动程序,就是让操作系统、驱动程序和新硬件三者之间实现无缝连接。已经安装的设备驱动程序保存在WINDOWSSYSTEM 目录中,注册表中记录了驱动程序的位置及文件名、版本号等详细信息。操作系统欲对某设备进行操作时,可以立即找到它,并把操作任务交给它去做。操作系统软件之所以越来越庞大,其中一个主要原因就是其中捆绑了更多的
15、驱动程序,这样就让更多的设备可以实现无人值守的安装了。说了半天,Windows 发现和安装硬件驱动程序的究竟是怎样一个过程呢?这大概才是大家最想知道的。Windows 利用“PnP 管理器 ”和“I/O 管理器”这两个家伙来发现和完成新设备安装,如图 3。图 3 即插即用系统信息流程新设备插入后,即 PnP 管理器会发现它,然后告诉用户说:“发现了新硬件”。之后,它会默不作声地去注册表中寻找,看有没有现成的驱动程序,如果能找到,就告诉用户,你安装的新硬件已经可以使用了。如果没有找到与这台设备相匹配的驱动程序,就会提醒用户说,我找到你所安装的设备,但还要请你插入这台设备的驱动程序盘。用户把驱动程
16、序盘给了它,它立即打开盘上的.inf文件(inf 的意思是 install information,安装信息),检查.inf 文件里的标志与新设备的标志是否相同,如果相同,它就会依照.inf 文件里提供的路径去找驱动程序,找到之后,后面的工作交给 I/O 管理器去做,由 I/O 管理器来完成驱动程序的安装工作。I/O 管理器当然也不是白干活,它成了驱动程序的新主人,驱动程序以后就听它使唤了。6即插即用理论的最新发展Windows 95 首创了即插即用的理论架构,但它却远不是一个可靠的解决方案,也因此得了一个绰号 Plug and Pray(即插即祈祷)。Windows98、Windows200
17、0 直至现在最新 Windows XP 都对即插即用技术进行了不断完善。Windows2000 对 Windows95 的即插即用模式进行了重大变革,Window2000 采用新型的 WDM(Windows Driver Model,Windows 驱动模型)体系结构,对于为 Windows 95 和 Windows 98 所编制的 VxD(虚拟设备驱动)程序不提供支持。相比之下,Windows98 还是一个过渡产品,在使用 WDM 的同时,也保留了对 VxD 的支持。Windows2000 对即插即用的支持是按照 ACPI(Advanced Configuration and Power I
18、nterface,高级配置和电源接口)规范来处理的,所有电源管理和配置设置都处于操作系统的控制之下,而不再受 BIOS 控制。BIOS 与操作系统在资源配置问题上分庭抗礼的局面已经结束,BIOS 不再对资源进行配置,其主要任务转变成为 ACPI 创建一个“资源需求表”供操作系统使用。这种新的控制模式使 Window2000 对即插即用的支持比 Window95 具有更为广泛的适应性。Windows 2000 对资源实行动态分配,多台设备可以共享同一 IRQ,这个特性可以使用户添加多个硬件而不用关心硬件冲突的事情。你可能看到在设备管理器中许多设备共同使用一个 IRQ,比如 IRQ9,但每一台设备
19、都可以正常运转。最新的 Windows XP 与 Windows 2000 的内核基本相同,能够更好地支持一些新近出现的设备,如 DVD 和 IEEE1394 接口的 AV 设备等。Windows XP将即插即用应用范围扩展到了整个网络上,可以发现和控制网络打印机、Internet 网关以及消费电子设备。为了确保硬件对即插即用操作系统的支持,Microsoft 对硬件制造商提供硬件及驱动程序的 PnP 兼容性测试服务,获得通过的硬件和驱动程序可获得Microsoft 的 Designed for Windows 标志及驱动程序的数字签名。目前,这一技术已经被纳入到 Windows 2000 和
20、 Windows XP 的即插即用管理器中。7开放体系结构:即插即用的基石20 年前,IBM、Intel 和微软在个人计算机制造业的联姻,诞生了开放的PC 工业标准,标志着个人计算机应用时代的全面到来。开放的硬件体系结构、统一的操作系统和应用软件,这个一统江湖的标准沿用至今。开放体系可以让各种设备非常容易地连接在一起。“基于简单扩展总线的开放体系结构” 的出现是电脑的一次革命,也是 PC 最重要的概念。如果没有开放体系,从工厂造出来的电脑一切都不能更改,不能扩充功能,不能升级,电脑就是一个死机器。一句话,没有开放体系结构,新硬件压根儿无从谈起。开放体系结构已经沿用了 20 年,现在仍然可以把最
21、早期的 PC 扩展卡插在最新的 PC 主板上并保证正常工作,这就是开放标准的魅力所在。 ISA 是最早的总线标准,最初为 8 位数据宽度,运行速度为 4.77MHz,与当时的 CPU 速度相同。后来发展为 16 位 ,运行速率达到 8MHz,今天仍然有一些 ISA 板卡在使用中。PCI 总线标准是 ISA 的替代者,数据传输速度提高到了 133MB/s,最高甚至可达 533MB/s(总线数据位宽为 64bit 和总线工作频率为 66NHz 时),这使ISA 总线望尘莫及。另外,PCI 比 ISA“聪明” 多了,可以共享中断申请 (IRQ),支持即插即用,这是一大进步。只要将适配卡插入 PCI
22、插槽,不用设置跳线开关,不用选择 IRQ、DMA 通道、I/O 接口地址和存储器地址,系统就自动检测到并分配资源,马上便可以使用了。另外,使用 PCI 网卡,还可以实现远程唤醒,它是通过 PCI 插槽的 A19 引脚连接到 ACPI 控制器的一个唤醒信号PME( Power Management Event,电源管理事件)实现的。USB 和 IEEE1394 的诞生和发展,给开放式体系结构注入了新的活力。这两种接口最大的特点是支持热插拔,电脑用户通过它们第一次体验到即插即用带来的好处。另外,它们都具有极高的数据传输率,顺应了历史发展潮流,因此近几年得到了迅速发展。新出现闪存盘和数码产品一开始就
23、采用这两种接口,一些老的设备(如打印机和扫描仪等)为了提高速度,也开始从并行接口向USB 接口转移。8Device ID:即插即用设备身份证前面曾经谈到,为了保证硬件对即插即用的支持,微软对设备制造商提供的驱动程序进行测试认证。驱动程序通过测试以后,微软硬件质量实验室(WHQL)会返回设备制造商送检的驱动程序文件和一个.cat 文件(catalog ,目录),.cat 文件含有 Microsoft 的数字签名(也叫 “驱动程序签署 ”或“代码签署”)信息。这样,制造商便可将这个.cat 文件包括进驱动程序包中提供给最终用户,用于硬件安装的数字签名审核。经过数字签名的设备信息可以在微软公司的网站
24、上找到。驱动程序经过数字签名后,制造商可以在其产品上署名“Designed for Windows”标志,同时拥有一个与数字签名相匹配的 Device ID(设备识别码)。Device ID 是一个 4 位的 16 进制数,保存在设备的 ROM 芯片中,它就是该设备的身份证,具有全球唯一性。安装驱动程序时,安装程序中的数字签名程序将读取 Device ID,以检验驱动程序的合法性和 PnP 兼容性。驱动程序安装后,其 Device ID 和其他一些能够进一步标识该设备的详细信息被记录在注册表的HKEY_LOCAL_MACHINEHardwareDescriptionSystem 子键中,其中除
25、了Device ID,还有 Vendor ID(制造商识别符)、subsystem ID 和 revision ID等更为详细的设备信息。在 Windows XP 中,数字签名策略默认为启用状态,通过数字签名测试的驱动程序,则表明已经通过了 Windows 的硬件兼容性测试(Hardware Compatibility Test,HCT),而且自通过测试之日起没有被改动过。如果试图安装一个未经签署的驱动程序,Windows 会发出一个警告信息,告知驱动程序数字签名的重要性,如图 4。选择继续安装,就不能保证设备能否正常使用。安装了一个与 device ID 与不相匹配的驱动程序,设备管理器会将该设备作为“ 未知设备” 对待。如果发生资源冲突,还会在该设备前面加一个黄色感叹号。图 4 数字签名的警告信息除了在操作系统安装驱动程序要用到 Device ID,PnP BIOS 也要读取并识别 Device ID,以便分辨设备类型,根据类型给其分配所需的资源。(全文结束)1 操作系统与硬件之间存在着怎样的电路识别关系? 2 数据为什么就能存在硬盘上? 浏览次数:108 次悬赏分: 5 | 提问时间:2011-5-28 15:40 | 提问者:匿名 操作系统为什么能操作硬件?