BIOS
转自BIOS
BIOS(Basic Input/Output System的缩写、中文:基本输入输出系统),在IBM PC兼容机上,是一种业界标准的固件接口。BIOS这个字眼是在1975第一次由CP/M操作系统中出现。BIOS是个人电脑启动时加载的第一个软件。
BIOS用于计算机开机时执行系统各部分的的自检,并启动引导程序或装载在内存的操作系统。此外,BIOS还向操作系统提供一些系统参数。系统硬件的变化是由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升级来更新他们的产品和修正已知的问题。
与CMOS的联系和区别
BIOS与CMOS的关系
CMOS是计算机上另一个重要的存储器。之所以提到它,是因为BIOS程序的设置结果就保存在CMOS中。而且,在BIOS程序引导计算机启动后,计算机需要载入CMOS中的用户信息和常规设置后才能正常使用。
BIOS与CMOS的区别
二者的区别是,BIOS是存储在只读存储器(EEPROM),而CMOS为随机存储器(RAM);BIOS中存储的是程序,而CMOS中存储的是普通信息。
EEPROM即是我们常用的闪存盘和各类存储卡,因此我们可以更新BIOS,其内容亦能在断电后保存。
CMOS RAM的内容在断电会消失。所以,把主板的电池拆出,便可重置其内容。另外,拆出电池也会重置时间。
适配器上的BIOS芯片
一台电脑系统可以包含多个BIOS固件芯片。开机BIOS主要是包含访问基本硬件组件(例如键盘或软盘驱动器)的代码。额外的适配器,例如SCSI/SATA硬盘适配器、网络适配器、显卡等,也会包含他们自己的BIOS,补充或取代系统BIOS代码中有关这些硬件的部份。 为了在开机时找到这些存储器映射的扩充只读存储器,PC BIOS会扫描物理内存,从0xC0000到0xF0000的2KB边界中查找0x55 0xaa记号,接在其后的是一个比特,表示有多少个扩充只读存储器的512位区块占据真实存储器空间。接着BIOS马上跳跃到指向由扩充只读存储器所接管的地址,以及利用BIOS服务来提供使用者设置接口,注册中断矢量服务供开机后的应用程序使用,或者显示诊断的信息。
确切地说扩展卡上的ROM不能称之为BIOS。它只是一个程序片段,用来初始化自身所在的扩展卡。
BIOS开机规格
如果扩充的只读存储器想要更改系统开机启动的方式(像是从网络或是SCSI界面卡这些BIOS没有驱动的程序的设备)他可以使用BIOS开机规格(BBS)程序设计界面注册他的能力来达到这点。如果一旦这些扩充的只读存储器使用了BBS APIs注册了之后,使用者可以从BIOS的使用者界面选择这些可用的开机选项。这就是为什么大部分的BBS兼容之PC BIOS皆不会允许使用者进入BIOS使用者界面,直到这些扩充的只读存储器已经完成运行且已经使用BBS API将他们自己注册之后才行。
供应商
目前全球只有四家独立BIOS供应商,曾经的Award Software与General Software均被Phoenix Technologies收购,Microid Research被Unicore Software收购,SystemSoft被Insyde Software收购。
- Phoenix Technologies,美国凤凰科技。
- American Megatrends,美国安迈科技,目前为全球最大的BIOS供应商。之前曾被凤凰科技超过。
- Insyde Software,台湾系微公司。
- Byosoft,新兴厂商,中国大陆的百敖软件公司。
取代
2006年,微软曾在WinHEC会议上表示UEFI将会取代已经使用了20多年的BIOS。这两个技术都在电脑启动的时候发出第一个命令指示,并使得操作系统能够被顺利加载。
BIOS的更多相关文章
- 戴尔灵越15-5000/3558等系列修改BIOS设置U盘启动
今天在电脑群遇到一个群友的机型是戴尔灵越15-5000,他问我这款机器怎么设置U盘启动. 看到它的BIOS界面之后,我来了点兴趣.. 本文供图:辽宁沈阳-打老虎(921407164) 电脑群:电脑爱好 ...
- Win8换成Win7系统问题小结(修改主板BIOS方法)
问题描述: 笔记本电脑W8系统使用不习惯,想要换成W7系统,但不管是用光盘安装亦或是用U盘安装,在设置系统启动项的时候,选择从光盘启动或从U盘启动,但是回车点了之后没反应. 下面就说说问题的原因及解决 ...
- 获取Linux主机的CPU、内存、主板、BIOS的信息(Centos)
#!/usr/bin/env python #coding:utf-8 import subprocess import re def Cmd_Exec(cmd): ''' 执行获取信息命令 :par ...
- Android Studio :enable vt-x in your bios security,已经打开还是报错的解决方法
quote: For Windows 10: First of all, install the intelhaxm-android.exe located in the folder SDK\ext ...
- Vmware虚拟机进入BIOS方法
在VMware里面如何进入BIOS是个头疼的问题,因为启动界面一闪而过(下面两个图如果不设置bios.bootDelay,基本上很难抓到),即使你狂按F2或ESC键(ESC: 调整启动顺序;F2: 进 ...
- BIOS设置和CMOS设置的区别与联系
BIOS是主板上的一块EPROM或EEPROM芯片,里面装有系统的重要信息和设置系统参数的设置程序(BIOS Setup程序): CMOS是主板上的一块可读写的RAM 芯片,里面装的是关于系统配置的具 ...
- samsung bios configuration怎么设置U盘启动
1.用第三方U盘制作软件制作U盘启动盘,并下载正版系统镜像或纯净版镜像,下载后缀为ISO的镜像文件拷贝到U盘根目录.2.开机按F2键进入BIOS设置.选择BOOT选项—Secure Boot设置为“D ...
- Android Studio的配置问题——Intel HAXM is required to run this AVD,VT-x is disabled in BIOS;
Intel HAXM is required to run this AVD,VT-x is disabled in BIOS;Enable VT-x in your BIOS security se ...
- python在windows下获取cpu、硬盘、bios、主板序列号
测试 此处使用的是wmi库,可以去google里面搜索“python wmi” import os, sysimport timeimport wmi,zlib def get_cpu_info() ...
- BIOS MCSDK 2.0 学习笔记(一)
MCSDK简介 BIOS MCSDK是为TI的高性能多核DSP提供的一套组件,包括: SYS/BIOS实时操作系统 Chip support libraries, drivers, and basic ...
随机推荐
- 【区间覆盖问题】uva 10020 - Minimal coverage
可以说是区间覆盖问题的例题... Note: 区间包含+排序扫描: 要求覆盖区间[s, t]; 1.把各区间按照Left从小到大排序,如果区间1的起点大于s,则无解(因为其他区间的左起点更大):否则选 ...
- jquery checkbox全选,全不选,反选方法,jquery checkbox全选只能操作一次
jquery checkbox全选,全不选,反选方法, jquery checkbox全选只能操作一次, jquery checkbox全选只有第一次成功 >>>>>&g ...
- Tinymce4 中Ajax多次加载时,会出现菜单在第二次进入时,显示的下拉菜单在左上角
在项目中,ajax多次导入tinymce的js包 参考了: Having issues with Multiple AJAX refresh and TinyMCE load page with ti ...
- C#学习笔记9:C#中的变量、转义符、显式转换和隐式转换
1.变量的特性:可以重复的赋值 int a=4; a=9; 2.常量:const int number=10:这个常量不可变 如果你声明的变量,不想被其他人修改,那么就修饰为常量 声明在类的下面, ...
- 【转】ASP.NET MVC 使用 FluentScheduler 定时器计划任务
MacBook Pro 只有四个 USB Type-C 接口是否错了? 一项新技术的诞生总会对已存在的事物造成冲击或影响,如果大家都害怕冲击与影响,那这个世界永远像现在不变就行了,大家都好好的,待在自 ...
- Json字符与Json对象的相互转换
Json字符与Json对象的相互转换方式有很多,接下来将为大家一一介绍下,感兴趣的朋友可以参考下哈,希望可以帮助到你 1>jQuery插件支持的转换方式: 复制代码 代码如下: $.parseJ ...
- Java实战之04JavaWeb-02Request和Response
一.Response和Request的生态环境 二.HttpServletResponse---代表响应对象 1.设置状态码 void setStatus(int sc) 状态码: 200:一切正常 ...
- poj3190 stall revertation
Stall Re ...
- HowTo: SVN undo add without reverting local changes
Reference: http://stackoverflow.com/questions/5083242/undo-svn-add-without-reverting-local-edits svn ...
- Wooden Sticks
Wooden Sticks Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total ...