四川网站建设的公司排名,搜狗浏览器网页版入口,上海今天最新的新闻,企业网站设计制作教程在我们的电脑中#xff0c;都有一块黑色的小芯片。但是请千万不要小看它#xff0c;如果它损坏或者数据错误乱套的话#xff0c;恭喜#xff0c;如果不会“救回”这个小芯片#xff0c;那么这台电脑可以挂闲鱼卖零件了……
这个小芯片是什么呢#xff1f;对#xff0c;…
在我们的电脑中都有一块黑色的小芯片。但是请千万不要小看它如果它损坏或者数据错误乱套的话恭喜如果不会“救回”这个小芯片那么这台电脑可以挂闲鱼卖零件了……
这个小芯片是什么呢对它就是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设置一致了再次启动发现一致则继续完成后续过程直到将引导交给OSOK本次BIOS更新成功完成
以上说了这么多总结如下BIOS是一个程序存在BIOS芯片中而CMOS是一个集成在南桥的芯片存的是电脑硬件配置信息若想更改并保存起来就需要用BIOS程序中的CMOS设置程序对其进行设置。 上面已经说过BIOS是个程序存储在BIOS芯片中而现在的新式电脑用的基本都是UEFI启动早期的过渡电脑用的都是EFI启动。其实EFI或UEFI的一部分也是存储在一个芯片中由于它们在表面形式、基本功能上和BIOS差不多所以习惯上我们也把存储EFI/UEFI的芯片叫做EFI/UEFI BIOS芯片EFI/UEFI也叫做EFI/UEFI BIOS但在实际上它们和BIOS根本是不一样的所以最好还是把后面的“BIOS”尾巴去掉为好下面就来具体谈一下BIOS、EFI和UEFI。 前篇文指出BIOS用于计算机硬件自检、CMOS设置、引导操作系统启动、提供硬件I/O、硬件中断等4项主要功能因此BIOS程序可以分为若干模块主要有Boot Block引导模块、CMOS设置模块、扩展配置数据ESCD模块、DMI收集硬件数据模块其中引导模块直接负责执行BIOS程序本身入口、计算机基本硬件的检测和初始化ESCD用于BIOS与OS交换硬件配置数据DMI则充当了硬件管理工具和系统层之间接口的角色通过DMI用户可以直观地获得硬件的任何信息CMOS设置模块就是实现对硬件信息进行设置并保存在CMOS中是除了启动初始化以外BIOS程序最常用的功能。
BIOS本身是汇编语言代码是在16位实模式下调用INT 13H中断执行的由于x86-64是一个高度兼容的指令集也为了迁就BIOS的16位实模式的运行环境所以即使现在的CPU都已是64位如果还是在BIOS启动基本见于09年以前的主板在开机时仍然都是在16位实模式下执行的。16位实模式直接能访问的内存只有1MB就算你安了4G、8G或者16G还是32G内存到了BIOS上一律只先认前1MB。在这1MB内存中前640K称为基本内存后面384K内存留给开机必要硬件和各类BIOS本身使用了解了这些下面谈一下BIOS启动计算机的具体过程。
当按下电源开关时电源就开始向主板和其他设备供电这时电压还不稳定在早期的南北桥主板上由主板北桥向CPU发复位信号对CPU初始化稳定电压后复位信号便撤掉。而对于现在的单南桥主板则由CPU自身调整稳定电压达到初始化的目的当电压稳定后CPU便在系统BIOS保留的内存地址处执行跳转BIOS起始处指令开始执行POST自检。
在POST自检中BIOS只检查系统的必要核心硬件是否有问题主要是CPU、640K基本内存、显卡是否正常PS/2键盘控制器、系统时钟是否有错误等等。由于POST检查在显卡初始化以前因此在这个阶段如发生错误是无法在屏幕上显示的不过主板上还有个报警扬声器而且如果主板的8255外围可编程接口芯片没有损坏的话POST报警声音一定是会出来的。可以根据报警声的不同大致判断错误所在一般情况下一声短“嘀”声基本代表正常启动不同的错误则是不同的短“嘀”声和长“嘀”声组合。POST自检结束后BIOS开始调用中断完成各种硬件初始化工作。
硬件初始化工作中主要说明两点首先经过POST检测后电脑终于出现了开机启动画面这就是已经检测到了显卡并完成了初始化。但是请注意由于BIOS是在16位实模式运行因此该画面是以VGA分辨率640*480纵横比4:3显示的因为实模式最高支持的就是VGA。以前的小14-17寸CRT显示器由于都是4:3比例最高分辨率也比较低因此这个开机启动画面没有什么违和感但现在的液晶显示器基本上都是宽屏16:9的分辨率也较高因此在这样的显示屏下启动画面上的一切东西显示都可以说“惨不忍睹”——图形被拉长字体很大很模糊可以很明显看到显示字体的锯齿。第二BIOS只识别到由主引导记录MBR初始化的硬盘之所以说明这点是因为后续的EFI或UEFI采用了一种新的GUID磁盘分区系统GPT格式这种硬盘在BIOS下是无法识别的。硬件全部初始化完毕后接下来进入更新ESCD阶段。
在ESCD更新阶段中BIOS将对存储在CMOS中和操作系统交换的硬件配置数据进行检测如果系统硬件发生变动则会更新该数据否则不更新保持原状不变ESCD检测或更新结束后BIOS将完成最后一项工作就是启动操作系统。
最后这一步中BIOS根据CMOS中用户指定的硬件启动顺序读取相应设备的启动或引导记录引导相应设备上的操作系统启动进入操作系统此后便由操作系统接替BIOS负责硬件和软件间的相互通信。如果发现所有硬件都没有能引导操作系统的记录则会在屏幕上显示相应错误信息并将电脑维持在16位实模式。
虽然BIOS作为电脑加电启动所必不可少的部分但是从其于1975年诞生之日起近30余年16位汇编语言代码1M内存寻址调用中断一条条执行的理念和方式竟然一点都没有改变虽然经各大主板商不懈努力BIOS也有了ACPI、USB设备支持PnP即插即用支持等新东西但是这在根本上没有改变BIOS的本质而英特尔为了迁就这些旧技术不得不在一代又一代处理器中保留着16位实模式否则根本无法开机的。但是英特尔在2001年开发了全新的安腾处理器采用IA-64架构并推出了全新的EFI。后来证明安腾处理器、IA-64架构没有推广开来而EFI和后继的UEFI却发扬光大成为现在电脑的主要预启动环境。
EFI是Extensible Firmware Interface的词头缩写直译过来就是可扩展固件接口它是用模块化、高级语言主要是C语言构建的一个小型化系统它和BIOS一样主要在启动过程中完成硬件初始化但它是直接利用加载EFI驱动的方式识别系统硬件并完成硬件初始化彻底摒弃读各种中断执行。EFI驱动并不是直接面向CPU的代码而是由EFI字节码编写成EFI字节码是专用于EFI的虚拟机器指令需要在EFI驱动运行环境DXE下解释运行这样EFI既可以实现通配又提供了良好的兼容。此外EFI完全是32位或64位摒弃16位实模式在EFI中就可以实现处理器的最大寻址因此可以在任何内存地址存放任何信息。另外由于EFI的驱动开发非常简单基于EFI的驱动模型原则上可以使EFI接触到所有硬件功能在EFI上实现文件读写网络浏览都是完全可能的。iBIOS上的的CMOS设置程序在EFI上是作为一个个EFI程序来执行的硬件设置是硬件设置程序、而启动管理则是另一个程序保存CMOS又是另一个程序虽然它们在形式的Shell上是在一起的。
EFI在功能上完全等同于一个轻量化的OS但是EFI在制定时就定位到不足以成为专业OS的地位上首先它只是一个硬件和操作系统间的一个接口其次EFI不提供中断访问机制EFI必须用轮询的方式检查并解释硬件较OS下的驱动执行效率较低最后EFI只有简单的存储器管理机制在段保护模式下只将存储器分段所有程序都可以存取任何一段位置不提供真实的保护服务。伴随着EFI一种全新的GUID磁盘分区系统GPT被引入支持传统MBR磁盘只能存在4个主分区只有在创建主分区不足4个时可以建立一个扩展分区再在其上建立被系统识别的逻辑分区逻辑分区也是有数量的太多的逻辑分区会严重影响系统启动MBR硬盘分区最大仅支持2T容量对于现在的大容量硬盘来说也是浪费。GPT支持任意多的分区每个分区大小原则上是无限制的但实际上受到OS的规定限制不能做到无限不过比MBR的2T限制是非常重要的进步。GPT的分区类型由GUID表唯一指定基本不可能出现重复其中的EFI系统分区可以被EFI存取用来存取部分驱动和应用程序虽然这原则上会使EFI系统分区变得不安全但是一般这里放置的都是些“边缘”数据即使其被破坏一般也不会造成严重后果而且也能够简单的恢复回来。
当EFI发展到1.1的时候英特尔决定把EFI公之于众于是后续的2.0吸引了众多公司加入EFI也不再属于英特尔而是属于了Unified EFI Form的国际组织EFI在2.0后也遂改称为UEFIUEFI其中的EFI和原来是一个意思U则是Unified一元化、统一的缩写所以UEFI的意思就是“统一的可扩展固件接口”与前身EFI相比UEFI主要有以下改进
首先UEFI具有完整的图形驱动功能之前的EFI虽然原则上加入了图形驱动但为了保证EFI和BIOS的良好过渡EFI多数还是一种类DOS界面仍然是640*480VGA分辨率只支持PS/2键盘操作极少数支持鼠标操作不支持USB键盘和鼠标。到了UEFI则是拥有了完整的图形驱动无论是PS/2还是USB键盘和鼠标UEFI一律是支持的而且UEFI在显卡也支持GOP VBIOS的时候显示的设置界面是显卡高分辨率按640*480或1024*768显示因此画面虽小但很清楚但是这样会导致屏幕周围大片留黑不过鱼和熊掌不可兼得除非UEFI默认窗口大小也是最高分辨率
其次UEFI具有一个独特的功能安全启动而EFI是没有安全启动的安全启动Secure Boot实际上通俗的解释是叫做固件验证。开启UEFI的安全启动后主板会根据TPM芯片或者CPU内置的TPM记录的硬件签名对各硬件判断只有符合认证的硬件驱动才会被加载而Win8以后的Windows则是在操作系统加载的过程中对硬件驱动继续查签名符合Windows记录的硬件才能被Windows加载这在一定程度上降低了启动型程序在操作系统启动前被预加载造成的风险但是这也会造成系统安装变得垄断
无论EFI还是UEFI都必须要有预加载环境、驱动执行环境、驱动程序等必要部分组成为了支持部分旧设备如在UEFI下挂载传统MBR硬盘不支持UEFI启动的显卡在UEFI下仍然支持运行等还需要一个CSM兼容性支持模块、EFI或UEFI都是仅支持GPT磁盘引导系统的下面就具体谈一下EFI或UEFI启动计算机的过程。
一般地预加载环境和驱动执行环境是存储在UEFIUEFI BIOS芯片中的当打开电源开关时电脑的主要部件都开始有了供电与BIOS不同的是UEFI预加载环境首先开始执行负责CPU和内存是全部容量的初始化工作这里如出现重要问题电脑即使有报警喇叭也不会响因为UEFI没有去驱动8255发声不过预加载环境只检查CPU和内存如果这两个主要硬件出问题屏幕没显示可以立即确定另外一些主板会有提供LED提示可根据CPU或内存亮灯大致判断故障。
CPU和内存初始化成功后驱动执行环境DXE载入当DXE载入后UEFI就具有了枚举并加载UEFI驱动程序的能力在此阶段UEFI会枚举搜索各个硬件的UEFI驱动并相继加载完成硬件初始化工作这相比BIOS的读中断加载速度会快的多同样如加载显卡的UEFI驱动成功电脑也会出现启动画面硬件驱动全部加载完毕后最后同BIOS一样也得去启动操作系统。
在启动操作系统的阶段同样是根据启动记录的启动顺序转到相应设备仅限GPT设备如果启动传统MBR设备则需要打开CSM支持的引导记录引导操作系统并进入这里需要注意的是UEFI在检测到无任何操作系统启动设备时会直接进入UEFI设置页面而不是像BIOS那样黑屏显示相关信息。
综上对BIOS和UEFI启动计算机过程的叙述可以概括为BIOS先要对CPU初始化然后跳转到BIOS启动处进行POST自检此过程如有严重错误则电脑会用不同的报警声音提醒接下来采用读中断的方式加载各种硬件完成硬件初始化后进入操作系统启动过程而UEFI则是运行预加载环境先直接初始化CPU和内存CPU和内存若有问题则直接黑屏其后启动PXE采用枚举方式搜索各种硬件并加载驱动完成硬件初始化之后同样进入操作系统启动过程。
此外BIOS是16位汇编语言程序只能运行在16位实模式可访问的内存只有1MB而UEFI是32位或64位高级语言程序C语言程序突破实模式限制可以达到要求的最大寻址 https://www.ithome.com/html/digi/317426.htm
https://blog.csdn.net/Scythe666/article/details/79708293