《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 探究計算機的啟動過程
探究計算機的啟動過程
2016年微型機與應(yīng)用第3期
袁茜茜
(北京信息科技大學(xué) 計算機學(xué)院,北京 100101)
摘要: 詳細(xì)研究了計算機的開機啟動及系統(tǒng)加載等內(nèi)容,結(jié)合硬件和軟件之間的協(xié)同調(diào)用機制,給出了從計算機觸發(fā)開機按鈕到加載操作系統(tǒng),最后出現(xiàn)開機界面整個過程的相對完善的論述。對于計算機初學(xué)者全面認(rèn)識開機過程十分有幫助。
Abstract:
Key words :

  摘要:詳細(xì)研究了計算機的開機啟動及系統(tǒng)加載等內(nèi)容,結(jié)合硬件和軟件之間的協(xié)同調(diào)用機制,給出了從計算機觸發(fā)開機按鈕到加載操作系統(tǒng),最后出現(xiàn)開機界面整個過程的相對完善的論述。對于計算機初學(xué)者全面認(rèn)識開機過程十分有幫助。

  關(guān)鍵詞BIOS系統(tǒng);POST自檢;主引導(dǎo)記錄;文件系統(tǒng)

0引言

  對于大多數(shù)非計算機類相關(guān)專業(yè)的人來說,對計算機的認(rèn)識只停留在掌握其基本操作的層面上,并不十分了解其內(nèi)部運行原理,探索開機過程可以幫助他們從更深層次認(rèn)識計算機。計算機從接通電源到出現(xiàn)操作界面經(jīng)歷了一系列非常復(fù)雜的過程。首先計算機要對所有關(guān)鍵的硬件設(shè)備按一定順序依次進(jìn)行檢測和配置,然后根據(jù)引導(dǎo)扇區(qū)從存儲設(shè)備中加載操作系統(tǒng),并進(jìn)一步完成系統(tǒng)初始化工作。了解計算機開機啟動過程,幫助用戶加強對計算機的日常維護(hù),通過升級硬件性能提高開機速度,使想要探究計算機科學(xué)技術(shù)的人對計算機的運行機制有一個初步認(rèn)識。

