BIOS

电子计算机启动时用于初始化硬件的通用固件系统

BIOS(英文:Basic Input/Output System),即基本输入输出系统,亦称为ROM BIOS、System BIOS、PC BIOS,是在通电启动阶段执行硬件初始化,以及为操作系统提供运行时服务的固件。BIOS最早随着CP/M操作系统的推出在1975年出现。BIOS预安装在个人电脑主板上,是个人电脑启动时加载的第一个软件。

BIOS
American Megatrends BIOS
存储位置PROM
EPROM
闪存
常见制造商安迈科技
系微
凤凰科技英语Phoenix Technologies
Byosoft

现在,BIOS的作用是初始化和测试硬件组件,以及从大容量存储设备(如硬盘)加载启动程序,并由启动程序加载操作系统;当加载操作系统后,BIOS通过系统管理模式操作系统提供硬件抽象。在DOS时代,BIOS为DOS操作系统提供键盘、显示及其他I/O设备的硬件抽象层

许多BIOS程序都只能在特定电脑型号或特定主板型号上执行。早年,BIOS存储于ROM芯片上;现在的BIOS多存储于闪存芯片上,这方便了BIOS的更新。

1980年代,IBM发明了IBM PC,但最初BIOS是IBM PC上唯一不开放的组件,给IBM PC的复制(Clone)带来了麻烦。随后COMPAQ复制了IBM PC,Phoenix Technologies等公司亦复制了IBM PC的BIOS部件,可为当时的IBM PC兼容机厂商提供BIOS。

统一可扩展固件接口(UEFI)正在逐步取代旧式BIOS,但仍有很多产品支持兼容模式,通过Legacy选项,不过这种支持已经逐渐减少。目前,UEFI与兼容支持模式(UEFI+CSM)成为主流,但最新的产品已经不再支持兼容模式,仅支持UEFI。

操作 编辑

系统启动 编辑

当电脑的电源开启,BIOS就会从主板上的ROM芯片执行,执行加电自检(POST),测试和初始化CPURAM直接存储器访问控制器、芯片组键盘软盘硬盘等设备。当所有的Option ROM被加载后,BIOS就试图从启动设备(如硬盘软盘光盘)加载启动程序,由启动程序加载操作系统。BIOS也可从网卡等设备启动。

设置画面 编辑

大约从80386 PC开始,个人电脑的BIOS ROM集成了设置程序(Setup)。主板的CMOS芯片用于存储BIOS设置值及硬件侦测值。主板上的钮扣电池用于让CMOS存储BIOS设置值,以及电脑在断电时依然可以让系统时钟运作。

现代的BIOS可以让用户选择由哪个启动设备启动电脑,如光盘驱动器硬盘软盘U盘等等。现代大多数BIOS支持图形化交互界面,有一些是厂商制作的,用户可以用鼠标键盘完成操作。

BIOS固件 编辑

由于BIOS与硬件系统集成在一起(将BIOS程序指令刻录在IC中),所以有时候也被称为固件。在大约1990年BIOS是保存在ROM只读存储器)中而无法被修改。因为BIOS的大小和复杂程度随时间不断增加,而且硬件的更新速度加快,令BIOS也必须不断更新以支持新硬件,于是BIOS就改为存储在EEPROM或者闪存中,让用户可以轻易更新BIOS。然而,不适当的执行或是终止BIOS更新可能导致电脑无法使用。为了避免BIOS损坏,有些主板有备份的BIOS(“双BIOS”主板)。现在的BIOS有“启动区块”(Boot Block),属于BIOS ROM的一部分,一引导就会被执行。这个程序会在执行BIOS前,验证BIOS其他部分是否正确无误(经由检验和等等)。如果启动区块侦测到主要的BIOS已损坏,则可自动读取U盘/光盘中的特定BIOS文件并更新BIOS。主板厂商/OEM经常发出BIOS升级来更新他们的产品和修正已知的问题。

操作系统服务 编辑

BIOS可通过BIOS中断调用MS-DOS操作系统及MS-DOS程序提供磁盘、键盘、显示等标准服务。通过BIOS中断调用访问视频硬件非常缓慢,因此,有些DOS程序(尤其是游戏)通过直接访问视频硬件提高效率。

现代操作系统仅在启动时使用BIOS中断调用[1]

微代码更新 编辑

