軟件是一系列按照特定順序組織的計(jì)算機(jī)數(shù)據(jù)和指令的集合。一般來講軟件被劃分為編程語言、系統(tǒng)軟件、應(yīng)用軟件和介于這兩者之間的中間件。硬件是“計(jì)算機(jī)硬件”的簡稱。與“軟件”相對,電子計(jì)算機(jī)系統(tǒng)中所有實(shí)體部件和設(shè)備的統(tǒng)稱。 過去經(jīng)常為了優(yōu)化家里的Windows 7系統(tǒng)啟動時(shí)間所苦惱,為此我還特地買了塊固態(tài)硬盤和可以做Smart Cache的主板進(jìn)行優(yōu)化,此后就經(jīng)常用安全衛(wèi)士360的啟動時(shí)間優(yōu)化作為評測,看到經(jīng)過優(yōu)化的電腦可以用17秒時(shí)間啟動系統(tǒng)并且在安全衛(wèi)士360中顯示擊敗了全國99%的電腦,不禁飄飄然起來。然而最近工作用的筆記本電腦因?yàn)楣ぷ髟蛏壛薟indows 8 RTM版,卻驚訝的發(fā)現(xiàn)在我的大黑Thinkpad W520上,竟然啟動時(shí)間是7秒,沒看錯(cuò),真的是嘆為觀止的7秒!!! 比較一下同樣用SSD啟動的家中的Mac Air竟然還要勝上一籌。那么究竟Windows 8中暗藏了什么玄機(jī)呢?讓我們一探究竟!
想想大家是不是都曾經(jīng)為了優(yōu)化啟動時(shí)間苦惱過?聰明的你也許會采用過去我常用的方式-休眠方式,但是這種方式顯然由于要保持通電狀態(tài)維持內(nèi)存狀態(tài)而或者不利于筆記本電池的壽命或者對臺式機(jī)還是費(fèi)電。Windows 8的出現(xiàn)就是為了滿足我們可以高效快速的冷啟動。其實(shí)在Windows 7中已經(jīng)對啟動過程做了適當(dāng)?shù)膬?yōu)化和改進(jìn),例如并行加載設(shè)備驅(qū)動和服務(wù)啟動,但是Windows 8顯然更進(jìn)了一步,確切的說Windows 8創(chuàng)新性的結(jié)合了冷啟動和休眠方式來加速啟動過程。
那么Windows 7中的啟動和關(guān)機(jī)過程涉及了哪些環(huán)節(jié)呢?
一個(gè)完整的關(guān)機(jī)過程包括了:
選擇開始菜單中的關(guān)閉按鈕或按下電源按鈕或者應(yīng)用程序通過調(diào)用 API ExitWindowsEx() 或 InitiateShutdown() 等啟動關(guān)機(jī)。
Windows 系統(tǒng)將關(guān)機(jī)信息廣播給所運(yùn)行應(yīng)用程序,讓他們有機(jī)會來保存活躍數(shù)據(jù)和設(shè)置狀態(tài);應(yīng)用程序還可以請求一點(diǎn)額外的時(shí)間。
Windows 系統(tǒng)將關(guān)閉每個(gè)登陸的用戶會話。
Windows 系統(tǒng)將系統(tǒng)關(guān)閉信息發(fā)送給所有服務(wù)并告知關(guān)機(jī)過程已經(jīng)開始,隨后有序的將其關(guān)閉,關(guān)閉過程是并行的停止服務(wù),對于具有依賴關(guān)系的服務(wù)串行關(guān)閉。如果服務(wù)沒有響應(yīng),系統(tǒng)將強(qiáng)制關(guān)閉。
系統(tǒng)也會告知所有設(shè)備,將其關(guān)閉。
Windows關(guān)閉自身系統(tǒng)會話(會話0)
Windows系統(tǒng)將所有掛起的數(shù)據(jù)刷新到硬盤并確保完全保存。
Windows系統(tǒng)通過ACPI電源接口通知底層電源模塊關(guān)機(jī)。
對于系統(tǒng)的啟動過程呢?(我還將在未來的無盤SAN Boot引導(dǎo)Windows Server 2012的博客里面展開論述)
按下電源按鈕后, PC 的固件啟動開機(jī)自檢過程(大家熟知的POST),并加載固件設(shè)置。這個(gè)預(yù)引導(dǎo)過程結(jié)束時(shí)會檢測到一個(gè)有效的系統(tǒng)磁盤才繼續(xù)。(當(dāng)然我們需要在BIOS中設(shè)置檢測到硬件后的引導(dǎo)順序)
Firmware 的嵌入式啟動程序讀取主引導(dǎo)記錄 (MBR),隨后啟動 Bootmgr.exe。Bootmgr.exe 在 Windows 啟動分區(qū)上查找并啟動 Windows 加載程序 (Winload.exe) 。
加載啟動 Windows 內(nèi)核所需的基本驅(qū)動程序然后Windows的內(nèi)核程序開始運(yùn)行,在此過程加載系統(tǒng)注冊表配置單元和附加標(biāo)記為 BOOT_START 的驅(qū)動程序到內(nèi)存中。
Windows內(nèi)核將控制傳遞給會話管理器進(jìn)程 (Smss.exe) 初始化系統(tǒng)會話,然后加載和啟動未標(biāo)記為 BOOT_START的設(shè)備和驅(qū)動程序。
Winlogon.exe 啟動,顯示用戶登錄屏幕,服務(wù)控制管理器啟動服務(wù),相應(yīng)的組策略腳本運(yùn)行。當(dāng)用戶登錄時(shí),Windows 將創(chuàng)建該用戶的會話。
Explorer.exe 啟動,系統(tǒng)將創(chuàng)建初始化桌面,并顯示它的桌面窗口管理器 (DWM)進(jìn)程。
從上面的關(guān)機(jī)過程中,可以發(fā)現(xiàn)系統(tǒng)需要關(guān)閉所有的用戶會話和內(nèi)核會話,關(guān)閉服務(wù)和設(shè)備然后才會徹底關(guān)機(jī)。
而 Windows 8可以快速啟動的關(guān)鍵改變在于:
在 Windows 8中會關(guān)閉用戶會話,但不再關(guān)閉內(nèi)核會話而是以柔性的休眠方式處理。相比充分休眠方式,由于應(yīng)用程序使用的內(nèi)存頁很多,相對的如果只保留系統(tǒng)會話 0 的休眠狀態(tài)數(shù)據(jù)實(shí)際是會小很多的,這樣會大大減少休眠所用到的內(nèi)存回寫到磁盤的時(shí)間。休眠狀態(tài)就是指寫到磁盤 (hiberfil.sys) 上的文件有效保存系統(tǒng)狀態(tài)和內(nèi)存的內(nèi)容信息,然后恢復(fù)和還原的時(shí)候在將內(nèi)容讀取回內(nèi)存。Windows 8的冷啟動使用了這種,讀取休眠文件和重新初始化驅(qū)動程序的時(shí)間會快很多,對于大多數(shù)主機(jī)上會有30-70%在的顯著提升。這一點(diǎn)也比較容易看出來,聰明的各位看官你懂得:
從休眠方式恢復(fù)的速度顯然比重新初始化恢復(fù)快很多(這不就是投機(jī)的我們之前會可以選擇休眠的原因嗎)。另外,Windows 8還增加了多階段恢復(fù)的功能,類似單機(jī)系統(tǒng)的分布式作業(yè)拆解,例如如果你是i5或i7四核的主機(jī)將充分利用所有內(nèi)核并發(fā)讀取和解壓縮休眠Hibernate文件,要知道解壓縮還是比較消耗CPU的;這個(gè)功能對于我們從休眠狀態(tài)恢復(fù)系統(tǒng)同樣有了很大的提升!
硬件是實(shí)在的,有模有樣的。軟件是程序性的。是一系列的指令。有了軟件,硬件才會實(shí)現(xiàn)更豐富的功能。
|