1加電自檢

  計算機的初始化啟動過程稱為自舉,也叫“Boot”(引導(dǎo))。名詞來源于一個說法,計算機啟動的概念在剛開始確立的時候是矛盾的:計算機必須要先啟動程序,機器才能運行,然而計算機不運行,機器就無法啟動,究竟應(yīng)該如何啟動計算機曾經(jīng)使人們百思不得其解。在經(jīng)歷了很長一段時間之后,最終工程師們想盡各種辦法克服了這個矛盾。將開機程序?qū)懭雰?nèi)存,從而把計算機自檢與操作系統(tǒng)加載連接起來,終于使計算機能夠正常啟動運行。

  1.1CPU準(zhǔn)備工作

  當(dāng)人們按下開機按鈕時,電源開始向主板和其他設(shè)備供電。由于開始時電壓不太穩(wěn)定,主板上的控制芯片組會向CPU發(fā)出并保持一個寬度大于2 ms的正脈沖信號即RESET(復(fù)位)信號。一般經(jīng)過100~500 ms電源將產(chǎn)生電壓穩(wěn)定的邏輯信號,當(dāng)芯片組檢測到這個信號時便撤去RESET信號。電腦中央處理器(Central Processing Unit, CPU)開始從地址FFFF0000H處讀取指令,此時基本輸入輸出系統(tǒng)(Basic Input and Output System, BIOS)根據(jù)存放在這里的跳轉(zhuǎn)指令找到自己真正的啟動代碼線程,開始一系列的檢測和配置工作。

  1.2系統(tǒng)BIOS的基本功能

  在計算機系統(tǒng)中起著重要作用的BIOS是直接與硬件打交道的底層代碼,它保存著計算機最重要的基本輸入輸出程序、開機自檢程序和系統(tǒng)自啟動程序。它由一種特殊的電腦主板上的電池來供電,從隨機存取存儲器(Complementary Metal Oxide Semiconductor, CMOS)中讀寫系統(tǒng)設(shè)置的具體信息,為操作系統(tǒng)提供了控制硬件設(shè)備的基本功能。BIOS包括有系統(tǒng)BIOS(即主板BIOS),顯卡BIOS和其他設(shè)備(例如集成驅(qū)動器電子控制器、小型計算機系統(tǒng)接口卡或網(wǎng)卡等)的BIOS。BIOS一般存放在只讀存儲器(Read Only Memory, ROM),可以永久性地保存數(shù)據(jù)和程序信息,即使機器停電,這些數(shù)據(jù)也不會丟失。

  1.3BIOS的檢測過程

  系統(tǒng)BIOS的啟動代碼首先進(jìn)行硬件自檢(PowerOn SelfTest, POST),主要檢測系統(tǒng)中一些關(guān)鍵設(shè)備是否存在和能否正常工作,如內(nèi)存和顯卡等。由于此時顯卡還沒有初始化,如果在自檢過程中發(fā)現(xiàn)硬件有問題系統(tǒng)會發(fā)出蜂鳴,聲音的長短和次數(shù)代表了不同的錯誤類型。如果沒有錯誤發(fā)生,POST過程會很快結(jié)束,之后會調(diào)用其他代碼來進(jìn)行更完整的硬件檢測。

  接下來系統(tǒng)BIOS將查找顯卡的BIOS(在地址C0000H處),找到顯卡BIOS之后就調(diào)用它的初始化代碼來初始化顯卡,對于大多數(shù)顯卡來說都會將一些初始化信息顯示在屏幕上,例如生產(chǎn)廠商、型號等基本信息,但幾乎是一閃而過。系統(tǒng)BIOS接著會查找其他設(shè)備的BIOS程序,調(diào)用它們的初始化代碼來初始化相關(guān)設(shè)備。最后,系統(tǒng)BIOS將顯示出它自己的啟動畫面,列出系統(tǒng)BIOS的類型、序列號和版本號等內(nèi)容。

  下一步,系統(tǒng)BIOS將檢測和顯示CPU的類型和工作率,接著測試所有的隨機存取存儲器(Random Access Memory, RAM),同時在屏幕上顯示內(nèi)存測試的進(jìn)度,內(nèi)存測試通過之后,系統(tǒng)BIOS將開始檢測系統(tǒng)中安裝的一些標(biāo)準(zhǔn)硬件設(shè)備,包括硬盤、CDROM等。接下來將要檢測和配置系統(tǒng)中安裝的即插即用設(shè)備,顯示出檢測到的設(shè)備名稱和型號信息,為這些設(shè)備分配可用資源[1]。

  所有硬件設(shè)備都檢測完畢之后,屏幕上會顯示出各種標(biāo)準(zhǔn)硬件設(shè)備使用的資源和相關(guān)工作參數(shù)等信息。然后系統(tǒng)BIOS將更新擴展系統(tǒng)配置數(shù)據(jù)(Extended System Configuration Data, ESCD),系統(tǒng)BIOS通過它來與操作系統(tǒng)交換硬件配置信息,這些數(shù)據(jù)被存放在CMOS中,通常ESCD數(shù)據(jù)只在系統(tǒng)硬件配置發(fā)生變化時才會更新。

2主引導(dǎo)記錄

  硬件自檢完成之后,系統(tǒng)BIOS的操作界面上會顯示出用戶指定的啟動設(shè)備順序,所列外部存儲設(shè)備可以是軟盤、硬盤或者是光盤等。排在前面的設(shè)備擁有優(yōu)先轉(zhuǎn)交控制權(quán),BIOS按照啟動順序讀取設(shè)備中的主引導(dǎo)記錄(Master Boot Record, MBR),放到7C0000H內(nèi)存地址中,從MBR中查找接下來要讀取的信息。

  2.1主引導(dǎo)記錄的結(jié)構(gòu)

  主引導(dǎo)記錄位于硬盤的零柱面零磁頭的第一個扇區(qū)上,共512 B。如果這512 B的最后兩個字節(jié)是55AAH,則表示這個設(shè)備是可以啟動的,如果不是則表示這個設(shè)備不能啟動,需要把控制權(quán)轉(zhuǎn)交給啟動順序表中的下一個設(shè)備。標(biāo)準(zhǔn)MBR的字節(jié)碼含義如表1所示。

  2.2分區(qū)表

  找到主引導(dǎo)記錄之后,系統(tǒng)開始讀取有效的分區(qū)表。分區(qū)表的長度為64 B,細(xì)分成四個主分區(qū),每個主分區(qū)占用16 B。硬盤分區(qū)有很多好處,可以在不同的分區(qū)中分別裝入不同的操作系統(tǒng),實現(xiàn)多系統(tǒng)共存。主引導(dǎo)記錄通過分區(qū)表的第一個字節(jié)判斷該主分區(qū)是否為激活分區(qū),四個主分區(qū)中只有一個是激活的。分區(qū)表結(jié)構(gòu)如表2所示。

