計算機啓動過程理解雜記

純屬個人理解,如有錯誤,請多包涵。

最近在學網易雲課堂——Linux操作系統, 構建自己的內核
裏面講解到,計算機啓動以後,BIOS會首先運行起來,然後BIOS會去磁盤的啓動扇區讀取數據,判斷是否是引導程序(是否以55AA結尾),如果是引導程序,則加載進內存執行,引導程序會進一步加載整個操作系統。
對這個過程中產生了很多疑惑。

1. BIOS是怎麼啓動起來的?

按照以前的理解,所有的程序要運行,都必須先加載到內存中才能執行,那BIOS是怎麼加載到內存中的呢?
貌似計算機一啓動,BIOS中的程序就可以運行了?
查找了一些資料,我理解是這樣子的:
CPU有固化的指令,啓動後讀取的第一個物理地址是固定的。

主板BIOS映射到地址空間的地址也是確定的。

也就是說,計算機啓動以後,CPU讀取固定的地址xxx,這個地址通過地址總線,訪問到的就是BIOS程序所在的位置。

換名話說,CPU可以直接通過總線訪問BIOS。

這是不理解的地方,之前一直理解所有的地址都是給內存使用的。但是實際上,不僅主板BIOS,還有網卡,顯示的BIOS,都會映射到CPU的地址空間裏面來,CPU可以直接通過總線訪問這些存儲空間。

具體的機制還有待學習瞭解。

參考:
開機後的第一條指令
從打開電源到開機操作系統啓動的全過程
BIOS 與 CPU關係

2. BIOS訪問磁盤讀取第一個扇區不需要驅動嗎?

BIOS加載磁盤的第一個扇區,並判斷這個扇區是不是啓動扇區,那麼問題來了,BIOS爲什麼可以直接訪問磁盤,訪問磁盤不需要驅動嗎?
沒找到答案,留疑。

參考:
爲什麼顯卡、聲卡甚至鼠標鍵盤有驅動,而CPU、內存沒有驅動?驅動程序又是什麼?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章