過去經常為了優化家裡的Windows 系統啟動時間所苦惱為此我還特地買了塊固態硬盤和可以做Smart Cache的主板進行優化此後就經常用安全衛士的啟動時間優化作為評測看到經過優化的電腦可以用秒時間啟動系統並且在安全衛士中顯示擊敗了全國%的電腦不禁飄飄然起來然而最近工作用的筆記本電腦因為工作原因升級了Windows RTM版卻驚訝的發現在我的大黑Thinkpad W上竟然啟動時間是秒沒看錯真的是歎為觀止的秒!!! 比較一下同樣用SSD啟動的家中的Mac Air竟然還要勝上一籌那麼究竟Windows 中暗藏了什麼玄機呢?讓我們一探究竟!
想想大家是不是都曾經為了優化啟動時間苦惱過?聰明的你也許會采用過去我常用的方式休眠方式但是這種方式顯然由於要保持通電狀態維持內存狀態而或者不利於筆記本電池的壽命或者對台式機還是費電Windows 的出現就是為了滿足我們可以高效快速的冷啟動其實在Windows 中已經對啟動過程做了適當的優化和改進例如並行加載設備驅動和服務啟動但是Windows 顯然更進了一步確切的說Windows 創新性的結合了冷啟動和休眠方式來加速啟動過程
那麼Windows 中的啟動和關機過程涉及了哪些環節呢?
一個完整的關機過程包括了
選擇開始菜單中的關閉按鈕或按下電源按鈕或者應用程序通過調用 API ExitWindowsEx() 或 InitiateShutdown() 等啟動關機
Windows 系統將關機信息廣播給所運行應用程序讓他們有機會來保存活躍數據和設置狀態;應用程序還可以請求一點額外的時間
Windows 系統將關閉每個登陸的用戶會話
Windows 系統將系統關閉信息發送給所有服務並告知關機過程已經開始隨後有序的將其關閉關閉過程是並行的停止服務對於具有依賴關系的服務串行關閉如果服務沒有響應系統將強制關閉
系統也會告知所有設備將其關閉
Windows關閉自身系統會話(會話)
Windows系統將所有掛起的數據刷新到硬盤並確保完全保存
Windows系統通過ACPI電源接口通知底層電源模塊關機
對於系統的啟動過程呢?(我還將在未來的無盤SAN Boot引導Windows Server 的博客裡面展開論述)
按下電源按鈕後 PC 的固件啟動開機自檢過程(大家熟知的POST)並加載固件設置這個預引導過程結束時會檢測到一個有效的系統磁盤才繼續(當然我們需要在BIOS中設置檢測到硬件後的引導順序)
Firmware 的嵌入式啟動程序讀取主引導記錄 (MBR)隨後啟動 BootmgrexeBootmgrexe 在 Windows 啟動分區上查找並啟動 Windows 加載程序 (Winloadexe)
加載啟動 Windows 內核所需的基本驅動程序然後Windows的內核程序開始運行在此過程加載系統注冊表配置單元和附加標記為 BOOT_START 的驅動程序到內存中
Windows內核將控制傳遞給會話管理器進程 (Smssexe) 初始化系統會話然後加載和啟動未標記為 BOOT_START的設備和驅動程序
Winlogonexe 啟動顯示用戶登錄屏幕服務控制管理器啟動服務相應的組策略腳本運行當用戶登錄時Windows 將創建該用戶的會話
Explorerexe 啟動系統將創建初始化桌面並顯示它的桌面窗口管理器 (DWM)進程
從上面的關機過程中可以發現系統需要關閉所有的用戶會話和內核會話關閉服務和設備然後才會徹底關機
而 Windows 可以快速啟動的關鍵改變在於
在 Windows 中會關閉用戶會話但不再關閉內核會話而是以柔性的休眠方式處理相比充分休眠方式由於應用程序使用的內存頁很多相對的如果只保留系統會話 的休眠狀態數據實際是會小很多的這樣會大大減少休眠所用到的內存回寫到磁盤的時間休眠狀態就是指寫到磁盤 (hiberfilsys) 上的文件有效保存系統狀態和內存的內容信息然後恢復和還原的時候在將內容讀取回內存Windows 的冷啟動使用了這種技術讀取休眠文件和重新初始化驅動程序的時間會快很多對於大多數主機上會有%在的顯著提升這一點也比較容易看出來聰明的各位看官你懂得
從休眠方式恢復的速度顯然比重新初始化恢復快很多(這不就是投機的我們之前會可以選擇休眠的原因嗎)另外Windows 還增加了多階段恢復的功能類似單機系統的分布式作業拆解例如如果你是i或i四核的主機將充分利用所有內核並發讀取和解壓縮休眠Hibernate文件要知道解壓縮還是比較消耗CPU的;這個功能對於我們從休眠狀態恢復系統同樣有了很大的提升!
另外值得一提的如何對待休眠文件在Windows 系統中用 dir /s /ah hiberfilesys 也許你會發現這是相當大的一個默認是以物理內存的 %作為休眠文件的大小基本上是作為系統為了進入休眠狀態時寫出的狀態數據所保留的大小實際上作為快速啟動它通常只是是物理內存的 ~% (根據驅動程序 服務和其他因素而異)
另一個重要 Windows 的快速啟動特點是盡管這種方式不會完全枚舉所有"即插即用"的設備驅動程序但快速驅動模式仍然會初始化驅動程序因此在快速啟動方式下的冷啟動仍然可以和從前一樣從容應對硬件環境的改變當然大家如果有條件用SSD快速啟動的效果會更加明顯你也懂得即便是讀少量的休眠文件固態盤也比機械硬盤給力
還有一個值得介紹的其實也多余一說的是如果你的PC機不算老那麼當然對比用老的BIOS啟動新的UEFI(統一可擴展固件接口)BIOS的啟動速度還是快很多的UEFI在通電後會首先初始化CPU和內存與BIOS不同接下來其他設備的加載和初始化則將有可能被並行處理這將大大提高系統的啟動速度當然現在絕大多數主機的主板都支持UEFI模式)
最後檢查一下你的Windows 是不是啟動了這個功能吧當然默認應該是打開的
在命令行運行powercfg /a 可以看到我的系統已經啟用了快速啟動功能
通過控制面板也可以設置和查看
最後說明一下大家可能知道可以通過運行 powercfg /hibernate off命令禁用休眠和回收磁盤空間不過看了前面介紹的快速啟動部分也許你該明白這樣做不僅僅將禁用休眠連快速啟動功能也損失了如果你想直接回到Windows
的啟動狀態可以運行shutdown /s /full / t 關機或者選擇從圖形界面重新啟動都會觸發一個舊的冷啟動過程但是為什麼要退回去呢?
From:http://tw.wingwit.com/Article/Common/201311/7566.html