002.jpg

  從表2中可以看出,主分區(qū)的扇區(qū)個數(shù)共占4 B,故一個主分區(qū)的最大扇區(qū)總數(shù)為232個。如果每個扇區(qū)大小為512 B,則每個分區(qū)最大為2 TB(1 TB=240 B)。扇區(qū)的邏輯地址也占用32 bit,故硬盤最大可利用空間為2 TB。因此,如果要擴大硬盤空間有兩個辦法:一是提高每個扇區(qū)的字節(jié)數(shù),二是增加扇區(qū)總數(shù)。目前硬盤存儲容量已經(jīng)達(dá)到了3 TB的階段,相關(guān)技術(shù)還在持續(xù)發(fā)展中,存儲容量仍將有所提升[2]。

3硬盤啟動

  3.1通過主分區(qū)啟動硬盤

  計算機讀取激活分區(qū)的第一個扇區(qū)卷引導(dǎo)記錄(Volume Boot Record, VBR),也叫做卷引導(dǎo)扇區(qū)或分區(qū)引導(dǎo)記錄、分區(qū)引導(dǎo)扇區(qū),通過主分區(qū)邏輯地址的起始地址找到相對應(yīng)的VBR。如果存儲設(shè)備未被分區(qū),如軟盤,則VBR位于該設(shè)備的第一個扇區(qū)。VBR中包含有很多信息,比如,每個扇區(qū)的字節(jié)數(shù),每一簇包含的扇區(qū)數(shù),保留區(qū)的扇區(qū)大小,文件分配表(File Allocation Table, FAT)中的文件數(shù)目,每一個FAT所占用的扇區(qū)大小,存放根信息的簇的位置等信息。通過VBR系統(tǒng)BIOS可以找到操作系統(tǒng)在這個分區(qū)中的具體位置,然后計算機將開始查找地址信息加載操作系統(tǒng)。從圖1可以看到整個硬盤的邏輯結(jié)構(gòu)[3]。

  3.2通過擴展分區(qū)啟動硬盤

