打開(kāi)電源啟動(dòng)機(jī)器幾乎是電腦愛(ài)好者每天必做的事情,面對(duì)屏幕上出現(xiàn)的一幅幅啟動(dòng)畫面,我們一點(diǎn)兒也不會(huì)感到陌生,但是,計(jì)算機(jī)在顯示這些啟動(dòng)畫面時(shí)都做了些什么工作呢?相信有的朋友還不是很清楚,本文就來(lái)介紹一下從打開(kāi)電源到出現(xiàn)Windows的藍(lán)天白云時(shí),計(jì)算機(jī)到底都干了些什么事情。
首先讓我們來(lái)了解一些基本概念。第一個(gè)是大家非常熟悉的BIOS(基本輸入輸出系統(tǒng)),BIOS是直接與硬件打交道的底層代碼,它為操作系統(tǒng)提供了控制硬件設(shè)備的基本功能。BIOS包括有系統(tǒng)BIOS(即常說(shuō)的主板BIOS)、顯卡BIOS和其它設(shè)備(例如IDE控制器、SCSI卡或網(wǎng)卡等)的BIOS,其中系統(tǒng)BIOS是本文要討論的主角,因?yàn)橛?jì)算機(jī)的啟動(dòng)過(guò)程正是在它的控制下進(jìn)行的。BIOS一般被存放在ROM(只讀存儲(chǔ)芯片)之中,即使在關(guān)機(jī)或掉電以后,這些代碼也不會(huì)消失。
第二個(gè)基本概念是內(nèi)存的地址,我們的機(jī)器中一般安裝有32MB、64MB或128MB內(nèi)存,這些內(nèi)存的每一個(gè)字節(jié)都被賦予了一個(gè)地址,以便CPU訪問(wèn)內(nèi)存。32MB的地址范圍用十六進(jìn)制數(shù)表示就是0~1FFFFFFH,其中0~FFFFFH的低端1MB內(nèi)存非常特殊,因?yàn)樽畛醯?086處理器能夠訪問(wèn)的內(nèi)存最大只有1MB,這1MB的低端640KB被稱為基本內(nèi)存,而A0000H~BFFFFH要保留給顯示卡的顯存使用,C0000H~FFFFFH則被保留給BIOS使用,其中系統(tǒng)BIOS一般占用了最后的64KB或更多一點(diǎn)的空間,顯卡BIOS一般在C0000H~C7FFFH處,IDE控制器的BIOS在C8000H~CBFFFH處。
好了,下面我們就來(lái)仔細(xì)看看計(jì)算機(jī)的啟動(dòng)過(guò)程吧。
第一步: 當(dāng)我們按下電源開(kāi)關(guān)時(shí),電源就開(kāi)始向主板和其它設(shè)備供電,此時(shí)電壓還不太穩(wěn)定,主板上的控制芯片組會(huì)向CPU發(fā)出并保持一個(gè)RESET(重置)信號(hào),讓CPU內(nèi)部自動(dòng)恢復(fù)到初始狀態(tài),但CPU在此刻不會(huì)馬上執(zhí)行指令。當(dāng)芯片組檢測(cè)到電源已經(jīng)開(kāi)始穩(wěn)定供電了(當(dāng)然從不穩(wěn)定到穩(wěn)定的過(guò)程只是一瞬間的事情),它便撤去RESET信號(hào)(如果是手工按下計(jì)算機(jī)面板上的Reset按鈕來(lái)重啟機(jī)器,那么松開(kāi)該按鈕時(shí)芯片組就會(huì)撤去RESET信號(hào)),CPU馬上就從地址FFFF0H處開(kāi)始執(zhí)行指令,從前面的介紹可知,這個(gè)地址實(shí)際上在系統(tǒng)BIOS的地址范圍內(nèi),無(wú)論是Award BIOS還是AMI BIOS,放在這里的只是一條跳轉(zhuǎn)指令,跳到系統(tǒng)BIOS中真正的啟動(dòng)代碼處。
第二步: 系統(tǒng)BIOS的啟動(dòng)代碼首先要做的事情就是進(jìn)行POST(Power-On Self Test,加電后自檢),POST的主要任務(wù)是檢測(cè)系統(tǒng)中一些關(guān)鍵設(shè)備是否存在和能否正常工作,例如內(nèi)存和顯卡等設(shè)備。由于POST是最早進(jìn)行的檢測(cè)過(guò)程,此時(shí)顯卡還沒(méi)有初始化,如果系統(tǒng)BIOS在進(jìn)行POST的過(guò)程中發(fā)現(xiàn)了一些致命錯(cuò)誤,例如沒(méi)有找到內(nèi)存或者內(nèi)存有問(wèn)題(此時(shí)只會(huì)檢查640K常規(guī)內(nèi)存),那么系統(tǒng)BIOS就會(huì)直接控制喇叭發(fā)聲來(lái)報(bào)告錯(cuò)誤,聲音的長(zhǎng)短和次數(shù)代表了錯(cuò)誤的類型。在正常情況下,POST過(guò)程進(jìn)行得非?,我們幾乎無(wú)法感覺(jué)到它的存在,POST結(jié)束之后就會(huì)調(diào)用其它代碼來(lái)進(jìn)行更完整的硬件檢測(cè)。
第三步: 接下來(lái)系統(tǒng)BIOS將查找顯卡的BIOS,前面說(shuō)過(guò),存放顯卡BIOS的ROM芯片的起始地址通常設(shè)在C0000H處,系統(tǒng)BIOS在這個(gè)地方找到顯卡BIOS之后就調(diào)用它的初始化代碼,由顯卡BIOS來(lái)初始化顯卡,此時(shí)多數(shù)顯卡都會(huì)在屏幕上顯示出一些初始化信息,介紹生產(chǎn)廠商、圖形芯片類型等內(nèi)容,不過(guò)這個(gè)畫面幾乎是一閃而過(guò)。系統(tǒng)BIOS接著會(huì)查找其它設(shè)備的BIOS程序,找到之后同樣要調(diào)用這些BIOS內(nèi)部的初始化代碼來(lái)初始化相關(guān)的設(shè)備。
第四步: 查找完所有其它設(shè)備的BIOS之后,系統(tǒng)BIOS將顯示出它自己的啟動(dòng)畫面,其中包括有系統(tǒng)BIOS的類型、序列號(hào)和版本號(hào)等內(nèi)容。
第五步: 接著系統(tǒng)BIOS將檢測(cè)和顯示CPU的類型和工作頻率,然后開(kāi)始測(cè)試所有的RAM,并同時(shí)在屏幕上顯示內(nèi)存測(cè)試的進(jìn)度,我們可以在CMOS設(shè)置中自行決定使用簡(jiǎn)單耗時(shí)少或者詳細(xì)耗時(shí)多的測(cè)試方式。
第六步: 內(nèi)存測(cè)試通過(guò)之后,系統(tǒng)BIOS將開(kāi)始檢測(cè)系統(tǒng)中安裝的一些標(biāo)準(zhǔn)硬件設(shè)備,包括硬盤、CD-ROM、串口、并口、軟驅(qū)等設(shè)備,另外絕大多數(shù)較新版本的系統(tǒng)BIOS在這一過(guò)程中還要自動(dòng)檢測(cè)和設(shè)置內(nèi)存的定時(shí)參數(shù)、硬盤參數(shù)和訪問(wèn)模式等。
第七步: 標(biāo)準(zhǔn)設(shè)備檢測(cè)完畢后,系統(tǒng)BIOS內(nèi)部的支持即插即用的代碼將開(kāi)始檢測(cè)和配置系統(tǒng)中安裝的即插即用設(shè)備,每找到一個(gè)設(shè)備之后,系統(tǒng)BIOS都會(huì)在屏幕上顯示出設(shè)備的名稱和型號(hào)等信息,同時(shí)為該設(shè)備分配中斷、DMA通道和I/O端口等資源。
第八步: 到這一步為止,所有硬件都已經(jīng)檢測(cè)配置完畢了,多數(shù)系統(tǒng)BIOS會(huì)重新清屏并在屏幕上方顯示出一個(gè)表格,其中概略地列出了系統(tǒng)中安裝的各種標(biāo)準(zhǔn)硬件設(shè)備,以及它們使用的資源和一些相關(guān)工作參數(shù)。
第九步: 接下來(lái)系統(tǒng)BIOS將更新ESCD(Extended System Configuration Data,擴(kuò)展系統(tǒng)配置數(shù)據(jù))。ESCD是系統(tǒng)BIOS用來(lái)與操作系統(tǒng)交換硬件配置信息的一種手段,這些數(shù)據(jù)被存放在CMOS(一小塊特殊的RAM,由主板上的電池來(lái)供電)之中。通常ESCD數(shù)據(jù)只在系統(tǒng)硬件配置發(fā)生改變后才會(huì)更新,所以不是每次啟動(dòng)機(jī)器時(shí)我們都能夠看到“Update ESCD… Success”這樣的信息,不過(guò),某些主板的系統(tǒng)BIOS在保存ESCD數(shù)據(jù)時(shí)使用了與Windows 9x不相同的數(shù)據(jù)格式,于是Windows 9x在它自己的啟動(dòng)過(guò)程中會(huì)把ESCD數(shù)據(jù)修改成自己的格式,但在下一次啟動(dòng)機(jī)器時(shí),即使硬件配置沒(méi)有發(fā)生改變,系統(tǒng)BIOS也會(huì)把ESCD的數(shù)據(jù)格式改回來(lái),如此循環(huán),將會(huì)導(dǎo)致在每次啟動(dòng)機(jī)器時(shí),系統(tǒng)BIOS都要更新一遍ESCD,這就是為什么有些機(jī)器在每次啟動(dòng)時(shí)都會(huì)顯示出相關(guān)信息的原因。
第十步: ESCD更新完畢后,系統(tǒng)BIOS的啟動(dòng)代碼將進(jìn)行它的最后一項(xiàng)工作,即根據(jù)用戶指定的啟動(dòng)順序從軟盤、硬盤或光驅(qū)啟動(dòng)。以從C盤啟動(dòng)為例,系統(tǒng)BIOS將讀取并執(zhí)行硬盤上的主引導(dǎo)記錄,主引導(dǎo)記錄接著從分區(qū)表中找到第一個(gè)活動(dòng)分區(qū),然后讀取并執(zhí)行這個(gè)活動(dòng)分區(qū)的分區(qū)引導(dǎo)記錄,而分區(qū)引導(dǎo)記錄將負(fù)責(zé)讀取并執(zhí)行IO.SYS,這是DOS和Windows 9x最基本的系統(tǒng)文件。Windows 9x的IO.SYS首先要初始化一些重要的系統(tǒng)數(shù)據(jù),然后就顯示出我們熟悉的藍(lán)天白云,在這幅畫面之下,Windows將繼續(xù)進(jìn)行DOS部分和GUI(圖形用戶界面)部分的引導(dǎo)和初始化工作。
如果系統(tǒng)之中安裝有引導(dǎo)多種操作系統(tǒng)的工具軟件,通常主引導(dǎo)記錄將被替換成該軟件的引導(dǎo)代碼,這些代碼將允許用戶選擇一種操作系統(tǒng),然后讀取并執(zhí)行該操作系統(tǒng)的基本引導(dǎo)代碼(DOS和Windows的基本引導(dǎo)代碼就是分區(qū)引導(dǎo)記錄)。 上面介紹的便是計(jì)算機(jī)在打開(kāi)電源開(kāi)關(guān)(或按Reset鍵)進(jìn)行冷啟動(dòng)時(shí)所要完成的各種初始化工作,如果我們?cè)贒OS下按Ctrl+Alt+Del組合鍵(或從Windows中選擇重新啟動(dòng)計(jì)算機(jī))來(lái)進(jìn)行熱啟動(dòng),那么POST過(guò)程將被跳過(guò)去,直接從第三步開(kāi)始,另外第五步的檢測(cè)CPU和內(nèi)存測(cè)試也不會(huì)再進(jìn)行。我們可以看到,無(wú)論是冷啟動(dòng)還是熱啟動(dòng),系統(tǒng)BIOS都一次又一次地重復(fù)進(jìn)行著這些我們平時(shí)并不太注意的事情,然而正是這些單調(diào)的硬件檢測(cè)步驟為我們能夠正常使用電腦提供了基礎(chǔ)。
如果哪位網(wǎng)友知道本文的作者或作者本人看到此文請(qǐng)至本站論壇 pm 相關(guān)欄目編輯,我們將馬上將作者名加上。
出處:藍(lán)色理想
責(zé)任編輯:風(fēng)狗
|