快速關機是否會導致數據損壞?
發表于:2007-07-13來源:作者:點擊數:
標簽:
從平常的經驗可以看出,執行了關機操作后電腦不會立即斷電,Windows還會有一系列的動作如關閉打開的程序等,那么從執行關機命令到最終斷電是一個什么樣的過程呢? Windows的正常關機涉及到多個組件和多個過程。我們來看一下它的基本過程。 ①用戶發起關機指令
從平常的經驗可以看出,執行了關機操作后電腦不會立即斷電,Windows還會有一系列的動作如關閉打開的程序等,那么從執行關機命令到最終斷電是一個什么樣的過程呢?
Windows的正常關機涉及到多個組件和多個過程。我們來看一下它的基本過程?! ?
?、儆脩舭l起關機指令后,發起關機指令的程序會通知 Windows子系統C
SRSS.EXE,CSRSS.EXE收到通知后會和 Winlogon.EXE做一個數據交換,接著由Winlogon.EXE通知 CSRSS.EXE開始關閉系統的流程。
?、贑SRSS.EXE收到Winlogon.EXE的通知后,會依次查詢擁 有頂層窗口的用戶進程,讓這些用戶進程退出。如果某一個用戶 進程在一個默認的超時時間5000毫秒(可以通過修改注冊表鍵值 HKEY_CURRENT_USERControl PanelDesktop HungAppTimeout設定超時時間)內沒有退出的話,Windows會顯示 一個結束任務對話框用于詢問用戶是否結束這個任務。默認情況 下這個對話框會一直顯示而不會自動關閉?! ?
對于控制臺程序來說,基本情況類似,只不過Windows使 用HKEY_CURRENT_USERControl PanelDesktop WaitToKillAppTimeout來設置超時時間?! ?
?、劢又禽喌浇K止系統進程了。系統進程包括SMSS.EXE 、Winlogon.EXE、Lsass.EXE等。Windows在終止系統進程的時候 并不像終止用戶進程那樣如果無法在規定時間內終止則提示用戶 ,而是跳過這個進程,去執行下一個系統進程的終止操作。使用 的超時時間和第2步使用的時間相同?! ?
上述3個步驟是整個Windows關機過程中最耗費時間的一 段,大多數關機緩慢的原因都是因為這3個步驟引起的。完成前3 個步驟后,進入關機操作的第4個階段,這也是最后一個階段?! ?
?、躓inlogon.EXE調用一個原生API函數NtShutdownSystem()來 命令系統執行后面的掃尾工作。在這個階段里,Windows執行子系統會完成最后的關機操作,例如:設備驅動在這個階段里完成 一些驅動設定的特殊操作;也是在這個階段,
配置管理系統將被 修改過的注冊表數據回寫到磁盤里面。等除了電源管理以外的全 部子系統完成退出以后,電源管理完成最后的操作:如重啟、關 機等?! ?
看來Windows關機過程還挺復雜的。我也試用了劉凱讀者 所說的軟件SuperFast Shutdown(http://www.xp- smoker.com/installations/superfast.zip),確實會讓關機速 度加快。另外我們知道按Ctrl鍵的同時,再單擊任務管理器窗口 中的菜單“關機→關閉”命令時,系統也會被快速關閉。它們又 是如何實現快速關機的目的呢?
我分析了一下SuperFast Shutdown,它是用Visual Basic編寫的。經過分析后得出一個令人驚訝的結論:SuperFast Shutdown首先使用RtlAdjustPrivilege()提升自己的權限,然后 直接調用NtShutdownSystem() 函數來完成關機過程。也就是說它跳過了最為耗費時間的前3個 步驟而直接進入第4個步驟,因此能夠很快關機?! ?
利用Ctrl鍵配合任務管理器的快速關機技巧類似于 SuperFast Shutdown的原理,即通過省略一些步驟來加快關機的 速度?! ?
原來它們之所以能快速關機是因為投機取巧,跳過了一 些步驟。我記得當初使用Ctrl鍵配合任務管理器的關機技巧時, 關機速度是快了,不過卻出現過Office各組件中的個性設置丟失 等莫名其妙的問題,這些問題和快速關機有關嗎?
毫無疑問,利用前面的方法快速關機很容易導致你所說 的那些問題。這是因為在前3個步驟中,有一個讓進程正常退出 的過程。大多數軟件在編寫的時候會把一些設置保存在自己私有 的內存空間里面,當軟件關閉的時候才把這些設置回寫到特定的 地方,如注冊表或某個配置文件里?! ?
而關機操作的第4步并沒有提供一種途徑能夠讓這些設置 被記錄下來,因為這個階段Windows認為前面所有必須經過的流 程已經完成,剩下的就是Windows核心組件的退出問題了。在這 種情況下,使用快速關機導致軟件設置丟失等現象也就不足為怪 了?! ?
實際上Windows本身的關機速度已經很快了,關機速度變 慢的多數問題都出在用戶安裝的程序上,由于一些設計不好的應 用程序或驅動程序的問題,造成了關機上的延遲?! ?
因此要加快關機速度,正確的做法是盡量減少應用程序 等對關機過程的影響,如關閉一些無用的自啟動程序等,而借助 SuperFast Shutdown或一些技巧執行非常規的關機操作盡量不要使用,畢竟 數據的
安全性比節省的那幾十秒鐘重要得多。
原文轉自:http://www.kjueaiud.com