001.jpg

  四個主分區(qū)表中有且僅有一個區(qū)可以被定義成擴展分區(qū)(Extended Partition, EP),擴展分區(qū)中又有多個邏輯分區(qū)。計算機首先讀取擴展分區(qū)的第一個扇區(qū)即“擴展引導(dǎo)記錄”(Extended Boot Record, EBR),EBR中包含一張64 B的分區(qū)表,擴展分區(qū)可以包含無數(shù)個邏輯分區(qū)。但是,計算機很少選擇這種方式啟動操作系統(tǒng)。如果操作系統(tǒng)安裝在擴展分區(qū),一般會選擇通過啟動管理器的辦法啟動操作系統(tǒng)。

  3.3通過啟動管理器啟動硬盤

  在這種情況下,計算機在讀取MBR時不會把控制權(quán)轉(zhuǎn)交給某一分區(qū),而是運行事先安裝的啟動管理器,由用戶選擇要啟動的操作系統(tǒng)。在Linux系統(tǒng)下的啟動管理器(G Rand Unified Boot loader, Grub)以MBR的前446 B作為自己的開始執(zhí)行程序,可以選擇操作系統(tǒng)分區(qū)上的不同內(nèi)核,也可以向這些內(nèi)核傳遞啟動參數(shù)。

  3.4文件系統(tǒng)

  在操作系統(tǒng)中,與文件和目錄相關(guān)的子系統(tǒng)稱為文件系統(tǒng),用來組織和管理文件。它把存儲空間組織成物理位置,并提供一種可以對存放于其中的數(shù)據(jù)進(jìn)行索引的機制。并且建立按層次安排的索引關(guān)系,將磁盤的物理分區(qū)轉(zhuǎn)換成邏輯分區(qū),再把數(shù)據(jù)分配到邏輯分區(qū)的位置。微軟系統(tǒng)常用的文件系統(tǒng)主要有FAT16、FAT32和NTFS(New Technology File System)等。

  FAT16即16位的文件分配表,使用最為廣泛,在微軟等的操作系統(tǒng)中,磁盤文件的分配以“簇”為單位,無論該文件占用整個容量的比例是多少,每個簇只對應(yīng)一個文件使用,且它最大只能支持2 GB的分區(qū),因此它存在硬盤實際空間利用率低的缺點。隨著電腦硬件性能的提高,微軟推出了增強的文件系統(tǒng)FAT32,它可以支持的最大磁盤大小為2 TB,采用更小的簇可以更有效地保存信息,F(xiàn)AT32文件系統(tǒng)可以重新定位根目錄和使用FAT的備份副本,此外,它的啟動記錄被包含在一個含有關(guān)鍵數(shù)據(jù)的結(jié)構(gòu)中,減少了電腦系統(tǒng)崩潰的可能性。NTFS是隨著微軟NT操作系統(tǒng)而產(chǎn)生的,它的優(yōu)點是安全性和穩(wěn)定性較強,在使用中不易產(chǎn)生文件碎片。NTFS可以支持的文件大小達(dá)到64 GB,遠(yuǎn)遠(yuǎn)高于FAT32下的4 GB,而且它可以支持長文件名[4]。

4加載操作系統(tǒng)

  操作系統(tǒng)確定之后,它的內(nèi)核先被載入內(nèi)存,進(jìn)行系統(tǒng)初始化,加載設(shè)備驅(qū)動程序。在Linux系統(tǒng)下,首先載入/boot目錄下的操作系統(tǒng)kernel(內(nèi)核),kernel是操作系統(tǒng)的核心部分,主要功能有控制和管理事件的調(diào)度和同步、進(jìn)程間的消息傳遞、存儲器管理和進(jìn)程管理等。磁盤文件系統(tǒng)掛載,內(nèi)核加載成功后,首先運行磁盤文件系統(tǒng)下/sbin /init中的程序,它根據(jù)配置文件產(chǎn)生init進(jìn)程。這是Linux啟動后的第一個進(jìn)程,設(shè)置進(jìn)程控制塊中的進(jìn)程識別號PID(Process Identification,PID)編號為1,其他進(jìn)程都在它之后產(chǎn)生,為其子進(jìn)程。然后init線程開始加載系統(tǒng)的各個模塊,比如窗口程序和網(wǎng)絡(luò)程序,最后執(zhí)行/bin/login程序,出現(xiàn)登錄界面,用戶輸入用戶名和密碼。成功登錄之后,系統(tǒng)啟動過程便順利完成,接下來用戶便可以進(jìn)行正常的日常使用了。

5結(jié)論

  計算機啟動過程涉及到計算機底層硬件和系統(tǒng)軟件等知識,了解整個過程之后,可以在此基礎(chǔ)上加強對計算機系統(tǒng)的認(rèn)識和維護(hù)。如果在啟動計算機的過程中發(fā)生問題,用戶可以根據(jù)問題產(chǎn)生的不同階段進(jìn)行分析,并找到解決辦法,使計算機成功運行起來。

  參考文獻(xiàn)

 ?。?] 孫維連,于莉莉,單琳娜. 硬盤維護(hù)與數(shù)據(jù)恢復(fù)[M]. 北京:中國水利水電出版社,2007.

  [2] 趙乾偉. 電腦硬盤終極應(yīng)用[M]. 北京:人民郵電出版社,2006.

  [3] 阮一峰. 如何變得有思想[M]. 北京:人民郵電出版社,2014.

  [4] 李換雙,潘平,羅輝,等.計算機安全漏洞及防范研究[J].微型機與應(yīng)用,2013,32(7):64-65,68.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。