計算機啟動過程詳解
開啟電源啟動機器幾乎是電腦愛好者每天必做的事情,面對螢幕上出現的一幅幅啟動畫面,我們一點兒也不會感到陌生,但是,計算機在顯示這些啟動畫面時都做了些什麼工作呢?相信有的朋友還不是很清楚,本文就來介紹一下從開啟電源到出現Windows的藍天白雲時,計算機到底都幹了些什麼事情。
首先讓我們來了解一些基本概念。第一個是大家非常熟悉的BIOS(基本輸入輸出系統),BIOS是直接與硬體打交道的底層程式碼,它為作業系統提供了控制硬體裝置的基本功能。BIOS包括有系統BIOS(即常說的主機板BIOS)、顯示卡BIOS和其它裝置(例如IDE控制器、SCSI卡或網路卡等)的BIOS,其中系統BIOS是本文要討論的主角,因為計算機的啟動過程正是在它的控制下進行的。BIOS一般被存放在ROM(只讀儲存晶片)之中,即使在關機或掉電以後,這些程式碼也不會消失。
第二個基本概念是記憶體的地址,我們的機器中一般安裝有32MB、64MB或128MB記憶體,這些記憶體的每一個位元組都被賦予了一個地址,以便CPU訪問記憶體。32MB的地址範圍用十六進位制數表示就是0~1FFFFFFH,其中0~FFFFFH的低端1MB記憶體非常特殊,因為最初的8086處理器能夠訪問的記憶體最大隻有1MB,這1MB的低端640KB被稱為基本記憶體,而A0000H~BFFFFH要保留給顯示卡的視訊記憶體使用,C0000H~FFFFFH則被保留給BIOS使用,其中系統BIOS一般佔用了最後的64KB或更多一點的空間,顯示卡BIOS一般在C0000H~C7FFFH處,IDE控制器的BIOS在C8000H~CBFFFH處。
好了,下面我們就來仔細看看計算機的啟動過程吧。
第一步: 當我們按下電源開關時,電源就開始向主機板和其它裝置供電,此時電壓還不太穩定,主機板上的控制晶片組會向CPU發出並保持一個RESET(重置)訊號,讓CPU內部自動恢復到初始狀態,但CPU在此刻不會馬上執行指令。當晶片組檢測到電源已經開始穩定供電了(當然從不穩定到穩定的過程只是一瞬間的事情),它便撤去RESET訊號(如果是手工按下計算機皮膚上的Reset按鈕來重啟機器,那麼鬆開該按鈕時晶片組就會撤去RESET訊號),CPU馬上就從地址FFFF0H處開始執行指令,從前面的介紹可知,這個地址實際上在系統BIOS的地址範圍內,無論是Award BIOS還是AMI BIOS,放在這裡的只是一條跳轉指令,跳到系統BIOS中真正的啟動程式碼處。
第二步: 系統BIOS的啟動程式碼首先要做的事情就是進行POST(Power-On Self Test,加電後自檢),POST的主要任務是檢測系統中一些關鍵裝置是否存在和能否正常工作,例如記憶體和顯示卡等裝置。由於POST是最早進行的檢測過程,此時顯示卡還沒有初始化,如果系統BIOS在進行POST的過程中發現了一些致命錯誤,例如沒有找到記憶體或者記憶體有問題(此時只會檢查640K常規記憶體),那麼系統BIOS就會直接控制喇叭發聲來報告錯誤,聲音的長短和次數代表了錯誤的型別。在正常情況下,POST過程進行得非常快,我們幾乎無法感覺到它的存在,POST結束之後就會呼叫其它程式碼來進行更完整的硬體檢測。
第三步: 接下來系統BIOS將查詢顯示卡的BIOS,前面說過,存放顯示卡BIOS的ROM晶片的起始地址通常設在C0000H處,系統BIOS在這個地方找到顯示卡BIOS之後就呼叫它的初始化程式碼,由顯示卡BIOS來初始化顯示卡,此時多數顯示卡都會在螢幕上顯示出一些初始化資訊,介紹生產廠商、圖形晶片型別等內容,不過這個畫面幾乎是一閃而過。系統BIOS接著會查詢其它裝置的BIOS程式,找到之後同樣要呼叫這些BIOS內部的初始化程式碼來初始化相關的裝置。
第四步: 查詢完所有其它裝置的BIOS之後,系統BIOS將顯示出它自己的啟動畫面,其中包括有系統BIOS的型別、序列號和版本號等內容。
第五步: 接著系統BIOS將檢測和顯示CPU的型別和工作頻率,然後開始測試所有的RAM,並同時在螢幕上顯示記憶體測試的進度,我們可以在CMOS設定中自行決定使用簡單耗時少或者詳細耗時多的測試方式。
第六步: 記憶體測試通過之後,系統BIOS將開始檢測系統中安裝的一些標準硬體裝置,包括硬碟、CD-ROM、串列埠、並口、軟碟機等裝置,另外絕大多數較新版本的系統BIOS在這一過程中還要自動檢測和設定記憶體的定時引數、硬碟引數和訪問模式等。
第七步: 標準裝置檢測完畢後,系統BIOS內部的支援即插即用的程式碼將開始檢測和配置系統中安裝的即插即用裝置,每找到一個裝置之後,系統BIOS都會在螢幕上顯示出裝置的名稱和型號等資訊,同時為該裝置分配中斷、DMA通道和I/O埠等資源。
第八步: 到這一步為止,所有硬體都已經檢測配置完畢了,多數系統BIOS會重新清屏並在螢幕上方顯示出一個表格,其中概略地列出了系統中安裝的各種標準硬體裝置,以及它們使用的資源和一些相關工作引數。
第九步: 接下來系統BIOS將更新ESCD(Extended System Configuration Data,擴充套件系統配置資料)。ESCD是系統BIOS用來與作業系統交換硬體配置資訊的一種手段,這些資料被存放在CMOS(一小塊特殊的RAM,由主機板上的電池來供電)之中。通常ESCD資料只在系統硬體配置發生改變後才會更新,所以不是每次啟動機器時我們都能夠看到“Update ESCD… Success”這樣的資訊,不過,某些主機板的系統BIOS在儲存ESCD資料時使用了與Windows 9x不相同的資料格式,於是Windows 9x在它自己的啟動過程中會把ESCD資料修改成自己的格式,但在下一次啟動機器時,即使硬體配置沒有發生改變,系統BIOS也會把ESCD的資料格式改回來,如此迴圈,將會導致在每次啟動機器時,系統BIOS都要更新一遍ESCD,這就是為什麼有些機器在每次啟動時都會顯示出相關資訊的原因。
第十步: ESCD更新完畢後,系統BIOS的啟動程式碼將進行它的最後一項工作,即根據使用者指定的啟動順序從軟盤、硬碟或光碟機啟動。以從C盤啟動為例,系統BIOS將讀取並執行硬碟上的主開機記錄,主開機記錄接著從分割槽表中找到第一個活動分割槽,然後讀取並執行這個活動分割槽的分割槽引導記錄,而分割槽引導記錄將負責讀取並執行IO.SYS,這是DOS和Windows 9x最基本的系統檔案。Windows 9x的IO.SYS首先要初始化一些重要的系統資料,然後就顯示出我們熟悉的藍天白雲,在這幅畫面之下,Windows將繼續進行DOS部分和GUI(圖形使用者介面)部分的引導和初始化工作。
如果系統之中安裝有引導多種作業系統的工具軟體,通常主開機記錄將被替換成該軟體的引導程式碼,這些程式碼將允許使用者選擇一種作業系統,然後讀取並執行該作業系統的基本引導程式碼(DOS和Windows的基本引導程式碼就是分割槽引導記錄)。 上面介紹的便是計算機在開啟電源開關(或按Reset鍵)進行冷啟動時所要完成的各種初始化工作,如果我們在DOS下按Ctrl+Alt+Del組合鍵(或從Windows中選擇重新啟動計算機)來進行熱啟動,那麼POST過程將被跳過去,直接從第三步開始,另外第五步的檢測CPU和記憶體測試也不會再進行。我們可以看到,無論是冷啟動還是熱啟動,系統BIOS都一次又一次地重複進行著這些我們平時並不太注意的事情,然而正是這些單調的硬體檢測步驟為我們能夠正常使用電腦提供了基礎。
相關文章
- 計算機啟動過程計算機
- 計算機那些事(2)——從開機到 Linux 啟動過程詳解計算機Linux
- Windows XP Professional計算機啟動過程概述Windows計算機
- Linux啟動過程詳解Linux
- Linux 開機引導和啟動過程詳解Linux
- fabric網路環境啟動過程詳解
- SQL Server資料庫啟動過程詳解SQLServer資料庫
- Android小知識-ActivityManagerService詳解(APP啟動過程)AndroidAPP
- Oracle資料庫啟動過程及狀態詳解Oracle資料庫
- Android 核心分析 之八------Android 啟動過程詳解Android
- oracle資料庫的啟動與關閉過程詳解Oracle資料庫
- 計算機系統引導過程計算機
- 全網最硬核解讀計算機啟動原理計算機
- 全網最硬核講解計算機啟動流程計算機
- PHP Socket 程式設計過程詳解PHP程式設計
- Java虛擬機器啟動過程解析Java虛擬機
- 開機SystemServer到ActivityManagerService啟動過程分析Server
- 【PHP-FPM】重啟過程原始碼詳解PHP原始碼
- Windows 啟動過程Windows
- Hyperledger Fabric的test-network啟動過程Bash原始碼詳解原始碼
- MapReduce過程詳解
- App 啟動過程(含 Activity 啟動過程) | 安卓 offer 收割基APP安卓
- PXE 和 計算機網路啟動計算機網路
- 計算機系統的啟動概述計算機
- tomcat原始碼分析(第二篇 tomcat啟動過程詳解)Tomcat原始碼
- Spark計算過程分析Spark
- Angular的啟動過程Angular
- main的啟動過程AI
- Nginx的啟動過程Nginx
- Service啟動過程分析
- Activity啟動過程分析
- linux啟動過程Linux
- Oracle的啟動過程Oracle
- 【LINUX】啟動過程Linux
- iOS App啟動過程iOSAPP
- 語音特徵引數MFCC計算的詳細過程特徵
- httpd使用systemctl啟動超時解決過程httpd
- Windows啟動過程(MBR引導過程分析)Windows