• BIOS和CMOS【转载】


    在我们的电脑中,都有一块黑色的小芯片。但是请千万不要小看它,如果它损坏或者数据错误乱套的话,恭喜,如果不会“救回”这个小芯片,那么这台电脑可以挂闲鱼卖零件了……
    这个小芯片是什么呢?对,它就是BIOS芯片。那BIOS又是什么玩意?答曰:“BIOS,是Basic Input Output System的词头缩写。”如果直译为中文,那就叫做“基本输入输出系统”。然而BIOS到底是什么,光说它的名字对于一般人来说还是如同天书一般。其实BIOS是固化在一个只读存储器(ROM,下同)或非易失性存储器(NvRAM)上的程序,所以BIOS只是个程序。但既然是程序,那么肯定是得要运行的,所以就得为这个程序找一个地方存起来以便随时能运行。这个程序存放在哪里?是固化在一个ROM或NvRAM里的,那么这个ROM或者NvRAM又是啥玩意?对了,就是那个黑色小芯片,即BIOS芯片,所以BIOS芯片是个ROM或NvRAM,目前的大多数BIOS芯片基本只有NOR Flash一种,属于NvRAM。少数上古的旧式BIOS芯片还可以看到EEPROM,下面稍后再谈这两个玩意。
    上面说完了BIOS和BIOS芯片,我们已经知道BIOS只是个存储在一个芯片中的程序。那么既然是程序,肯定就得包括一些功能,都包括些啥玩意呢,下面主要列举如下:
    1、POST自检和硬件自检程序:通过读取CMOS存储中的硬件信息,识别硬件配置,并对硬件自检和初始化。
    2、操作系统启动程序:硬件自检成功后(这时硬盘已经被识别),执行跳转到操作系统引导设备的引导分区,将引导程序读入内存,若成功读入,则进入启相应设备上的操作系统启动过程
    3、CMOS设置程序:在电脑开机自检中,按下进入CMOS设置的快捷键,则进入CMOS设置。设置结束后,若进行保存操作,则更新后的硬件信息会存入CMOS中并重新进行自检,否则继续完成本次自检后续的过程
    4、硬件I/O和中断服务:软件在一些对硬件底层的操作中,需要中断服务或硬件I/O操作,这时就需要BIOS充当软件和硬件之间“临时搭桥”的作用。
    BIOS主要的功能基本上就是这4点,但是请注意1和3,又冒出个CMOS,这又是啥东东?答曰:“CMOS,本义上是Complementary Metal Oxide Semiconductor的词头缩写。”直译为“互补金属氧化物半导体”,是一种半导体技术,属于数字电路的范畴。但是为了避免再乱造新词造成混乱,人们干脆将采用该技术的制程和生产出的元件或芯片也叫CMOS,比如数码相机的传感器就叫做CMOS。很不幸但也很庆幸的是,我们的电脑中就有一个用CMOS技术的芯片,所以这个芯片直接就叫做CMOS芯片,是个随机存储器RAM。不过现在这个芯片一般都是集成到主板的南桥芯片组里,你根本也看不到它,它是用来干嘛的呢?原来它就是用来保存当前电脑的硬件配置信息和其他一些有关信息的,所以这个CMOS芯片只是个保存数据的玩意。既然它只是个RAM(不是昂贵的NvRAM非易失性存储器,也没必要用NvRAM),那么就得给它一直供着电,否则掉电后数据就丢了。但是我们的电脑不能总开着机一直耗电玩,所以就必须得有一个后备电源准备着随时在电脑电源关闭后“接班”为CMOS芯片供电,好吧,放个3V锂电池就行了,所以主板上那个电池是为CMOS芯片在电脑电源关闭后继续供电的东西。
    说到这里大多数人都该明白了,BIOS是个程序,实现一系列功能,该程序存储在芯片中,这个芯片叫做BIOS芯片;而CMOS也是个芯片,是个RAM,里面存的是电脑硬件配置信息和电脑其他有关的东西,电脑启动了就由电脑电源为其供电,电脑关闭则由一个后备电池供电保证数据不丢失。
    那么CMOS既然是RAM,里面的东西就能够进行修改,用什么软件对CMOS修改呢?需要用CMOS设置程序,而这个设置程序又在哪里?好,请返回去看BIOS的第三条功能——CMOS设置程序,所以CMOS的设置程序是BIOS本身的一个功能,而BIOS又是存在BIOS芯片中的,所以原则上应该这样描述:用存储在BIOS芯片中的BIOS中的CMOS设置程序对CMOS进行设置。但是这种准确的阐述显得非常长,也有些拗口。于是干脆就把它简单称作“BIOS设置”或者叫“CMOS设置”。但是请一定要明白,CMOS设置才是正确的,而BIOS根本没有设置这一说,它本身只是一个程序,实现一些功能而已,BIOS程序本身不需要任何设置
    虽然BIOS本身不需要什么设置,然而BIOS毕竟是和底层硬件打交道的,硬件本身的规范也是五花八门,这需要BIOS也得及时跟上对硬件的支持。但是BIOS毕竟不是万能的,对硬件的支持难免会“挂一漏万”,要想随时对最新的硬件进行支持,就需要对BIOS程序进行升级更新。前已说过BIOS程序本身是存在BIOS芯片中的,对BIOS程序的升级更新其实就是替换掉BIOS芯片的旧内容并写入新内容,那么对于芯片来说就是刷新操作。先等一下,BIOS芯片不是个ROM吗,怎么能刷新呢?还是请返回有关BIOS芯片的类型说明上,上面说BIOS芯片常见只有一种,叫做NOR Flash,还有上古的EEPROM,其实,BIOS芯片从ROM发展到NOR Flash主要是经历了4代。下面就来说一下。
    最早的BIOS芯片真的就是ROM,或者叫PROM。BIOS程序是在主板生产中用特殊方法烧录进去的,一旦烧录进去,就只能读,不能改。如果真的想升级BIOS程序,就需要把电脑送回主板商那里,由主板商按新BIOS程序重新再烧录一个新BIOS芯片,再把这个新芯片插回到主板,如果BIOS芯片烧录过程中发现错误,这块芯片只能报废。由于ROM芯片只能写入一次,因此最早的PC机想升级BIOS是非常困难的。直到EPROM的出现,使得BIOS升级成为比较容易的事。
    EPROM,为Erasable Programmable ROM的词头缩写,中文直译即为可擦除可编程只读存储器。虽然它也是只读存储器,但是它却可以多次重复擦除和写入。它本身有一个小开窗,而暴露在外的这部分受到紫外线照射就会将芯片的内部数据擦除,当然这是物理方面的“乱擦”而已。如果实现BIOS程序的更新,还得需要两个东西,一个是芯片的擦除器,用来擦除EPROM的原有数据;另一个则是芯片的编程器,用来将新BIOS程序写进EPROM中,而且在写入过程中需要加一定的编程电压才可以。确认写入无错误后,还需要用不透光的纸或者其他东西把开窗的区域挡上,避免空气中的微弱紫外线长时间照射造成芯片内写入的资料损坏。虽然EPROM可以多次擦除和写入,使得升级BIOS显得轻松许多,但是非常苛刻的擦除、写入要求使得升级BIOS还是不那么容易。直到EEPROM或者叫E2PROM则是彻底让BIOS升级成为傻瓜式的操作。
    EEPROM中的EPROM和上段的意思一样,前面的E是Electrically(电)的缩写,EEPROM或者E2PROM即为电可擦除可编程只读存储器。对它进行擦除不需要什么紫外线,也不需要什么擦除器和编程器,只需要在擦除及写入软件中控制电压就可以完全重写EEPROM,这样升级BIOS变得非常方便。因为EEPROM可以任意擦写,这是很危险的(比如CIH就会对没有写保护的BIOS乱改导致主板Halt),所以EEPROM的BIOS芯片都会有一个开关用来切换只读和可写入状态以避免被乱写。刷新EEPROM的BIOS芯片,只需要做一个刷新程序,和要升级的BIOS程序及其他相关文件放在一起,重启电脑进入DOS,运行一些命令就可以轻松刷新BIOS芯片内容,一些主板厂商为了方便用户完全傻瓜式升级BIOS程序,开发出一些工具,并将这些工具直接也内置进了BIOS芯片中,从而方便升级BIOS。EEPROM虽然使得升级BIOS变得异常简单,但是由于EEPROM还是脱胎于EPROM,擦写时仍然需要一定的编程电压,EEPROM无论擦除还是写入都是以一个字节为单位,而且擦除和写入是同时进行的,当刷新BIOS的过程中一旦出现断电或其他异常情况,就会造成“写入不全、擦除也不全”的混合式假BIOS程序,而且一个字节为单位进行擦除速度也很慢。到了NOR Flash则是改变了这些缺点。
    NOR Flash,是非易失性存储器(NvRAM)的一种标准,其实它基本和上面那几个ROM标准诞生在同一时期,但是应用在BIOS芯片上则是最后的,NOR Flash由于是NvRAM的标准,可以在普通情况下任意擦除或写入,所以不再需要加编程电压。此外,NvRAM还可以实现大容量的存储,对于BIOS的后继UEFI是优点之一。还有NvRAM在擦除时是以一个块(Block)为单位进行整体擦除的,块是由芯片厂商人为规定的字节数,肯定不会是一个字节,因此擦除速度会很快,写入仍然按照一字节为单位,而且写入和擦除是分步进行的,只有确定全部块都擦除完毕才会进行写入操作,这些特点使得NOR Flash成为目前最大众的BIOS芯片。
    为什么BIOS程序更新后,需要重新运行CMOS设置程序设置CMOS参数?原来在升级BIOS程序过程中,原有BIOS内容已经被逐渐清掉,所以这时CMOS虽然还有硬件配置数据,但已经是无用的垃圾数据。当刷入新BIOS后,BIOS程序就恢复为初始状态,有些部分就会有变化,当读取CMOS时,发现和BIOS程序设置的不一样,可能会发生错误,所以就需要重新运行CMOS程序设置电脑参数并保存,则CMOS的硬件信息就和BIOS中的CMOS设置一致了,再次启动发现一致则继续完成后续过程,直到将引导交给OS,OK,本次BIOS更新成功完成
    以上说了这么多,总结如下:BIOS是一个程序,存在BIOS芯片中,而CMOS是一个集成在南桥的芯片,存的是电脑硬件配置信息,若想更改并保存起来,就需要用BIOS程序中的CMOS设置程序对其进行设置。

    原文出处:https://www.ithome.com/html/digi/317426.htm 【侵权删】

  • 相关阅读:
    C# 生成随机数
    C#经典机试题(猫叫)
    C#开发微信公众平台-就这么简单(附Demo)(转)
    对于初学者文档应该怎么编写呢?使用什么模板或格式?
    c#基础系列(转)
    如何写软件设计文档(转)
    C# 使用线程池,设置每个线程的执行时间,过了时间强制结束
    C#多线程编程总结
    最全的sublime插件整理
    Node.js安装及环境配置之Windows篇
  • 原文地址:https://www.cnblogs.com/Guhongying/p/9542497.html
Copyright © 2020-2023  润新知