純屬個人理解,如有錯誤,請多包涵。
最近在學網易雲課堂——linux作業系統, 構建自己的核心
裡面講解到,計算機啟動以後,bios會首先執行起來,然後bios會去磁碟的啟動扇區讀取資料,判斷是否是引導程式(是否以55aa結尾),如果是引導程式,則載入進記憶體執行,引導程式會進一步載入整個作業系統。
對這個過程中產生了很多疑惑。
按照以前的理解,所有的程式要執行,都必須先載入到記憶體中才能執行,那bios是怎麼載入到記憶體中的呢?
貌似計算機一啟動,bios中的程式就可以執行了?
查詢了一些資料,我理解是這樣子的:
cpu有固化的指令,啟動後讀取的第乙個實體地址是固定的。
主機板bios對映到位址空間的位址也是確定的。
也就是說,計算機啟動以後,cpu讀取固定的位址***,這個位址通過位址匯流排,訪問到的就是bios程式所在的位置。
換名話說,cpu可以直接通過匯流排訪問bios。
這是不理解的地方,之前一直理解所有的位址都是給記憶體使用的。但是實際上,不僅主機板bios,還有網絡卡,顯示的bios,都會對映到cpu的位址空間裡面來,cpu可以直接通過匯流排訪問這些儲存空間。
具體的機制還有待學習了解。
參考:bios載入磁碟的第乙個扇區,並判斷這個扇區是不是啟動扇區,那麼問題來了,bios為什麼可以直接訪問磁碟,訪問磁碟不需要驅動嗎?開機後的第一條指令
從開啟電源到開機作業系統啟動的全過程
bios 與 cpu關係
沒找到答案,留疑。
參考:為什麼顯示卡、音效卡甚至滑鼠鍵盤有驅動,而cpu、記憶體沒有驅動?驅動程式又是什麼?
計算機啟動過程
計算機按下開機按鍵到啟動到作業系統的過程中,計算機到底經歷了哪些步驟呢 1 按下power bottom之後,計算機會經過一系列的上電過程 power squence 最後然讓cpu reset.cpu reset 表示主機板電已經上好了並且cpu開始工作 2 cpu開始工作時候緊接著就通過sb或者...
計算機啟動過程
從開啟電源到開始操作,計算機的啟動是乙個非常複雜的過程。我一直搞不清楚,這個過程到底是怎麼回事,只看見螢幕快速滾動各種提示.這幾天,我查了一些資料,試圖搞懂它。下面就是我整理的筆記。零 boot的含義 先問乙個問題,啟動 用英語怎麼說?回答是boot。可是,boot原來的意思是靴子,啟動 與靴子有什...
計算機啟動過程
對intel8086加電或復位的時候,cs 0xffff,ip 0x0000,處理機執行指令的時候是從低位址到高位址,這個位址距離記憶體頂部0xfffff,只差16個位元組,要是ip值超過0x000f,它與cs形成的實體地址就會因為溢位,而變回0x0001 所以在這個位址 cs 0xffff,ip ...