1. 程式人生 > >linux內核設計的藝術--系統啟動第一步

linux內核設計的藝術--系統啟動第一步

中斷向量表 計算 字節 流程圖 我們 button 通過 操作 ram

計算機究竟是如何執行起來的呢,在我學習計算機的時候一直不是非常明確,可是近期借了本《linux內核設計的藝術》算是知道了計算機從按開機到啟動操作系統之間究竟做了些什麽。

這本書剛開始介紹的並非linux的啟動,而是linux啟動之前的一步,也就是在你按下了開機button之後進入系統引導之前計算機做的事情,這個時候做的事情是每臺執行操作系統的計算機都須要做的。大致的步驟也差點兒相同,OK,進入正題。

事實上在當我們按了開機鍵的時候,硬件電路將CPU的CS設置成0XF000,IP設置成0XFFF0,因此程序從0XFFFF0開始運行,而0XFFFF0處的指令剛好就是BIOS的第一條指令,於是BIOS開始運行指令,(BIOS程序哪裏來的呢?,BIOS是硬件廠家在生產硬件的時候就已經寫入到主板的RAM中了,當然如今不是寫入RAM了,由於如今的BIOS程序是能夠改動的)於是BIOS開始通過一系列指令進行硬件的檢查工作,並在0x00000處用1KB的空間構建了中斷向量表,在緊跟的256字節處載入了BIOS數據區,在57KB左右的區域載入了終端向量表所相應的中斷服務程序,經過了這些操作。BIOS程序會運行一個0x19中斷,這個中斷的服務程序把軟盤中的512B(第一個扇區)載入到了內存的0x07C00處,這樣系統就開始運行磁盤的引導程序了,而引導程序所做的工作就是將操作系統的啟動程序再載入到內存中。後面一篇再具體介紹linux操作系統載入到內存的過程。

總的流程圖差點兒相同就這樣:

技術分享

linux內核設計的藝術--系統啟動第一步