计算机开机启动流程详解
一、BIOS
1、BIOS是什么
BIOS:基本輸入輸出系統(tǒng)(Basic Input Output System),它是一組固化到計算機內(nèi)主板上一個ROM(Read-Only Memory)只讀存儲器,不需要供電就可保持數(shù)據(jù)不丟失芯片上的程序,BIOS保存著計算機最重要的基本輸入輸出的程序、系統(tǒng)設置信息、開機上電自檢程序和系統(tǒng)啟動自檢程序。
?
2、BIOS的功能及作用
a、POST上電自檢及初始化:執(zhí)行不同初始化和計算機硬件檢測的函數(shù)或例程,開機后BIOS最先被啟動,然后它會對電腦的硬件設備(CPU、640K基本內(nèi)存(640K BASE MEMORY)、1MB以上擴展內(nèi)存(EXTEND MEMORY)、ROM(READ-ONLY MEMORY,只讀存儲器)、主板、CMOS存儲器、串口、并口、顯卡、軟盤子系統(tǒng)、硬盤子系統(tǒng)、鍵盤)進行完全徹底的檢驗和測試
b、BIOS?系統(tǒng)操作系統(tǒng)啟動程序:完成?POST?自檢后,?ROM BIOS?將按照系統(tǒng)?CMOS?設置中的啟動順序搜尋軟硬盤驅(qū)動器及?CDROM?、網(wǎng)絡服務器等有效的啟動驅(qū)動器?,讀入操作系統(tǒng)引導記錄,然后將系統(tǒng)控制權交給引導記錄,由引導記錄完成系統(tǒng)的啟動。?
c、BIOS?中斷服務程序:開機時,BIOS會告訴CPU各硬件設備的中斷號,當用戶發(fā)出使用某個設備的指令后,CPU就根據(jù)中斷號使用相應的硬件完成工作,再根據(jù)中斷號跳回原來的工作。
d、程序服務:BIOS直接與計算機的I/O(Input/Output,即輸入/輸出)設備打交道,通過特定的數(shù)據(jù)端口發(fā)出命令,傳送或接收各種外部設備的數(shù)據(jù),實現(xiàn)軟件程序?qū)τ布闹苯硬僮?/p>
BIOS 系統(tǒng)設置程序: 機器部件的配置情況是存放在一塊可讀寫的 CMOS RAM 芯片中的,它保存著系統(tǒng) CPU 、軟硬盤驅(qū)動器、顯示器、鍵盤等部件的信息。 關機后,系統(tǒng)通過一塊后備電池向 CMOS 供電以保持其中的信息。如果 CMOS 中關于微機的配置信息不正確,會導致系統(tǒng)性能降低、零部件不能識別,并由此引發(fā)一系統(tǒng)的軟硬件故障
二、CMOS
1、CMOS是什么
CMOS:(Complementary Metal-Oxide-Semiconductor)主板上的一塊可讀寫的?RAM?芯片, CMOS用來保存計算機基本啟動信息(如日期、時間、啟動設置等)和當前系統(tǒng)的硬件配置和用戶某些參數(shù)的設定的芯片,CMOS的特性是可讀寫的,因此在電腦的主板上是用來保存BIOS的設置電腦硬件參數(shù)的數(shù)據(jù),這個芯片僅僅用來存儲數(shù)據(jù),CMOS是靠主板上的紐扣電池供電的,就算主機斷電也能保存數(shù)據(jù)。CMOS芯片一般被集成在南北橋芯片組里面。
?
2、CMOS芯片中存儲了哪些數(shù)據(jù)
CPU的類型、內(nèi)存的容量與類型、硬盤的類型和基本的參數(shù)
?
3、BIOS和CMOS的區(qū)別、聯(lián)系
聯(lián)系:BIOS中的系統(tǒng)設置程序是完成CMOS參數(shù)設置的手段,即通過BIOS設置程序?qū)MOS參數(shù)進行設置。CMOS既是BIOS設置系統(tǒng)參數(shù)的存放場所,又是BIOS設置系統(tǒng)參數(shù)的結果。
區(qū)別: bios保存系統(tǒng)的重要信息和設置系統(tǒng)參數(shù)的設置程序(BIOSSetup程序),而cmos是主板上的一塊可讀寫的RAM芯片,里面裝的是關于系統(tǒng)配置的具體參數(shù),其內(nèi)容可通過設置程序進行讀寫。
?
三、EC
EC(Embed Controller,嵌入式控制權)又稱開機控制芯片
1、EC是什么?
EC是一個16位單片機,它內(nèi)部本身也有一定容量的Flash來存儲EC的代碼。由于早期的EC主要管控鍵盤,所以也稱KBC(KeyBoard Controller,鍵盤控制器)。EC在系統(tǒng)中的地位絕不次于南北橋,在系統(tǒng)開啟的過程中,EC控制著絕大多數(shù)重要信號的時序。
在筆記本中,EC是一直開著的,無論你是在開機或者是關機狀態(tài),除非你把電池和Adapter完全卸除。 在關機狀態(tài)下,EC一直保持運行,并在等待用戶的開機信息。而在開機后,EC更作為鍵盤控制器,充電指示燈以及風扇等設備的控制,它甚至控制著系統(tǒng)的待機、休眠等狀態(tài)。
2、EC的作用
在系統(tǒng)關機的時候,只有RTC(實時時鐘)部分和EC部分在運行。RTC部分維持著計算機的時鐘和CMOS設置信息,而EC則在等待用戶按開機鍵。在檢測到用戶按開機鍵后,EC會通知整個系統(tǒng)把電源打開,CPU被RESET后,會去讀BIOS內(nèi)一個特定地址內(nèi)的指令(其實是一個跳轉(zhuǎn)指令,這個地址是由CPU硬件設定的)。在CPU讀到所發(fā)出的地址內(nèi)的指令后,執(zhí)行它被RESET后的第一個指令。在這個系統(tǒng)中,EC起到了橋接BIOS和南橋(或者說整個系統(tǒng))的作用。 EC是一個單獨的處理器,在開機前和開機過程中對整個系統(tǒng)起著全局的管理。而BIOS是在等EC把內(nèi)部的物理環(huán)境初始化后才開始運行的。如果說BIOS 是底層系統(tǒng)的話,那EC 似乎更加底層。 在南橋上還有一個功能塊就是電源管理單元(PM,Power Management)。 一般來說,他和EC來共同配合完成。這里包括從開機(power button)鍵按下后,啟動,待機,休眠,關機的全部功能。還包括對背光亮度,聲音等的控制等等。 至于現(xiàn)在Intel的Speed Step技術,也有部分功能是透過南橋來實現(xiàn)的(南橋發(fā)送SLP、STPCLK(sleep,Stop Clock)來實現(xiàn)睡眠、深睡眠等)。 (Embedded Controller,嵌入式控制器)在一組特定系統(tǒng)中,新增到固定位置,完成一定任務的控制裝置就稱為嵌入式控制器。
參考網(wǎng)址:https://blog.csdn.net/maomaovv/article/details/1549819
?
四、計算機開機啟動流程
Stage1:加電開機
按下電源的開關,電源馬上開始向主板和其它的設別開始供電,但此時的電壓還不是很穩(wěn)定,主板上的控制芯片組會向CPU發(fā)出并保持一個reset(重置)信號,讓CPU內(nèi)部自動恢復到初始狀態(tài)下,當芯片組檢測到電源已經(jīng)開始穩(wěn)定的供電了(從不穩(wěn)定到穩(wěn)定的過程中只需要一瞬間即可),芯片組則開始撤去reset信號,CPU馬上開始從FFFF0H出執(zhí)行指令,這個地址是在系統(tǒng)的BIOS的地址范圍內(nèi),其實放在這里的只是一條跳轉(zhuǎn)指令,指向BIOS中真正的啟動代碼地方。
?
Stage2:BIOS啟動,POST自檢(Power-On-self-test)
BIOS啟動后,第一件事情就是執(zhí)行POST自檢階段,主要針對系統(tǒng)的一些關鍵設備是否存在或者是功能是否正常,如:內(nèi)存、顯卡等,如果在POST過程中系統(tǒng)設備存在致命的問題,BIOS將會發(fā)出聲音來報告檢測過程中出現(xiàn)的錯誤,聲音的長短及次數(shù)對應著系統(tǒng)的錯誤類型。POST過程會非常快速,對用戶幾乎感覺不出來。
顯卡初始化:在POST過程中,BIOS會去查找顯卡的BIOS,并且去調(diào)用顯卡BIOS的代碼,由顯卡BIOS去初始化顯卡,這個時候顯示器一般會顯示一些初始化的信息,同時系統(tǒng)BIOS也會去查找其它設備的BIOS,分別調(diào)用她們的初始化代碼來初始化設備。
BIOS報錯聲音對應鏈接:https://baike.baidu.com/item/BIOS%E6%8A%A5%E8%AD%A6%E5%A3%B0/4231622?fr=aladdin
總之:如果硬件出現(xiàn)問題,主板會發(fā)出不同的蜂鳴,啟動中止,如果沒有問題,則顯示器會顯示相關信息。
?
Stage3:啟動順序
硬件自檢結束后,BIOS這個時候?qū)⒖刂茩嘟唤o下一階段的啟動程序,但是這個時候BIOS需要知道“下一個階段要啟動的程序具體放在了哪一個設備上”也就是我們平時說的BIOS下的啟動順序,但排在第一位的是優(yōu)先轉(zhuǎn)交的設備,這個叫做啟動順序。
啟動順序,我們?nèi)粘9ぷ髦锌梢蚤_機進入BIOS的去調(diào)節(jié)啟動設備的優(yōu)先級。
?
Stage4:主引導記錄
BIOS按照設定好的啟動順序,將控制權交給排在第一位的存儲設備,即開始從第一位設備中讀取設備的MBR,并且將程序放在0x7c000的內(nèi)存地址位中。
MBR:存儲設備中的第一個扇區(qū),磁盤最前面的512Byte,稱為“主引導扇區(qū)”(Master boot record,縮寫為MBR)
這個時候計算機會去讀取該設備的第一個扇區(qū),也就是讀取最前面的512個字節(jié)。如果這512個字節(jié)的最后兩個字節(jié)是0x55和0xAA,表明這個設備可以用于啟動;如果不是,表明設備不能用于啟動,BIOS會繼續(xù)去找下一個設備,并將控制權轉(zhuǎn)交給”啟動順序”中的下一個設備。
主引導記錄(MBR)的結構組成:
MBR很小,只有512字節(jié),存放程序很小,其主要作用是:告訴計算機在哪一個位置去找操作系統(tǒng)。
主引導記錄由三個部分組成:
1、1-446字節(jié):調(diào)用操作系統(tǒng)的程序
2、447-520字節(jié):分區(qū)表
3、511-512字節(jié):主引導記錄的簽名(0x55和0xAA)
?
分區(qū)表:
硬盤分區(qū)有很多好處。考慮到每個區(qū)可以安裝不同的操作系統(tǒng),”主引導記錄”因此必須知道將控制權轉(zhuǎn)交給哪個區(qū)。
分區(qū)表的長度只有64個字節(jié),里面又分成四項,每項16個字節(jié)。所以,一個硬盤最多只能分四個一級分區(qū),又叫做”主分區(qū)”。
每個主分區(qū)的16個字節(jié),由6個部分組成:
(1) 第1個字節(jié):如果為0x80,就表示該主分區(qū)是激活分區(qū),控制權要轉(zhuǎn)交給這個分區(qū)。四個主分區(qū)里面只能有一個是激活的。
(2) 第2-4個字節(jié):主分區(qū)第一個扇區(qū)的物理位置(柱面、磁頭、扇區(qū)號等等)。
(3) 第5個字節(jié):主分區(qū)類型。
(4) 第6-8個字節(jié):主分區(qū)最后一個扇區(qū)的物理位置。
(5) 第9-12字節(jié):該主分區(qū)第一個扇區(qū)的邏輯地址。
(6) 第13-16字節(jié):主分區(qū)的扇區(qū)總數(shù)。
注:最后的四個字節(jié)(”主分區(qū)的扇區(qū)總數(shù)”),決定了這個主分區(qū)的長度。也就是說,一個主分區(qū)的扇區(qū)總數(shù)最多不超過2的32次方。
?
Stage5:硬盤啟動
這時,計算機要將控制權轉(zhuǎn)交給硬盤的某個分區(qū),但是分區(qū)又會出現(xiàn)幾種情況:
1、卷引導記錄
四個分區(qū)中,只有一個是激活的,計算機開始讀取激活的第一個扇區(qū),叫“卷引導記錄"(Volume boot record,縮寫為VBR)
卷引導記錄主要作用:告訴計算機,操作系統(tǒng)在這個分區(qū),可以開始加載操作系統(tǒng)
?
2、擴展分區(qū)和邏輯分區(qū)
擴展分區(qū):分區(qū)表只有四項,因此規(guī)定有且僅有一個區(qū)可以被定義成”擴展分區(qū)”(Extended partition)。可以在擴展分區(qū)中繼續(xù)分區(qū)
邏輯分區(qū):指在擴展區(qū)里面又分成多個區(qū)。這種分區(qū)里面的分區(qū),就叫做”邏輯分區(qū)”(logical partition)
計算機先讀取擴展分區(qū)的第一個扇區(qū),叫做”擴展引導記錄”(Extended boot record,縮寫為EBR)。它里面也包含一張64字節(jié)的分區(qū)表,但是最多只有兩項(也就是兩個邏輯分區(qū))。
計算機接著讀取第二個邏輯分區(qū)的第一個扇區(qū),再從里面的分區(qū)表中找到第三個邏輯分區(qū)的位置,以此類推,直到某個邏輯分區(qū)的分區(qū)表只包含它自身為止(即只有一個分區(qū)項)。因此,擴展分區(qū)可以包含無數(shù)個邏輯分區(qū)。
?
3、啟動管理器
在這種情況下,計算機讀取”主引導記錄”前面446字節(jié)的機器碼之后,不再把控制權轉(zhuǎn)交給某一個分區(qū),而是運行事先安裝的”啟動管理器”(boot loader),由用戶選擇啟動哪一個操作系統(tǒng)。
Boot loader:是在操作系統(tǒng)內(nèi)核運行之前運行。可以初始化硬件設備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境
?
Stage6:操作系統(tǒng)啟動
控制權轉(zhuǎn)交給操作系統(tǒng)后,操作系統(tǒng)的內(nèi)核被載入內(nèi)存。
以Linux系統(tǒng)為例,先載入/boot目錄下面的kernel。內(nèi)核加載成功后,第一個運行的程序是/sbin/init。它根據(jù)配置文件(Debian系統(tǒng)是/etc/initab)產(chǎn)生init進程。這是Linux啟動后的第一個進程,pid進程編號為1,其他進程都是它的后代。
然后,init線程加載系統(tǒng)的各個模塊,比如窗口程序和網(wǎng)絡程序,直至執(zhí)行/bin/login程序,跳出登錄界面,等待用戶輸入用戶名和密碼。
?
轉(zhuǎn)載于:https://www.cnblogs.com/shao-ye/p/11202680.html
總結
以上是生活随笔為你收集整理的计算机开机启动流程详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WinForm中DataGridView
- 下一篇: 应用安全 - 渗透测试 - .net网站