BIOS最后的璀璨

BIOS,几乎和PC有着同样的寿命,当年康柏第一台“克隆”PC诞生的时候,它为了简化启动的设置,引入了固化程序的概念,在启动时负责将PC初始化,然后再将控制权交给磁盘上的操作系统。而今天,“康柏”这个品牌已经消失,而BIOS却作为无心插柳柳成荫之作,延续至今。

BIOS伴随了我们十几年,在这么长的日子里,硬件升了一代又一代,电脑换了一台又一台,唯一不变的,就是BIOS。BIOS默默伴随着我们这帮从刚学会打ABCD的毛头孩子长大成人,当我们都变了,它却还是它最初的模样。

风华已去,佳人已老,BIOS在十几年的守护中,一步步逐渐落后于硬件的发展,趋于落寞,垂垂老暮。BIOS在PC启动时,将PC初始化,然后控制权交给磁盘上的操作系统,在后面的阶段,用户的感觉是在通过操作系统直接和硬件对话,可实际上,操作系统想要与硬件进行沟通,仍然必须通过BIOS。

BIOS,EFI,BIOS技术

我们熟悉的BIOS操作界面

BIOS的全称是Basic Input/Output System,中文名是基本输入输出系统。BIOS即是操作系统和计算机硬件之间通讯的桥梁,更是充当翻译的角色,从DOS时代起,微软的操作系统一直都是建立在“中断”这个概念上的,程序的切换依靠中断,系统的开关依靠中断,甚至我们按下了机箱上“Reset”键强制重启电脑,也还是中断在后台的作用。为了延续整套的16位中断系统,无论是CPU开发还是软件升级,都得考虑中断模式。

在x86系列处理器进入32位时代后,由于兼容性的原因,新的处理器保留了16位的运行方式,此后多次处理器的升级换代都保留了这种运行方式。甚至在含64位扩展技术的至强系列处理器中,处理器加电启动时仍然会切换到16位的实模式下运行。BIOS程序以16位汇编代码、寄存器参数调用方式、静态链接以及1MB以下内存固定编址的形式存在了十几年,虽然各大BIOS厂商近年来努力得对其进行改进,加入了许多新元素到产品中,如ACPI、USB支持等,但BIOS的根本性质没有得到任何改变,16位的运行工作环境是其最为致命的缺点。

现有的BIOS不但在工作方式存在令人不满之处,在工作能力上,也令人颇有微词。BIOS发展到现在,用来存放BIOS程序的芯片最大不过2Mb,换成实际字节就是256KB,面对这个数值,即使你想为BIOS编写一些新的功能,BIOS芯片中也不会有足够的空间让你写入。这也是BIOS这十几年来一直停滞不前的原因之一。

所以BIOS经过了这些年的辉煌期,已经逐渐脱离了时代的发展,成为了PC功能和性能进一步提升的瓶颈,只有寻求BIOS的接任者。而BIOS,必将在璀璨光环的环绕中,落下帷幕,成为历史的记录。

EFI接过接力棒

EFI的英文全称是Extensible Firmware Interface,中文名是可扩展固件接口,早在2006年的上半年,Intel曾经在IDF上进行过EFI的演示。要使用EFI系统,必须主板和操作系统都支持EFI功能,目前支持EFI功能的操作系统有Mac OS X、Vista和Server 2003。

BIOS,EFI,BIOS技术

EFI在开机时的作用和BIOS一样,就是初始化PC,但在细节上却又不一样。BIOS对PC的初始化,只是按照一定的顺序对硬件通电,简单地检查硬件是否能工作,而EFI不但检查硬件的完好性,还会加载硬件在EFI中的驱动程序,不用操作系统负责驱动的加载工作。 EFI的最革命之处,是颠覆了BIOS的界面概念,让操作界面和Windows一样易于上手。在EFI的操作界面中,鼠标成为了替代键盘的输入工具,各功能调节的模块也做的和Windows程序一样,可以说,EFI就是一个小型化的Windows系统。

对于操作系统来说,如果主板使用的是BIOS,那么操作系统就必须面对所有的硬件,大到主板显卡,小到鼠标键盘,每次重装系统或者系统升级,都必须手动安装新的驱动,否则硬件很可能无法正常工作。而基于EFI的主板则方便很多,因为EFI架构使用的驱动基于EFI Byte Code。EFI Byte Code有些类似于Java的中间代码,并不由CPU直接执行操作,而是需要EFI层进行翻译。对于不同的操作系统来说,EFI将硬件层很好地保护了起来,所有操作系统看到的,都只是EFI留给EFI Byte Code的程序接口,而EFI Byte Code又直接和Windows的API联系,这就意味着无论操作系统是Windows还是Linux,只要有EFI Byte Code支持,只需要一份驱动程序就能吃遍所有操作系统平台。