P6微架构开始,Intel处理器支持可重新编程的微码。自K7微架构开始,AMD处理器支持可重新编程的微码。BIOS包含处理器微代码更新。微代码被加载到处理器的SRAM中,所以微代码更新并不是持久的,需要在每次系统启动时更新处理器微代码。操作系统也可以更新主处理器的微代码[2][3]

其他固件 编辑

现代BIOS包括英特尔管理引擎[4]AMD平台安全处理器和板载Video BIOS固件

超频 编辑

一些BIOS支持超频

现代用途 编辑

BIOS以16位实模式执行。现代操作系统以保护模式长模式执行,因为使用BIOS的16位实模式服务(如BIOS中断调用)是低效的。在1990年代,BIOS为操作系统提供APM旧式即插即用英语Legacy PnP桌面管理接口英语Desktop Management Interface功能;在2000年代至今,BIOS则为操作系统提供ACPISMBIOS英语SMBIOS功能[5][6][7]

CMOS的联系和区别 编辑

BIOS与CMOS的关系 编辑

CMOS是计算机上另一个重要的存储器。之所以提到它,是因为BIOS程序的设置值、硬件参数侦测值就保存在CMOS中。而且,在BIOS程序启动计算机时,需要加载CMOS中的设置值。CMOS通常被集成在南桥芯片组中。UEFI系统则多用NVRAM存储设置。

BIOS与CMOS的区别 编辑

二者的区别是,BIOS是存储在只读存储器EEPROM闪存),而CMOS为随机存储器(RAM);BIOS中存储的是程序,而CMOS中存储的是普通信息。

CMOS的内容在断电会消失。所以,把主板的电池拆出,便可重置其内容。另外,拆出电池也会重置时间

扩展程序(Option ROM) 编辑

扩展卡硬盘控制器显卡网卡可能包含BIOS扩展程序(即Option ROM),为BIOS提供附加的功能。在BIOS启动操作系统前,Option ROM被BIOS执行。部分内置于主板的设备(如板载RAID),其Option ROM可能包含在主板BIOS中。Option ROM通过BIOS启动规范英语BIOS Boot Specification扩展BIOS的启动功能。

系统初始化 编辑

系统在加电自检(POST)阶段,查找并执行Option ROM。Option ROM通过BIOS中断调用对硬件进行测试、初始化,并显示诊断信息或显示设置画面。

供应商 编辑

目前全球只有四家独立BIOS供应商(IBV),曾经的Award Software英语Award SoftwareGeneral Software英语General Software、Microid均被凤凰科技英语Phoenix Technologies收购,SystemSoft英语SystemsoftInsyde Software收购。

取代 编辑

英特尔2000年开发出可扩展固件接口(Extensible Firmware Interface),随后,由业界多家著名公司共同成立统一可扩展固件接口论坛(UEFI Forum),EFI被更名为UEFI,且由UEFI论坛制定新的UEFI规范。

现UEFI正在取代传统BIOS,且Intel已经于2020年弃用传统BIOS接口,届时Intel产品不再支持基于16位实模式的UEFI CSM(UEFI兼容性支持模块)[8]

参见 编辑

外部链接 编辑

  1. ^ From bootloader to kernel · Linux Inside. 0xax.gitbooks.io. [2020-09-18]. (原始内容存档于2020-08-06). 
  2. ^ KB4100347: Intel microcode updates. support.microsoft.com. [2020-09-20]. (原始内容存档于2020-09-08). 
  3. ^ Microcode - Debian Wiki. wiki.debian.org. [2020-09-19]. (原始内容存档于2020-06-20). 
  4. ^ ME - flashrom. www.flashrom.org. [2020-09-19]. (原始内容存档于2019-08-05). 
  5. ^ What is ACPI (Advanced Configuration and Power Interface)? - Definition from WhatIs.com. SearchWindowsServer. [2020-09-18]. (原始内容存档于2019-05-15) (英语). 
  6. ^ Changing hardware abstraction layer in Windows 2000 / XP – Smallvoid.com. [2020-09-18]. (原始内容存档于2020-02-11) (美国英语). 
  7. ^ What is ACPI?. www.spo-comm.de. [2020-09-18]. 
  8. ^ 存档副本 (PDF). [2019-03-17]. (原始内容存档 (PDF)于2019-02-01).