誰能給我科普一下UEFI?
01-25
其實BIOS我也沒太明白,只知道啟動電腦最開始進入的那個設置界面叫BIOS,最常用的就是安裝系統的時候調節啟動順序。
那麼現在BIOS將被淘汰,UEFI取而代之,啟動電腦最開始進入的那個界面叫做UEFI了?是不是可以不去關心他,或者認為是BIOS改了個名字可以嗎?
首先,自己看維基百科(英文)的UEFI條目,了解一下UEFI的定義和發起者然後為什麼要有UEFI,原因不少。IBM PC兼容機的BIOS有34年的歷史了,它主要的問題是一直無法徹底割斷和16位實模式下的BIOS啟動流程和中斷服務的聯繫。雖然這樣使得現代強大的i7 PC也能直接啟動從操作系統原理教材來看幾乎不能算個操作系統的DOS,但也使得啟動流程變得越來越複雜,並且沒有一個比較適合沒有以自底向上的方式學習過計算機的開發者的啟動管理器介面。因此後來出現了Open Firmware,出現了EFI,直至今天的UEFI。
1. BIOS是英文"Basic Input Output System"的縮略詞,直譯過來後中文名稱就是"基本輸入輸出系統"。其實,它是一組固化到計算機內主板上一個ROM晶元上的程序,這些代碼包括:
加電自檢程序,用於開機時對硬體的檢測。??系統初始化代碼,包括硬體設備的初始化、創建BIOS中斷向量等。??基本的外圍I/O處理的子程序代碼。??CMOS設置程序。我個人比較傾向於「傳統BIOS」叫Legacy, 「新式BIOS」叫UEFI。Legacy已經逐漸成為歷史,UEFI目前開始全面取代Legacy。UEFI全稱統一可擴展固件介面,是UEFI 論壇發布的一種操作系統和平台固件之間的標準。它之所以能迅速取代Legacy,源於硬體平台的發展以及UEFI相對於Legacy的巨大優勢。UEFI可編程性好,可擴展性好,性能高,安全性高。隨著64位CPU取代32位CPU,UEFI也完成了對Legacy的取代。傳統BIOS缺點:
隨著CPU及其他硬體設備的革新,BIOS逐漸成為計算機系統發展的瓶頸,主要體現在如下幾個方面:1)開發效率低:大部分BIOS代碼使用彙編開發,開發效率不言而喻。彙編開發的另一個缺點是使得代碼與設備的耦合程度太高,代碼受硬體變化的影響大。2)性能差:BIOS基本輸入/輸出服務需要通過中斷來完成,開銷大,並且BIOS沒有提供非同步工作模式,大量的時間消耗在等待上。3)功能擴展性差,升級緩慢:BIOS代碼採用靜態鏈接,增加硬體功能時,必須將16位代碼放置在0x0C0000~0x0DFFFF區間,初始化時將其設置為約定的中斷處理程序。而且BIOS沒有提供動態載入設備驅動的方案。4)安全性:BIOS運行過程中對可執行代碼沒有安全方面的考慮。5)不支持從硬碟2TB以上的地址引導:受限於BIOS硬碟的定址方式,BIOS硬碟采用32位地址,因而引導扇區的最大邏輯塊地址是2的32次方(換算成位元組地址,即2的32次方×512=2TB)。2. UEFI(Unified Extensible Firmware Interface,統一可擴展固件介面)定義了操作系統和平台固件之間的介面,它是UEFI Forum發布的一種標準。它只是一種標準,沒有提供實現。
其實現由其他公司或開源組織提供,例如英特爾公司提供的開源UEFI實現TianoCore和Phoenix公司的SecureCore Tiano。UEFI實現一般可分為兩部分:??平台初始化(遵循Platform Initialization標準,同樣由UEFI Forum發 布)。??固件-操作系統介面。UEFI發端於20世紀90年代中期的安騰系統。相對於當時流行的32位IA32系統,安騰是一種全新的64位系統,BIOS的限制對這種64位系統變得不可接受(BIOS也正是隨著32位系統被64位系統取代而逐漸退出市場的)。因為BIOS在64位系統上的限制,1998年英特爾公司發起了Intel Boot Initiative項目,後來更名為EFI(Extensible Firmware Interface)。2003年英特爾公司的安騰CPU計劃遭到AMD公司的x86_64 CPU頑強阻擊,x86_64 CPU時代到來,市場更願意接受漸進式的變化,英特爾公司也開始發布兼容32位系統的x86_64 CPU。安騰雖然沒有像預期那樣獨佔市場,EFI卻顯示出了它的價值。2005年,英特爾公司聯合微軟、AMD、聯想等11家公司成立了Unif ied EFI Forum,負責制定統一的EFI標準。第一個UEFI標準——UEFI 2.0在2006年1月發布。目前最新的UEFI標準是2013年發布的UEFI 2.4。UEFI的優點:UEFI能迅速取代傳統BIOS,得益於UEFI相對傳統BIOS的幾大優勢。(1)UEFI的開發效率傳統BIOS開發一般採用彙編語言,代碼多是硬體相關的代碼。而在UEFI中,絕大部分代碼採用C語言編寫,UEFI應用程序和驅動甚至可以使用C++編寫。UEFI通過固件-操作系統介面(BS和RT服務)為OS和OS載入器屏蔽了底層硬體細節,使得UEFI上層應用可以方便重用。(2)UEFI系統的可擴展性UEFI系統的可擴展性體現在兩個方面:一是驅動的模塊化設計;二是軟硬體升級的兼
容性。大部分硬體的初始化通過UEFI驅動實現。每個驅動是一個獨立的模塊,可以包含在固件中,也可以放在設備上,運行時根據需要動態載入。UEFI中每個表、每個Protocol(包括驅動)都有版本號,這使得系統的平滑升級變得簡單。(3)UEFI系統的性能相比傳統BIOS,UEFI有了很大的性能提升,從啟動到進入操作系統的時間大大縮短。性能的提高源於以下幾個方面:1)UEFI提供了非同步操作。基於事件的非同步操作,提高了CPU利用率,減少了總的等待時間。2)UEFI捨棄了中斷這種比較耗時的操作外部設備的方式,僅僅保留了時鐘中斷。外部設備的操作採用「事件+非同步操作」完成。3)可伸縮的遍歷設備的方式,啟動時可以僅僅遍歷啟動所需的設備,從而加速系統
啟動。(4)UEFI系統的安全性UEFI的一個重要突破就是其安全方面的考慮。當系統的安全啟動功能被打開後,UEFI在執行應用程序和驅動前會先檢測程序和驅動的證書,僅當證書被信任時才會執行這個應用程序或驅動。UEFI應用程序和驅動採用PE/COFF格式,其簽名放在簽名塊中。uefi是一個用以取代BIOS的新型固件 具體請自行百度 uefi目前僅支持64位win7和vista 原生支持win8以上系統 uefi的安全引導可以阻止未知程序引導 GPT分區表可以支持2t以上硬碟
推薦閱讀: