打开主菜单

BIOSBasic Input/Output System的縮寫、中文:基本輸入輸出系統),在IBM PC相容系統上,是一种業界標准的韌體介面[1]。BIOS这个字眼是在1975年第一次在CP/M操作系统中出现。BIOS是个人电脑启动时加载的第一个软件(實際上自Intel Haswell平台以後,UEFI並不是系統開機時第一個被載入的軟體)。

BIOS
Elitegroup 761GX-M754 - AMIBIOS (American Megatrends) in a Winbond W39V040APZ-5491.jpg
American Megatrends BIOS
儲存位置 PROM
EPROM
快閃記憶體
常见制造商 American Megatrends
Insyde Software
Phoenix Technologies
Byosoft

BIOS用於電腦/PC平台開機時執行系统各部分的自我檢測(Power On Self Test),並載入引导程序(IPL)或儲存在儲存裝置(Storage Device)上的作業系統。在MS-DOS等舊式16位元作業系統中,DOS及DOS程式通過BIOS提供的BIOS中斷呼叫以控制硬件。現代作業系統會忽略BIOS提供的BIOS中斷呼叫並直接控制硬體。

目录

歷史编辑

BIOS最早可追溯到1970年代CP/M作業系統。隨後IBM發明了IBM PC,但是IBM當時並不開放BIOS,給IBM PC的複製(Clone)帶來了麻煩。隨後COMPAQ複製了IBM PC。Phoenix Technologies等公司亦複製了IBM PC的BIOS部件,可為當時的IBM PC相容機廠商提供BIOS。在PC啟動的過程中,BIOS擔負着檢測、初始化硬體的功能,以及啟動作業系統的責任。在早期,BIOS還提供一套稱為BIOS中斷呼叫的運行時的服務程式給作業系統及應用程式使用(尤其是DOSWindows 3.x等16位元作業系統,因為DOS嚴重依賴BIOS)。對於現代作業系統(如Windows NT系列和Linux)而言,BIOS的作用是初始化硬件和啟動作業系統,當作業系統啟動完畢後,硬體由作業系統及其驅動程式控制,但是BIOS仍然通過SMM負責ACPI電源管理等功能。BIOS程式存放於一個斷電後內容不會丟失的唯讀記憶體中;系統過電或被重置(reset)時,處理器第一條指令的位址會被定位到BIOS的記憶體中,讓初始化程式開始執行(實際上對於現在的x86平台而言,UEFI並不是開機時第一個被處理器執行的程式)。英特尔公司於2000年開發出可扩展固件接口(Extensible Firmware Interface),後被重命名為UEFI,用以规范UEFI韌體的开发。而支持UEFI规范的BIOS也常被称为UEFI BIOS(實際上許多早期的(2011年以前)採用UEFI/EFI規範的BIOS韌體並不支援UEFI開機,此種BIOS常見於OEM電腦)。之后为了推广EFI,业界多家著名公司共同成立统一可扩展固件接口论坛(UEFI Forum),英特尔公司将EFI 1.1规范贡献给业界,用以制订新的UEFI规范。2012年以後UEFI已在x86平台上得到普及。

啟動電腦原理编辑

當電腦的電源開啟,BIOS就會由主機板上的快閃記憶體(flash memory)執行,並將晶片組和記憶體子系統初始化。BIOS會把自己從快閃記憶體中,解壓縮到系統的主記憶體;並且從那邊開始執行。PC的BIOS程式碼也包含診斷功能,以保證某些重要硬體元件,像是鍵盤磁碟(BIOS在開機時會偵測硬碟的S.M.A.R.T.狀態)、輸出輸入埠等等,可以正常運作且正確地初始化。幾乎所有的BIOS都包含設定程式(BIOS Setup),可以進行BIOS的設定,如設定系統時間,設定開機裝置順序,啟用/禁用電腦的某些周邊裝置。主板的CMOS晶片(UEFI多使用NVRAM儲存UEFI設定值/硬體偵測資訊)用於儲存BIOS設定值及硬體偵測資訊。主板上的鈕扣電池用於讓CMOS晶片儲存BIOS設定值,以及電腦在斷電時依然可以讓系統時鐘運作。CMOS在沒有電力供應(CMOS所需電力由主板上的鈕扣電池提供)的情況下會遺失儲存的資料。

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有「啟動區塊」(Boot Block),屬於BIOS ROM的一部份,一開機就會被執行。這個程式會在執行BIOS前,驗證BIOS其他部分是否正確無誤(經由檢查碼,湊雜碼等等)。如果啟動區塊偵測到主要的BIOS已損壞,則可自動讀取USB隨身碟/光碟中的特定BIOS檔案並更新BIOS。主機板廠商/OEM經常發出BIOS升級來更新他們的產品和修正已知的問題。

