趙海雁,劉變蓮
(中北大學(xué)電子與計(jì)算機(jī)技術(shù)學(xué)院,山西 太原 030051)
Windows XP 系統(tǒng)自2001 年10 月份正式發(fā)布以來,一直受到廣大的電腦愛好者的歡迎。隨著計(jì)算機(jī)硬件與軟件的不斷發(fā)展,Windows XP 系統(tǒng)步履越來越蹣跚。而Windows 7操作系統(tǒng)的出現(xiàn),適應(yīng)現(xiàn)代發(fā)展的需求。因?yàn)樗芗嫒?2位與64 位軟件并能很好地支持硬件,所以成為微軟最受用戶歡迎的操作系統(tǒng),根據(jù)當(dāng)前市場銷售份額來看已證明這一點(diǎn)。
微軟公司推出Windows 7 操作系統(tǒng)版本很多,有不同家庭普通版的,還有不同的專業(yè)版。盡管Windows 7 操作系統(tǒng)由于版本不同,功能實(shí)現(xiàn)有些差異,但它們啟動(dòng)原理卻基本相同。Windows 7 操作系統(tǒng)啟動(dòng)原理與Windows XP 操作系統(tǒng)有所不同,它以全新的開機(jī)理念,加速了開機(jī)速度。對(duì)此本文深入分析研究兩個(gè)操作系統(tǒng)的啟動(dòng)原理,從而闡述Windows 7 開機(jī)快捷根源。同時(shí)給出加速開機(jī)的多核設(shè)置方法。
Windows7 與Windows XP 系統(tǒng)啟動(dòng)過程大致分為五個(gè)過程:電源開啟自檢、初始化啟動(dòng)、引導(dǎo)程序讀取數(shù)據(jù)、系統(tǒng)內(nèi)核初始化與驅(qū)動(dòng)加載,用戶登錄過程。
Windows7 與Windows XP 在這一過程都是加電自檢。加電后,BIOS 載入必要的指令,對(duì)BIOS 上的硬件設(shè)置開始初始化檢測。并從CMOS 中讀取系統(tǒng)配置信息,驗(yàn)證啟動(dòng)操作系統(tǒng)的設(shè)備是否正常。在完成了電源啟動(dòng)的自檢之后,每個(gè)帶有固件的硬件設(shè)備,如顯卡和磁盤控制器,都會(huì)根據(jù)需要完成內(nèi)部的自檢操作。
在這一過程中,Windows7 與Windows XP 完成了電源BIOS 啟動(dòng)自檢過程之后,打開啟動(dòng)硬盤,通常設(shè)置硬盤C為啟動(dòng)硬盤。通過啟動(dòng)硬盤啟動(dòng)磁盤的第一個(gè)扇區(qū)的主引導(dǎo)記錄MBR,然后MBR 讀取主分區(qū)表dpt。Windows7 與Windows XP 系統(tǒng)從這一階段開始,他們啟動(dòng)過程不相同。
從MBR 讀取dpt,dpt 讀完找到主分區(qū)之后然后找到這個(gè)主分區(qū)的分區(qū)引導(dǎo)代碼pbr ,pbr 位于激活主分區(qū)的第一個(gè)扇區(qū)。安裝不同操作系統(tǒng)的時(shí)候pbr是會(huì)被改變。
1.3.1 WindowsXP 引導(dǎo)程序讀取數(shù)據(jù)過程
Windows XP 引導(dǎo)代碼pbr 查找的是ntldr 文件,找到之后啟動(dòng)它。BIOS 將控制權(quán)轉(zhuǎn)交給ntldr,由ntldr 完成操作系統(tǒng)的啟動(dòng),如圖1所示。
圖1 Windows XP 啟動(dòng)原理流程圖
(1)在基于X86CPU的系統(tǒng)下,ntldr 將處理器8 或16 位實(shí)模式改為32 位平滑內(nèi)存模式。因?yàn)镃PU 處在32 位模式下,可以對(duì)大容量內(nèi)存進(jìn)行直接存取。
(2)ntldr 中包含相應(yīng)的代碼,能夠幫助Windows XP 完成對(duì)NTFS 或FAT 格式的磁盤進(jìn)行讀寫。從而能夠讀取、訪問和復(fù)制文件。
(3)通過ntldr 分析并讀取boot.ini 文件,確定操作系統(tǒng)分區(qū)所在的位置。如果單操作的系統(tǒng),不會(huì)出現(xiàn)選擇啟動(dòng)系統(tǒng)頁面。此時(shí)ntldr 會(huì)啟動(dòng)ntdetect.com 程序。在基于X86的系統(tǒng),detect.com 會(huì)通過調(diào)用系統(tǒng)固件程序收集安裝的硬件信息,然后由ntdetect.com 將這些信息傳遞送回ntldr。
(4)ntldr 會(huì)對(duì)內(nèi)核進(jìn)行初始化,在初始化之前加載系統(tǒng)內(nèi)核ntoskrnl.exe 與硬件抽象層HAL(hal.dll 文件),然后加載底層設(shè)備驅(qū)動(dòng)程序和需要的服務(wù)。
(5)ntldr 從ntdetect.com 收集到硬件配置信息創(chuàng)建HKEY_LOCAL_MACHINE的hardware 鍵。然后創(chuàng)建計(jì)算機(jī)數(shù)據(jù)備份。
1.3.2 Windows7 引導(dǎo)程序讀取數(shù)據(jù)過程
Windows7 由于采用了引導(dǎo)配置數(shù)據(jù)庫這一技術(shù),采用了不同與Windows XP的啟動(dòng)方式,啟動(dòng)速度得到了明顯的加快。
Windows7是通過引導(dǎo)代碼pbr 尋找bootmgr,從此BIOS將把控制權(quán)轉(zhuǎn)交給bootmgr,如圖2所示。
(1)bootmgr 尋找根boot 目錄下的bcd,讀取PC 機(jī)存儲(chǔ)在引導(dǎo)配置數(shù)據(jù)庫bcd 上系統(tǒng)卷,bcd 相當(dāng)于WindowsXP的boot.ini 引導(dǎo)文件。然后bcd 從注冊表中讀取啟動(dòng)配置數(shù)據(jù)后,操作系統(tǒng)正常啟動(dòng)。
(2)同時(shí)引導(dǎo)代碼找到%SystemRoot% System32Winload.exe。通過Winload.exe 加載系統(tǒng)內(nèi)核ntoskrnl.exe 與硬件抽象層hal.dll,并加載引導(dǎo)啟動(dòng)設(shè)備驅(qū)動(dòng)程序。此時(shí)bootmgr 將控制權(quán)移交給操作系統(tǒng)。
圖2 Windows 7 啟動(dòng)原理流程圖
內(nèi)核初始化完成后,繼續(xù)把驅(qū)動(dòng)設(shè)備與服務(wù)加載會(huì)話管理器smss.exe(Windows/system32 文件夾下)。
Windows 啟動(dòng)應(yīng)用程序wininit.exe,它負(fù)責(zé)啟動(dòng)services.exe(服務(wù)控制管理文件),啟動(dòng)本地安全授權(quán)l(xiāng)sass.exe(Local Security Authority ,LSA),對(duì)于Windows7 還要啟動(dòng)本地會(huì)話管理器(Lsm.exe),此時(shí)系統(tǒng)啟動(dòng)完成。
通過對(duì)Windows7 與Windows XP 啟動(dòng)過程原理的全面分析,很直觀地觀察到Windows7的啟動(dòng)過程簡單,操作系統(tǒng)啟動(dòng)直接。因而啟動(dòng)速度遠(yuǎn)超于Windows XP。
Windows7 系統(tǒng)設(shè)置了兩種快速開機(jī)的模式:“睡眠”、“休眠”兩種模式。這兩種模式都是基于電源的管理技術(shù)。高級(jí)配置與電源接口ACPI 就是電源管理技術(shù)的標(biāo)準(zhǔn)。
ACPI 共有六種狀態(tài),其中S3 狀態(tài)是STR,S4 狀態(tài)是STD。
STD(Suspend to Disk)是休眠至硬盤,叫“休眠模式”。當(dāng)系統(tǒng)從休眠恢復(fù)啟動(dòng)時(shí),Winload.exe 會(huì)通過執(zhí)行%SystemRoot% System32Winresume.exe 將休眠硬盤上hiberfil.sys的文件加載到內(nèi)存中(如圖2),并快速恢復(fù)系統(tǒng)正常啟動(dòng)時(shí)的配置,重新快速登錄。由于休眠時(shí),從內(nèi)存寫入硬盤的文件是一個(gè)文件,因而讀取的速度要比正常啟動(dòng)時(shí)效率高很多。
STR(Suspend to RAM)是休眠至內(nèi)存,叫“睡眠模式”。當(dāng)系統(tǒng)從睡眠恢復(fù)啟動(dòng)時(shí),系統(tǒng)wininit.exe 提取保存在session 0 中的系統(tǒng)狀態(tài)和內(nèi)存內(nèi)容,并能重新快速啟動(dòng)。與STD 不同的是STR 直接從內(nèi)存中提取數(shù)據(jù),由于內(nèi)存的存取速度遠(yuǎn)高于從硬盤提取的速度,所以STR 顯然要比STD快很多。STD是通過操作系統(tǒng)軟件實(shí)現(xiàn)的。因?yàn)閃indows XP 無法實(shí)現(xiàn)從內(nèi)存提取數(shù)據(jù),因此在Windows XP 沒有“睡眠模式”。
Windows7 操作系統(tǒng)可以充分利用SMT 駐留的技術(shù),加快開機(jī)速度。
SMT[2]是Simultaneous Multi-Threading的縮寫形式,意思為同時(shí)多線程。SMT 駐留的技術(shù)從本質(zhì)上來說是一種同時(shí)多線程技術(shù),它是通過Hyper-threading 超線程處理技術(shù)把同一個(gè)任務(wù)同時(shí)分給同時(shí)多線程來完成。也就是說超線程處理器被應(yīng)用程序分為兩個(gè)分離的邏輯處理器,每個(gè)邏輯處理器都可獨(dú)立響應(yīng)中斷,有效避免了一個(gè)線程執(zhí)行的同時(shí)另一個(gè)線程閑置的狀況,這樣處理多任務(wù)的速度明顯加快。
Windows7 操作系統(tǒng)由于提供了SMT 駐留的技術(shù),因而相比WindowsXP 來說,不論從啟動(dòng),還是視頻編輯、圖像處理等,其整體運(yùn)行速度有顯著提高。WindowsXP 在單核處理器和多核處理器[3]的性能差異上沒有明顯區(qū)別,而Windows 7 系統(tǒng)由于對(duì)Intel的超線程技術(shù)支持,能夠?qū)蝹€(gè)處理器內(nèi)核看作兩個(gè)核;如果是兩個(gè)核處理器,可以看成四個(gè)核,因此Windows 7 系統(tǒng)能夠在更短的時(shí)間里完成多項(xiàng)任務(wù)。對(duì)于Windows 7 操作系統(tǒng)開機(jī)來說,它也是通過增加核心數(shù)量來減少系統(tǒng)啟動(dòng)時(shí)間,從而開機(jī)速度有一個(gè)明顯提高。
一般操作系統(tǒng)在默認(rèn)狀態(tài)下啟動(dòng)時(shí),只使用單個(gè)CPU核心工作。而Windows 7 系統(tǒng)配置里面有針對(duì)多核CPU的設(shè)置。如圖3所示。
運(yùn)行msconfig 打開“系統(tǒng)配置”窗口。點(diǎn)擊“引導(dǎo)”選項(xiàng)卡,找到“高級(jí)選項(xiàng)”按鈕,點(diǎn)擊后在“引導(dǎo)高級(jí)選項(xiàng)”界面,勾選“處理器數(shù)”,如是雙核就選擇2;同時(shí)還可以勾選“最大內(nèi)存”。點(diǎn)擊確定按鈕后,重啟計(jì)算機(jī)[4]。
圖3 系統(tǒng)多核設(shè)置圖
隨著硬件的不斷發(fā)展,WindowsXP 操作系統(tǒng)已無法適應(yīng)硬件各方面的要求,而Windows 7 操作系統(tǒng)的出現(xiàn)能夠很好地支持當(dāng)今的硬件系統(tǒng)。因此Windows7 系統(tǒng)在啟動(dòng)方式上也有了很大的改進(jìn)。因?yàn)椴捎昧巳碌膯?dòng)方式,所以加快Windows 7 開機(jī)啟動(dòng)速度。
為了更好地體現(xiàn)Windows7 系統(tǒng)開機(jī)的快捷,還需要一些設(shè)置。比如:卸載暫不需要的軟件與服務(wù)。利用第三方軟件,如:360 安全衛(wèi)士,去掉影響速度的插件和垃圾,并用360系統(tǒng)急救箱進(jìn)行系統(tǒng)檢測。通過這些設(shè)置,會(huì)明顯感到Windows7 開機(jī)快捷這一優(yōu)勢。
[1]Fried,Ina.The XP Alternative for Vista PCs (Vista 電腦的XP 轉(zhuǎn)換)[DB/OL].http://www.news.com/The-XP-Alternative-for- Vista- PCs/2100- 10163-6209481.html,2007-09-21.
[2]Lumer E.Faieta B.Diversity and Adaptation in Populations of Clustering Ants[C].InProceedings of the Third International Conference Oil Simulation of Adaptive Behaviour:From Animals to Animats 3.Cambridge,MA:MIT Press,1994:501-508.
[3]李彥哲,朱英.多核微處理器技術(shù)[J].高性能計(jì)算技術(shù),2005:5-8.
[4]孫雷.一增一減 加速Windows7 開機(jī)和關(guān)機(jī)速度[J].網(wǎng)絡(luò)與信息,2010(2):75.