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 ...
随机推荐
- [原]unity中WWW isDone方法只能在主线程中调用
项目中要使用动态加载,原计划是生成WWW对象后,放到一个容器里.由一个独立线程轮询容器里的对象,如果www.isDone为true时,回调一个接口把结果交给请求方. new Thread( new T ...
- php处理字符串常用函数
1查找字符位置函数: strpos($str,search,[int]):查找search在$str中的第一次位置从int开始: stripos($str,search,[int]):函数返回字符串在 ...
- 面试相关的技术问题--WEB基础
1. servlet生命周期.各个方法 和工作原理servlet的生命周期包括三个阶段,分别是:初始化阶段:调用init()方法(整个生命周期内只被调用一次)响应客户端请求阶段:service()终止 ...
- apache ambari web页面无法访问解决办法
ambari-server启动成功,但是页面无法访问 作者:Bo liang链接:http://www.zhihu.com/question/34405898/answer/115001510来源:知 ...
- WCF编程系列(一)初识WCF
WCF编程系列(一)初识WCF Windows Communication Foundation(WCF)是微软为构建面向服务的应用程序所提供的统一编程模型.WCF的基本概念: 地址:定义服务的 ...
- [译]JavaScript 错误和处理
JavaScript的调试是一个噩梦:一些错误刚开始很难理解,并且给出的错误函数也经常是没用的.如果把错误都列出来并给出解决办法会不会很有用呢. 下面列出了JavaScript一系列的奇怪错误.对于同 ...
- Intellij IDEA配置优化--转载
1. 在线激活 安装IntelliJ IDEA 2016.1.2版本后,在联网状态下激活.Help --> Register,选择lisence server,粘贴地址http://www.it ...
- [leetcode] 399. Evaluate Division
我是链接 看到这道题,2个点和一个权值,然后想到图,但是leetcode就是这样,没给数据范围,感觉写起来很费劲,然后就开始用图来做,添加边的时候,注意正向边和反向变,然后查询的时候,先判断2个点是否 ...
- python isinstance 判断各种类型的小细节
1. 基本语法 isinstance(object, classinfo) Return true if the object argument is an instance of the class ...
- read/write数据读写传输方式(转)
前言 笔者本打算撰写一篇讲解标准I/O(缓存I/O)的博文,但是发现已经有网友做过同样的工作,并且工作质量上乘,特转载于此. 原文地址http://lenky.info/archives/2012/0 ...