CMOS的联系和区别编辑

BIOS与CMOS的关系编辑

CMOS是计算机上另一个重要的存储器。之所以提到它,是因为BIOS程序的設定值、硬件參數偵測值就保存在CMOS中。而且,在BIOS程式啟動计算机時,需要载入CMOS中的設定值。CMOS通常被整合在南橋晶片組中。UEFI系統則多用NVRAM儲存設定。

BIOS与CMOS的区别编辑

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

CMOS的內容在斷電會消失。所以,把主機板的電池拆出,便可重置其內容。另外,拆出電池也會重設時間。UEFI使用NVRAM儲存資料,主板電池沒有電量會導致時間不正確,可能會導致UEFI設定值遺失。可通過主板的有關Jumper重設UEFI設定。

介面卡上的BIOS晶片编辑

一台電腦系統可以包含多個BIOS韌體晶片。開機BIOS主要是包含存取基本硬體元件(例如鍵盤軟碟機)的程式碼。額外的介面卡,例如SCSISAS硬碟介面卡、網路介面卡顯示卡等,也會包含他們自己的BIOS,補充或取代系統BIOS程式碼中有關這些硬件的部份。 為了在開機時找到這些記憶體映射的擴充唯讀記憶體,PC BIOS會掃描實體記憶體,從0xC0000到0xF0000的2KB邊界中尋找0x55 0xaa記號,接在其後的是一個位元,表示有多少個擴充唯讀記憶體的512位元區塊佔據真實記憶體空間。接著BIOS馬上跳躍到指向由擴充唯讀記憶體所接管的位址,以及利用BIOS服務來提供使用者設定介面,註冊中斷向量服務供開機後的應用程式使用,或者顯示診斷的資訊。

确切地说界面卡上的ROM不能稱之為BIOS。它只是一个程式片段,用来初始化自身所在的界面卡。比如顯示卡的VGA BIOS,網路卡上用於網路開機的PXE Option ROM,RAID卡用於在系統開機時讓BIOS識別RAID硬碟及顯示RAID卡設定訊息的Option ROM(在開機時會尋找並執行Option ROM,此時會顯示Option ROM的相關訊息,按特定熱鍵可以執行該Option ROM的設定)。UEFI Option ROM基於UEFI Driver,可在UEFI Firmware Setup中執行UEFI Driver中的設定程式。

BIOS開機規範编辑

如果PCI擴充ROM(PCI Expansion ROM或Option ROM)要允許BIOS從SCSI卡、網路卡等裝置開機,Option ROM可通過註冊BIOS Boot Specification (BBS) API來達到這點。

供應商编辑

目前全球只有四家獨立BIOS供應商(IBV),曾經的Award SoftwareGeneral Software均被Phoenix Technologies收購,Microid ResearchUnicore Software收購,SystemSoftInsyde Software收購。

取代编辑

2006年,微软曾在WinHEC會議上表示UEFI將會取代已经使用20多年的BIOS。現時UEFI已經取代傳統BIOS,Intel將於2020年棄用Legacy BIOS,屆時Intel產品不再支援基於16位真實模式的UEFI CSM(UEFI相容性支援模組)[2]

相關鏈接编辑

外部連結编辑