純屬個人理解,如有錯誤,請多包涵。
最近在學網易雲課堂——Linux操作系統, 構建自己的內核
裏面講解到,計算機啓動以後,BIOS會首先運行起來,然後BIOS會去磁盤的啓動扇區讀取數據,判斷是否是引導程序(是否以55AA結尾),如果是引導程序,則加載進內存執行,引導程序會進一步加載整個操作系統。
對這個過程中產生了很多疑惑。
1. BIOS是怎麼啓動起來的?
按照以前的理解,所有的程序要運行,都必須先加載到內存中才能執行,那BIOS是怎麼加載到內存中的呢?
貌似計算機一啓動,BIOS中的程序就可以運行了?
查找了一些資料,我理解是這樣子的:
CPU有固化的指令,啓動後讀取的第一個物理地址是固定的。
主板BIOS映射到地址空間的地址也是確定的。
也就是說,計算機啓動以後,CPU讀取固定的地址xxx,這個地址通過地址總線,訪問到的就是BIOS程序所在的位置。
換名話說,CPU可以直接通過總線訪問BIOS。
這是不理解的地方,之前一直理解所有的地址都是給內存使用的。但是實際上,不僅主板BIOS,還有網卡,顯示的BIOS,都會映射到CPU的地址空間裏面來,CPU可以直接通過總線訪問這些存儲空間。
具體的機制還有待學習瞭解。
2. BIOS訪問磁盤讀取第一個扇區不需要驅動嗎?
BIOS加載磁盤的第一個扇區,並判斷這個扇區是不是啓動扇區,那麼問題來了,BIOS爲什麼可以直接訪問磁盤,訪問磁盤不需要驅動嗎?
沒找到答案,留疑。