BIOS


BIOS (正體)

Free Web Hosting with Website Builder

基本输出输入系统BIOSBasic Input/Output System),是加载在电脑硬件系统上的最基本的软件程式码,主要的功能为:

  • 开机自我测试:检查中央处理器 (CPU) 及各控制器之状态是否正常。
  • 初始化动作:针对内存、主板芯片组、显卡及周边装置做初始化动作。
  • 纪录系统设定值:提供各元件的基本设定,如显示器键盘处理器内存等等。
  • 提供常驻程式库:提供操作系统或应用程式呼叫的中断常驻程式,如INT 10H等。
  • 加载操作系统:从储存装置中加载操作系统随机存取内存

BIOS 可以被视为专门与硬件沟通的微型操作系统,通常是使用针对相容 CPU 的组合语言写成的。(参考CMOS)

这个字眼是第一次由 CP/M 操作系统中出现,描述在开机阶段加载 CP/M 与硬件直接沟通的部份。(CP/M 机器通常只有ROM里面的一个简单开机加载程式) 最早的 DOS 版本有个档案叫做 "IBMIO.COM" 或是 "IO.SYS",类似于 CP/M 的磁盘 BIOS。

虽然 BIOS 的名称是字母缩写,但他也可能扮演的是希腊文字 βιος(bios) "生命"。

目录

历史

BIOS技术源于IBM PC/AT机器的流行以及第一台由康柏公司研制生产的“克隆”PC。在PC启动的过程中,BIOS担负著初始化硬件,检测硬件功能,以及引导操作系统的责任。在早期,BIOS还提供一套运行时的服务程式给操作系统及应用程式使用。BIOS程式存放于一个断电后内容不会丢失的只读内存中;系统过电或被重置 (reset) 时,处理器第一条指令的位址会被定位到 BIOS 的内存中,让初始化程式开始执行。英特尔公司从2000年开始,发明了可扩展固件接口(Extensible Firmware Interface),用以规范BIOS的开发。而支持EFI规范的BIOS也被称为EFI BIOS。之后为了推广EFI,业界多家著名公司共同成立了统一可扩展固件接口论坛(UEFI Forum),英特尔公司将EFI 1.1规范贡献给业界,用以制订新的国际标准UEFI规范。目前UEFI规范的最新版本是2.1b,而根据来自英特尔公司的预测,到2010年,全世界将有60%以上的个人电脑使用支持UEFI规范的BIOS产品。


如何启动电脑

当电脑的电源开启,BIOS 就会由主板上的快闪存储器(flash memory)执行,并将芯片组和内存子系统初始化。BIOS 会把自己从快闪存储器中,解压缩到系统的主内存;并且从那边开始执行。PC 的 BIOS 程式码也包含诊断功能,以保证某些重要硬件元件,像是键盘、磁盘装置、输出输入埠等等,可以正常运作且正确地初始化。几乎所有的 BIOS 都可以选择性地执行 CMOS 内存的设定程式; 也就是保存 BIOS 会存取的使用者自订设定资料(时间、日期、硬盘细节,等等)。IBM 技术参考手册中曾经包含早期 PC 和 AT BIOS 的 80x86 源代码。

现代的 BIOS 可以让使用者选择由哪个装置启动电脑,如 光驱硬盘软碟、USB 随身碟 等等。这项功能对于安装操作系统、以 LiveCD 启动电脑、以及改变电脑找寻开机媒体的顺序特别有用。

有些 BIOS 系统允许使用者可以选择要加载哪个操作系统 (例如从第二颗硬盘加载其他操作系统),虽然这项功能通常是由第二阶段的开机管理程式 (boot loader) 来处理。


BIOS 固件

由于 BIOS 与硬件系统整合在一起(将BIOS程式指令烧录在IC中),所以有时候也被称为固件。在大约 1990年 BIOS 是保存在 ROM (只读内存)中而无法被修改。因为 BIOS 的大小和复杂程度随时间不断增加,而且硬件的更新速度加快,令 BIOS 也必须不断更新以支援新硬件,于是 BIOS 就改为储存在 EEPROM 或者快闪存储器中,让使用者可以轻易更新 BIOS。然而,不适当的执行或是终止 BIOS 更新可能导致电脑或是装置无法使用。为了避免 BIOS 损坏,有些新的主板有备份的 BIOS (“双 BIOS”主板)。有些 BIOS 有“启动区块”,属于唯独内存的一部份,一开始就会被执行且无法被更新。这个程式会在执行 BIOS 前,验证 BIOS 其他部分是否正确无误 (经由检查码,凑杂码等等)。如果启动区块侦测到主要的 BIOS 已损坏,通常会自动由软驱启动电脑,让使用者可以修复或更新 BIOS。一部份主板会在确定 BIOS 已损坏后自动搜寻软驱看看有没有完整的 BIOS 档案。此时使用者可以放入储存 BIOS 档案的软碟 (例如由网上下载的更新版 BIOS 档案,或是自行备份的 BIOS 档案)。启动区块会在找到软碟中储存的 BIOS 档案后自动尝试更新 BIOS,希望以此修复已损坏的部份。硬件制造厂商经常发出 BIOS 升级来更新他们的产品和修正已知的问题。

接口卡上的 BIOS 芯片

一台电脑系统可以包含多个 BIOS 固件芯片。开机 BIOS 主要是包含存取基本硬件元件 (例如键盘软驱) 的程式码。额外的接口卡,例如 SCSI/SATA 硬盘接口卡、网络接口卡显卡等,也会包含他们自己的 BIOS,补充或取代系统 BIOS 程式码中有关这些硬件的部份。

为了在开机时找到这些内存映射的扩充只读内存,PC BIOS 会扫描实体内存,从 0xC0000 到 0xF0000 的 2KB 边界中寻找 0x55 0xaa 记号,接在其后的是一个位元,表示有多少个扩充只读内存的 512 位元区块占据真实内存空间。接着 BIOS 马上跳跃到指向由扩充只读内存所接管的位址,以及利用 BIOS 服务来提供使用者设定接口,注册中断向量服务供开机后的应用程式使用,或者显示诊断的资讯。

在 UNIX 操作系统上,有个工具可以让你倾列出你的 BIOS 固件: http://www.linkus.mine.nu/ree/

确切地说扩展卡上的ROM不能称之为BIOS。它只是一个程序片段,用来初始化自身所在的扩展卡

BIOS 开机规格

如果扩充的唯独内存想要更改系统开机启动的方式(像是从网络或是 SCSI 界面卡这些 BIOS 没有驱动的程式的装置)他可以使用 BIOS 开机规格 (BBS) 程式设计界面注册他的能力来达到这点。如果一旦这些扩充的唯独内存使用了 BBS APIs 注册了之后,使用者可以从 BIOS 的使用者界面选择这些可用的开机选项。这就是为什么大部分的 BBS 相容之 PC BIOS 皆不会允许使用者进入 BIOS 使用者界面,直到这些扩充的唯独内存已经完成执行且已经使用 BBS API 将他们自己注册之后才行。

主要的独立BIOS供应商(IBV)

参考

  • LinuxBIOS is a free software project aimed at replacing the normal BIOS.
  • Input/Output Base Address
  • Advanced Configuration and Power Interface
  • machine code
  • microchip
  • BIOS boot devices
  • BIOS Interrupt Calls
  • CMOS

外部链接







Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History