電腦開機過程

電腦從按下開關到顯示桌面是很複雜的一個過程。

電腦開機過程


按下開關,系統將電力供給到計算機中的各種設備,主板上的指示燈亮,並通電使鼠標亮起。

電腦開機過程


這時整個系統由BIOS控制,電壓還不太穩定,芯片組向CPU發送並保持一個重置命令,使CPU初始化。

電腦開機過程

時芯片組會等待電源發送一個POWER GOOD命令,電壓穩定後,電源發出命令,芯片組會馬上停止重置命令的發送,這時CPU會在BIOS中尋找一小段程序,從地址FFFF0H開始執行尋址指令。這個地址中會存儲一條跳轉指令,直接跳轉到系統BIOS中真正的啟動代碼處,進行上電自檢。

電腦開機過程

POT檢測系統中的一些關鍵設備是否存在和正常工作,然後通過主板自帶的揚聲器報告系統是否正常,以及錯誤類型。詳情請見:開機自檢_百度百科。

電腦開機過程

然後系統BIOS會找到顯卡BIOS,存放顯卡BIOS的ROM地址在C0000H處,系統BIOS找到顯卡BIOS之後調用它的代碼,使顯示屏上顯示初始化信息,包括主板相關信息,主板的BIOS版本和編程日期等信息。系統BIOS接著會查找其他設備的BIOS程序,找到之後同樣要調用這些BIOS內部的初始化代碼來初始化相關的設備。系統BIOS接著會查找其他設備的BIOS程序,找到之後同樣要調用這些BIOS內部的初始化代碼來初始化相關的設備。

查找完所有其他設備的BIOS之後,系統BIOS將顯示出它自己的啟動畫面,其中包括系統BIOS的類型、序列號和版本號等內容。然後檢測和顯示CPU的類型和工作頻率,然後開始測試所有的RAM,並同時在屏幕上顯示內存測試的進度。

內存測試通過之後,系統BIOS將開始檢測系統中安裝的一些標準硬件設備,包括硬盤、CD-ROM、串口、並口、軟驅等設備,另外絕大多數較新版本的系統BIOS在這一過程中還要自動檢測和設置內存的定時參數、硬盤參數和訪問模式等。

標準設備檢測完畢後,系統BIOS內部支持即插即用的代碼將開始檢測和配置系統中安裝的即插即用設備,每找到一個設備之後,系統BIOS都會在屏幕上顯示出設備的名稱和型號等信息,同時為該設備分配中斷、DMA通道和I/O端口等資源。

經過上面幾步,所有硬件都已經檢測配置完畢,多數系統BIOS會重新清屏並在屏幕上方顯示出一個表格,其中概略地列出了系統中安裝的各種標準硬件設備,以及它們使用的資源和一些相關工作參數。

硬件自檢完成後,BIOS把控制權轉交給下一階段的啟動程序。按照順序將控制權依次轉移給列表中的存儲設備並依次讀取這個設備的第一個扇區,即第一個512字節,如果這512個字節的最後兩個字節是0x55和0xAA,表明這個設備可以用於啟動;如果不是,表明設備不能用於啟動,控制權於是被轉交給"啟動順序"中的下一個設備。

電腦開機過程


在硬啟動時,計算機的控制權需轉交給硬盤的某個分區,這裡分成三種情況:

1、 情況A:卷引導記錄

四個主分區裡面,只有一個是激活的。計算機會讀取激活分區的第一個扇區,叫做"卷引導記錄"(VBR)。

"卷引導記錄"告訴計算機操作系統在這個分區裡的位置。然後,計算機就會加載操作系統了。

電腦開機過程


2、 情B:擴展分區和邏輯分區

隨著硬盤越來越大,四個主分區已經不夠了,需要更多的分區。但是,分區表只有四項,因此規定有且僅有一個區可以被定義成"擴展分區"(Extended partition)。

所謂"擴展分區",就是指這個區裡面又分成多個區。這種分區裡面的分區,就叫做"邏輯分區"(logical partition)。

計算機先讀取擴展分區的第一個扇區,叫做"擴展引導記錄"(EBR)。它裡面也包含一張64字節的分區表,但是最多隻有兩項(也就是兩個邏輯分區)。

3、 情況C:啟動管理器

在這種情況下,計算機讀取"主引導記錄"前面446字節的機器碼之後,不再把控制權轉交給某一個分區,而是運行事先安裝的"啟動管理器"(boot loader),由用戶選擇啟動哪一個操作系統。這時會出現選擇菜單。

電腦開機過程


計算機的作系統位置已經確定,開始進行內核加載。

在加載內核階段,ntldr加載稱為Windows 內核的ntokrnl.exe。系統加載了Windows 內核但是沒有將它初始化。接著ntldr加載硬件抽象層(HAL,hal.dll),然後,系統繼續加載HKEY_LOCAL_MACHINE\system鍵,NTLDR讀取select鍵來決定哪一個Control Set將被加載。控制集中包含設備的驅動程序以及需要加載的服務。NTLDR加載HKEY_LOCAL_MACHINE\system\service\...下start鍵值為0的最底層設備驅動。當作為Control Set的鏡像的Current Control Set被加載時,ntldr傳遞控制給內核,初始化內核階段就開始了。在內核初始化階段開始的時候,彩色的Windows XP的logo以及進度條顯示在屏幕中央。

電腦開機過程

如果是Win7話會顯示一個由64張圖片組成的一小段視頻,真實效果可見第一張圖片。

電腦開機過程

在這個階段,系完成了啟動的4項任務:內核使用在硬件檢測時收集到的數據來創建了HKEY_LOCAL_MACHINE\HARDWARE鍵。

內核通過引用HKEY_LOCAL_MACHINE\system\Current的默認值複製Control Set來創建了Clone Control Set。Clone Control Set配置是計算機數據的備份,不包括啟動中的改變,也不會被修改。

系統完成初始化以及加載設備驅動程序,內核初始化那些在加載內核階段被加載的底層驅動程序,然後內核掃描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start鍵值為1的設備驅動程序。這些設備驅動程序在加載的時候便完成初始化,如果有錯誤發生,內核使用ErrorControl鍵值來決定如何處理,值為3時,錯誤標誌為危機/關鍵,系統初次遇到錯誤會以LastKnownGood Control Set重新啟動,如果使用LastKnownGood Control Set啟動仍然產生錯誤,系統報告啟動失敗,錯誤信息將被顯示,系統停止啟動;值為2時錯誤情況為嚴重,系統啟動失敗並且以LastKnownGood Control Set重新啟動,如果系統啟動已經在使用LastKnownGood值,它會忽略錯誤並且繼續啟動;當值是1的時候錯誤為普通,系統會產生一個錯誤信息,但是仍然會忽略這個錯誤並且繼續啟動;當值是0的時候忽略,系統不會顯示任何錯誤信息而繼續運行

Session Manager啟動了Windows 高級子系統以及服務,Session Manager啟動控制所有輸入、輸出設備以及訪問顯示器屏幕的Win32子系統以及Winlogon進程,初始化內核完畢。

驅動程序加載完成後,Windows做如下設置:1. 創建系統環境變量2. 啟動 win32.sys ,這個是Windows子系統的內核模式部分。3. 啟動 csrss.exe,這個是Windows子系統的用戶模式部分。4. 啟動 winlogon.exe5. 創建虛擬內存頁面文件6. 對一些必要的文件進行改名,然後進入“歡迎使用”界面,最後進入桌面。至此啟動完畢。

電腦開機過程



分享到:


相關文章: