BIOS控制着什么 熟悉计算机的朋友都知道BIOS这个概念,我们也会经常听到老鸟在解决系统故障时候重复的 那些话语:“先清除一下CMOS”或者“进入BIOS默认设置”等等。在普通人眼里,BIOS似乎 就是主机板上那块四四方方的小芯片和开机时候显示的蓝色菜单。它究竟对使用者有什么特 别的意义呢?它究竟是不是高手或维修工程师的专利呢?一台电脑是通过怎么样的方式开始 工作的呢?希望通过阅读本文,你可以得到一个答案。
BIOS内部结构 Sample Text 对于我们日常使用的个人电脑来说,采用的BIOS并不是完全相同的,分别由 Award、Phoenix和AMI这个三个厂商提供(注:Award已被Phoenix收购,其实是一家公司)。 以目前主板的状况而言,大多数都是采用Award BIOS或者基于Award BIOS 内核改进的产品( 采用AMI BIOS的产品相对要少,Phoenix BIOS主要是笔记本电脑和不少国外品牌机采用)。本文介绍的一些BIOS知识和结构,也只围绕市场占有率最高的Phoenix-Award来展开。
拿常见的Award的2Mbit CMOS地址结构来说,从FFFF到FFFC区域是用于储存16Kbit容量的Boot Block(启动模块)、接着是8Kbit的即插即用延伸系统配置数据ESCD区、4Kbit的处理器微代 码Micro code和4Kbit的DMI数据区。FFF8到FFF6是解压缩引擎区,这里的指令可以释放FFF6 之后区域的大容量代码和信息,比如厂商Logo、OEM数据等等。最后一部分是安放BIOS主程序 的地方,通常这些程序也就是我们从网上下载的以bin为后缀名的BIOS升级文件。
BIOS主要功能主板BIOS掌握着系统的启动、部件之间的兼容和程序管理等多项重任。只要按下电源开关启动主机后,BIOS就开始接管主板启动的所有自检工作,系统首先由POST (Power On Self Test,上电自检) 程序来对内部各个设备进行检查(这个过程在下文中另作表述)。通常完整 的POST自检将包括对CPU、基本内存、1MB以上的扩展内存、ROM、主板、CMOS存储器、串并口 、显示卡、软硬盘子系统及键盘进行测试,一旦在自检中发现问题,系统将给出提示信息或 鸣笛警告。然后BIOS就按照系统CMOS设置中保存的启动顺序搜寻软驱、IDE设备和它们的启动顺序,读入操作系统引导记录,最后将系统控制权交给引导记录,并最终完全过渡到操作系 统的工作状态。除了基本的启动功能外,BIOS还有硬件中断处理、系统设计管理、程序请求等作用。操作系 统对硬盘、光驱、键盘、显示器等外围设备的管理,都是直接建立在BIOS系统中断服务程序的基础上的,它是PC系统中的软件与硬件之间的一个可编程接口。计算机开机的时候,BIOS会分配CPU等硬件设备一个中断号。当执行了使用某个硬件的操作命令后,它就会根据中断号 使用相应的硬件来完成命令的工作,最后根据其中断号把它跳回原来的状态。同样,BIOS也可以通过特定的数据端口发送、接受指令,以实现软件应用程序对硬件的操作。BIOS的系统管理功能是大家最为熟悉的,即平时说的BIOS设置。BIOS程序会调用储存在CMOS RAM部分的记录,用户可以通过显示器看到系统基本情况,包括CPU频率、IDE驱动器、ACPI电 源管理和密码设置等信息。正如笔者在一开始说过的那样,这部分信息是依靠电池单独供电储存在RAM中的,只要断电一段时间或人为给CMOS接通高电平信号(跳线短接),任何修改过的设置都会不复存在。
BIOS如何工作?有了以上这些基本知识作为铺垫,读者朋友应该对BIOS有了一定的了解。接下来的问题就是 ,掌握PC枢纽的BIOS是如何工作的呢?鉴于这个过程的复杂,不妨让我们将BIOS运行中的几个关键点罗列出来,稍做分析。这里需要事先声明,以下介绍的有关BIOS运行代码统一成十六进制,有兴趣的朋友可以在市场上买回Debug卡(俗称也叫Port 80卡)来查询、观察。简单地说,BIOS启动会经过好几个检测、命令、执行的循环流程,当然,在进入BIOS控制之前,CPU还需要一个热身的过程。拿P4系统为例,如果按照PC启动的流程来讲解的话,这个先后秩序是这样的:首先是主机电源开始供电,CPU接收到VR(电压调节系统)发出的一个电压 信号,然后经过一系列的逻辑单元确认CPU运行电压之后,主板芯片接收到发出“启动”工作 的指令,让CPU复位。CPU“苏醒”后的第一工作就是,读取BIOS中的初始化指令。在对CPU(2次检查)和内存(640KB基本模块)状态做一系列校验之后,BIOS会完成电路片的初始准备,停用视频、奇偶性和DMA电路片,并且使CMOS计时器开始运行。随后,BIOS程序会逐步检查 CPU是否和默认设定相同,DMA是否有故障,显示通道测试等等,一旦出现故障,就会有蜂鸣 器发出报警。不过,这些步骤都是在后台后悄悄进行的,我们是看不到屏幕上的任何信息。在上面的流程图中,很清楚地表明了引导模块工作的几个步骤。当CPU被正式启动以后,POST (Power-On Self Test,加电后自检)进入内存侦测阶段,一旦基本内存检测出错,系统死 机并会长时间报错;如果一切顺利,BIOS继续往下POST,检查CMOS内的其他BIOS主程序、扩展程序,直到完成这些工作,系统进入常规流程,显示器上才会显示出时间曰期、BIOS版本 型号、CPU频率、内存容量等基本信息。在BIOS引导IDE设备和I/O设备以后,接下来的过程便 交给操作系统来继续了。 BIOS在电脑启动过程中大体是这样工作的,实际上远比我们介绍的要复杂得多。中间任何一 个小的步骤出错都会导致系统无法启动,崩溃,而且BIOS设置不当也会给系统造成隐患。有经验的老鸟可以通过BIOS启动时候的声音来判断故障,而一般用户可以通过查看Debug卡的检错信号,了解POST停滞在哪个阶段。还是拿Award BIOS来说,开机Debug卡显示FF和C0表示 CPU自检没有通过,应该停电检查处理器状况;如果是C1、C3等数字显示,很有可能是BIOS在 检测内存时候发生问题了;系统自检过了2D,并且伴随清脆的“嘀”声,说明系统已经通过 显卡检测,这个时候显示屏上也开始出现画面。知道了故障可能发生的部件,我们可以通过替换法来最终确定问题源头,顺利解决问题。 BIOS也要保护 除了硬件设备的兼容问题之外,BIOS还有可能面临病毒、错误擦写等外因的危害,BIOS如果 不能工作,整台电脑也就瘫痪了。不少主板厂商都通过专门的设计来增加BIOS的可靠性。有的是做成Dual BIOS双模块的方式,一旦其中一块出现故障,能够通过跳线设置让系统从另外一块引导启动,再对损坏模组进行修复。由于BIOS中Boot Block区是重要的数据块,所以厂商将Boot Block块设计成分块式的BIOS结构,在BIOS芯片中保留了一个区域,该区域中保存有BIOS系统中最重要的启动信息。最新的刷新程序的默认值就是刷新时不更新BIOS的Boot Block块,这样的主板即使刷新失败 ,也能很容易恢复。遇到BIOS刷新失败,也可以自己用热插拔的办法来替换受损芯片,前提是你能找到一片和原来BIOS容量一样的芯片。
有动手能力的玩家还可以在BIOS芯片的管脚上动脑筋,因为绝大多数的CMOS芯片为32脚的DIP封装,它们的针脚排列、功能基本上一致。芯片的写操作一般是通 过写入允许脚的电平变化来控制的,只有12V或者5V的高电平被调成低电平以后,数据才能写 入到芯片中去。根据此原理,只要把这个管脚从电路中脱离出来,一直处于高电平,即处于“读”状态,那么不论是病毒还是误操作,都不会对芯片内的数据进行改写。不过,这个方 法存在一定的危险性,它不适用所有的BIOS芯片,而且容易失去主板的保修,大家一定要谨慎为之。
提到BIOS,大部分的菜鸟对此都一知半解,不敢轻易尝试,仿佛天生对“蓝色屏幕”有种恐 惧的感觉,而更多的时候,连许多老鸟都无法区分BIOS设置和CMOS设置的区别,所以在写出疑难问答之前,觉得有必要将这两个概念阐述清楚,以达到事半功倍的效果。
BIOS是英文Basic Input/Output System的缩写,原意是“基本输入/输出系统”。而我 们通常所说的BIOS,其实是指一个固化在ROM中的软件,负责最低级的、最直接的硬件控制,以及计算机的原始操作;用来管理机器的启动和系统中重要硬件的控制和驱动,并为高层软 件提供基层调用。CMOS是英文“互补金属氧化物半导化”的缩写,不过我们常说的CMOS却是指主板上一块 可读写的存储芯片,也称之为“CMOS RAM”。CMOS RAM是随机存储器,具有断电后消除记忆的特点,人们就想到了使用外接电池保持其存储内容的方法。一般来说,通过固化在ROM BIOS的软件进行BIOS参数的调整过程就称之为BIOS设置,而通过BIOS设置中的“标准CMOS设置”调试CMOS参数的过程就称为CMOS设置。我们平常所说的 CMOS设置与BIOS设置只是其简化说法,所以在一定程度上造成两个概念的混淆。 数据恢复的基础知识分类:IT知识汇粹
说到数据恢复,我们就不能不提到硬盘的数据结构、文件的存储原理,甚至操作系统的启动 流程,这些是你在恢复硬盘数据时不得不利用的基本知识。即使你不需要恢复数据,理解了 这些知识(即使只是稍微多知道一些),对于你平时的电脑操作和应用也是很有帮助的。我们就从硬盘的数据结构谈起吧…… 硬盘数据结构 初买来一块硬盘,我们是没有办法使用的,你需要将它分区、格式化,然后再安装上操 作系统才可以使用。就拿我们一直沿用到现诘腤in9x/Me系列来说,我们一般要将硬盘分成主引导扇区、操作系统引导扇区、FAT、DIR和Data等五部分(其中只有主引导扇区是唯一的, 其它的随你的分区数的增加而增加)。主引导扇区 主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。至于分区表,很多人都知道,以80H或00H为开始标志,以55AAH为结束标志,共64字节,位于本扇区的最末端。值得一提的是,MBR是由分区程序(例如DOS 的 Fdisk.exe)产生的,不同的操作系统可能这个扇区是不尽相同。如果你有这个意向也可以自己去编写一个,只要它能完成前述的任务即可,这也是为什么能实现多系统启动的原因(说句题外话:正因为这个主引导记录容易编写,所以才出现了很多的引导区病毒)。
操作系统引导扇区OBR(OS Boot Record)即操作系统引导扇区,通常位于硬盘的0磁道1柱面1扇区(这是对于DOS来说的,对于那些以多重引导方式启动的系统则位于相应的主分区/扩展分区的第一 个扇区),是操作系统可直接访问的第一个扇区,它也包括一个引导程序和一个被称为BPB( BIOS Parameter Block)的本分区参数记录表。其实每个逻辑分区都有一个OBR,其参数视分区的大小、操作系统的类别而有所不同。引导程序的主要任务是判断本分区根目录前两个文 件是否为操作系统的引导文件(例如MSDOS或者起源于MSDOS的Win9x/Me的IO.SYS和MSDOS.SYS )。如是,就把第一个文件读入内存,并把控制权交予该文件。BPB参数块记录着本分区的起 始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元(Allocation Unit,以前也称之为簇)的大小等重要参数。OBR由高级格式化程序产生(例如DOS 的Format.com)。文件分配表 FAT(File Allocation Table)即文件分配表,是DOS/Win9x系统的文件寻址系统,为了数据安全起见,FAT一般做两个,第二FAT为第一FAT的备份, FAT区紧接在OBR之后,其大小由本分区的大小及文件分配单元的大小决定。关于FAT的格式历来有很多选择,Microsoft 的DOS 及Windows采用我们所熟悉的FAT12、FAT16和FAT32格式,但除此以外并非没有其它格式的FAT ,像Windows NT、OS/2、UNIX/Linux、Novell等都有自己的文件管理方式。目录区DIR是Directory即根目录区的简写,DIR紧接在第二FAT表之后,只有FAT还不能定位文件在 磁盘中的位置,FAT还必须和DIR配合才能准确定位文件的位置。DIR记录着每个文件(目录)的起始单元(这是最重要的)、文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在磁盘的具体位置及大小了。在DIR区之后,才是真正意义上的数据存储区,即DATA区。 数据区DATA虽然占据了硬盘的绝大部分空间,但没有了前面的各部分,它对于我们来说,也只能 是一些枯燥的二进制代码,没有任何意义。在这里有一点要说明的是,我们通常所说的格式化程序(指高级格式化,例如DOS下的Format程序),并没有把DATA区的数据清除,只是重写 了FAT表而已,至于分区硬盘,也只是修改了MBR和OBR,绝大部分的DATA区的数据并没有被改变,这也是许多硬盘数据能够得以修复的原因。但即便如此,如MBR/OBR/FAT/DIR之一被破坏的话,也足够咱们那些所谓的DIY老鸟们忙乎半天了……需要提醒大家的是,如果你经常整理磁盘,那么你的数据区的数据可能是连续的,这样即使MBR/FAT/DIR全部坏了,我们也可以使 用磁盘编辑软件(比如DOS下的DiskEdit),只要找到一个文件的起始保存位置,那么这个文件就有可能被恢复(当然了,这需要一个前提,那就是你没有覆盖这个文件……)。
硬盘分区方式 我们平时说到的分区概念,不外乎三种:主分区、扩展分区和逻辑分区。主分区是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。在 主分区中,不允许再建立其它逻辑磁盘。扩展分区的概念则比较复杂,也是造成分区和逻辑磁盘混淆的主要原因。由于硬盘仅仅 为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,故主引导扇区中总 计可以存储4个分区的数据。操作系统只允许存储4个分区的数据,如果说逻辑磁盘就是分区 ,则系统最多只允许4个逻辑磁盘。对于具体的应用,4个逻辑磁盘往往不能满足实际需求。 为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念。 所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针 ,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个 被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是 下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建立多 少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘。 需要特别注意的是,由于主分区之后的各个分区是通过一种单向链表的结构来实现链接的 ,因此,若单向链表发生问题,将导致逻辑磁盘的丢失。 数据存储原理 既然要进行数据的恢复,当然数据的存储原理我们不能不提,在这之中,我们还要介绍 一下数据的删除和硬盘的格式化相关问题…… 文件的读取 操作系统从目录区中读取文件信息(包括文件名、后缀名、文件大小、修改日期和文件在 数据区保存的第一个簇的簇号),我们这里假设第一个簇号是0023。 操作系统从0023簇读取相应的数据,然后再找到FAT的0023单元,如果内容是文件结束标志( FF),则表示文件结束,否则内容保存数据的下一个簇的簇号,这样重复下去直到遇到文件结束标志。 文件的写入当我们要保存文件时,操作系统首先在DIR区中找到空区写入文件名、大小和创建时间等 相应信息,然后在Data区找到闲置空间将文件保存,并将Data区的第一个簇写入DIR区,其余的动作和上边的读取动作差不多。 文件的删除看了前面的文件的读取和写入,你可能没有往下边继续看的信心了,不过放心,Win9x的文件 删除工作却是很简单的,简单到只在目录区做了一点小改动――将目录区的文件的第一个字符改成了E5就表示将改文件删除了。 Fdisk和Format的一点小说明和文件的删除类似,利用Fdisk删除再建立分区和利用Format格式化逻辑磁盘(假设你格 式化的时候并没有使用/U这个无条件格式化参数)都没有将数据从DATA区直接删除,前者只 是改变了分区表,后者只是修改了FAT表,因此被误删除的分区和误格式化的硬盘完全有可能 恢复……
系统启动流程各种不同的操作系统启动流程不尽相同,我们这里以Win9x/DOS的启动流程为例。
第一阶段:系统加电自检POST过程。POST是Power On SelfTest的缩写,也就是加电自检的意思,计算机执行内存FFFF0H处的程序(这里是一段固化的ROM程序),对系统的硬件(包括内存)进行检查。
第二阶段:读取分区记录和引导记录。当微机检查到硬件正常并与CMOS设置相符后,按 照CMOS设置从相应设备启动(我们这里假设从硬盘启动),读取硬盘的分区记录(DPT)和主引导记录(MBR)。
第三阶段:读取DOS引导记录。微机正确读取分区记录和主引导记录后,如果主引导记录和分区表校验正确,则执行主引导记录并进一步读取DOS引导记录(位于每一个主分区的第一个扇 区),然后执行该DOS引导记录。
第四阶段:装载系统隐含文件。将DOS系统的隐含文件IO.SYS入内存,加载基本的文件系 统FAT,这时候一般会出现Starting Windows 9x...的标志,IO.SYS将MS.SYS读入内存,并处 理System.dat和User.dat文件,加载磁盘压缩程序。
第五阶段:实DOS模式配置。系统隐含文件装载完成,微机将执行系统隐含文件,并执行 系统配置文件(Config.sys),加载Config.sys中定义的各种驱动程序。
第六阶段:调入命令解释程序(Command.com)。系统装载命令管理程序,以便对系统的各种操 作命令进行协调管理(我们所使用的Dir、Copy等内部命令就是由Command.com提供的)。
第七阶段:执行批处理文件(Autoexec.bat)。微机将一步一步地执行批处理文件中的各条命令。
区DIR是Directory即根目录区的简写,DIR紧接在第二FAT表之后,只有FAT还不能定位文件在 磁盘中的位置,FAT还必须和DIR配合才能准确定位文件的位置。DIR记录着每个文件(目录) 的起始单元(这是最重要的)、文件的属性等。定位文件位置时,操作系统根据DIR中的起始 单元,结合FAT表就可以知道文件在磁盘的具体位置及大小了。在DIR区之后,才是真正意义 上的数据存储区,即DATA区。 数据区 DATA虽然占据了硬盘的绝大部分空间,但没有了前面的各部分,它对于我们来说,也只能 是一些枯燥的二进制代码,没有任何意义。在这里有一点要说明的是,我们通常所说的格式 化程序(指高级格式化,例如DOS下的Format程序),并没有把DATA区的数据清除,只是重写 了FAT表而已,至于分区硬盘,也只是修改了MBR和OBR,绝大部分的DATA区的数据并没有被改 变,这也是许多硬盘数据能够得以修复的原因。但即便如此,如MBR/OBR/FAT/DIR之一被破坏 的话,也足够咱们那些所谓的DIY老鸟们忙乎半天了……需要提醒大家的是,如果你经常整理磁盘,那么你的数据区的数据可能是连续的,这样即使MBR/FAT/DIR全部坏了,我们也可以使用磁盘编辑软件(比如DOS下的DiskEdit),只要找到一个文件的起始保存位置,那么这个文件就有可能被恢复(当然了,这需要一个前提,那就是你没有覆盖这个文件……)。
本文转自http://wenku.baidu.com/link?url=tDqqSXsIP-z5AEfvUpb8_cP-5jR1F1k5QSdpDVZQgJCEIBB6rrTa4NsDb_vkQuWB8gjPeyraCFs9KSqI-rEWmb3bR1pz7vq9SOcOk9Qb8AG