摘要:詳細研究了計算機的開機啟動及系統(tǒng)加載等內(nèi)容,,結(jié)合硬件和軟件之間的協(xié)同調(diào)用機制,,給出了從計算機觸發(fā)開機按鈕到加載操作系統(tǒng),最后出現(xiàn)開機界面整個過程的相對完善的論述,。對于計算機初學者全面認識開機過程十分有幫助,。
關(guān)鍵詞:BIOS系統(tǒng);POST自檢,;主引導記錄,;文件系統(tǒng)
0引言
對于大多數(shù)非計算機類相關(guān)專業(yè)的人來說,對計算機的認識只停留在掌握其基本操作的層面上,,并不十分了解其內(nèi)部運行原理,,探索開機過程可以幫助他們從更深層次認識計算機。計算機從接通電源到出現(xiàn)操作界面經(jīng)歷了一系列非常復雜的過程,。首先計算機要對所有關(guān)鍵的硬件設(shè)備按一定順序依次進行檢測和配置,,然后根據(jù)引導扇區(qū)從存儲設(shè)備中加載操作系統(tǒng),并進一步完成系統(tǒng)初始化工作,。了解計算機開機啟動過程,幫助用戶加強對計算機的日常維護,,通過升級硬件性能提高開機速度,,使想要探究計算機科學技術(shù)的人對計算機的運行機制有一個初步認識。
1加電自檢
計算機的初始化啟動過程稱為自舉,,也叫“Boot”(引導),。名詞來源于一個說法,計算機啟動的概念在剛開始確立的時候是矛盾的:計算機必須要先啟動程序,,機器才能運行,,然而計算機不運行,機器就無法啟動,,究竟應該如何啟動計算機曾經(jīng)使人們百思不得其解,。在經(jīng)歷了很長一段時間之后,最終工程師們想盡各種辦法克服了這個矛盾,。將開機程序?qū)懭雰?nèi)存,,從而把計算機自檢與操作系統(tǒng)加載連接起來,終于使計算機能夠正常啟動運行。
1.1CPU準備工作
當人們按下開機按鈕時,,電源開始向主板和其他設(shè)備供電,。由于開始時電壓不太穩(wěn)定,主板上的控制芯片組會向CPU發(fā)出并保持一個寬度大于2 ms的正脈沖信號即RESET(復位)信號,。一般經(jīng)過100~500 ms電源將產(chǎn)生電壓穩(wěn)定的邏輯信號,,當芯片組檢測到這個信號時便撤去RESET信號。電腦中央處理器(Central Processing Unit, CPU)開始從地址FFFF0000H處讀取指令,,此時基本輸入輸出系統(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的啟動代碼首先進行硬件自檢(PowerOn SelfTest, POST),,主要檢測系統(tǒng)中一些關(guān)鍵設(shè)備是否存在和能否正常工作,如內(nèi)存和顯卡等,。由于此時顯卡還沒有初始化,,如果在自檢過程中發(fā)現(xiàn)硬件有問題系統(tǒng)會發(fā)出蜂鳴,聲音的長短和次數(shù)代表了不同的錯誤類型,。如果沒有錯誤發(fā)生,,POST過程會很快結(jié)束,之后會調(diào)用其他代碼來進行更完整的硬件檢測,。
接下來系統(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)存測試的進度,,內(nèi)存測試通過之后,,系統(tǒng)BIOS將開始檢測系統(tǒng)中安裝的一些標準硬件設(shè)備,包括硬盤,、CDROM等,。接下來將要檢測和配置系統(tǒng)中安裝的即插即用設(shè)備,顯示出檢測到的設(shè)備名稱和型號信息,,為這些設(shè)備分配可用資源[1],。
所有硬件設(shè)備都檢測完畢之后,屏幕上會顯示出各種標準硬件設(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主引導記錄
硬件自檢完成之后,系統(tǒng)BIOS的操作界面上會顯示出用戶指定的啟動設(shè)備順序,,所列外部存儲設(shè)備可以是軟盤,、硬盤或者是光盤等。排在前面的設(shè)備擁有優(yōu)先轉(zhuǎn)交控制權(quán),,BIOS按照啟動順序讀取設(shè)備中的主引導記錄(Master Boot Record, MBR),,放到7C0000H內(nèi)存地址中,從MBR中查找接下來要讀取的信息,。
2.1主引導記錄的結(jié)構(gòu)
主引導記錄位于硬盤的零柱面零磁頭的第一個扇區(qū)上,共512 B,。如果這512 B的最后兩個字節(jié)是55AAH,,則表示這個設(shè)備是可以啟動的,如果不是則表示這個設(shè)備不能啟動,,需要把控制權(quán)轉(zhuǎn)交給啟動順序表中的下一個設(shè)備,。標準MBR的字節(jié)碼含義如表1所示。
2.2分區(qū)表
找到主引導記錄之后,,系統(tǒng)開始讀取有效的分區(qū)表,。分區(qū)表的長度為64 B,,細分成四個主分區(qū),每個主分區(qū)占用16 B,。硬盤分區(qū)有很多好處,,可以在不同的分區(qū)中分別裝入不同的操作系統(tǒng),實現(xiàn)多系統(tǒng)共存,。主引導記錄通過分區(qū)表的第一個字節(jié)判斷該主分區(qū)是否為激活分區(qū),,四個主分區(qū)中只有一個是激活的。分區(qū)表結(jié)構(gòu)如表2所示,。
從表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)達到了3 TB的階段,相關(guān)技術(shù)還在持續(xù)發(fā)展中,,存儲容量仍將有所提升[2],。
3硬盤啟動
3.1通過主分區(qū)啟動硬盤
計算機讀取激活分區(qū)的第一個扇區(qū)卷引導記錄(Volume Boot Record, VBR),也叫做卷引導扇區(qū)或分區(qū)引導記錄,、分區(qū)引導扇區(qū),,通過主分區(qū)邏輯地址的起始地址找到相對應的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ū)啟動硬盤
四個主分區(qū)表中有且僅有一個區(qū)可以被定義成擴展分區(qū)(Extended Partition, EP),,擴展分區(qū)中又有多個邏輯分區(qū)。計算機首先讀取擴展分區(qū)的第一個扇區(qū)即“擴展引導記錄”(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ù)進行索引的機制,。并且建立按層次安排的索引關(guān)系,,將磁盤的物理分區(qū)轉(zhuǎn)換成邏輯分區(qū),再把數(shù)據(jù)分配到邏輯分區(qū)的位置,。微軟系統(tǒng)常用的文件系統(tǒng)主要有FAT16,、FAT32和NTFS(New Technology File System)等。
FAT16即16位的文件分配表,,使用最為廣泛,,在微軟等的操作系統(tǒ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可以支持的文件大小達到64 GB,,遠遠高于FAT32下的4 GB,而且它可以支持長文件名[4],。
4加載操作系統(tǒng)
操作系統(tǒng)確定之后,,它的內(nèi)核先被載入內(nèi)存,進行系統(tǒng)初始化,,加載設(shè)備驅(qū)動程序,。在Linux系統(tǒng)下,首先載入/boot目錄下的操作系統(tǒng)kernel(內(nèi)核),,kernel是操作系統(tǒng)的核心部分,,主要功能有控制和管理事件的調(diào)度和同步、進程間的消息傳遞,、存儲器管理和進程管理等,。磁盤文件系統(tǒng)掛載,內(nèi)核加載成功后,,首先運行磁盤文件系統(tǒng)下/sbin /init中的程序,,它根據(jù)配置文件產(chǎn)生init進程。這是Linux啟動后的第一個進程,,設(shè)置進程控制塊中的進程識別號PID(Process Identification,,PID)編號為1,其他進程都在它之后產(chǎn)生,,為其子進程,。然后init線程開始加載系統(tǒng)的各個模塊,比如窗口程序和網(wǎng)絡(luò)程序,,最后執(zhí)行/bin/login程序,,出現(xiàn)登錄界面,用戶輸入用戶名和密碼,。成功登錄之后,,系統(tǒng)啟動過程便順利完成,接下來用戶便可以進行正常的日常使用了,。
5結(jié)論
計算機啟動過程涉及到計算機底層硬件和系統(tǒng)軟件等知識,,了解整個過程之后,可以在此基礎(chǔ)上加強對計算機系統(tǒng)的認識和維護,。如果在啟動計算機的過程中發(fā)生問題,,用戶可以根據(jù)問題產(chǎn)生的不同階段進行分析,,并找到解決辦法,使計算機成功運行起來,。
參考文獻
?。?] 孫維連,于莉莉,,單琳娜. 硬盤維護與數(shù)據(jù)恢復[M]. 北京:中國水利水電出版社,,2007.
[2] 趙乾偉. 電腦硬盤終極應用[M]. 北京:人民郵電出版社,,2006.
?。?] 阮一峰. 如何變得有思想[M]. 北京:人民郵電出版社,2014.
?。?] 李換雙,潘平,羅輝,,等.計算機安全漏洞及防范研究[J].微型機與應用,2013,32(7):64-65,68.