本文内容:
零、什么是BIOS
计算机用户在使用计算机的过程中,都会接触到BIOS,它在计算机系统中起着非常重要的作用。
BIOS,Basic Input/output system,即基本输入/输出系统,完整地说应该是 ROM-BIOS,是只读存储器基本输入/输出系统的简写。 实际上它是被固化在计算机ROM(只读存储器)芯片上的一组程序, 为计算机提供最低级的、最直接的硬件控制与支持。更形象地说,BIOS就是硬件与软件程序之间的一个"桥梁"或者说是接口(虽然它本身也只是一个程序) ,负责解决硬件的即时需求,并按软件对硬件的操作要求具体执行。BIOS中断调用即BIOS中断服务程序。它是微机系统软、硬件之间的一个可编程接口,用于程序软件功能与微机硬件实现的衍接。DOS/Windows操作系统对软、硬盘、光驱与键盘、显示器等外围设备的管理即建立在系统BIOS的基础上。程序员也可以通过对INT 5、INT 13等中断的访问直接调用BIOS中断例程。
BIOS的操作就是在控制,初始化,检测各种底层的设备,比如时钟,GDTR寄存器。以及设置中断向量表。但是作为PC启动后运行的第一段程序,它最重要的功能是把操作系统从磁盘中导入内存,然后再把控制权转交给操作系统。所以BIOS在运行的最后会去检测可以从当前系统的哪个设备中找到操作系统,通常来说是我们的磁盘。也有可能是U盘等等。当BIOS确定了操作系统位于磁盘中,那么它就会把这个磁盘的第一个扇区,通常把它叫做启动区(boot sector)先加载到内存中,这个启动区中包括一个非常重要的程序 – boot loader,它会负责完成整个操作系统从磁盘导入内存的工作,以及一些其他的非常重要的配置工作;最后操作系统才会开始运行。
可见PC启动后的运行顺序为 BIOS --> Boot Loader --> 操作系统内核
一、BIOS的功能
从功能上看,BIOS分为三个部分:
- 自检及初始化程序;
- 硬件中断处理;
- 程序服务请求。
下面我们就逐个介绍一下各部分功能:
(一) 自检及初始化
这部分负责启动计算机,具体有三个部分:
- 第一个部分是用于计算机刚接通电源时对硬件部分的检测,也叫做加电自检(POST),功能是检查计算机是否良好,例如内存有无故障等;
- 第二个部分是初始化,包括创建中断向量、设置寄存器、对一些外部设备进行初始化和检测等,其中很重要的一部分是BIOS设置,主要是对硬件设置的一些参数,当计算机启动时会读取这些参数,并和实际硬件设置进行比较,如果不符合,会影响系统的启动;
- 最后一个部分是引导程序,功能是引导DOS或其他操作系统。BIOS先从软盘或硬盘的开始扇区(硬盘的0柱面、0磁头、1扇区称为主引导扇区,也叫主引导记录MBR,该记录占用512个字节,它用于硬盘启动时将系统控制权转给用户指定的、在分区表中登记了某个操作系统分区)读取引导记录,如果没有找到,则会在显示器上显示没有引导设备,如果找到引导记录会把计算机的控制权转给引导记录,由引导记录把操作系统装入计算机,在计算机启动成功后,BIOS的这部分任务就完成了。
主引导扇区 MBR 的成员包括:
- 主引导程序代码,占446字节
- 磁盘签名
- 硬盘分区表DPT,占64字节
- 主引导扇区结束标志55AAH
硬盘的主引导程序代码是从偏移0000H开始到偏移01BDH结束的446字节;主引导程序代码包括一小段执行代码。启动PC 机时,系统首先对硬件设备进行测试,成功后进入自举程序INT 19H;然后读系统磁盘0柱面、0磁头、1扇区的主引导扇区MBR的内容到内存指定单元0:7C00 首地址开始的区域,并执行MBR程序段。
(二) 程序服务处理 和 硬件中断处理
这两部分是两个独立的内容,但在使用上密切相关。
- 程序服务处理程序主要是为应用程序和操作系统服务,这些服务主要与输入、输出设备有关,例如读磁盘、文件输出到打印机等。为了完成这些操作,BIOS必须直接与计算机的I/O设备打交道,它通过端口发出命令,向各种外部设备传送数据以及从它们那儿接收数据,使程序能够脱离具体的硬件操作,而硬件中断处理则分别处理PC机硬件的需求,因此这两部分分别为软件和硬件服务,组合到一起,使计算机系统正常运行。
- BIOS的服务功能是通过调用中断服务程序来实现的,这些服务分为很多组,每组有一个专门的中断。例如视频服务,中断号为10H;屏幕打印,中断号为05H;磁盘及串行口服务,中断14H等。每一组又根据具体功能细分为不同的服务号。应用程序需要使用哪些外设、进行什么操作只需要在程序中用相应的指令说明即可,无需直接控制。
二、工作流程
BIOS系统设置程序微机部件配置情况是放在一块可读写的CMOS RAM芯片中的,它保存着系统CPU、软硬盘驱动器、显示器、键盘等部件的信息。关机后,系统通过一块后备电池向CMOS供电以保持其中的信息。如果CMOS中关于微机的配置信息不正确,会导致系统性能降低、零部件不能识别,并由此引发一系统的软硬件故障。
在BIOS ROM芯片中装有一个程序称为"系统设置程序",就是用来设置CMOS RAM中的参数的。这个程序一般在开机时按下一个或一组键即可进入,它提供了良好的界面供用户使用。这个设置 CMOS参数的过程,习惯上也称为"BIOS设置"。新购的微机或新增了部件的系统,都需进行BIOS设置。POST上电自检接通微机的电源,系统将执行一个自我检查的例行程序。这是BIOS功能的一部分,通常称为POST–上电自检(Power On Self Test)。(完整的POST自检包括对CPU、系统主板、基本的640KB内存、1MB以上的扩展内存、系统ROM BIOS的测试;CMOS中系统配置的校验;初始化视频控制器,测试视频内存、检验视频信号和同步信号,对CRT接口进行测试;对键盘、软驱、硬盘及CD-ROM子系统作检查;对并行口(打印机)和串行口(RS232)进行检查)。自检中如发现有错误,将按两种情况处理:对于严重故障(致命性故障)则停机,此时由于各种初始化操作还没完成,不能给出任何提示或信号; 对于非严重故障则给出提示或声音报警信号,等待用户处理。
BIOS系统启动自举程序在完成POST自检后,ROM BIOS将按照系统CMOS设置中的启动顺序搜寻软硬盘驱动器及CDROM、网络服务器等有效的启动驱动器 ,读入操作系统引导记录,然后将系统控制权交给引导记录,由引导记录完成系统的启动。
常见BIOS芯片的识别主板上的ROM BIOS芯片是主板上唯一贴有标签的芯片,一般为双排直插式封装(DIP),上面印有"BIOS"字样。虽然有些BIOS 芯片没有明确印出"BIOS",但凭借外贴的标签也能很容易地将它认出。586以前的BIOS多为可重写EPROM芯片,上面的标签起着保护BIOS内容的作用(紫外线照射会使EPROM内容丢失),不能随便撕下。 586以后的ROM BIOS多采用Flash ROM(快闪可擦可编程只读存储器),通过跳线开关和系统配带的驱动程序盘,可以对Flash ROM进行重写,方便地实现BIOS升级。 常见的BIOS芯片有AMI、Award、Phoenix等,在芯片上都能见到厂商的标记。
三、BIOS的种类
目前市场上主要的BIOS有AMI BIOS和Award BIOS:
(一) AMI BIOS
AMI BIOS是AMI公司出品的BIOS系统软件,最早开发于80年代中期,为多数的286和386计算机系统所采用,因对各种软、硬件的适应性好、硬件工作可靠、系统性能较佳、操作直观方便的优点受到用户的欢迎。
90年代,AMI又不断推出新版本的BIOS以适应技术的发展,但在绿色节能型系统开始普及时,AMI似乎显得有些滞后,Award BIOS的市场占有率借此机会大大提高,在这一时期,AMI研制并推出了具有窗口化功能的WIN BIOS,这种BIOS设置程序使用非常方便,而且主窗口的各种标记也比较直观,例如,一只小兔子表示优化的默认设置,而一只小乌龟则表示保守的设置,一个骷髅用来表示反病毒方面的设置,画笔和调色板则表示色彩的设置。
AMI WinBIOS已经有多个版本,目前用得较多的有奔腾机主板的Win BIOS,具有即插即用、绿色节能、PCI总线管理等功能。
(二)Award BIOS
Award BIOS是Award Software公司开发的BIOS产品,目前十分流行,许多586主板机都采用Award BIOS,功能比较齐全,对各种操作系统提供良好的支持。Award BIOS也有许多版本,现在用得最多的是4.X版
四、CMOS是什么?
CMOS(原意是指互补金属氧化物半导体–一种大规模应用于集成电路芯片制造的原料)是微机主板上的一块可读写的RAM芯片,用来保存当前系统的硬件配置和用户对某些参数的设定。
CMOS可由主板的电池供电,即使系统掉电,信息也不会丢失。 CMOS RAM本身只是一块存储器,只有数据保存功能,而对CMOS中各项参数的设定要通过专门的程序。早期的CMOS设置程序驻留在软盘上的(如IBM的PC/AT机型),使用时很不方便。现在多数厂家将CMOS设置程序做到了BIOS芯片中,在开机时通过特定的按键就可进入CMOS设置程序,方便地对系统进行设置,因此CMOS设置又被叫做BIOS设置。
早期的CMOS是一块单独的芯片MC146818A(DIP封装),共有64个字节存放系统信息。386以后的微机一般将 MC146818A芯片集成到其它的IC芯片中(如82C206,PQFP封装),最新的一些586主板上更是将CMOS与系统实时时钟和后备电池集成到一块叫做DALLDA DS1287的芯片中。随着微机的发展、可设置参数的增多,现在的CMOS RAM一般都有128字节及至256字节的容量。为保持兼容性,各BIOS厂商都将自己的BIOS中关于CMOS RAM的前64字节内容的设置统一与MC146818A的CMOS RAM格式一致,而在扩展出来的部分加入自己的特殊设置,所以不同厂家的BIOS芯片一般不能互换,即使是能互换的,互换后也要对CMOS信息重新设置以确保系统正常运行。