網際論壇 - 硬體技術交流 - [注意]快速關機會導致資料損壞
» 遊客:  註冊 | 登錄 | 會員 | 幫助
 

免費線上小說
動漫分類 : 最新上架熱門連載全本小說最新上架玄幻奇幻都市言情武俠仙俠軍事歷史網游競技科幻靈異 ... 更多小說

作者:
標題: [注意]快速關機會導致資料損壞 上一主題 | 下一主題
  erin19
  管理版主 
 


 
  積分 22622
  發文 1323
  註冊 2005-8-31
  狀態 離線
#1  [注意]快速關機會導致資料損壞

執行了關機操作后電腦不會立即斷電,Windows還會有一系列的動作如關閉打開的程序等,那麼從執行關機命令到最終斷電是一個什麼樣的過程呢?

Windows的正常關機涉及到多個組件和多個過程。我們來看一下它的基本過程。


  1.使用者發起關機指令后,發起關機指令的程序會通知Windows子系統CSRSS.EXE,CSRSS.EXE收到通知后會和Winlogon.EXE做一個資料交換,接著由Winlogon.EXE通知CSRSS.EXE開始關閉系統的流程。


  2.CSRSS.EXE收到Winlogon.EXE的通知后,會依次查詢擁有頂層視窗的使用者進程,讓這些使用者進程退出。如果某一個使用者進程在一個預設的超時時間5000毫秒(可以通過修改注冊表鍵值HKEY_CURRENT_USERControl PanelDesktop HungAppTimeout設定超時時間)內沒有退出的話,Windows會顯示一個結束任務對話框用於詢問使用者是否結束這個任務。預設情況下這個對話框會一直顯示而不會自動關閉。

  對於控制台程序來說,基本情況類似,只不過Windows使用HKEY_CURRENT_USERControl PanelDesktop WaitToKillAppTimeout來設置超時時間。


  3.接著是輪到終止系統進程了。系統進程包括SMSS.EXE、Winlogon.EXE、Lsass.EXE等。Windows在終止系統進程的時候並不像終止使用者進程那樣如果無法在規定時間內終止則提示使用者,而是跳過這個進程,去執行下一個系統進程的終止操作。使用的超時時間和第2步使用的時間相同。

  上述3個步驟是整個Windows關機過程中最耗費時間的一段,大多數關機緩慢的原因都是因為這3個步驟引起的。完成前3個步驟后,進入關機操作的第4個階段,這也是最后一個階段。


  4.Winlogon.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或一些技巧執行非常規的關機操作盡量不要使用,畢竟資料的安全性比節省的那幾十秒鐘重要得多。

[ Last edited by sodown on 2005-10-15 at 05:44 PM ]




滴水不停,可以穿石...
2005-10-14 11:37 PM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
  sodown
  區版主 
  射手座的豬



 
  積分 23462
  發文 2418
  註冊 2005-9-1
  來自 要學的很多,時間卻太少 ..
  狀態 離線
#2  

erin19版主
   
【硬體技術交流】區因有您的文章內容充實不少^^
  以後還請您多費心關照^^




心情      播機


2005-10-15 11:27 PM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
  normalrin
  一般會員 
 


  積分 657
  發文 101
  註冊 2005-9-14
  來自 K隆星人
  狀態 離線
#3  

我向來都用快速關機法,沒想到關機的學問還這麼的大啊!!
謝謝大大分享。


2005-10-18 12:32 PM
查看資料  發短消息   編輯文章  引用回覆
  lin359501
  中級會員 
 


  積分 1049
  發文 123
  註冊 2005-9-7
  狀態 離線
#4  

謝謝大大分享

2005-10-21 09:19 PM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
  daniel
  高級會員 
 



  積分 7247
  發文 1850
  註冊 2005-9-5
  狀態 離線
#5  

3q 3q...

2006-4-5 12:24 PM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
  a871026
  基本會員 
 



  積分 56
  發文 7
  註冊 2005-9-12
  狀態 離線
#6  

想步道關機還有這樣的學問喔^^  謝謝大大的分享

2006-4-7 11:34 PM
查看資料  發短消息   編輯文章  引用回覆
  chienishun
  基本會員 
 



  積分 46
  發文 1
  註冊 2005-12-8
  狀態 離線
#7  

受益良多
謝謝


2006-7-6 09:31 AM
查看資料  發短消息   編輯文章  引用回覆

可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題

論壇跳轉選單: