袁茜茜
(北京信息科技大學(xué) 計(jì)算機(jī)學(xué)院,北京 100101)
探究計(jì)算機(jī)的啟動(dòng)過(guò)程
袁茜茜
(北京信息科技大學(xué) 計(jì)算機(jī)學(xué)院,北京 100101)
詳細(xì)研究了計(jì)算機(jī)的開(kāi)機(jī)啟動(dòng)及系統(tǒng)加載等內(nèi)容,結(jié)合硬件和軟件之間的協(xié)同調(diào)用機(jī)制,給出了從計(jì)算機(jī)觸發(fā)開(kāi)機(jī)按鈕到加載操作系統(tǒng),最后出現(xiàn)開(kāi)機(jī)界面整個(gè)過(guò)程的相對(duì)完善的論述。對(duì)于計(jì)算機(jī)初學(xué)者全面認(rèn)識(shí)開(kāi)機(jī)過(guò)程十分有幫助。
BIOS系統(tǒng);POST自檢;主引導(dǎo)記錄;文件系統(tǒng)
對(duì)于大多數(shù)非計(jì)算機(jī)類(lèi)相關(guān)專(zhuān)業(yè)的人來(lái)說(shuō),對(duì)計(jì)算機(jī)的認(rèn)識(shí)只停留在掌握其基本操作的層面上,并不十分了解其內(nèi)部運(yùn)行原理,探索開(kāi)機(jī)過(guò)程可以幫助他們從更深層次認(rèn)識(shí)計(jì)算機(jī)。計(jì)算機(jī)從接通電源到出現(xiàn)操作界面經(jīng)歷了一系列非常復(fù)雜的過(guò)程。首先計(jì)算機(jī)要對(duì)所有關(guān)鍵的硬件設(shè)備按一定順序依次進(jìn)行檢測(cè)和配置,然后根據(jù)引導(dǎo)扇區(qū)從存儲(chǔ)設(shè)備中加載操作系統(tǒng),并進(jìn)一步完成系統(tǒng)初始化工作。了解計(jì)算機(jī)開(kāi)機(jī)啟動(dòng)過(guò)程,幫助用戶(hù)加強(qiáng)對(duì)計(jì)算機(jī)的日常維護(hù),通過(guò)升級(jí)硬件性能提高開(kāi)機(jī)速度,使想要探究計(jì)算機(jī)科學(xué)技術(shù)的人對(duì)計(jì)算機(jī)的運(yùn)行機(jī)制有一個(gè)初步認(rèn)識(shí)。
計(jì)算機(jī)的初始化啟動(dòng)過(guò)程稱(chēng)為自舉,也叫“Boot”(引導(dǎo))。名詞來(lái)源于一個(gè)說(shuō)法,計(jì)算機(jī)啟動(dòng)的概念在剛開(kāi)始確立的時(shí)候是矛盾的:計(jì)算機(jī)必須要先啟動(dòng)程序,機(jī)器才能運(yùn)行,然而計(jì)算機(jī)不運(yùn)行,機(jī)器就無(wú)法啟動(dòng),究竟應(yīng)該如何啟動(dòng)計(jì)算機(jī)曾經(jīng)使人們百思不得其解。在經(jīng)歷了很長(zhǎng)一段時(shí)間之后,最終工程師們想盡各種辦法克服了這個(gè)矛盾。將開(kāi)機(jī)程序?qū)懭雰?nèi)存,從而把計(jì)算機(jī)自檢與操作系統(tǒng)加載連接起來(lái),終于使計(jì)算機(jī)能夠正常啟動(dòng)運(yùn)行。
1.1 CPU準(zhǔn)備工作
當(dāng)人們按下開(kāi)機(jī)按鈕時(shí),電源開(kāi)始向主板和其他設(shè)備供電。由于開(kāi)始時(shí)電壓不太穩(wěn)定,主板上的控制芯片組會(huì)向CPU發(fā)出并保持一個(gè)寬度大于2 ms的正脈沖信號(hào)即RESET(復(fù)位)信號(hào)。一般經(jīng)過(guò)100~500 ms電源將產(chǎn)生電壓穩(wěn)定的邏輯信號(hào),當(dāng)芯片組檢測(cè)到這個(gè)信號(hào)時(shí)便撤去RESET信號(hào)。電腦中央處理器(Central Processing Unit, CPU)開(kāi)始從地址FFFF-0000H處讀取指令,此時(shí)基本輸入輸出系統(tǒng)(Basic Input and Output System, BIOS)根據(jù)存放在這里的跳轉(zhuǎn)指令找到自己真正的啟動(dòng)代碼線(xiàn)程,開(kāi)始一系列的檢測(cè)和配置工作。
在計(jì)算機(jī)系統(tǒng)中起著重要作用的BIOS是直接與硬件打交道的底層代碼,它保存著計(jì)算機(jī)最重要的基本輸入輸出程序、開(kāi)機(jī)自檢程序和系統(tǒng)自啟動(dòng)程序。它由一種特殊的電腦主板上的電池來(lái)供電,從隨機(jī)存取存儲(chǔ)器(Complementary Metal Oxide Semiconductor, CMOS)中讀寫(xiě)系統(tǒng)設(shè)置的具體信息,為操作系統(tǒng)提供了控制硬件設(shè)備的基本功能。BIOS包括有系統(tǒng)BIOS(即主板BIOS),顯卡BIOS和其他設(shè)備(例如集成驅(qū)動(dòng)器電子控制器、小型計(jì)算機(jī)系統(tǒng)接口卡或網(wǎng)卡等)的BIOS。BIOS一般存放在只讀存儲(chǔ)器(Read Only Memory, ROM),可以永久性地保存數(shù)據(jù)和程序信息,即使機(jī)器停電,這些數(shù)據(jù)也不會(huì)丟失。
1.3 BIOS的檢測(cè)過(guò)程
系統(tǒng)BIOS的啟動(dòng)代碼首先進(jìn)行硬件自檢(Power-On Self-Test, POST),主要檢測(cè)系統(tǒng)中一些關(guān)鍵設(shè)備是否存在和能否正常工作,如內(nèi)存和顯卡等。由于此時(shí)顯卡還沒(méi)有初始化,如果在自檢過(guò)程中發(fā)現(xiàn)硬件有問(wèn)題系統(tǒng)會(huì)發(fā)出蜂鳴,聲音的長(zhǎng)短和次數(shù)代表了不同的錯(cuò)誤類(lèi)型。如果沒(méi)有錯(cuò)誤發(fā)生,POST過(guò)程會(huì)很快結(jié)束,之后會(huì)調(diào)用其他代碼來(lái)進(jìn)行更完整的硬件檢測(cè)。
接下來(lái)系統(tǒng)BIOS將查找顯卡的BIOS(在地址C0000H處),找到顯卡BIOS之后就調(diào)用它的初始化代碼來(lái)初始化顯卡,對(duì)于大多數(shù)顯卡來(lái)說(shuō)都會(huì)將一些初始化信息顯示在屏幕上,例如生產(chǎn)廠(chǎng)商、型號(hào)等基本信息,但幾乎是一閃而過(guò)。系統(tǒng)BIOS接著會(huì)查找其他設(shè)備的BIOS程序,調(diào)用它們的初始化代碼來(lái)初始化相關(guān)設(shè)備。最后,系統(tǒng)BIOS將顯示出它自己的啟動(dòng)畫(huà)面,列出系統(tǒng)BIOS的類(lèi)型、序列號(hào)和版本號(hào)等內(nèi)容。
下一步,系統(tǒng)BIOS將檢測(cè)和顯示CPU的類(lèi)型和工作率,接著測(cè)試所有的隨機(jī)存取存儲(chǔ)器(Random Access Memory, RAM),同時(shí)在屏幕上顯示內(nèi)存測(cè)試的進(jìn)度,內(nèi)存測(cè)試通過(guò)之后,系統(tǒng)BIOS將開(kāi)始檢測(cè)系統(tǒng)中安裝的一些標(biāo)準(zhǔn)硬件設(shè)備,包括硬盤(pán)、CD-ROM等。接下來(lái)將要檢測(cè)和配置系統(tǒng)中安裝的即插即用設(shè)備,顯示出檢測(cè)到的設(shè)備名稱(chēng)和型號(hào)信息,為這些設(shè)備分配可用資源[1]。
所有硬件設(shè)備都檢測(cè)完畢之后,屏幕上會(huì)顯示出各種標(biāo)準(zhǔn)硬件設(shè)備使用的資源和相關(guān)工作參數(shù)等信息。然后系統(tǒng)BIOS將更新擴(kuò)展系統(tǒng)配置數(shù)據(jù)(Extended System Configuration Data, ESCD),系統(tǒng)BIOS通過(guò)它來(lái)與操作系統(tǒng)交換硬件配置信息,這些數(shù)據(jù)被存放在CMOS中,通常ESCD數(shù)據(jù)只在系統(tǒng)硬件配置發(fā)生變化時(shí)才會(huì)更新。
硬件自檢完成之后,系統(tǒng)BIOS的操作界面上會(huì)顯示出用戶(hù)指定的啟動(dòng)設(shè)備順序,所列外部存儲(chǔ)設(shè)備可以是軟盤(pán)、硬盤(pán)或者是光盤(pán)等。排在前面的設(shè)備擁有優(yōu)先轉(zhuǎn)交控制權(quán),BIOS按照啟動(dòng)順序讀取設(shè)備中的主引導(dǎo)記錄(Master Boot Record, MBR),放到7C0000H內(nèi)存地址中,從MBR中查找接下來(lái)要讀取的信息。
2.1 主引導(dǎo)記錄的結(jié)構(gòu)
火星快車(chē)號(hào)繞著火星不斷飛行,不斷拍照探索,還找到了大量火星上曾經(jīng)有水的證據(jù)。它拍攝到了火星上的沖積平原、河床、水流切谷等圖像,這說(shuō)明火星在很久以前,也是一顆有長(zhǎng)河大海的星球。如今,火星上的自然條件相當(dāng)惡劣,是一片荒漠?;鹦强燔?chē)號(hào)的探測(cè)成果,也為人類(lèi)對(duì)于地球的保護(hù)敲響了警鐘。
主引導(dǎo)記錄位于硬盤(pán)的零柱面零磁頭的第一個(gè)扇區(qū)上,共512 B。如果這512 B的最后兩個(gè)字節(jié)是55AAH,則表示這個(gè)設(shè)備是可以啟動(dòng)的,如果不是則表示這個(gè)設(shè)備不能啟動(dòng),需要把控制權(quán)轉(zhuǎn)交給啟動(dòng)順序表中的下一個(gè)設(shè)備。標(biāo)準(zhǔn)MBR的字節(jié)碼含義如表1所示。
2.2 分區(qū)表
找到主引導(dǎo)記錄之后,系統(tǒng)開(kāi)始讀取有效的分區(qū)表。分區(qū)表的長(zhǎng)度為64 B,細(xì)分成四個(gè)主分區(qū),每個(gè)主分區(qū)占用16 B。硬盤(pán)分區(qū)有很多好處,可以在不同的分區(qū)中分別裝入不同的操作系統(tǒng),實(shí)現(xiàn)多系統(tǒng)共存。主引導(dǎo)記錄通過(guò)分區(qū)表的第一個(gè)字節(jié)判斷該主分區(qū)是否為激活分區(qū),四個(gè)主分區(qū)中只有一個(gè)是激活的。分區(qū)表結(jié)構(gòu)如表2所示。
表1 標(biāo)準(zhǔn)MBR結(jié)構(gòu)
表2 分區(qū)表結(jié)構(gòu)
從表2中可以看出,主分區(qū)的扇區(qū)個(gè)數(shù)共占4 B,故一個(gè)主分區(qū)的最大扇區(qū)總數(shù)為232個(gè)。如果每個(gè)扇區(qū)大小為512 B,則每個(gè)分區(qū)最大為2 TB(1 TB=240B)。扇區(qū)的邏輯地址也占用32 bit,故硬盤(pán)最大可利用空間為2 TB。因此,如果要擴(kuò)大硬盤(pán)空間有兩個(gè)辦法:一是提高每個(gè)扇區(qū)的字節(jié)數(shù),二是增加扇區(qū)總數(shù)。目前硬盤(pán)存儲(chǔ)容量已經(jīng)達(dá)到了3 TB的階段,相關(guān)技術(shù)還在持續(xù)發(fā)展中,存儲(chǔ)容量仍將有所提升[2]。
3.1 通過(guò)主分區(qū)啟動(dòng)硬盤(pán)
計(jì)算機(jī)讀取激活分區(qū)的第一個(gè)扇區(qū)卷引導(dǎo)記錄(Volume Boot Record, VBR),也叫做卷引導(dǎo)扇區(qū)或分區(qū)引導(dǎo)記錄、分區(qū)引導(dǎo)扇區(qū),通過(guò)主分區(qū)邏輯地址的起始地址找到相對(duì)應(yīng)的VBR。如果存儲(chǔ)設(shè)備未被分區(qū),如軟盤(pán),則VBR位于該設(shè)備的第一個(gè)扇區(qū)。VBR中包含有很多信息,比如,每個(gè)扇區(qū)的字節(jié)數(shù),每一簇包含的扇區(qū)數(shù),保留區(qū)的扇區(qū)大小,文件分配表(File Allocation Table, FAT)中的文件數(shù)目,每一個(gè)FAT所占用的扇區(qū)大小,存放根信息的簇的位置等信息。通過(guò)VBR系統(tǒng)BIOS可以找到操作系統(tǒng)在這個(gè)分區(qū)中的具體位置,然后計(jì)算機(jī)將開(kāi)始查找地址信息加載操作系統(tǒng)。從圖1可以看到整個(gè)硬盤(pán)的邏輯結(jié)構(gòu)[3]。
3.2 通過(guò)擴(kuò)展分區(qū)啟動(dòng)硬盤(pán)
四個(gè)主分區(qū)表中有且僅有一個(gè)區(qū)可以被定義成擴(kuò)展分區(qū)(Extended Partition, EP),擴(kuò)展分區(qū)中又有多個(gè)邏輯分區(qū)。計(jì)算機(jī)首先讀取擴(kuò)展分區(qū)的第一個(gè)扇區(qū)即“擴(kuò)展引導(dǎo)記錄”(Extended Boot Record, EBR),EBR中包含一張64 B的分區(qū)表,擴(kuò)展分區(qū)可以包含無(wú)數(shù)個(gè)邏輯分區(qū)。但是,計(jì)算機(jī)很少選擇這種方式啟動(dòng)操作系統(tǒng)。如果操作系統(tǒng)安裝在擴(kuò)展分區(qū),一般會(huì)選擇通過(guò)啟動(dòng)管理器的辦法啟動(dòng)操作系統(tǒng)。
硬盤(pán)主引導(dǎo)記錄主引導(dǎo)記錄分區(qū)表第一分區(qū)表項(xiàng)第二分區(qū)表項(xiàng)第三分區(qū)表項(xiàng)第四分區(qū)表項(xiàng)55AAH基本分區(qū)1引導(dǎo)扇區(qū)數(shù)據(jù)基本分區(qū)2引導(dǎo)扇區(qū)數(shù)據(jù)基本分區(qū)3引導(dǎo)扇區(qū)數(shù)據(jù)擴(kuò)展分區(qū)邏輯驅(qū)動(dòng)器擴(kuò)展引導(dǎo)記錄擴(kuò)展分區(qū)表55AAH引導(dǎo)扇區(qū)數(shù)據(jù)邏輯驅(qū)動(dòng)器擴(kuò)展引導(dǎo)記錄擴(kuò)展分區(qū)表55AAH引導(dǎo)扇區(qū)數(shù)據(jù)
圖1 硬盤(pán)結(jié)構(gòu)
3.3 通過(guò)啟動(dòng)管理器啟動(dòng)硬盤(pán)
在這種情況下,計(jì)算機(jī)在讀取MBR時(shí)不會(huì)把控制權(quán)轉(zhuǎn)交給某一分區(qū),而是運(yùn)行事先安裝的啟動(dòng)管理器,由用戶(hù)選擇要啟動(dòng)的操作系統(tǒng)。在Linux系統(tǒng)下的啟動(dòng)管理器(G Rand Unified Boot loader, Grub)以MBR的前446 B作為自己的開(kāi)始執(zhí)行程序,可以選擇操作系統(tǒng)分區(qū)上的不同內(nèi)核,也可以向這些內(nèi)核傳遞啟動(dòng)參數(shù)。
3.4 文件系統(tǒng)
在操作系統(tǒng)中,與文件和目錄相關(guān)的子系統(tǒng)稱(chēng)為文件系統(tǒng),用來(lái)組織和管理文件。它把存儲(chǔ)空間組織成物理位置,并提供一種可以對(duì)存放于其中的數(shù)據(jù)進(jìn)行索引的機(jī)制。并且建立按層次安排的索引關(guān)系,將磁盤(pán)的物理分區(qū)轉(zhuǎn)換成邏輯分區(qū),再把數(shù)據(jù)分配到邏輯分區(qū)的位置。微軟系統(tǒng)常用的文件系統(tǒng)主要有FAT16、FAT32和NTFS(New Technology File System)等。
FAT16即16位的文件分配表,使用最為廣泛,在微軟等的操作系統(tǒng)中,磁盤(pán)文件的分配以“簇”為單位,無(wú)論該文件占用整個(gè)容量的比例是多少,每個(gè)簇只對(duì)應(yīng)一個(gè)文件使用,且它最大只能支持2 GB的分區(qū),因此它存在硬盤(pán)實(shí)際空間利用率低的缺點(diǎn)。隨著電腦硬件性能的提高,微軟推出了增強(qiáng)的文件系統(tǒng)FAT32,它可以支持的最大磁盤(pán)大小為2 TB,采用更小的簇可以更有效地保存信息,F(xiàn)AT32文件系統(tǒng)可以重新定位根目錄和使用FAT的備份副本,此外,它的啟動(dòng)記錄被包含在一個(gè)含有關(guān)鍵數(shù)據(jù)的結(jié)構(gòu)中,減少了電腦系統(tǒng)崩潰的可能性。NTFS是隨著微軟NT操作系統(tǒng)而產(chǎn)生的,它的優(yōu)點(diǎn)是安全性和穩(wěn)定性較強(qiáng),在使用中不易產(chǎn)生文件碎片。NTFS可以支持的文件大小達(dá)到64 GB,遠(yuǎn)遠(yuǎn)高于FAT32下的4 GB,而且它可以支持長(zhǎng)文件名[4]。
操作系統(tǒng)確定之后,它的內(nèi)核先被載入內(nèi)存,進(jìn)行系統(tǒng)初始化,加載設(shè)備驅(qū)動(dòng)程序。在Linux系統(tǒng)下,首先載入/boot目錄下的操作系統(tǒng)kernel(內(nèi)核),kernel是操作系統(tǒng)的核心部分,主要功能有控制和管理事件的調(diào)度和同步、進(jìn)程間的消息傳遞、存儲(chǔ)器管理和進(jìn)程管理等。磁盤(pán)文件系統(tǒng)掛載,內(nèi)核加載成功后,首先運(yùn)行磁盤(pán)文件系統(tǒng)下/sbin /init中的程序,它根據(jù)配置文件產(chǎn)生init進(jìn)程。這是Linux啟動(dòng)后的第一個(gè)進(jìn)程,設(shè)置進(jìn)程控制塊中的進(jìn)程識(shí)別號(hào)PID(Process Identification,PID)編號(hào)為1,其他進(jìn)程都在它之后產(chǎn)生,為其子進(jìn)程。然后init線(xiàn)程開(kāi)始加載系統(tǒng)的各個(gè)模塊,比如窗口程序和網(wǎng)絡(luò)程序,最后執(zhí)行/bin/login程序,出現(xiàn)登錄界面,用戶(hù)輸入用戶(hù)名和密碼。成功登錄之后,系統(tǒng)啟動(dòng)過(guò)程便順利完成,接下來(lái)用戶(hù)便可以進(jìn)行正常的日常使用了。
計(jì)算機(jī)啟動(dòng)過(guò)程涉及到計(jì)算機(jī)底層硬件和系統(tǒng)軟件等知識(shí),了解整個(gè)過(guò)程之后,可以在此基礎(chǔ)上加強(qiáng)對(duì)計(jì)算機(jī)系統(tǒng)的認(rèn)識(shí)和維護(hù)。如果在啟動(dòng)計(jì)算機(jī)的過(guò)程中發(fā)生問(wèn)題,用戶(hù)可以根據(jù)問(wèn)題產(chǎn)生的不同階段進(jìn)行分析,并找到解決辦法,使計(jì)算機(jī)成功運(yùn)行起來(lái)。
[1] 孫維連,于莉莉,單琳娜. 硬盤(pán)維護(hù)與數(shù)據(jù)恢復(fù)[M]. 北京:中國(guó)水利水電出版社,2007.
[2] 趙乾偉. 電腦硬盤(pán)終極應(yīng)用[M]. 北京:人民郵電出版社,2006.
[3] 阮一峰. 如何變得有思想[M]. 北京:人民郵電出版社,2014.
[4] 李換雙,潘平,羅輝,等.計(jì)算機(jī)安全漏洞及防范研究[J].微型機(jī)與應(yīng)用,2013,32(7):64-65,68.
撤稿聲明
本刊2015年第18期刊登了署名智納納等人的論文“水聲通信網(wǎng)基于載波偵聽(tīng)多路訪(fǎng)問(wèn)的MAC協(xié)議”,現(xiàn)發(fā)現(xiàn)該文存在涉嫌侵犯著作權(quán)情況。特鄭重聲明撤稿包括紙質(zhì)版和電子版在內(nèi)的該論文,請(qǐng)勿再以任何形式引用。
由此對(duì)讀者造成的不便,本刊深表歉意!
《微型機(jī)與應(yīng)用》編輯部
2016年1月27日
Study of the booting process
Yuan Xixi
(School of Computer Science, Beijing Information Science and Technology University, Beijing 100101, China)
This paper has studied the computer about its booting. When you switch on a computer, a series of working is going on, for example, initializing and testing the system hardware components and loading the operating system and so on. The computer beginners would learn more about the computer science knowledge since reading this paper.
basic input and output system; power-on self-test; master boot record; file system
TP333
A
1674- 7720(2016)03- 0038- 03
袁茜茜.探究計(jì)算機(jī)的啟動(dòng)過(guò)程[J].微型機(jī)與應(yīng)用,2016,35(3):38- 40.
2015-10-15)
袁茜茜(1992-),通信作者,女,本科生,主要研究方向:軟件開(kāi)發(fā)。E-mail:yuanxixibetter@163.com。