2016-02-25 181 views
2

我對boot-loader有一些瞭解,但我必須知道bios代碼如何跳轉到boot-loader以及它何時初始化I/O設備以及bios的功能是什麼?bios的功能是什麼?

並且是bios負責選擇引導扇區以及它將如何選擇引導扇區?

也請告訴我重置向量將如何直接指向bios區域?

+0

的可能的複製[如何是一個現代操作系統使用的BIOS?(http://stackoverflow.com/questions/2540266/how-is-the-bios-used-by-a-modern-os) – hft

回答

1

我有引導裝載程序有一定的瞭解,但我知道BIOS代碼如何跳轉到引導裝載

當從硬盤啓動,BIOS會讀取從啓動加載程序主引導記錄關閉硬盤的第一個扇區,並在0000:7C00(或可能爲07C0:0000 - in real mode, these refer to the same address)將其加載到內存中。

它什麼時候初始化I/O設備,BIOS有什麼功能?

Minimal Intel Architecture Boot Loader給出了BIOS執行,因爲它初始化系統的基本功能的簡明概要。在初始化的推薦順序的主要要點如下:

電(復位向量)處理
模式選擇
準備內存初始化
內存初始化
POST內存初始化
雜項平臺啓用
中斷啓用
處理器中斷模式
中斷向量表(IVT)
中斷描述符表(IDT)
定時器
存儲器緩存控制
處理器發現和初始化
I/O設備
PCI設備發現
引導一個傳統OS
存儲器映射
非易失性(NV)存儲

注意:內存映射非易失性存儲部分在引導傳統OS部分之後的大綱中列出,但如文檔中所述,並且如您所期望的那樣,映射系統內存在處理之前發生轉到引導加載程序並引導操作系統。此外,在BIOS初始化期間,也會對非易失性存儲器進行一些訪問。(例如,BIOS可以讀取存儲在CMOS設置,以確定主引導設備)

和是BIOS負責選擇引導扇區以及將如何選擇引導扇區?

BIOS根據設備的類型定位引導扇區。

在大多數情況下(除了CD/DVD光盤)的啓動扇區將是設備的LBA 0(或等價地,CHS 0,0,1) - 看到特定設備的規格,找出解決它使用的模式。對於CD/DVD光盤,啓動扇區是LBA 17

欲瞭解更多信息,請參閱OSDev the quoted article

也請告訴我復位向量如何直接指向bios區域?

CPU就是這樣設計的。在置位復位信號後,CPU將其寄存器,包括指令指針設置爲已知值。例如,on most x86 systems,這是FFFFFFF0h,並且該地址映射到BIOS ROM中。 This answer提供了更詳盡的解釋。

+1

感謝您對@ user1354557有價值的信息,也可以請我幫助我訪問中斷向量表。 –

+0

您可以使用SIDT/LIDT指令獲取/設置IVT的地址。默認情況下,它位於0000:0000。在構建IVT之前,您必須初始化內存。 – user1354557

+1

我不明白SIDT/LIDT指令是什麼意思,你能給我一些解釋嗎? @ user1354557 –