計算機的啟動過程是一個復雜的過程,我們根據(jù)計算機的控制權在哪一部分手上,可以把這一過程劃分為以下四個階段:
BIOS→主引導記錄→Boot Loader→操作系統(tǒng)運行
一、BIOS
當電源開關啟動后,主板會通電并初始化固件(即芯片集等),而BIOS(Basic Input Output System 基本輸入輸出系統(tǒng))的運行代碼則早已被刷入集成在主板的ROM芯片中。
通電后會嘗試運行CPU,如果CPU運行不正常,則計算機會處于完全死機狀態(tài),同時主板會發(fā)出蜂鳴聲。
初始化CPU寄存器,比如初始化指令指針I(yè)P和代碼寄存器CS;他們的初始化的值將CPU執(zhí)行的第一條指令定位到BIOS的啟動代碼部分
倘若計算機為多處理器或者是多核處理器時,將會動態(tài)的選擇自引導處理器(BSP)。除了BSP外,剩下的處理器叫做應用處理器(AP)。AP將會停止運行直到他們被內核喚醒激活。
CPU從地址FFFF:0000H處(即復位向量)開始執(zhí)行指令(CS的初始值為0FFFFH,IP的初始值為0000H),這是一條跳轉指令,跳到BIOS的啟動代碼處并啟動BIOS。
BIOS初始化硬件設備
在BIOS中包含有自診斷程序等程序,而啟動了BIOS后,BIOS首先檢查計算機的硬件能否滿足運行的基本要求,即啟動硬件自檢(Power-On Self-Test POST)。此時計算機會先檢測顯卡是否有問題,若出現(xiàn)問題則停止BIOS同時發(fā)出蜂鳴聲警報并死機。檢測完顯卡后到其他的設備,此時會根據(jù)檢測結果在顯示器上顯示硬件設備的信息或錯誤信息。
二、主引導記錄
計算機中可能存在有許多個存儲設備,諸如硬盤、可移動硬盤、U盤等等,這些設備按用戶預先設置好的優(yōu)先級安排一個“啟動順序”。BIOS則根據(jù)這個順序將計算機的控制權交給排在第一位的存儲設備。
該設備的第一個扇區(qū)(即該設備最前面的512個字節(jié)),也叫做主引導記錄MBR(Master boot record )或引導扇區(qū)。引導加載程序(Boot Loader)的代碼便存在這個扇區(qū)里面。
主引導記錄的主要作用是告訴計算機到該存儲設備的哪一個位置去找操作系統(tǒng)。
我們知道硬盤可以進行分區(qū),而不同的分區(qū)可以安裝不同的操作系統(tǒng),這樣我們就必須要讓主引導記錄知道要將控制權交個哪一個分區(qū)。主引導記錄中的第447-510字節(jié)存儲的就是該存儲設備的分區(qū)表,總長度為64字節(jié)。一個硬盤只能分成四個一級分區(qū)(主分區(qū)),每個主分區(qū)的信息需要占用16個字節(jié)。這16個字節(jié)中的第一個字節(jié)表示該分區(qū)是否為激活分區(qū),若該字節(jié)為0x80則代表該分區(qū)為激活分區(qū),要將控制權交給這個分區(qū),因此四個主分區(qū)里面只能有一個是激活的。
排在第一位的存儲設備得到控制權后,計算機會讀取該設備的第一個扇區(qū)(即主引導記錄),倘若該扇區(qū)最后兩個字節(jié)為0x55和0xAA則表明這個設備可以用于啟動;否則將控制權交個“啟動順序”中的下一個設備。
將主引導記錄的內容加載到內存位置0 x7c00并跳轉到該位置以開始執(zhí)行MBR中的代碼,即運行主引導加載程序
將控制權交給主引導加載程序
三、Boot Loader
主引導加載程序在執(zhí)行時需要把計算機的控制權交給存儲設備的某個分區(qū),好讓計算機從該分區(qū)啟動操作系統(tǒng),那具體計算機是怎么知道要交個哪個分區(qū)呢?這里分為3種啟動情況
-
卷引導記錄(Volume boot record VBR)
因為四個主分區(qū)里面,只有一個是激活分區(qū),所以該情況下計算機會讀取激活分區(qū)的第一扇區(qū),判斷該分區(qū)是激活的之后就相當于告訴計算機,操作系統(tǒng)在這個分區(qū)里面了。
-
擴展分區(qū)和邏輯分區(qū)
“擴展分區(qū)”指這個分區(qū)里面又分成多個區(qū),這種分區(qū)里面的分區(qū)就叫做“邏輯分區(qū)”。計算機通過讀取“擴展分區(qū)”的第一個扇區(qū)(即“擴展引導記錄”),該扇區(qū)中也有一張64字節(jié)的分區(qū)表,但最多只有兩項(即兩個邏輯分區(qū))。接著讀取邏輯分區(qū)的第一個扇區(qū),再從里面找到下一個邏輯分區(qū)的位置。如此下去,擴展分區(qū)可以包含無數(shù)個邏輯分區(qū)。
-
啟動管理器
計算器讀取“主引導記錄”的前446字節(jié)的機器碼之后,不把控制權交個某一個分區(qū),而是運行“啟動管理器”(boot loader),然后由用戶選擇啟動哪一個操作系統(tǒng)
找到激活分區(qū)后,加載該分區(qū)的引導扇區(qū),然后運行該代碼
分區(qū)引導扇區(qū)完成的工作包括:引導加載程序將處理器從實模式切換到32位保護模式、從硬盤讀取內核
四、操作系統(tǒng)運行
操作系統(tǒng)的內核載入內存
此后,不同的操作系統(tǒng)會有不同的動作,但主要還是包含以下幾個方面:
加載底層設備驅動程序和所需要的服務
初始化內核
啟用登錄程序
五、順序流程圖
