2018年11月3日 星期六

UEFI BIOS 架構 (3) DXE

接下來介紹BIOS開機第三階段DXE(Driver Execution Environment), 它有一個DXE CORE, 裡面存放DXE Dispatcher和DXE Driver和一些初始化的code, 這些初始化的code最重要的就是建立System Table, System Table指向很多DXE階段的重要東西, 最重要的就是Boot Service和Runtime Service, 顧名思義Boot Service就是電腦只能在開機(boot)階段可以用的Service(Service可以解釋為函式), 而Runtime Service就是boot完進入OS後仍然可以使用的函式, 但要注意Legacy OS(比如DOS或WIN7)因為不會去辨認Runtime Table所以即使進入OS仍然不可使用Runtime Service, 再來介紹Dxe Dispatcer觀念, 其實和PEI很像, 如下圖



DXE階段有一種叫Priori File的東西, 它代表最高優先執行權, DXE Dispatcher會先去找Priori File, 查看它的紀錄決定哪些Driver優先被執行, 執行完後才開始正常的Dispatch流程, DXE Dispatcher和PEI一樣依照Dependency的順序去執行Driver所以不多作介紹, 另外DXE Driver總共有兩種, 第一種是普通的DXE Driver, 它在DXE階段就會被執行完畢, 第二種是Driver Model Driver, 它在BDS階段才會被連結並執行(以後會有專文介紹Driver Model Driver), 再來談一下Handle觀念, 在EFI BIOS裡Handle是一個指標, 它有可能指向一個設備, 指向一支DXE Driver, 又或是指向一個或多個Protocol, Protocol就像PEI階段的PPI, 以後會有專文介紹, 最後談一下DXE的結束, 當DXE Dispatcher已經Dispatch到沒有Driver可以執行了則BIOS開機流程就會進到最後一階段BDS, 可是進到BDS之後如果BDS發現還有Driver沒被安裝, 則它又會把程式控制權轉回DXE(BDS可能做了一些事讓之前沒辦法安裝的Driver可以被安裝)

沒有留言:

張貼留言